你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32L4的Azure Stream Analytics

[复制链接]
点点&木木 发布时间:2019-4-2 18:13
本帖最后由 点点&木木 于 2019-4-12 09:10 编辑

Azure Stream Analytics自动监视传感器,可在发生危险时发送推文和警报。也可通过智能手机控制。

1.jpg



这个项目中使用的东西
硬件组件
Arduino MKR1000       ×     1      
SparkFun Graphic LCD 84x48 - 诺基亚5110    ×      1      
Texas Instruments LM2596 DC-DC 4.5-40V可调节降压电源模块     ×         1      
DHT11温湿度传感器(4针)      ×     1      
ElecFreaks MQ-5气体传感器    ×     1      
KEYES火焰传感器模块   ×         1      
恩智浦74LS00 TTL四路2输入正与非门     ×        1      
ST STM32L4,STM32F7STB75NF75 N沟道功率MOSFET     ×       3      
气流电磁阀常闭    ×   1      
2线点火线圈      × 1      
电阻10k欧姆      ×  2      
电阻4.75k欧姆        ×         1      
面包板(通用)       ×         1      
33欧姆10W电阻绕线   ×       1      
跳线(通用)          ×  1      
SparkFun DC桶式千斤顶适配器     ×  1      
用于电压调节器或MOSFET的散热器散热器   ×   3      
1N4007  - 高电压,高电流额定二极管         ×     1      


手动工具和制造机器
烙铁(通用)         
3D打印机(通用)        
绳钻

在我国,天然气压力在需求高峰时段内全天波动。每年有无人看管的加热器有很多人丧生,一氧化碳中毒。

这个项目的灵感来自一个冬天的夜晚,当我女儿的房间太冷,但我不能在她睡觉时让加热器保持开启状态。

当我开始设计这个项目的时候,我想,如果我把一个支持WiFi的控制器如MKR1000放在那里,那么除了安全之外我还可以做很多很酷的事情。这就是智能手机连接,使用摩托车零件自动点火的情况。

框图

2.png



加热器通过物联网中心向Azure发送遥测数据。Stream Analytics正在对设备数据进行近乎实时的分析,并将根据配置的SQL请求发布警报。Worker角色将获取Stream Analytics生成的警报,并通过IoT Hub将警报转发给设备。


如果您有足够的气体和电子工作经验,可尝试此项目。
为避免火灾危险,在将纸板和电子设备连接到燃气设备时要小心。


硬件设置

在构建此项目时,MKR1000未发布且文档未公开。我担心的是MQ5气体传感器使用加热器,如果连接到MKR1000电源,可能无法满足电流需求。为安全起见,我使用降压转换器为模块提供5v工作电压。然后在板载稳压器上使用MKR1000提供3.3V工作电压。

如果您有来自Sparkfun的符合3V标准的MOSFET,如FQP30N06L,那么您不需要Quad NAND芯片,但您需要将MOSFET的电压拉低的10k电阻。

我强烈建议使用可测量电流的台式电源。这将非常有用的,当您在软件或布线中出错并且意外地让MOSFET导通或处于浮动状态时。桌面电源电流消耗会将在您闻到燃烧的硅的味道之前提醒您


3.1.jpg
DHT11安装


3.2.jpg
温度传感器安装


3.3.jpg



3.4.jpg
液晶显示



3.5.jpg
火焰传感器



3.6.jpg
带盖的火焰传感器



3.7.jpg



3.8.jpg
添加气体传感器



制作盒子

4.1.jpg



4.2.jpg



4.3.jpg




我只是用了一个旧鞋盒,然后把它切成我的规格。激光切割亚克力板是我的第一选择。



钻孔

5.1.jpg
需要一个好的钻头来钻孔



5.2.jpg
点火线圈需要连接到金属体上




电磁阀故障排除

装配后我意识到我的螺线管漏气了。我打开它,在它的磁盘上发现了洞。用一点点超级胶水固定它。

6.1.jpg



6.2.jpg


使用聚四氟乙烯胶带棉线密封



6.3.jpg


6.4.jpg



6.5.jpg
这是我检验泄露的方法



6.6.jpg
请注意,反激式二极管直接焊接在端子上



6.7.jpg



6.8.jpg




3D打印

我需要一个用于火焰传感器的支架,这样我就可以调节它以获得最佳的火焰视野而不会产生大量的热量。3D打印解决了这个问题。此外,需要保护火焰传感器免受周围阳光的照射。我为此目的3D打印了一个封面。

需要使用LCD支架将其抬高至靠近盖板以便于读取。
7.jpg
要打印的型号



8.1.jpg



8.2.jpg




8.3.jpg



9.1.jpg
安装火焰传感器


9.2.jpg
安装支架



10.1.jpg



10.2.jpg



11.1.jpg



11.2.jpg
安装火焰传感器盖



12.jpg
LCD支架



13.jpg
LCD安装


