嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content
在这个项目中,我们创建了一个基于 Arduino 的无线气象站,它将能够测量环境温度、相对湿度和风力。 这些环境数据将通过蓝牙发送到计算机。

零件清单

数量 产品 库存编号
1 Arduino Due Development Board 769-7412
1 Pmod TMP3 Ambient Temperature Sensor 136-8066
1 Pmod HYGRO Humidity/Temperature Sensor 136-8072
1 Pmod DPG1 Differential Pressure Gauge 134-6485
1 Pmod BLE Bluetooth Low Energy Module 175-2110

首先,我们需要确定气象站测量的元素。 两种常见的测量方法是温度和相对湿度。 为了获得“感觉”的温度(即你在冷风下感觉更冷),我们还想测量气象站的风速。 我们将使用管式风速计来测量风速,因为它消耗的功率小并且更实惠。

我们想在智能手机、平板电脑或 PC 上查看测量结果。 为此,让我们建立一个无线气象站。 可用的无线技术有 Wi-Fi、蜂窝网络和蓝牙。 但是,Wi-FI 和 3G/4G 都需要设备连接到现有网络,并且消耗大量电力。 因此,我们选择了低功耗蓝牙 (BLE)。

Arduino Due 将用作控制平台。 它具有 3.3V 数字电压,并且与几乎所有 I2C 或 SPI 传感器和执行器兼容。 我们使用 9V 电池为气象站供电。

气象站中的传感器

为了节省我们的时间,我们通过 Digilent Pmod 传感器模块收集测量值。 这些传感器模块可以直接连接到 Arduino Due。 不需要外部电路。 我们可以使用 Digilent Pmod 传感器在无线气象站中安装所有传感器。 那很方便。

Pmod TMP3 数字温度传感器

Pmod TMP3 是环境温度传感器。 它可以以高达 0.0625 °C 的分辨率(12 位)测量宽范围的环境温度(-40°C 至 +125°C)。 标准精度为 +/- 1°C。 它可以由微控制器的 3V3 引脚供电,不需要任何其他外部硬件即可运行。 Pmod TMP3 通过 I2C 接口与 Arduino Due 通信。 我们可以按照以下接线说明将其连接到 Arduino Due。

Pmod TMP3 Arduino Due
SCL (1) SCL (21)
SDA (2) SDA (20)
GND (3) GND
VCC (4) 3V3

有 8 个不同的 I²C 从地址,范围从 0x48 到 0x4F。 如果所有跳线都保留在默认位置,则设备的 I2C 地址为 0x48。 默认分辨率为 9 位。 我们可以在地址 0x01 的配置寄存器中设置所需的分辨率 (Microchip TCN75A datasheet section 5.3.2) ,将地址指针设置为 0x00,即存储数据的地址。 为了读取温度,我们将存储数据的地址 (0x00) 写入寄存器。 温度数据有两个字节,并以二进制补码格式排列。 我们使用以下公式将测量数据转换为环境温度 (Microchip TCN75A datasheet section 5.3 and 5.3.1)

Equation: Ambient Temperature = Measured Data (in decimal) x 2-4

数据传输由一个起始条件 (Start) 启动,后跟一个 7 位设备地址和一个读/写位。 来自从机的确认 (ACK) 确认每个字节的接收。 每次访问都必须由停止条件 (Stop) 终止。 (Microchip TCN75A datasheet section 4)

Pmod HYGRO 数字湿度传感器

Pmod HYGRO 是一种相对湿度传感器,它可以以高达 14 位的分辨率确定环境的相对湿度。 精度±2%。 它可以由微控制器的 3V3 引脚供电,不需要任何其他外部硬件即可运行。 Pmod HYGRO 通过 I2C 接口与 Arduino Due 通信。 我们可以按照以下接线说明进行操作。 由于 Pmod TMP3 和 Pmod HYGRO 都通过 I2C 接口,因此它们可以菊花链式连接。 (将一个 Pmod 连接到 Arduino,然后将第二个 Pmod 连接到第一个)

Pmod HYGRO Arduino Due
SCL (3) SCL (21)
SDA (4) SDA (20)
GND (5) GND
VCC (6) 3V3

设备的I2C 地址为0x40。 将湿度传感器与 Arduino Due 通信的最简单方法是使用库 ClosedCube_HDC1080.h

Pmod DPG1 差压表传感器和皮托管静压管

皮托静压管是一种气动同轴管,内部开口并指向风向,外部在其表面有小孔。 外管提供静压,而内管提供停滞压力(由于风直接吹入管中而出现压力)。

Pitot Tube Types

来源: https://commons.wikimedia.org/w/index.php?curid=3301685

两者之间的差异给出了动态压力,流体流动(风)的速度可以通过以下方程(伯努利方程)确定:

Bernoulli's equationBernoulli's equation, where v equals

风速本身对我们没有任何意义,因此我们根据 Beaufort 标度对风速进行编码。

Beaufort Number Wind Speed (mph) Wind Speed (kmph) Wind Speed (knots) Description Wind Effects on Land
0 <1 <1 <1 Calm Calm, smoke rises vertically
1 1-3 1-5 1-3 Light Air Wind motion visible in smoke
2 4-7 6-11 4-6 Light Breeze Wind felt on exposed skin. Leaves rustle
3 8-12 12-19 7-12 Gentle Breeze Leaves and small twigs in constant motion
4 13-18 20-28 13-16

Moderate Breeze

