手持气象站的制作教程

电子说

1.3w人已加入

描述

的第1步:硬件要求

1)任何Raspberry pi(我使用3b型)

2)LCM1602C LCD屏幕(可选,使可以使用其他LCD屏幕或触摸屏,但最好不要使用Adafruit。)您还可以使用10 k欧姆的电位器来设置屏幕对比度。

3)Sensirion SDP810-125 PA(差压/微热流量传感器)。 SDP810-500 PA也可以使用,但是提供的python代码将需要修改。

4)Bosch BME 280温度,湿度和大气压力传感器(最好在Adafruit分支板上使用,其他可能也可以使用,但可能具有不同的i2c地址)。

5)具有VNC或SSH的iOs或android手机或平板电脑(如果不使用LCM1602C LCD或其他屏幕,则为可选)

6)树莓派电池或移动电源(可选,以使设备便携式)

7)2个10 K欧姆电阻器

8)大面包板,一个小面包板和PI补鞋匠

9)一些跳线(35对公对公和10对公对母)。

10)尽管提供了所有代码,但有些Python技能也会有所帮助。

11 )2个内径为4mm的水族馆(鱼缸管)。您还将需要2个喷嘴,但可以3d打印它们。喷嘴上的孔的尺寸必须与SDP810的管道上的孔相同。我使用了来自廉价真空吸放泵的两条吸管。皮托管也可以安装在鱼缸管上,但只能进行一个方向的风向测量和重新校准。

12)3D打印机(可选,用于打印盖子和喷嘴)

13)可能需要手持式风速仪进行校准,

在继续之前,我必须先说说硬件及其极高的质量。我相信Raspberry pi是众所周知的,不需要任何介绍。该项目中使用的两个传感器(Bosch BME280和Sensirion SDP810-125 PA)可能是同类产品中价格最低的业余爱好中最好的。但是,它非常精确,并且为医疗环境中的精确度而生产。在https://www.bosch-sensortec.com/bst/products/all_products/bme280和https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/0_Datasheets/Differential_Pressure/Sensirion_Differential_Pressure_Sensors_SDP中读取相应的数据表.pdf

步骤2:连接硬件

气象站

在使用GPIO引脚或连接/断开连接时请记住要关闭树莓派

将Sensirion SDP 810连接到面包板上,如上图和上图所示。切记在Vdd和SDA以及Vdd和SCL之间使用两个10 k欧姆上拉电阻。还要连接BME280(不需要上拉电阻)。由于两个传感器具有不同的i2c地址,因此可以将它们并行连接到同一i2c总线。我使用了颜色编码Red = V,Green = SDA/SDI和Red = SCK/SCL

确保在系统上启用了i2c(转到“应用程序菜单”,“首选项”,Raspberry PI配置,“接口”)

连接电路,打开树莓派。打开一个终端窗口,然后运行 sudo i2cdetect –y 1 。结果应指示地址为0x25(SDP810)和x76或x77(BME280)上的2个设备。

