嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

使用Pi 3 Model B +构建定制遥感平台

Main13_8c5d6dc9ad3722167ef7b798bc4608ff8eadd5f3.jpg

支援PoE的Pi为定制遥感平台提供了极好的基础。

为遥感平台提供基础仅仅是新型以太网供电(PoE)树莓派3型B +适合的众多用途之一。在本文中,在探讨一个简单的真实世界示例 (该示例使用DesignSpark Pmod HAT和Python脚本从热电偶Pmod获取读数,并通过MQTT发布它们。)之前,我们将介绍可用的接口选项以及一些便捷的集成传感器方法。

接口选项

Header_5f3eabde7c8538b4e99165ffa20e3daafb764f0d.jpg

所以让我们从基础开始,并提醒我们自己有可用的本地接口:

  • USB. 更多的终端用户外设接口,但会有一些传感器使用它,实际上也适用于其他总线,如RS-422和CAN。
  • Plain GPIO. 我们可以读取“bitbanging”状态的数字引脚使用软件/库来实现对某些通常速度较低的总线的支持,例如高度流行的DS18B20温度传感器使用的单线总线。
  • I2C. 一个简单的串行主/从总线,它使用两条线并具有7位地址范围。 I2C提供了大量的传感器和ADC,以及数字I / O扩展器,为您提供更多的GPIO引脚,EEPROM和其他器件。
  • SPI. 4根时钟线,双向数据传输和从机选择。再次受到许多器件的支援,通常以比I2C更高的速度运行,但由于只有2个芯片使能线可用于选择外设,因此只能使用两个,除非您还对GPIO进行了bit-bit。

我们可以简单地将传感器通过面包板,跳线或跳板等进行集成。但是,也有非常便利的模块化系统可用,所以我们来看看其中两个。

MikroElektronika点击

Click_cf8df656ae0cb092edbb5456d7b3ccc8a38bf419.jpg

点击板是紧凑的模块,可以通过接口适配器“屏蔽”与各种不同的平台一起使用,其中一种可用于Raspberry Pi 3 Model B +(896-8660),以提供即时通行方便的模块范围。

为以下传感器提供Python代码示例Click board:

当然,还有更多的传感器和ADC等模块可供使用,通常提供的C代码示例代码可用作您自己项目的起点。

要了解有关Pi 3 Click Shield的更多信息,请参阅此前的博文

Digilent Pmod

PmodHAT1_48594c4bdf4933b34dbcb1b10dbeff4255178dac.jpg

外设模块(简称Pmod)是另一个开放式规范标准,但是这次是来自Digilent。 DesignSpark Pmod HAT最初与FPGA和微控制器平台相关联,为与Raspberry Pi一起使用提供了一个完美的解决方案。

与Click板一样,有许多不同的Pmod可供使用,并且有很多不同的Pmod提供有用的传感器和输入。一个用于Pmod HAT的Python库支援六个Pmod,其中四个是传感器/输入:

  • PmodAD1 (134-6443) . 双通道12位ADC。
  • PmodISNS20 (136-8069) . ±20A直流或交流输入,高精度电流传感器。
  • PmodMIC3 (134-6475) . MEMS麦克风模块。
  • PmodTC1 (134-6476) . 冷端热电偶到数字转换器。

The DesignSpark.Pmod Python库提供了一个简单而一致的界面,可以读取上述Pmod中的读数,并驱动H桥Pmod和RGB OLED Pmod。

有关Pmod HAT,库和所有支持的Pmod的详细信息,请参阅上一篇博文

接下来让我们看一下使用PmodTC1的实例。

监测温度

PmodTC1_2b9b878ba3a7910b8d781970dcf93cf54424b468.jpg

PmodTC1配有K型热电偶线,温度范围为 -73°C 至482°C,这意味着它可以用于各种不同的应用场合。

举例来说,我们希望能够测量热水箱的温度,因为我们想尝试优化我们锅炉的定时器程序或可能的恒温器设定点。蓄水箱在阁楼上,靠近没有电源插座,我们不想让电工出门。没问题 - PoE供电的Pi适用于这种情况。我们将使用MQTT发布数据馈送,因为它易于使用并得到广泛支援。

Wire_5ca2850faba5915a34c9f806ff9ceadf60262a9e.jpg

K型热电偶导线

使用Raspbian - Lite版本就足够了 - 写入插入到我们的Pi中的Micro SD卡并引导,我们首先需要安装DesignSpark.Pmod库。接下来我们将安装Paho MQTT库:

pi@3bplus:~ $ sudo pip install paho-mqtt

现在我们拥有易于使用的库,可以让我们从PmodTC1读取数据并将其发布到MQTT代理。以下是我们的代码最简单的样子:

import time
from DesignSpark.Pmod.HAT import createPmod
import paho.mqtt.publish as publish

broker = 'localhost'
topic = 'house/boiler/hotwater/temperature'

therm = createPmod('TC1','JBA')

while True:
    cel = therm.readCelcius()
    print cel
    publish.single(topic, cel, hostname=broker, client_id="temp_sensor")
    time.sleep(1)

这是做什么的?

  • 导入我们需要的Python模块(库)
  • 定义我们想要发布读数的MQTT代理主机和主题
  • 在端口JBA(JB连接器的顶行)上设置PmodTC1模块,
  • 每秒钟读取一次,将其打印到终端并发布给代理

如果您有一个现有的MQTT代理运行在某个地方,则可以在您自己的或基于云的IoT平台的系统上进行配置,您可以将其配置为主机。在这里我们使用“localhost”,我们可以通过以下方式轻松测试这种方式:安装Mosquitto MQTT代理和客户端:

pi@3bplus:~ $ sudo apt-get install mosquitto mosquitto-clients

然后在一个窗口中,我们可以运行我们的Python脚本:

pi@3bplus:~ $ python PmodTC1-MQTT.py

在第二个窗口中,我们可以订阅该主题以确认消息确实正在向代理发布:

pi@3bplus:~ $ mosquitto_sub -h localhost -t 'house/boiler/hotwater/temperature'

RSP_mosquitto_sub_2cdf8d9d1f28cbe31e0701520ae925ac884daaca.jpg

进一步應用

当然,许多不同的方向可能会进一步采用这种应用。假设您有其他传感器连接到同一个Pi,那么您可以像在示例中一样运行代理,也可以安装Node-RED来实现某些逻辑,将数据发布到网页,设置警报和/或与一些云服务集成。您可以在Pi上安装时间序列数据库以记录数据,例如InfluxDB,也可能在Grafana中进行可视化。

可以使用的云服务包括IBM CloudOpenSensorsCayenne,它们都支持MQTT以及其他API。

正如我们所看到的,感谢使用DesignSpark Pmod HAT和支援库,将传感器添加到Raspberry Pi 3 Model B +并获取数据。通过这种组合,可以为原型化遥感平台提供完善的解决方案,并提供大量可用于开发应用程序的开源工具,以及物联网云服务。

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.