支援PoE的Pi为定制遥感平台提供了极好的基础。
为遥感平台提供基础仅仅是新型以太网供电(PoE)树莓派3型B +适合的众多用途之一。在本文中,在探讨一个简单的真实世界示例 (该示例使用DesignSpark Pmod HAT和Python脚本从热电偶Pmod获取读数,并通过MQTT发布它们。)之前,我们将介绍可用的接口选项以及一些便捷的集成传感器方法。
所以让我们从基础开始,并提醒我们自己有可用的本地接口:
USB. 更多的终端用户外设接口,但会有一些传感器使用它,实际上也适用于其他总线,如RS-422和CAN。
Plain GPIO. 我们可以读取“bitbanging”状态的数字引脚使用软件/库来实现对某些通常速度较低的总线的支持,例如高度流行的DS18B20温度传感器使用的单线总线。
I2C. 一个简单的串行主/从总线,它使用两条线并具有7位地址范围。 I2C提供了大量的传感器和ADC,以及数字I / O扩展器,为您提供更多的GPIO引脚,EEPROM和其他器件。
SPI. 4根时钟线,双向数据传输和从机选择。再次受到许多器件的支援,通常以比I2C更高的速度运行,但由于只有2个芯片使能线可用于选择外设,因此只能使用两个,除非您还对GPIO进行了bit-bit。
我们可以简单地将传感器通过面包板,跳线或跳板等进行集成。但是,也有非常便利的模块化系统可用,所以我们来看看其中两个。
点击板是紧凑的模块,可以通过接口适配器“屏蔽”与各种不同的平台一起使用,其中一种可用于Raspberry Pi 3 Model B +(896-8660),以提供即时通行方便的模块范围。
为以下传感器提供Python代码示例Click board:
颜色点击 (923-5999). RGBC颜色传感器
加速点击 (923-5999). 3轴加速度计 (882-8900)
天气点击 (912-5170). 温度,湿度和压力传感器
当然,还有更多的传感器和ADC等模块可供使用,通常提供的C代码示例代码可用作您自己项目的起点。
要了解有关Pi 3 Click Shield的更多信息,请参阅此前的博文。
外设模块(简称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配有K型热电偶线,温度范围为 -73°C 至482°C,这意味着它可以用于各种不同的应用场合。
举例来说,我们希望能够测量热水箱的温度,因为我们想尝试优化我们锅炉的定时器程序或可能的恒温器设定点。蓄水箱在阁楼上,靠近没有电源插座,我们不想让电工出门。没问题 - PoE供电的Pi适用于这种情况。我们将使用MQTT发布数据馈送,因为它易于使用并得到广泛支援。
K型热电偶导线
使用Raspbian - Lite版本就足够了 - 写入插入到我们的Pi中的Micro SD卡并引导,我们首先需要安装DesignSpark.Pmod库。接下来我们将安装Paho MQTT库:
pi@3bplus:~ $ sudo pip install paho-mqtt现在我们拥有易于使用的库,可以让我们从PmodTC1读取数据并将其发布到MQTT代理。以下是我们的代码最简单的样子:
import timefrom DesignSpark.Pmod.HAT import createPmodimport 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'
当然,许多不同的方向可能会进一步采用这种应用。假设您有其他传感器连接到同一个Pi,那么您可以像在示例中一样运行代理,也可以安装Node-RED来实现某些逻辑,将数据发布到网页,设置警报和/或与一些云服务集成。您可以在Pi上安装时间序列数据库以记录数据,例如InfluxDB,也可能在Grafana中进行可视化。
可以使用的云服务包括IBM Cloud、OpenSensors 和Cayenne,它们都支持MQTT以及其他API。
正如我们所看到的,感谢使用DesignSpark Pmod HAT和支援库,将传感器添加到Raspberry Pi 3 Model B +并获取数据。通过这种组合,可以为原型化遥感平台提供完善的解决方案,并提供大量可用于开发应用程序的开源工具,以及物联网云服务。
全部0条评论
快来发表一下你的评论吧 !