LCD正在运行屏幕保护程序。代码是我的Sketch的一部分,但在最终版本中未启用。



Azure云安装
要运行应用程序,您需要执行以下操作:

创建一个IoT集线器,它将从设备接收数据并将命令发送回设备
创建一对Event hub和StreamAnalytics作业,该作业将从IoT中心读取数据并将警报发布到事件中心
为桥接控制器和设备创建另一对Stream Analytics作业和事件中心。
创建将由工作者角色使用的存储帐户。
部署工作者角色,这些角色将从事件中心读取警报,并通过IoT中心将警报转发给设备并发送推文。



创建物联网中心

登录Azure门户。
在跳转栏中,单击“新建”,然后单击“物联网”,再单击“IoT Hub”。
在New IoT Hub中,为IoT Hub指定所需的配置。
在“名称”框中,输入名称以标识您的IoT中心。验证名称后,“名称”框中会出现绿色复选标记。

根据需要更改定价和比例等级。此应用程序需要允许多个设备的付费层。
在“资源”组框中,创建新资源组,或选择现有资源组。有关更多信息,请参阅使用资源组管理Azure资源。
使用位置指定托管IoT中心的地理位置。
配置新的IoT中心选项后,单击“创建”。可能需要几分钟才能创建IoT中心。要检查状态,您可以监控Startboard上的进度。或者,您可以从“通知”部分监控进度。
成功创建IoT集线器后,打开新IoT集线器的刀片,记下主机名,然后选择顶部的密钥图标。
选择名为iothubowner的共享访问策略,然后复制并记下右刀片上的连接字符串。另请注意主键

您的IoT中心现已创建,您需要在软件中更新主机名和连接字符串。
要创建Stream Analytics作业输入,您需要从IoT Hub中检索一些信息:
从Messaging刀片(在设置刀片中找到)中,记下与Event Hub兼容的名称
查看与Event-hub兼容的端点,并记下这部分:sb://thispart.servicebus.windows.net/让我们称之为IoTHub与EventHub兼容的命名空间
对于密钥,您将需要在步骤#6中读取主键
创建两个事件中心

登录Azure管理门户。
在页面的左下角,单击+ NEW按钮。
选择应用服务,服务总线,事件中心,快速创建
为Event Hub输入以下设置(使用您为事件中心和命名空间选择的名称):
事件中心名称:“myeventhubname”
地区:您的选择
订阅:您的选择
命名空间名称:“mynamespacename-ns”
单击“创建事件中心”
选择mynamespacename-ns并进入Event Hub选项卡
选择myeventhubname事件中心,然后进入Configure选项卡
在“共享访问策略”部分中,添加新策略:
Name =“readwrite”
权限=发送,收听
单击“保存”,然后转到evnet hub Dashboard选项卡,并单击底部的“连接信息”
记下读写策略名称的连接字符串。
创建两个Stream Analytics作业

登录Azure门户。
在跳转栏中,单击“新建”,然后单击“物联网”,再单击“流分析作业”。
输入作业名称,选择订阅,选择创建IoT Hub时创建的同一资源组,选择位置,然后单击“创建”。
创建作业后,单击作业拓扑部分中的“输入”磁贴。在“输入”边栏选项卡中,单击“添加”

输入以下设置:
输入别名=“gassense”
Type =“数据流”
来源=“IoT Hub”
IoT Hub =“myiothubname”(使用您之前创建的IoT Hub的名称)
共享访问策略名称=“iothubowner”
共享访问策略密钥=“iothubowner主密钥”(这是您在创建IoT中心时记下的密钥)
IoT Hub Consumer Group =“”(将其保留为默认空值)
事件序列化格式=“JSON”
编码=“UTF-8”
返回Stream Analytics作业刀片,单击“查询”磁贴。

气体传感器检查和推文工作的查询将是:
SELECT
  *
INTO
  gassense4phone
FROM
  gassense
WHERE
  gassense.gassense > 1500
返回Stream Analytics作业刀片,单击“输出”磁贴,然后在“输出”中单击“添加”
输入以下设置,然后单击“创建”:
输出别名=“gassense4phone”
来源=“事件中心”
Service Bus Namespace =“mynamespacename-ns
事件中心名称=“myeventhubname”
事件中心策略名称=“readwrite”
事件中心策略密钥=“读写策略名称的主键”(这是您在创建事件中心后记下的那个)
分区键列=“4”
事件序列化格式=“JSON”
编码=“UTF-8”
格式=“行分隔”
返回Stream Analytics刀片,单击顶部的“开始”按钮启动作业

桥接作业的查询将只是:
SELECT
*
INTO
gassense4phone
FROM
gassense
我还尝试使用流分析工作来监控火焰传感器并使用以下查询:
SELECT
  *
INTO
  gassense4phone
FROM
  gassense
WHERE
  gassense.flamesense < 500
但最终没有使用它。