连接LCM1602C。我按照adafruit的说明进行操作(https://learn.adafruit.com/drive-a-16x2-lcd-direct-with-a-raspberry-pi/overview),但是,adafruit修改了代码中的引脚排列,因此请遵循以下说明:

按照以下步骤将LCD连接到面包板上:

LCD的引脚1接地(黑线)

LCD的2号引脚变为+ 5V(红线)

3号引脚(Vo)连接到电位计的信号(橙色线)。如图所示,将其余的电位器引脚连接到+ 5v和GND。如果不想让屏幕对比度变化,请将LCD的引脚3连接到+ 5V

引脚4(RS)连接到Cobbler#25(GPIO 25)(黄线)

针脚5(RW)接地(黑线)

针脚6(EN)连接到Cobbler#24(GPIO 24)(绿线)

跳过LCD针#7,#8,#9和#10

针#11(D4)连接到补鞋匠#23(GPIO 23)(蓝线)

针# 12(D5)连接到Cobbler#17(GPIO 17)(紫线)

针#13(D6)连接到Cobber#21(GPIO 21)(灰线)

针脚14(D7)连接到Cobber#22(GPIO 22)(白线)

针脚15(LED +)转到+ 5V(红线)

针脚# 16(LED-)接地(黑线)。

Adafruit i还提供以下警告:

在接线之前,请检查您的LCD具有LED背光,而不是EL背光。 LED背光使用10-40mA的功率,EL背光使用200 + ma! EL背光灯通常价格便宜但无法使用,请确保不要使用背光灯,否则Pi会过载。一些带有LED背光的廉价LCD在LCD模块的背光上没有电阻,如果不确定,请在15针和5V引脚之间连接一个1Kohm电阻,而不是直接连接。所有Adafruit液晶显示器均具有带内置电阻器的LED背光灯,因此您不需要额外的电阻器。

您现在可以打开树莓派。屏幕将点亮。如果看起来不像提供的照片上的屏幕,请检查您的连接。如果屏幕点亮,但您看不到障碍物,请转动锅。如果添加了1 k ohm电阻,则可能必须将其删除才能使块可见。

步骤3:准备RASPBERRY PI软件

我的代码已在最新的Raspbian Stretch上进行了测试。

确保您的系统是最新的

打开终端并运行:

$ sudo apt -get update

$ sudo apt-get upgrade

还请确保已安装以下软件包。它们可能已经安装。

$ sudo apt-get install python-dev

$ sudo apt-get install python-setuptools

$ sudo easy_install -U分发

$ sudo apt-get install python-pip

$ sudo pip install rpi.gpio

$ sudo pip install rpi.gpio

现在您需要安装适用于BME280和LCM1602C的adafruit模块。它们可以在Github上获得

首先安装git来启用github上目录的克隆。运行

$ sudo apt-get install git

移动到要安装模块的目录。我建议您使用puthon目录。运行:

$ cd mkdir/home/pi/python

$ cd/home/pi/python

使用以下命令克隆Adafruit_Python_CharLCD目录:

$ git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git

移至Adafruit_Python_CharLCD目录

$ cd Adafruit_Python_CharLCD

运行以下命令注册模块:

$ sudo python setup.py安装

LCM1602 python模块现在可用于所有python应用程序,方法是:

将Adafruit_CharLCD作为LCD导入LCD 在您的python编辑器中

您可以通过运行附件LCD_Hello_world.py来测试LCD。如果您不根据物理插脚(在附件LCD_Hello_world.py和我提供的所有脚本中更正),不修改python中的插脚,则github上的示例(在示例目录中可用)将无法工作。如果屏幕上没有显示“ hello world”,请检查引脚排列,连接并转动电位计。如果这不起作用,则添加了1 k ohs电阻器。

您还需要安装BME280模块。使用以下shell命令移动到python目录。

$ cd/home/pi/python

运行以下命令:

$ git clone https://github.com/adafruit/Adafruit_Python_BME280.git

$ cd Adafruit_Python_BME280

$ sudo python setup.py install

现在,通过导入Adafruit_BME280模块,adafruit BME280模块将可用于所有python脚本。

在运行第一个脚本之前,请通过运行

$ sudo i2cdetect –y 1

,确保BME280在i2c地址77上(其他BME280板可能在76上)。 BME280正在使用i2c地址76,将文件Adafruit_BME280.py第30行修改为BME280_I2CADDR = 0x76

可以使用附加的Reading_BME280.py示例来测试BME280。

Sensirion SDP810 micro热流量传感器不需要任何特殊模块,并且可以通过smbus协议(i2c总线协议的子集)进行通信。我在网上很难找到SDP810的python示例,不得不用辛苦的方式和使用它的数据表弄清楚它的工作方式。结果可在Github上找到,网址为https://github.com/JJSlabbert/Sensirion_SDP810_125PA。

第4步:运行气象台软件

当前,我有两个可用的python脚本:

weather_log_and_display.py 将读取所有传感器,将读数打印到树莓派屏幕上(如果已连接),将数据记录在data.txt中并打印液晶显示屏上的读数。

anemometer.py 可以非常快速地读取风速数据。您可以在Python脚本中增加/减少读取间隔。根据SDP810的数据表,每0.5 ms可获得一个新的读数。这是用于python和LCD屏幕的快速方法。该脚本还显示了最小和最大读数,是检测阵风的理想选择。

您还可以使用智能手机/平板电脑通过VNC监视气象站。有关更多信息,请访问https://www.raspberrypi.org/magpi/vnc-raspberry-pi/。检查应用商店中的vnc查看器。

如果您需要在启动时自动运行脚本,请添加

@python/home/pi/python/Portable_Weather_Station/weather_log_and_display.py

对于/home/pi/.config/lxsession/LXDE-pi

关于海拔高度计算的注意事项:

海拔高度是计算得出的作为局部大气压,温度和可见水压的函数。看见水平的实际压力在1013,25 hPa附近频繁波动。我在Python脚本中使用了1013,25 hPa。因此,由Python脚本计算出的海拔高度只是估计值。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分