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

描述

支援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。

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

MikroElektronika点击

点击板是紧凑的模块,可以通过接口适配器“屏蔽”与各种不同的平台一起使用,其中一种可用于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的更多信息,请参阅此前的博文。

Digilent Pmod

外设模块(简称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 +并获取数据。通过这种组合,可以为原型化遥感平台提供完善的解决方案,并提供大量可用于开发应用程序的开源工具,以及物联网云服务。

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

全部0条评论

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

×
20
完善资料,
赚取积分