"Bem, novamente, a estação meteorológica"? Realmente não



A estação meteorológica proposta é baseada em um computador PIDP11 caseiro , composto por uma framboesa com um emulador PDP-11 e um gabinete com um painel frontal com LEDs e interruptores ativos. Mas, apesar disso, o "raspberry" possui GPIOs desocupados suficientes para conectar também um sensor de pressão e temperatura.

O emulador executa o OS 2.11BSD, no qual o software da estação meteorológica está "girando". Os dados são enviados para dois emuladores de terminal. Um deles - cool-retro-term - exibe informações de texto em letras grandes usando arte ASCII. O segundo - um emulador de terminal gráfico Tektronix 4010 com um tubo de armazenamento - exibe as curvas de pressão e temperatura.

O método para conectar o sensor BME280 é descrito aqui :

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

O display OLED mostrado na foto abaixo é conectado em paralelo ao sensor, mas é atribuído um endereço diferente no barramento I 2 C. Se desejar, você não precisa instalar nenhum monitor. O autor também definiu um botão para o desligamento correto do sistema operacional antes de desligar a energia.



Para fazer o dispositivo funcionar, primeiro você precisa adicionar um novo usuário ao usuário em execução no emulador 2.11BSD, como este :

Efetue login como usuário root. Digite o comando vipw para iniciar o editor vi com o arquivo / etc / passwd

Coloque a linha no arquivo:

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

onde firstname e fullname são os nomes de usuário curtos e completos.

Saia do editor, crie a pasta inicial do usuário:

 cd /home mkdir firstname chown firstname firstname 

Copie os arquivos .login e .cshrc para esta pasta '

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

Digite vi .login e edite o prompt da linha de comandos alterando a linha correspondente para:

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

Saia do editor. Efetue logout com o comando logout, altere a senha do novo usuário com o comando passwd na raiz, agora você pode efetuar login usando o nome de usuário e a senha do novo usuário.

Depois disso, é necessário definir a data e a hora no sistema automaticamente no momento da inicialização, portanto (para as informações abaixo, o autor agradece a Jason Vanick e Johnny Billquist):

Primeiro configure a rede e verifique se o ping está funcionando. Em seguida, imediatamente antes da linha ntpt no arquivo /etc/rc.local, coloque a linha:

 ntp -sf pool.ntp.org 

Altere a última linha no arquivo /etc/ntp.conf para:

 server pool.ntp.org 

Você pode selecionar qualquer outro servidor NTP. Para definir o fuso horário, verifique a lista de zonas no arquivo / usr / share / zoneinfo e encontre o nome da sua zona. Efetue login como usuário raiz e insira os comandos:

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

A próxima operação é instalar e configurar um programa que permita encaminhar a linha de comando Raspbian em execução em um "malink" real para a linha de comando 2.11BSD em execução no emulador, desta forma :

No Raspbian sob raiz, digite o comando:

 sudo apt-get install rsh-server 

Crie um arquivo .rhosts na pasta inicial com o seguinte conteúdo:

 bsd_ip_address bsd_user_name 

onde bsd_ip_address é o endereço IP da máquina virtual com 2.11 BSD e bsd_user_name é o nome do usuário no 2.11 BSD que pode executar comandos em uma verdadeira “framboesa”, por exemplo:

 192.168.1.99 rene 

Defina permissões para este arquivo, caso contrário, nada funcionará:

 chmod 600 .rhosts 

Vá para o emulador, digite 2.11 BSD como usuário root e edite / etc / hosts - adicione a linha:

 remote_ip_address remote_full_name remote_nick_name 

onde remote_ip_address é o endereço IP do "raspberry" real, e remote_full_name e remote_nick_name são seu nome de domínio e alias, por exemplo:

 192.168.1.103 pizerow.home.lan pizerow 

Efetue login usando o nome definido anteriormente (bsd_user_name) e verifique se tudo funcionou:

 rsh remote_nick_name -l pi -n “ls” 

Você acabou de executar o comando ls do emulador em um link real. Se, em vez disso, um formulário de entrada de senha aparecer na sua frente, isso significa que algo deu errado.

Agora tente algo mais complicado. Digite o comando:

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

Na pasta rtest deste repositório, há um pequeno programa C que mostra como usar o popen para obter informações de um programa específico e processá-lo de maneira a obter uma saída legível por humanos no 2.11BSD:

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

Você acabou de ver no emulador a temperatura do processador real no qual esse emulador está "girando".

Faça o download do script Python na pasta weather / sensor deste repositório.

Verifique se o script funciona corretamente no pizerow remoto e coloque-o na pasta / home / pi / bin

Execute cool-retro-term e o emulador, digite 2.11BSD como o usuário que você acabou de criar e digite os comandos:

 mkdir weather cd weather 

De uma forma ou de outra (por exemplo, usando o FileZilla), arraste e solte arquivos da pasta weather / BSD do repositório para a pasta weather do sistema operacional em execução no emulador. Digite o comando do tempo e o programa extrairá os dados do sensor e os exibirá desta forma:

  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$ 

Se tudo funcionou, crie a pasta dats na pasta ~ / weather, onde o weather2 pode armazenar o log:

 cd cd weather mkdir data weather2 

Todos os dias, o weather2 começou a criar na pasta ~ / weather / data pelo arquivo com o nome correspondente à data e a cada minuto adiciona uma linha com os dados. E no terminal ele exibirá continuamente o seguinte, atualizando a tela também uma vez por minuto:



Bem, o clima3 funciona da mesma maneira, apenas exibe mais tempo e pressão. Ele usa a biblioteca de maldições para mover o cursor.



Tente também exibir os valores de temperatura e pressão nos dias anteriores da mesma maneira, além de escrever um script para obter a previsão do tempo com base nesses dados. Boa sorte

Apêndice 1 - instalar e configurar cool-retro-term

Apêndice 2 - instalação e configuração do emulador de terminal gráfico Tektronix 4010

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


All Articles