请注意火焰传感器值在看到火焰时会下降,而气体传感器值在闻到气体时会上升。
创建存储帐户

登录Azure门户。
在跳转栏中,单击“新建”,然后选择“数据+存储”,“存储帐户”
为部署模型选择Classic,然后单击create
输入您选择的名称(即帐户名称的“mystorageaccountname”,然后选择您的资源组,订阅,...然后单击“创建”
创建帐户后,在资源刀片中找到它并记下主连接字符串以配置工作者角色
部署辅助角色

Azure Worker角色将通过IoT Hub触发警报。要在此处构建和部署工作者角色,请执行以下步骤:

在Visual Studio 2015中打开解决方案events_to_device_service.sln
打开文件app.config并将以下字段替换为事件中心,存储帐户和Iot Hub中的连接字符串
<add key="Microsoft.ServiceBus.ConnectionString"value="[EventHub Connection String]" />
<add key="Microsoft.ServiceBus.EventHubName"value="[Event Hub Name]" />
<add key="AzureStorage.AccountName"value="[Storage Account Name]" />
<add key="AzureStorage.Key" value="[StorageAccount Key]" />
<add key="AzureIoTHub.ConnectionString"value="[IoT Hub Connection String]" />
编译项目并发布到Azure

在IoT Hub中创建新的设备标识

要将设备连接到IoT Hub实例,您需要生成唯一的标识和连接字符串。物联网中心为您做到了这一点。要创建新的设备标识,您可以使用设备资源管理器工具(目前仅在Windows上运行)



软件
您需要安装以下功能才能构建和运行应用程序和Azure Web角色项目。
14.1.jpg



14.2.jpg



最新版本的Arduino SAMD电路板定义不适用于MRK1000。我必须安装较早版本1.6.3才能使其正常运行。

构建Arduino Sketch需要以下库
15.jpg



Arduino的Azure Iot
Arduino的WiFi 101
Adafruit统一传感器库(适用于DHT)
Adafruit Gfx图书馆
Adafruit的-PCD8544 - 诺基亚5110-LCD库
WiFi固件



请务必遵循以下说明:

http://github.com/arduino-libraries/WiFi101-FirmwareUpdater  让您的设备与Azure HTTPS通信。您需要使用IoT中心的主机名。



Adafruit LCD库上存在编译器错误,只能在ARM工具链中发生。这是我的解决方案:
---/home/asad/Arduino/libraries/Adafruit_PCD8544_Nokia_5110_LCD_library/Adafruit_PCD8544.cpp           2016-03-31 04:29:58.000000000
+++/media/asad/AC78E1AF78E1788A/Users/Asad/Documents/Arduino/libraries/Adafruit_PCD8544_Nokia_5110_LCD_library/Adafruit_PCD8544.cpp     1979-11-30 00:00:00.000000000
@@ -181,15 +181,15 @@
   // Set software SPI specific pin outputs.
   pinMode(_din, OUTPUT);
   pinMode(_sclk, OUTPUT);
   // Set software SPI ports and masks.
-    clkport    = (PortReg*)portOutputRegister(digitalPinToPort(_sclk));
+    clkport    = portOutputRegister(digitalPinToPort(_sclk));
   clkpinmask = digitalPinToBitMask(_sclk);
-    mosiport   = (PortReg*)portOutputRegister(digitalPinToPort(_din));
+    mosiport   = portOutputRegister(digitalPinToPort(_din));
   mosipinmask = digitalPinToBitMask(_din);
}
// Set common pin outputs.
pinMode(_dc, OUTPUT);
if (_rst > 0)
取消MKR1000
在提交前两天,我遭遇了令人不快的事情,我的MKR1000停止出现在USB串口上,我无法再编程了。这确实是一个反复无常的事情。没有关于MKR1000的文档可以帮助我找出问题所在。

我注意到了JTAG调试端口。我环顾四周,发现Adafruit 对Arduino Zero的优秀  写作。它没有开箱即用,但我仍然需要解决一些编译器问题。我能够恢复引导程序,我的电路板恢复正常。
16.jpg

开发技巧
一个周末我需要外出旅行,我想参与这个项目。在没有硬件的情况下,我编写了一个通用Windows应用程序来模拟Azure云的加热器行为。
17.jpg
加热器模拟器应用程序



它是一个非常有用的测试工具,即使在返回之后,我仍然使用它来尝试不同的场景和云设置的部分,这些场景要么很难,要么对实际硬件来说太慢。模拟器的代码存在于GitHub中。

在Stream Analytic作业上编辑查询时,我发现在旧的Azure管理端口中使用“测试”功能很有用。在这里,您可以上传json数据并立即查看查询结果。

18.jpg



原理图
19.jpg


相关代码--- Azure-Stream-Analytics-master.zip (248.53 KB, 下载次数: 2)
收藏 评论0 发布时间:2019-4-2 18:13

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版