0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

手持气象站的制作教程

454398 来源:wv 2019-10-18 10:42 次阅读

的第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的iOsandroid手机或平板电脑(如果不使用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脚本计算出的海拔高度只是估计值。

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

    关注

    1

    文章

    693

    浏览量

    15341
收藏 人收藏

    评论

    相关推荐

    小型手持气象站:它是否能够提供准确的天气预报?

    小型手持气象站是一种方便携带、操作简便的气象监测设备,旨在为用户提供实时、准确的气象信息,适用于户外探险、登山、露营等活动场合。以下是该设备的主要特点和功能: 首先,小型
    的头像 发表于 03-18 10:41 108次阅读

    手持自动气象站-手持气象仪-手持五参数气象

    光伏检测仪气象站
    山东天格光电科技有限公司
    发布于 :2023年11月18日 15:32:10

    校园气象站组成与作用

    对于校园气象站,相信很多人都不陌生,主要作用是用于监测气象要素信息。校园气象站作为学校教学研究的器材,可监测校园气象,为学校提供参考数据,也可以锻炼学生的动手能力。对青少年的
    的头像 发表于 10-31 16:28 318次阅读

    #移动气象站# 扬尘监测# 车载气象站 车载扬尘监测站

    监测气象站
    pgz1234
    发布于 :2023年09月18日 08:52:32

    负氧离子在线监测系统# 气象站# #气象监测

    监测气象站
    pgz1234
    发布于 :2023年09月18日 08:50:51

    什么是气象站气象站的简介

    什么是气象站气象站的简介
    的头像 发表于 09-14 16:14 808次阅读

    手持小型气象站介绍

    手持小型气象站可自动检测记录温度、湿度、光照强度、CO浓度、光合有效辐射、土壤温度、土壤水分、土壤盐分、总辐射、风向风速、雨量、土壤pH、土壤紧实度、土壤氧气等气象环境参数,仪器外观小巧,便于携带,功能全面。
    的头像 发表于 08-25 14:47 302次阅读
    <b class='flag-5'>手持</b>小型<b class='flag-5'>气象站</b>介绍

    光伏气象站是什么

    光伏气象站作为现代气象观测的重要工具,为气象学、农业、航空、环境科学和能源等领域的研究和应用提供了气象数据,是辅助指导生产生活的重要设施。 传统的手工
    的头像 发表于 08-14 16:36 436次阅读

    如何制作简单的气象站

    电子发烧友网站提供《如何制作简单的气象站.zip》资料免费下载
    发表于 06-30 09:45 0次下载
    如何<b class='flag-5'>制作</b>简单的<b class='flag-5'>气象站</b>

    气象监测系统是气象站

    气象监测系统是现代气象业务体系的重要组成部分,是提升公共气象服务能力和提高气象预报预测准确率的重要基础。 气象监测系统是
    的头像 发表于 06-14 16:43 275次阅读

    如何使用Openweathermap和0.96英寸oled来制作一个小气象站

    我是 ESP8266 的新手。我想通过使用 Openweathermap 和 0.96 英寸 oled 来尝试一个小气象站。当我尝试编译代码时,出现此错误。怎么了? 调用使用属性错误声明的“HTTPClient::begin”:过时的 API,使用 ::begin(WiFiClient, url)
    发表于 06-02 10:16

    使用D1 mini作为气象站,A0读数不稳定的原因?

    使用 D1 mini 作为气象站。在其他草图中,通过 100k 电阻将 batter+ 连接到 A0,电池监控效果非常好。 当我将 D1 和 D2 用于连接到 BME280 和 BME280
    发表于 05-25 07:56