Dust and loose paper are raised. Small branches begin to move
5 19-24 29-38 17-21 Fresh Breeze Small trees begin to sway
6 25-31 39-49 22-27 Strong Breeze Large branches are in motion. Whistling heard in overhead wires. Umbrella use is difficult
7 32-38 50-61 28-33 Near Gale Whole trees in motion. Some difficulty walking into the wind
8 39-46 62-74 34-40 Gale Twigs and small branches break from trees. Cars veer on road.
9 47-54 75-88 41-47 Strong Gale Larger branches break from trees. Light structural damage
10 55-63 89-102 48-55 Storm Trees broken and uprooted. Considerable structural damage
11 64-72 103-117 56-63 Violent Storm Widespread damage to structures and vegetation
12 >73 >117 >64 Hurricane Considerable and widespread damage to structures and vegetation. Violence

要创建皮托管静压管,我们需要两根不同直径的塑料管。 在这个项目中,我们使用一个 2.5 毫升的注射器和一个空笔芯来制作管子。 您还需要一把刀具、一个钻头和一些双组分聚酯腻子胶来密封管子并使其外部具有空气动力学特性(稍后会详细介绍)。

Components needed to create pitot-static tube

首先,切割注射器的尖端并在其一端钻一些孔。 在注射器上为较小的管子钻另外两个孔:一个沿其轴线,一个靠近其底部。 使用 3 毫米钻头(较小管的直径)。 您可以参考下图,孔用红色标记:

Drill holes in syringe as indicated

如下图所示,从笔芯上剪下两片并将它们插入注射器中。 请记住,较长的应该从注射器的两端伸出。

Basic construction of Pitot tube

现在使用腻子密封小管(笔芯)插入注射器的孔。 此外,密封注射器的背面。 使用一块腻子使注射器的尖端更符合空气动力学。 下图显示了胶合管。

Construction of Pitot tube with putty to seal holes

Construction of Pitot tube - completed

现在,让我们看看动态气压传感器。 我们使用 Digilent Pmod DPG1 作为差压表传感器。 Pmod DPG1 可以检测其两个输入之间的非常小的压力差 (0 - 10 KPa)。

Pmod DPG1 可以通过带有 SPI Mode 0 的 SPI 与 Arduino Due 通信。下表为接线说明。

Pmod DPG1 Arduino Due
SS (1) 2
MISO (3) MISO
SCK (4) SCK
GND (5) GND
VCC (6) 3V3

当胶水干燥时,您可以通过小橡胶管将皮托管连接到 Pmod DPG1。 这些较小的管子带有 Pmod DPG1。

Pitot tube connected to tubes

我们可以使用下面的公式来计算压力差。

Pmod DPG1 Equations

要校准组装好的 Pmod DPG1 和皮托管,您可以在静止空气下进行一些测量,并在串行监视器中显示测量的压差。 通过这样做,您可以消除测量中的任何偏移。

注:Pmod DPG1 只能接受一定范围的压差,不会损坏内部压阻硅。 Pmod 放置在平面上,使传感器位于 PCB 上方时,最顶部的喷嘴是 P1(用于检测波动压力的接收喷嘴),最底部的喷嘴是 P2P1 的压力参考喷嘴)。 建议 P1 处的压力比 P2 处的压力高 0 10 kPa

蓝牙传输

我们通过蓝牙将气象站收集的数据发送到任何接收器(例如平板电脑、笔记本电脑或台式机)。 为此,我们将低功耗蓝牙模块 Pmod BLE 连接到 Arduino Due 的 UART 端口之一(例如 Serial1):

Pmod BLE Arduino Due
RXD (2) TX1 (18)
TXD (3) RX1 (19)
GND (5) GND
VCC (6) 3V3

Pmod BLE 可以使用 ASCII 命令进行配置。 为此,我们在初始化 Pmod BLE 并将其转换为命令模式时发送“$$$”。 然后,我们可以发送以下命令来配置 Pmod。 每个命令都必须以回车符 (\r) 和 " " 结束。

  • "SF,1": 将配置重置为出厂默认设置。
  • "S-,name": 设置设备名称。 设备将自动在名称末尾附加其序列号。
  • "SGA,0": 将输出功率设置为最大
  • "SS,C0": 启用设备信息传输和透明 UART 模式。 我们将使用此模式与 Arduino Due 进行通信。

配置模块后,我们通过发送“---\r”退出命令模式。 Pmod BLE 将返回数据模式并传输数据。 完整的命令列表可在https://reference.digilentinc.com/_media/reference/pmod/pmodble/rn4871_user_guide.pdf找到。

警告:热插拔(在通电时拔出或插入设备)Pmod BLE 可能会擦除设备上的内部存储器。 解决此问题需要 PC Pmod BLE 之间的 UART 终端连接。

数据显示

可以在串行监视器中接收数据。 我们使用免费的 Android 应用程序(来自 Kai Morich 的Serial Bluetooth Terminal) 来显示数据和状态。 要建立连接,我们必须授予应用程序所需的权限,并打开手机或平板电脑上的 GPS 和蓝牙。

打开菜单(左上角),然后选择“设备”。 选择“Bluetooth LE”选项卡,然后选择 Pmod BLE(您为 Pmod BLE 命名的任何名称)。 该应用程序会自动打开终端并显示来自蓝牙模块的数据。

terminal screen showing serial dataterminal data showing more serial data

附录

完整连接图

Full connection diagram

完整代码

下载

awong 还没写个人简介...

评论