"Eh bien, encore une fois, la station météo"? Pas vraiment



La station météo proposée est basée sur un ordinateur PIDP11 fait maison , composé d'une framboise avec un émulateur PDP-11 et d'un boîtier avec un panneau avant avec des LED et des commutateurs actifs. Mais malgré cela, la "framboise" a suffisamment de GPIO inoccupés pour connecter également un capteur de pression et de température.

L'émulateur exécute OS 2.11BSD, dans lequel le logiciel de la station météo «tourne». Les données sont sorties vers deux émulateurs de terminal. L'un d'eux - cool-retro-term - affiche des informations textuelles en gros caractères en utilisant l'art ASCII. Le second - un émulateur de terminal graphique Tektronix 4010 avec un tube de stockage - affiche les courbes de pression et de température.

La méthode de connexion du capteur BME280 est décrite ici :

 |  | GPIO    | | Raspberry Pi  | | ------------+--------------+-------------- VCC | 3,3  | P1-01 GND |  | P1-06 SCL | SCL  I2C | P1-05 SDA | SDA  I2C | P1-03 

L'écran OLED illustré sur la photo ci-dessous est connecté en parallèle avec le capteur, mais une adresse différente lui est attribuée sur le bus I 2 C. Si vous le souhaitez, vous n'avez pas du tout besoin d'installer un écran. L'auteur a également défini un bouton pour l'arrêt correct du système d'exploitation avant de couper l'alimentation.



Pour faire fonctionner l'appareil, vous devez d'abord ajouter un nouvel utilisateur à l'utilisateur en cours d'exécution dans l'émulateur 2.11BSD comme ceci :

Connectez-vous en tant qu'utilisateur root. Entrez la commande vipw pour démarrer l'éditeur vi avec le fichier / etc / passwd

Mettez la ligne dans le fichier:

 firstname::201:20:fullname:/home/firstname:/bin/tcsh 

où prénom et nom complet sont les noms d'utilisateur courts et complets.

Quittez l'éditeur, créez le dossier de départ de l'utilisateur:

 cd /home mkdir firstname chown firstname firstname 

Copiez les fichiers .login et .cshrc dans ce dossier '

  cd /home/user cp .* /home/firstname cd /home/firstname chown firstname .* 

Tapez vi .login et modifiez l'invite de ligne de commande en remplaçant la ligne correspondante par:

 set prompt='%n@%m:%c$ ' 

Quittez l'éditeur. Déconnectez-vous avec la commande logout, changez le mot de passe du nouvel utilisateur avec la commande passwd sous la racine, vous pouvez maintenant vous connecter en utilisant le nom d'utilisateur et le mot de passe du nouvel utilisateur.

Après cela, il est nécessaire de définir automatiquement la date et l'heure dans le système au démarrage (pour les informations ci-dessous, l'auteur remercie Jason Vanick et Johnny Billquist):

Configurez d'abord le réseau et assurez-vous que le ping fonctionne. Ensuite, juste avant la ligne ntpt dans le fichier /etc/rc.local, mettez la ligne:

 ntp -sf pool.ntp.org 

Remplacez la dernière ligne du fichier /etc/ntp.conf par:

 server pool.ntp.org 

Vous pouvez sélectionner n'importe quel autre serveur NTP. Pour définir le fuseau horaire, consultez la liste des fuseaux dans le fichier / usr / share / zoneinfo et y trouvez le nom de votre fuseau. Connectez-vous en tant qu'utilisateur root et entrez les commandes:

 cd /etc mv localtime localtime.old ln -s /usr/share/zoneinfo/timezone localtime 

L'opération suivante consiste à installer et configurer un programme qui vous permettra de transférer la ligne de commande Raspbian s'exécutant sur un véritable "malink" vers la ligne de commande 2.11BSD exécutée dans l'émulateur, comme ceci :

Dans Raspbian sous root, entrez la commande:

 sudo apt-get install rsh-server 

