“好吧,气象站”? 不是真的



拟议的气象站基于一台自制的PIDP11计算机, 计算机由具有PDP-11仿真器的覆盆子和带有前面板的外壳组成,前面板带有活动的LED和开关。 但是,尽管如此,“树莓”具有足够的空闲GPIO来连接压力和温度传感器。

该仿真器运行OS 2.11BSD,其中气象站软件正在“旋转”。 数据输出到两个终端仿真器。 其中之一-cool-retro-term-使用ASCII艺术作品以大字体显示文本信息。 第二个-带有存储管的Tektronix 4010图形终端仿真器-显示压力和温度曲线。

BME280传感器的连接方法如下:

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

下图所示的OLED显示屏与传感器并联连接,但在I 2 C总线上分配了不同的地址。 如果您愿意,根本不需要安装显示器。 作者还设置了一个按钮,用于在关闭电源之前正确关闭操作系统。



为了使设备正常工作,首先需要在2.11BSD仿真器中向正在运行的用户添加一个新用户,如下所示

以root用户身份登录。 输入vipw命令以使用/ etc / passwd文件启动vi编辑器

将行放入文件中:

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

其中,firstname和fullname是简称和完整的用户名。

退出编辑器,创建用户的主文件夹:

 cd /home mkdir firstname chown firstname firstname 

将.login和.cshrc文件复制到此文件夹中,

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

输入vi .login并通过将相应的行更改为以下内容来编辑命令行提示符:

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

退出编辑器。 使用logout命令注销,使用root下的passwd命令更改新用户的密码,现在您可以使用新用户的用户名和密码登录。

之后,您需要在引导时自动设置系统中的日期和时间, 因此 (对于以下信息,作者感谢Jason Vanick和Johnny Billquist):

首先配置网络,并确保ping正常。 然后,在/etc/rc.local文件中ntpt行的紧前面,放入以下行:

 ntp -sf pool.ntp.org 

将/etc/ntp.conf文件中的最后一行更改为:

 server pool.ntp.org 

您可以选择任何其他NTP服务器。 要设置时区,请检查文件/ usr / share / zoneinfo中的时区列表,并在其中找到您的时区名称。 以root用户身份登录并输入命令:

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

下一步操作是安装和配置程序,该程序将允许您将在真实的“ malink”上运行的Raspbian命令行转发到在模拟器中运行的2.11BSD命令行, 如下所示

在Raspbian root下,输入命令:

 sudo apt-get install rsh-server 

在主文件夹中创建一个.rhosts文件,其内容如下:

 bsd_ip_address bsd_user_name 

其中bsd_ip_address是具有2.11 BSD的虚拟机的IP地址,bsd_user_name是2.11 BSD中可以在真实的“树莓”上执行命令的用户的名称,例如:

 192.168.1.99 rene 

设置此文件的权限,否则将无效:

 chmod 600 .rhosts 

转到仿真器,以root用户身份输入2.11 BSD并编辑/ etc / hosts-添加以下行:

 remote_ip_address remote_full_name remote_nick_name 

其中remote_ip_address是真实的“树莓”的IP地址,remote_full_name和remote_nick_name是其域名和别名,例如:

 192.168.1.103 pizerow.home.lan pizerow 

使用先前设置的名称(bsd_user_name)登录并检查是否一切正常:

 rsh remote_nick_name -l pi -n “ls” 

您刚刚在真实的malink上从仿真器执行了ls命令。 相反,如果出现在您面前的密码输入表单,则表示出现问题。

现在尝试一些更复杂的事情。 输入命令:

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

在该存储库的rtest文件夹中,有一个小型C程序,该程序演示如何使用popen从特定程序中获取信息并以某种方式处理该信息,以便在2.11BSD中获得人类可读的输出:

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

您刚刚在仿真器中看到了该仿真器正在“旋转”的实际处理器的温度。

从此存储库的weather / sensor文件夹中下载Python脚本。

确保脚本在远程pizerow中正常工作,并将其放在/ home / pi / bin文件夹中

运行cool-retro-term和仿真器,以您刚创建的用户身份输入2.11BSD并输入以下命令:

 mkdir weather cd weather 

以一种或另一种方式(例如,使用FileZilla)将文件从存储库的weather / BSD文件夹拖放到在模拟器中运行的OS的weather文件夹中。 输入天气命令,程序将从传感器中提取数据并以以下形式显示:

  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$ 

如果一切正常,请在〜/ weather文件夹中创建dats文件夹,weather2可在其中存储日志:

 cd cd weather mkdir data weather2 

每天,weather2开始在〜/ weather / data文件夹中通过名称与日期相对应的文件创建,并每分钟在其中添加一行数据。 并在终端上连续显示以下内容,并且每分钟更新一次屏幕:



好吧,weather3的工作方式相同,只显示更多的时间和压力。 它使用curses库移动光标。



尝试以同样的方式显示前几天的温度和压力值,并编写脚本以根据这些数据获取天气预报。 祝你好运!

附录1-安装和配置cool-retro-term

附录2 -Tektronix 4010图形终端仿真器的安装和配置

Source: https://habr.com/ru/post/zh-CN446370/


All Articles