
La estación meteorológica propuesta se basa en una computadora
PIDP11 casera , que consta de una frambuesa con un emulador PDP-11 y una caja con un panel frontal con LED e interruptores activos. Pero a pesar de esto, la "frambuesa" tiene suficientes GPIO desocupados para conectar también un sensor de presión y temperatura.
El emulador ejecuta OS 2.11BSD, en el que el software de la estación meteorológica está "girando". Los datos se envían a dos emuladores de terminal. Uno de ellos, cool-retro-term, muestra información de texto en letra grande usando el arte ASCII. El segundo, un emulador de terminal gráfico Tektronix 4010 con un tubo de almacenamiento, muestra las curvas de presión y temperatura.
El método para conectar el sensor BME280 se describe
aquí :
| | GPIO | | Raspberry Pi | | ------------+--------------+-------------- VCC | 3,3 | P1-01 GND | | P1-06 SCL | SCL I2C | P1-05 SDA | SDA I2C | P1-03
La pantalla OLED que se muestra en la foto a continuación está conectada en paralelo con el sensor, pero se le asigna una dirección diferente en el bus I
2 C. Si lo desea, no necesita instalar una pantalla en absoluto. El autor también configuró un botón para el apagado correcto del sistema operativo antes de apagar la alimentación.

Para que el dispositivo funcione, primero debe agregar un nuevo usuario al usuario en ejecución en el emulador 2.11BSD de
esta manera :
Inicie sesión como usuario root. Ingrese el comando vipw para iniciar el editor vi con el archivo / etc / passwd
Pon la línea en el archivo:
firstname::201:20:fullname:/home/firstname:/bin/tcsh
donde nombre y nombre completo son los nombres de usuario cortos y completos.
Salga del editor, cree la carpeta de inicio del usuario:
cd /home mkdir firstname chown firstname firstname
Copie los archivos .login y .cshrc en esta carpeta '
cd /home/user cp .* /home/firstname cd /home/firstname chown firstname .*
Escriba vi .login y edite el indicador de línea de comando cambiando la línea correspondiente a:
set prompt='%n@%m:%c$ '
Sal del editor. Cierre sesión con el comando de cierre de sesión, cambie la contraseña para el nuevo usuario con el comando passwd debajo de la raíz, ahora puede iniciar sesión con el nombre de usuario y la contraseña del nuevo usuario.
Después de eso, debe configurar automáticamente la fecha y la hora en el sistema en el momento del arranque,
por lo que (para la información a continuación, el autor agradece a Jason Vanick y Johnny Billquist):
Primero configure la red y asegúrese de que el ping funcione. Luego, inmediatamente antes de la línea ntpt en el archivo /etc/rc.local, coloque la línea:
ntp -sf pool.ntp.org
Cambie la última línea en el archivo /etc/ntp.conf a:
server pool.ntp.org
Puede seleccionar cualquier otro servidor NTP. Para configurar la zona horaria, revise la lista de zonas en el archivo / usr / share / zoneinfo y encuentre el nombre de su zona allí. Inicie sesión como usuario root e ingrese los comandos:
cd /etc mv localtime localtime.old ln -s /usr/share/zoneinfo/timezone localtime
La siguiente operación es instalar y configurar un programa que le permitirá reenviar la línea de comando Raspbian que se ejecuta en un "malink" real a la línea de comando 2.11BSD que se ejecuta en el emulador, de
esta manera :
En Raspbian bajo root, ingrese el comando:
sudo apt-get install rsh-server
Cree un archivo .rhosts en la carpeta de inicio con el siguiente contenido:
bsd_ip_address bsd_user_name
donde bsd_ip_address es la dirección IP de la máquina virtual con 2.11 BSD, y bsd_user_name es el nombre del usuario en 2.11 BSD que podrá ejecutar comandos en una "frambuesa" real, por ejemplo:
192.168.1.99 rene
Establezca permisos para este archivo, de lo contrario, nada funcionará:
chmod 600 .rhosts
Vaya al emulador, ingrese 2.11 BSD como usuario root y edite / etc / hosts - agregue la línea:
remote_ip_address remote_full_name remote_nick_name
donde remote_ip_address es la dirección IP de la "frambuesa" real, y remote_full_name y remote_nick_name son su nombre de dominio y alias, por ejemplo:
192.168.1.103 pizerow.home.lan pizerow
Inicie sesión con el nombre establecido anteriormente (bsd_user_name) y verifique si todo funcionó:
rsh remote_nick_name -l pi -n “ls”
Acaba de ejecutar el comando ls desde el emulador en un enlace real. Si, en cambio, apareció un formulario de ingreso de contraseña frente a usted, significa que algo salió mal.
Ahora intenta algo más complicado. Ingrese el comando:
rsh remote_nick_name -l pi -n “cat /sys/class/thermal/thermal_zone0/temp”
En la carpeta rtest de este repositorio hay un pequeño programa en C que muestra cómo usar popen para obtener información de un programa en particular y procesarla de tal manera que obtenga una salida legible para humanos en 2.11BSD:
rene@pdp11:rtest$ rtest **************************************************** * The CPU temperature on the pizerow is 42.2 deg C * **************************************************** rene@pdp11:rtest$
Acabas de ver en el emulador la temperatura del procesador real en el que este emulador está "girando".
Descargue la secuencia de comandos de Python de la carpeta de clima / sensor de este repositorio.
Asegúrese de que el script funcione correctamente en pizerow remoto y póngalo en la carpeta / home / pi / bin
Ejecute cool-retro-term y el emulador, ingrese 2.11BSD como el usuario que acaba de crear e ingrese los comandos:
mkdir weather cd weather
De una forma u otra (por ejemplo, usando FileZilla) arrastre y suelte archivos desde la carpeta weather / BSD del repositorio a la carpeta weather del sistema operativo que se ejecuta en el emulador. Ingrese el comando del clima y el programa extraerá los datos del sensor y los mostrará de esta 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$
Si todo funcionó, cree la carpeta de datos en la carpeta ~ / weather, donde weather2 puede almacenar el registro:
cd cd weather mkdir data weather2
Todos los días, weather2 comenzó a crear en la carpeta ~ / weather / data por el archivo con el nombre correspondiente a la fecha, y cada minuto agrega una línea con los datos. Y en el terminal mostrará continuamente lo siguiente, actualizando la pantalla también una vez por minuto:

Bueno, weather3 funciona de la misma manera, solo muestra más tiempo y presión. Utiliza la biblioteca de maldiciones para mover el cursor.

Intente también mostrar los valores de temperatura y presión en los días anteriores de la misma manera, y escriba un script para obtener el pronóstico del tiempo basado en estos datos. Buena suerte
Apéndice 1 - instalar y configurar cool-retro-term
Apéndice 2 : instalación y configuración del emulador de terminal gráfico Tektronix 4010