Créez un fichier .rhosts dans le dossier de départ avec le contenu suivant:

 bsd_ip_address bsd_user_name 

où bsd_ip_address est l'adresse IP de la machine virtuelle avec 2.11 BSD, et bsd_user_name est le nom de l'utilisateur en 2.11 BSD qui peut exécuter des commandes sur une vraie «framboise», par exemple:

 192.168.1.99 rene 

Définissez les autorisations pour ce fichier, sinon rien ne fonctionnera:

 chmod 600 .rhosts 

Allez dans l'émulateur, entrez 2.11 BSD en tant qu'utilisateur root et éditez / etc / hosts - ajoutez la ligne:

 remote_ip_address remote_full_name remote_nick_name 

où remote_ip_address est l'adresse IP de la vraie «framboise», et remote_full_name et remote_nick_name sont son nom de domaine et son alias, par exemple:

 192.168.1.103 pizerow.home.lan pizerow 

Connectez-vous en utilisant le nom précédemment défini (bsd_user_name) et vérifiez si tout a fonctionné:

 rsh remote_nick_name -l pi -n “ls” 

Vous venez d'exécuter la commande ls de l'émulateur sur un vrai malink. Si, au lieu de cela, un formulaire de saisie de mot de passe est apparu devant vous, cela signifie que quelque chose s'est mal passé.

Essayez maintenant quelque chose de plus compliqué. Entrez la commande:

 rsh remote_nick_name -l pi -n “cat /sys/class/thermal/thermal_zone0/temp” 

Dans le dossier rtest de ce référentiel, il y a un petit programme C qui montre comment utiliser popen pour obtenir des informations d'un programme particulier et les traiter de manière à obtenir une sortie lisible par l'homme dans 2.11BSD:

 rene@pdp11:rtest$ rtest **************************************************** * The CPU temperature on the pizerow is 42.2 deg C * **************************************************** rene@pdp11:rtest$ 

Vous venez de voir dans l'émulateur la température du véritable processeur sur lequel cet émulateur "tourne".

Téléchargez le script Python depuis le dossier weather / sensor de ce référentiel.

Assurez-vous que le script fonctionne correctement dans pizerow distant et placez-le dans le dossier / home / pi / bin

Exécutez cool-retro-term et l'émulateur, entrez 2.11BSD en tant qu'utilisateur que vous venez de créer et entrez les commandes:

 mkdir weather cd weather 

D'une manière ou d'une autre (par exemple, en utilisant FileZilla), faites glisser et déposez des fichiers du dossier weather / BSD du référentiel dans le dossier weather du système d'exploitation exécuté dans l'émulateur. Entrez la commande météo et le programme extraira les données du capteur et les affichera sous cette forme:

  rene@pdp11:weather$ weather Contacting remote sensor... Data received, analyzing ... ************************************** The sensor reports the following data: Temperature 7.0 C Pressure 969.8 hPa Humidity 66.8 % ************************************** rene@pdp11:weather$ 

Si tout a fonctionné, créez le dossier dats dans le dossier ~ / weather, où weather2 peut stocker le journal:

 cd cd weather mkdir data weather2 

Weather2 J'ai commencé chaque jour à créer dans le dossier ~ / weather / data par le fichier avec le nom correspondant à la date, et à y ajouter une ligne avec les données toutes les minutes. Et sur le terminal, il affichera en continu les éléments suivants, mettant à jour l'écran également une fois par minute:



Eh bien, Weather3 fonctionne de la même manière, n'affiche plus de temps et de pression. Il utilise la bibliothèque de malédictions pour déplacer le curseur.



Essayez également d'afficher les valeurs de température et de pression des jours précédents de la même manière, et écrivez également un script pour obtenir des prévisions météorologiques basées sur ces données. Bonne chance!

Annexe 1 - installer et configurer cool-retro-term

Annexe 2 - installation et configuration de l'émulateur de terminal graphique Tektronix 4010

Source: https://habr.com/ru/post/fr446370/


All Articles