Raspberry Pi 2 气象站
我们的黑客空间 (Bloominglabs) 最近从一位慷慨的捐助者那里收到了一个 ADS-WS1 气象站。此外,我们被 Instructables 选中参加 Raspberry Pi 2 黑客马拉松,因此我们有一些 RPi2 可供黑客使用。对于我的项目,我决定使用 RPi2 将我们的气象站上线。
我们的站可以测量风向、风速、雨量、温度和湿度。该单元可以多种方式输出数据,包括串行。我需要一种方法来读取数据并将其从电线杆上移到我们的网络上。树莓派 2 将通过 PoE 连接到桅杆上的防水外壳。
第一步:零件清单
1) ADS-WS1 气象站(任何支持串行数据输出的气象站都可以工作)
2) Raspberry Pi(任何版本都可以,我们使用的是版本 2)
3) 串口转 USB 适配器
4) 带有至少一个 DB9 母头外壳的串行电缆
5) 以太网 - 足以连接到您的室外气象站
6) 5V供电,1-2A
7) 室外机柜
可选但推荐:
8) 以太网浪涌抑制器
9) 以太网供电注入适配器
首先要获得一个气象站。我使用了 Argent Data 的 ADS-WS1 站,但这不是必需的。然而,这个单元有很好的文档记录,并且还有一个集成的 TNC 用于通过 APRS 广播天气数据(如果你把它连接到业余无线电)。但是,这不是我正在做的事情所必需的,我只需要一个串行端口输出来读取数据。功耗仅为 50mA,因此它可以由 RPi 供电或从电源中分离到 RPi。
http://wiki.argentdata.com/index.php?title=ADS-WS1...
第 2 步:在 Rasperry Pi 2 上设置操作系统
您可以使用任何操作系统,但是我在 8GB SD 卡上使用了 Raspbian 7.1。按照您所使用的操作系统的说明进行操作:
https://www.raspberrypi.org/documentation/installa...
准备好 SD 卡后,将其安装在 RPi2 中并打开电源。拥有本地控制台(支持 HDMI 的显示器和 USB 键盘)会有所帮助。 Raspbian 应该默认使用 DHCP,如果你有路由器,就可以连接到你的网络。然而,我发现这是一次偶然的机会。
本文档的其余部分假设您对 Linux 有一些基本的了解,如果您在此处设置 RPi2 时遇到问题,Raspberry Pi 文档非常有用:
https://www.raspberrypi.org/documentation/
此步骤的最后一件事是插入 USB 转串口适配器。假设它是标准的 FTDI 或其他常见的 Serial-to-USB 设备,Raspbian 会自动配置它。插入后,您应该会看到一个新的 /dev/ttyUSBx 设备出现。
[电子邮件保护] ~ $ ls /dev/ttyUSB*/dev/ttyUSB0
假设它是唯一插入的 USB 到串行设备,它将是 /dev/ttyUSB0。 “lsusb”命令将显示您的所有 USB 设备,如果设备显示不正确,这可以帮助您识别设备:
[电子邮件保护] ~ $ lsusb
总线 001 设备 002:ID 0424:9514 Standard Microsystems Corp. 总线 001 设备 001:ID 1d6b:0002 Linux Foundation 2.0 根 hubBus 001 设备 003:ID 0424:标准微系统:EC Corp. Bus 001 Device 005:ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
我更喜欢设置一个静态 IP,因为当 RPi2 在天空中的一根杆子上时,担心出错的事情就少了。编辑 /etc/network/interfaces 并更改这一行:
iface eth0 inet dhcp
到这一行:
iface eth0 inet 静态
并添加这些行。将 IP 地址和网关替换为适合您网络的值:
地址 192.168.x.xnetmask 255.255.255.0gateway 192.168.x.x
现在安装我们需要的软件,用于网络服务器的 Apache2 和一些其他实用程序。 minicom 是验证串口通信是否正常的好工具,wget 是下载下一节中的weather.sh 脚本。
apt-get install apache2apt-get install wgetapt-get install minicom
为了将来的测试目的,我建议下载此脚本:
wget -O weather.sh "http://server1.nuge.com/~weather/software/weather-...
如果由于某种原因上述链接失败,您可以在此处找到最新版本的 weather.sh 脚本:
http://server1.nuge.com/~weather/
最后但并非最不重要的是,您可能需要编辑您的 /etc/group 文件并将帐户“pi”或您将用于测试的任何帐户添加到“拨出”组。这将为帐户提供适当的权限以读取和写入串行设备(/dev/ttyUSBx)。
第 3 步:安装和配置weewx,配置服务在开机时启动
Weewx 是一个程序,它从多个气象站读取串行数据,并提供用于绘制数据的 Web 界面。
apt-get installweewx
现在您需要配置它。编辑 /etc/weewx/weewx.conf 并调整有意义的变量。配置文件是自我记录的,因此很容易自定义。
# $Id:weewx.conf 2901 2015-02-05 21:15:03Z tkeffer $## WEEWX CONFIGURATION FILE## 版权所有 (c) 2009-2014 Tom Keffer # 查看文件 LICENSE.txt 以获得您的全部权利.############################################## #############################这部分是一般配置信息#设置为1以获得额外的调试信息,否则将其注释掉或设置为零.debug =0#本站weewx数据文件层级的根目录。WEEWX_ROOT =/#超时socket(FTP,HTTP)连接前等待多长时间:socket_timeout =20#不要修改这个- setup.py 在安装和更新时使用它。version =3.1.0############################### ##########################################[Station] # 这个部分是关于您的车站的信息 # 车站位置的描述。 location ="Bloominglabs - Bloomington, Indiana" # 以十进制度数表示的纬度和经度...
最后,配置 apache2 和 weewx 以在启动时启动:
update-rc.d apache2 默认为 99 2update-rc.d weewx 默认为 99 2
现在这些服务会在每次 RPi2 开机时自动出现。这应该是您 RPi2 所需的一切。
第四步:准备串口线和电源线
您只需要 3 根电线和 2 根电源线即可连接控制器。在我的照片中,顶部 5 个旋入式端子中有电线,这些电线用于将 TNC/APRS 数据发送到业余无线电,本教程不需要。
因此,首先您需要将串行电缆连接到天气控制器。将电缆连接到串行转 USB 适配器。现在切断串行电缆的剩余一端,确保让自己有足够的松弛度,以便根据需要布置电缆,并将电线上的外护套剥去至少 2 英寸。单根电线只需要剥去 1/4 英寸左右。您将需要使用万用表来绘制电缆的针脚并找到与 DB9 外壳内的针脚的针脚 2、3 和 5 相匹配的电线。通常,如果您仔细观察,引脚编号会列在引脚旁边。
引脚 2 的导线连接到控制器上的 TXD1。
引脚 3 的导线连接到控制器上的 RXD1。
引脚 5 的导线连接到控制器上的地。
完成所有接线后,您需要为控制器供电。 9V 电池或 5V 或 12V 电源可用于测试。将正极连接到“DC in”,将地线连接到控制器上较低的 GND 输入端。
我为此安装使用了一对以太网供电 (PoE) 适配器。我为我的 RPi2 和天气控制器供电 5V,我为远端制作了一个适配器以在它们之间分配电源。由于这将在元件中,我使用收缩管使连接整洁且更耐候。尽管这一切都在防风雨的盒子里,但如果发生泄漏,添加额外的保护层也无妨。
最后但并非最不重要的是,RPi2 的 5V 电源可以为两个设备供电。事实上,您可以将 microUSB 连接器切断并在 PoE 适配器的远端使用。
第 5 步:验证您可以从气象站读取数据
现在您应该能够启动 RPi2 和控制器。一旦它们都通电,使用 minicom 来验证通信是否正常。我们必须在 ADS-WS1 控制器中刷新固件才能正常工作。控制器上有一个交互式串行接口,可能需要进行配置。 Argent 为控制器维护了一个 wiki,其中包括您可以发送到单元的命令:
http://wiki.argentdata.com/index.php?title=ADS-WS1…
一旦控制器发送常规数据,尝试使用weather.sh 脚本。这应该确认您正在获取智能数据。
第 6 步:准备户外使用的装备
现在您需要将所有东西放入某种类型的户外容器容器中。从技术上讲,您应该构建一个斯蒂芬森屏幕以确保正确的室外温度读数。温度和湿度传感器位于天气控制器箱内(有一个读数的开口)。
http://en.wikipedia.org/wiki/Stevenson_screen
不过,我现在使用的是 PVC NEMA 4" 防水外壳。缺点是我们不会获得湿度读数,白天的温度读数可能会增加 10-15 华氏度。我们计划在未来建造一个斯蒂芬森屏幕以获得准确的读数。
欲知更多详情:Raspberry Pi 2 气象站
制造工艺