|
本帖最后由 点点&木木 于 2019-4-12 09:10 编辑 Azure Stream Analytics自动监视传感器,可在发生危险时发送推文和警报。也可通过智能手机控制。
这个项目中使用的东西 硬件组件 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放在那里,那么除了安全之外我还可以做很多很酷的事情。这就是智能手机连接,使用摩托车零件自动点火的情况。 框图
加热器通过物联网中心向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导通或处于浮动状态时。桌面电源电流消耗会将在您闻到燃烧的硅的味道之前提醒您 ![]()
DHT11安装
温度传感器安装
液晶显示
火焰传感器
带盖的火焰传感器
添加气体传感器 制作盒子
我只是用了一个旧鞋盒,然后把它切成我的规格。激光切割亚克力板是我的第一选择。 钻孔
需要一个好的钻头来钻孔
点火线圈需要连接到金属体上 电磁阀故障排除 装配后我意识到我的螺线管漏气了。我打开它,在它的磁盘上发现了洞。用一点点超级胶水固定它。
使用聚四氟乙烯胶带棉线密封
这是我检验泄露的方法
请注意,反激式二极管直接焊接在端子上
3D打印 我需要一个用于火焰传感器的支架,这样我就可以调节它以获得最佳的火焰视野而不会产生大量的热量。3D打印解决了这个问题。此外,需要保护火焰传感器免受周围阳光的照射。我为此目的3D打印了一个封面。 需要使用LCD支架将其抬高至靠近盖板以便于读取。
要打印的型号
安装火焰传感器
安装支架
安装火焰传感器盖
LCD支架
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角色项目。
最新版本的Arduino SAMD电路板定义不适用于MRK1000。我必须安装较早版本1.6.3才能使其正常运行。 构建Arduino Sketch需要以下库
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的优秀 写作。它没有开箱即用,但我仍然需要解决一些编译器问题。我能够恢复引导程序,我的电路板恢复正常。
开发技巧 一个周末我需要外出旅行,我想参与这个项目。在没有硬件的情况下,我编写了一个通用Windows应用程序来模拟Azure云的加热器行为。
加热器模拟器应用程序 它是一个非常有用的测试工具,即使在返回之后,我仍然使用它来尝试不同的场景和云设置的部分,这些场景要么很难,要么对实际硬件来说太慢。模拟器的代码存在于GitHub中。 在Stream Analytic作业上编辑查询时,我发现在旧的Azure管理端口中使用“测试”功能很有用。在这里,您可以上传json数据并立即查看查询结果。
原理图
相关代码---
Azure-Stream-Analytics-master.zip
(248.53 KB, 下载次数: 2)
|
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版