最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

劳拉物联网家庭环境监测系统

时间:2017-05-18 09:49来源:未知 作者:admin 点击:
strongem_password/strong:用户Gmail的密码 strongem_username/strong:用户的Gmail电子邮件地址 strongem_toaddress/strong:电子邮件到地址。 发送短信,十位手机号码@运营商短信网关地址的电子邮件。 的gw_data
劳拉物联网家庭环境监测系统

整个物联网家庭环境监测系统由arduino mega基于物联网的互联网网关和Arduino羽毛远程站与环境传感器。远程站采用劳拉收音机无线网关进行通信。

该系统使房主监测家居环境通过互联网访问的仪表板,定期收到短信通知接收环境,实时短信提醒,当监测环境参数超过预先设定的阈值,并登录到云环境数据。

作为一个业主,火灾以外,最害怕的就是水,无论它是一个突然的、灾难性的管道或固定失败,或缓慢的泄漏,被发现时。如果你离开家的时候,一个突然的、灾难性的事件发生时,可能没有太多可以做的,但是,返乡宜早不宜晚或调用由于湿度读数突然扣球邻居能减轻损伤。缓慢的泄漏可以更阴险的,有可能导致结构破坏和黑霉。整个物联网家庭环境监测系统监测家用湿度水平随着时间的推移和提供的洞察力如何正常湿度全年波动在室外湿度的变化,并与正常家庭日常活动如干衣、淋浴等。有了这方面的知识,高湿度阈值可以智能地设置各个远程站启用劳拉物联网家庭环境监测系统发出警报时,湿度读数异常检测。短信提醒和每小时更新出现在智能手机的锁屏,可立即无需应用被推出或浏览到仪表板。

整个物联网家庭环境监测系统是使用现成的硬件模块和个别元件如开关和连接器构成。该系统的部分可以从AdafruitDigikeySparkFun;在许多情况下,Adafruit和SparkFun部分也可从Digikey。主管的焊接技能是需要安装的硬件,特别是焊SMT UFL连接器的劳拉无线电爆发和羽毛板。Arduino的代码写在一个程序的风格大方的评论让功能易于扩展。

该项目的目标包括:

  • 创建一个家庭物联网网关最小可行产品(MVP)
  • 创建一个用户界面(UI)Arduino项目的框架
  • 评估家庭环境LoRa技术的适用性

MVP建立的最低硬件配置和所需的生产为基础的家庭监控系统真正有用的物联网软件设置功能。

的UI框架目标的意图是使所有基于用户的配置参数,而不需要更改代码访问和重新编译。用户配置的变化是通过一个由四个简单的UI按钮开关和一个2×16的液晶显示器。液晶显示器是用来显示环境变量的局部,六种显示模式是目前可用的。第三方服务认证信息(temboo和谷歌Drive)存储在SD记忆卡的一个简单的文本文件。远程站和网关软件主要实现用户配置的目标而不需要编译的代码的当前版本,例外的注意。

LoRa是一个长距离,低功耗无线技术开发的Semtech公司物联网。Semtech公司建立了LoRa技术的芯片组,而这些芯片可在突破和羽毛板从Adafruit用于劳拉物联网家庭环境监测系统。LoRa能够实现简单、可靠、节能的无线遥测链路在家庭之间的远程站和一个集线器/网关。为什么不使用WiFi?WiFi是矫枉过正的环境监测在家庭方面的数据速率,它的耗电,而且,在我的经验中,WiFi链接基于简化客户并不总是可靠的。LoRa工作在低数据率在915 MHz ISM频段。低数据率结合的传播特性在915兆赫(与2.4和5GHz WiFi)使非常可靠的无线电联系是建立在最大的家居环境。

整个物联网家庭环境监控系统由以下子系统:

  1. <strong>劳拉的物联网网关</strong>无线传感器集线器和互联网的网关

LORA的物联网网关从远程站接收周期性阅读,实现了以下功能:

  • 当地时间保持同步NTP
  • UI功能和本地显示通过2×16液晶
  • 警报在/下阈值的读数通过短信
  • 通过短信时的温度和湿度的更新
  • 实时仪表盘(十分钟更新)通过Adafruit IO
  • 长期的云数据存储谷歌硬盘在谷歌表

远程站的大多数时间都在睡觉,醒来时定期将环境信息并发送给网关。

在劳拉物联网家庭环境监测系统通信是目前单从远程站到网关;即网关总是接收不发送,和远程站定期发送但接收机不启用。作为LoRa的无线链路已被证明在家庭环境中是非常可靠的,来实现系统中双向协议似乎不必要的并发症。远程站发送异步更新在大约十分钟的间隔。传输是很短的,所以从两站传输碰撞的概率是非常低的。短信提醒的是如果网关不从一个给定的范围内可配置数量的10分钟间隔远程接收发送的传输。电池电量监测电池供电站(目前只有户外站),和警觉的送电量低。接收信号强度指示(RSSI)为每个远程可通过液晶显示功能检查无线链路质量。

谢谢您的来访,下面,请看以下步骤进行进一步的信息。

  1. 劳拉的物联网网关硬件
  2. 室内站硬件
  3. 室外站硬件
  4. 劳拉物联网网关的用户界面
  5. 短信通知和警报
  6. 环境数据云存储
  7. 网络仪表板
  8. 劳拉的物联网网关软件
  9. 室内站软件
  10. 室外站软件
  11. 物联网网关的SD记忆卡的认证文件

步骤1:劳拉的物联网网关硬件

劳拉的物联网网关硬件

零件清单:

1×arduino mega 2560 R3、Adafruit PID 191

1×以太网屏蔽Arduino - W5500芯片组,Adafruit PID 2971

1×I2C/SPI字符液晶背包,Adafruit PID 292

1 x派原一半大小的线路板PCB,Adafruit PID 1609

1 x rfm95w劳拉收发器突破868或915兆赫,Adafruit PID 3072

1×UFL贴片天线连接器,Adafruit PID 1661

1×SMA UFL / u.fl/ipx/ipex射频适配器电缆,Adafruit PID 851

1×916 MHz天线1 / 2波SMA,Digikey PN ant-916-cw-hwr-sma-nd

1×液晶2X16字符蓝色,Digikey PN nhd-0216k1z-nsb-fbw-l-nd

4 x开关推单刀双掷0.4a 20V,Digikey PN ckn1633-nd

4 x盖按钮,圆形的黑色,ckn1210-nd Digikey PN

2 x林-通用4针20cm电缆,Seeed工作室,PN acc11317o

1 x墙上适配器电源- 9vdc 650ma,SparkFun PN tol-00298

1 x的microSD卡适配器和com-11609 8GB,

1 x外壳,QRP实验室

1个自定义面板,前面板的表达

1个自定义后面板,前面板的表达

1个以太网电缆

其他男性和女性的脚头,导线、间隔;和2-56螺母、螺栓和垫圈。

.............................................................................................................................

以太网盾

以太网盾插入arduino mega。

.............................................................................................................................

液晶显示器

在Adafruit I2C/SPI字符液晶的背包是用来连接LCD的arduino mega采用I2C。

参阅Adafruit网站上的详细信息I2C/SPI字符液晶的背包

一组女性排针焊接在LCD,和相应的一组男性排针焊接在LCD液晶背包背包允许插入和退出的LCD。以太网盾格罗夫连接器带来了+5V,GND,SDA和SCL。一个小树林通用电缆插入I2C接口连接在以太网的盾牌,在电缆的另一端连接被切断,电线连接到LCD的背包通过接线端子提供LCD背包如下。

<u>Arduino</u> <--><u>液晶背包</u>

GND(黑色线)> GND

+5V(红色线)> +5

SDA(白色线)> DAT

SCL(黄色线)>时钟

.............................................................................................................................

rfm95w劳拉收发器

参阅Adafruit网站上的详细信息rfm95w劳拉收发器,包括焊接UFL SMT天线接头细节。UFL连接器上的RF适配器电缆连接到UFL连接器焊接到rfm95w。SMA连接器的射频适配器电缆面板安装型和安装在后面板的外壳。该天线在后面板连接的SMA连接器。

的rfm95w和Arduino之间的通信是通过SPI。的rfm95w突破板安装在一个半大小Adafruit派原原型板。女性排针焊接到成型板接受的rfm95w突破板销钉头。

下面的连接是rfm95w突破板和Arduino的一端通过焊接线的成型板和插入相应的销Arduino堆垛头导线的另一端头之间的男性。

<u>Arduino</u> > <u>rfm95w</u>

GND <--> GND

+5V <--> VIN

数字引脚2(中断0)> G0(rfmw95中断)

数字引脚52(SPI SCK SCK)>

数字引脚50(SPI MISO)>味噌

数字引脚51(SPI MOSI)> MoSi

数字引脚8 > CS(片选)

数字引脚9 > RST(复位)

.............................................................................................................................

按钮开关

LORA的物联网网关有四个按钮开关如下:

<strong>功能</strong>:进入和退出网关功能模式

<strong>进入</strong>接受选定的参数值

<strong>了</strong>增量参数值

<strong>向下</strong>递减的参数值

用按钮开关有一个良好的触感,并可按需要按住外壳最表面。用户界面体验将显着降低如果便宜,很难按按钮开关取代。

按钮开关有普通(C),常开(NO),常闭(NC)终端。所有四个开关常见的端子连接到Arduino的地面。二林通用电缆用于在以太网屏蔽连接器连接到Arduino的UART树林使接地,在电缆的另一端连接被切断,只有接地使用,所以剩下的线可以截止在连接器插入以太网屏蔽显示在照片。接地是菊花链开关公共端之间。常闭开关端子悬空。导线焊接到每一个常开开关端子,和公头焊接到另一端插入相应的销Arduino叠加标题如下。

<u>Arduino</u> <--><u>开关</u>

数字引脚19 >功能

数字输入引脚18 >

数字引脚17 >下

数字引脚16 >了

程序的arduino mega和Lora的物联网网关软件。请参阅步骤:<strong>劳拉物联网网关的用户界面</strong>的信息门户的用户界面操作。这是它的劳拉的物联网网关硬件。

#p#分页标题#e#

步骤2:室内站硬件

室内站硬件

一个室内站零件清单:

1 x羽毛32u4 rfm95劳拉无线电- 868 -或915兆赫,Adafruit PID 3078

1 X女堆垛头12针和16针,Adafruit PID 2830

1 x featherwing原型板,Adafruit PID 2884

1 x sht31-d温湿度传感器的突破,Adafruit PID 2857

1 x四针母针

1个USB电缆/微生物,3英尺,Adafruit PID 592

1 x 5V 1A的USB端口供电,Adafruit PID 501

3英寸22 AWG的漆包线

各种连接线

..............................................................................................................................

参阅Adafruit网站在以下的步骤的详细信息:

  1. 焊接头和线天线的叠加羽毛32u4 rfm95劳拉无线电
  2. 焊接包括销钉头的sht31-d
  3. 焊接包括销钉头的featherwing原型板

四针母头焊接到featherwing原型板根据上面的图片,sht31-d VIN和GND引脚连接到3.3V和GND导轨,分别在featherwing原型板。

用连接线把下面的原型板底面连接:

<u>featherwing</u> > <u>sht31-d</u>

SDA的SDA >
SCL <--> SCL

SDA和SCL引脚上的原型板指定并在右上角的原型板上面的图片。

塞的原型板到堆叠的头上的羽毛板。

程序与室内站软件羽毛板。当部署和动力通过连接到USB电源USB电缆,室内站应该开始发送报告给劳拉物联网网关每十分钟。

这是它的室内站。

步骤3:室外站硬件

室外站硬件

零件清单:

1 x羽毛32u4 rfm95劳拉广播、Adafruit PID 3078

1 x featherwing倍频器原型板,Adafruit PID 2890

1×UFL贴片天线连接器,Adafruit PID 1661

1×SMA UFL / u.fl/ipx/ipex射频适配器电缆,Adafruit PID 851

1×916 MHz天线1 / 2波SMA,Digikey PN ant-916-cw-hwr-sma-nd

1 x派原一半大小的线路板PCB,Adafruit PID 1609

1个小塑料工程围栏、耐候、Adafruit PID 903

1 x聚合物锂离子电池,2000mAh,SparkFun SKU prt-08483

1×阳光伙伴MPPT太阳能充电器,和SKU prt-12885

1×JST 2针电缆,261b Adafruit PID

1个太阳能电池板,2、SparkFun SKU prt-13781

1个DS18B20温度传感器,防水,sen-11050和SKU

1 x bme280大气传感器和SKU sen-13676突围,

2个螺丝端子,3.5MM间距(针),和SKU prt-08084

1 x戴维斯仪器辐射屏蔽7714,亚马逊

1×Lexan板材,店

其他男性和女性的脚头、丝、垫片;2-56螺母、螺栓和垫圈;硅密封胶。

..............................................................................................................................

简介

聚合物锂离子电池,阳光伙伴MPPT功能的太阳能充电器,featherwing倍频器原型板,和羽毛32u4 rfm95劳拉射频板装在小塑料工程围栏。

这位原一半大小的线路板PCB和bme280大气传感器突破板安装在戴维斯仪器辐射屏蔽。

太阳能电池板安装在顶部的支架是与戴维斯仪器辐射屏蔽。参照上面的照片。

温度/湿度传感器和压力传感器进行了尝试在室外站的解决之前bme280是一种集成温度的各种组合,湿度和压力传感器。从bme280读数总是与当地的天气报告一致,并运行在几个月内是100%可靠的,包括新罕布什尔州的冬天。

.............................................................................................................................

外壳的制备及太阳能供电

  1. 切一块Lexan适合小塑料工程围栏内轮廓。
  2. 钻孔的Lexan相匹配的两个安装点,在外壳的底部和容纳安装螺钉包括外壳。
  3. 地方的Lexan切口在外壳和确定安装位置对SMA UFL / u.fl/ipx/ipex射频适配器电缆SMA连接器。看看上面的照片,SMA连接器和电缆组件必须的Lexan抠图上面清晰。
  4. 钻三个孔,在箱体的底部容纳
    • 从太阳能面板的电缆,注意管接头应切断电缆。
    • 四电缆导体的bme280在太阳辐射屏蔽。
    • 基于DS18B20温度传感器的电缆。
  5. 钻孔的Lexan容纳螺栓安装阳光伙伴。
  6. 安装孔的featherwing倍频器原型板相匹配的孔在阳光伙伴的一端如上面的照片显示的一端。
  7. 指和安装指南对于阳光伙伴,焊料两螺丝端子的位置上的“在”和“负载太阳能阳光伙伴。”
  8. 把阳光伙伴用螺栓和垫片的Lexan抠图。使用足够长的螺栓一端提供两个安装点的原型板,为阳光伙伴和原型板之间间隔的会计。
  9. 安装SMA连接器和电缆组件。
  10. 将聚合物锂离子电池在外壳的底部。
  11. 将天线电缆组件的Lexan抠图和阳光伙伴的底部之间。
  12. 在使用提供的外壳螺丝外壳阳光伙伴安装Lexan抠图。在这一点上,电池是在地方举行的Lexan抠图和外壳的底部之间,和天线电缆路由从面板安装SMA连接器外壳的底部。
  13. 电池插头JST连接器插入“巴特”连接器在阳光的伙伴。
  14. 在太阳能电池板的电缆的末端带和锡的两根电线,电缆和线路虽然在外壳的底端的孔。连接太阳能面板的红色和黑色的线”“阳光伙伴终端块太阳能,“+”和“-”分别。
  15. 镀锡线连接两端的JST 2针电缆在阳光伙伴“负荷”接线端子,红色线为“+”和“-”黑丝。

在这个阶段,外壳和太阳能发电系统已经准备好羽毛32u4 rfm95劳拉无线电。

.............................................................................................................................

成型板和羽毛劳拉无线电

  1. 参阅Adafruit网站详细信息焊接焊接UFL贴片天线连接到羽毛32u4 rfm95劳拉无线电
  2. 焊料女头自带的featherwing倍频器原型板的一半原型板的羽毛板插在上面的照片中所示。的原型板的另一半是没有用的。
  3. 焊料两通直角销钉头成型板如上图所示。
  4. 在原型板安装跳线从羽毛板3V,GND连接,SDA和SCL引脚的一个四男脚头。这是bme280针。
  5. 通过四导体通过外壳的底侧孔和焊母头四通。这个插入bme280针。
  6. 焊料女头四通电缆的另一端,使引脚连接3V,接一个音符,SDA和SCL。
  7. 在原型板安装跳线从羽毛板3v建立连接,接地和数字引脚5到其他四男针。这是DS18B20引脚头。
  8. 通过电缆穿过外壳的底侧孔连接到DS18B20和四女排针焊接与男性的插针的安装步骤7:红色导线到3V,黑色线接地,白丝数字引脚5。塞女针到DS18B20销钉头在成型板。
  9. 小心地塞UFL连接器上的天线电缆插入UFL连接器焊接到羽毛板在步骤1。
  10. 附上原型板一端的两螺栓延伸从一端用垫片确保成型板组件在阳光伙伴清楚阳光伙伴。
  11. 程序与室外站软件羽毛板。
  12. 插上羽毛板到女性头焊接到成型板2步。
  13. 在这个阶段,不要连接JST连接器的电缆连接到阳光伙伴“负荷”接线端子上的羽毛板电池连接器。
  14. 利用硅密封胶三电缆孔,在外壳的底部。

.............................................................................................................................

太阳辐射屏蔽

  1. 要依照该指令戴维斯仪器辐射屏蔽7714装配和安装选项。安装太阳能辐射屏蔽了下层的照片在上面的舞台。
  2. 参考Adafruit汇编指令焊接销钉头的bme280突破板。
  3. 使用上面的照片作为指导,焊料的一套四直角销钉头到Adafruit永久原一半大小的线路板PCB。
  4. 使用上面的照片作为指导,这bme280突破板焊接成型板。
  5. 使用跳线,使bme280突破板VIN,之间的连接GND,SCK和SDI引脚四直角销钉头安装步骤3。这些引脚的连接必须匹配的featherwing倍频板上bme280排针连接如下:3v = VIN,GND = GND,SDA和SCL = = SDI SCK。
  6. 正好,安装孔在Adafruit永久一半大小的线路板PCB原型完全匹配的传感器安装孔上的太阳辐射屏蔽。山的原型板用螺丝五金提供的太阳能辐射屏蔽。
  7. 插头的四芯电缆从羽毛原型板的bme280入销钉头在成型板在太阳辐射屏蔽。
  8. 有一排闲置的女性排针上面的照片显示。这些都是在早期的实验中使用选择室外站的传感器,和不正常运行所需要的。
  9. 太阳辐射的屏蔽完整组件根据指示在上面1步的参考。
  10. 使用上面的照片作为指导,把一块Lexan安装太阳能面板。Lexan应该削减对太阳能面板的宽度,但超过了太阳能面板的长度允许装配螺栓的防辐射罩顶。在一个略微倾斜的太阳能电池板安装时如上图所示的组装结果的长度,这是在太阳角度方面有利。
  11. 为安装太阳能电池板的Lexan钻孔和锚杆支护的总太阳辐射屏蔽孔。安装太阳能电池板,以提供太阳能面板螺母的Lexan。在太阳辐射屏蔽安装支架为上述照片的太阳能板的Lexan螺栓。

在这个阶段,从电缆连接到阳光伙伴“负载”的接线端子可插上羽毛板电池连接器JST连接器。室外站应该开始发送报告给劳拉物联网网关每十分钟。

室外站上图中自2016年十月以来一直在不间断运行,幸存的新罕布什尔州的冬天。

步骤4:劳拉物联网网关的用户界面

劳拉物联网网关的用户界面

LORA的物联网网关液晶显示器的用户界面(UI)由液晶显示主菜单,通过菜单项下面列出的12个周期。网关软件的结构,它可以直接添加或删除菜单项。

导航通过LCD菜单项使用物联网网关<strong>功能</strong>,<strong>进入</strong>,<strong>上</strong>和<strong>下</strong>按钮开关是详细的PDF文件附在下面。#p#分页标题#e#

1。设置LCD背光关闭

用来关闭LCD背光源,有效地关闭液晶显示。一旦LCD背光关闭时,立即把它回压<strong>功能</strong>。

2。设置显示模式

在液晶2线站数据显示设置显示模式。三显示模式是当前支持,每个模式可设定温度或湿度显示,一共有六个显示模式的选择。

<u>最后一站模式</u>:显示温度或湿度的最后一站,收到报告。更新后立即出站报告收到。

<u>固定站模式</u>:显示温度和湿度对指定站。对于一个给定的站密切监测。显示每分钟更新一次。

<u>循环站模式</u>:循环通过温度或湿度的所有活动站,每站一分钟。

存储在EEPROM中的持久性。

物联网网关软件结构允许直接添加或去除显示模式。例如,未来的软件版本将包括一个显示模式,显示温度和湿度。

三.显示RSSI

显示站的接收信号强度指示(RSSI)dBm的劳拉广播各站的报道。循环站按<strong>上</strong>、<strong>下</strong>键。

4。显示电池

在每个站的羽毛32u4 rfm95劳拉电台板显示电池电压。循环站按上下按钮。

5。设置警报

启用和禁用选定的站报告。当前物联网网关软件,警告高湿度、支持电池的水平,和站失去联系。

存储在EEPROM中的持久性。

6。湿度设定阈值

湿度设定阈值对每台基础上触发警报。

存储在EEPROM中的持久性。

7。站定数

在系统中的活动站设置数量。默认设置是一个活跃的站与站的最大数量是十。主动站的数量必须建立在相关车站名称可在设置站名的子菜单编辑。

存储在EEPROM中的持久性。

8。设站的名字

允许主动站名编辑。站名最多九个字符。

存储在EEPROM中的持久性。

9。集光储蓄

把日光节约时间和关闭。

存储在EEPROM中的持久性。

10。设置时区

设置本地时区。二零四个时区的主要城市的支持,确定和UTC的偏移量。

存储在EEPROM中的持久性。

11。设定压力校正

校准压力传感器占了该站的位置高度。调整校正因子的地方站压力与压力由NOAA,周末报道,或其他天气局站城市或邮政编码。

存储在EEPROM中的持久性。

12。设定温度单位

选择华氏或摄氏温度为相关职能单位。

存储在EEPROM中的持久性。

 
  • 液晶显示器的主要menu.pdf液晶显示器的主要menu.pdf
    下载
  • 设置回light.pdf设置回light.pdf
    下载
  • 显示rssi.pdf显示rssi.pdf
    下载
  • 设置显示mode.pdf设置显示mode.pdf
    下载
  • 显示battery.pdf显示battery.pdf
    下载
  • 集alerts.pdf集alerts.pdf
    下载
  • 湿度设定threshold.pdf湿度设定threshold.pdf
    下载
  • 集数stations.pdf集数stations.pdf
    下载
  • 设站names.pdf设站names.pdf
    下载
  • 集光savings.pdf集光savings.pdf
    下载
  • Time Zone.pdfTime Zone.pdf
    下载
  • 设置压力传感器cal.pdf设置压力传感器cal.pdf
    下载
  • 设定温度units.pdf设定温度units.pdf
    下载

步骤5:短信通知和警报

短信通知和警报

上面的照片显示了SMS(文本)的通知和警报。

通知是一个小时更新通过短信发送。LORA的物联网网关发送通知的每小时每小时30分钟。在短信给了160个字符的限制,最多四台温湿度通常可以包含在通知。前两站将在智能手机的锁屏显示在左上图所示,和剩余的两个站可以将消息应用程序中查看照片。内容的通知消息中定义的<u>sendstatus()</u>函数在temboo程序段的劳拉物联网网关软件。

警报如果参数超过预先设定的阈值,如上面右边的照片发送。警报是目前高湿度的支持,站失去联系,和站电池低。高湿度报警阈值设置在每一个站的基础上,和警报可以启用和禁用在每站的基础。内容的警报消息定义在<u>sendalert()</u>函数在temboo程序段的劳拉物联网网关软件。

短信通知和警报发送电子邮件到移动网络运营商的短信网关发送电子邮件。例如,短信网关地址为美国四大移动运营商如下:

AT&T:[插入] @txt.att.net 10位数

冲刺:[插入] @messaging.sprintpcs.com 10位数

T-Mobile:[插入] @tmomail.net 10位数

Verizon:[插入] @vtext.com 10位数

发送电子邮件到SMS消息发送到10位数以上的讨论结果。所有的移动运营商有短信网关,网关可以通过搜索电子邮件,短信网关发现。”10位手机号码和短信网关地址存储在SD记忆卡。

一个temboo账户和一个Gmail地址需要从劳拉物联网网关发送电子邮件。访问谷歌建立一切谷歌帐户,包括Gmail和谷歌驱动器。访问temboo设置帐户,并创建一个谷歌的Gmail sendemail舞蹈获得必要的认证信息。temboo提供30天的免费试用,有一个负担得起的制造商计划。看一步:物联网网关的SD记忆卡的认证文件对temboo认证谷歌认证所需的信息细节和如何存储。

步骤6:环境数据云存储

环境数据云存储

上面的照片显示每小时的环境数据存储在云上谷歌驱动谷歌表。

数据发送到云时在过去的2分钟时间。列一个包含接收更新的天时;在12am更新的情况下,时间与日期更换显示天。随后的列包含站数据。数据存储在谷歌表的每一列定义在<u>spreadsheetupdate()</u>函数在temboo程序段的劳拉物联网网关软件。额外的站和站的数据可以存储在编辑<u>spreadsheetupdate()</u>功能和添加相应的列标题的谷歌表文件。

一个temboo账户和谷歌账户需要发送数据到谷歌物联网网关驱动从劳拉。访问谷歌建立一切谷歌帐户,包括Gmail和谷歌驱动器。访问temboo设置帐户,并创建一个谷歌表appendvalues舞蹈获得必要的认证信息。temboo提供30天的免费试用,有一个负担得起的制造商计划。看一步:物联网网关的SD记忆卡的认证文件对temboo认证谷歌认证所需的信息细节和如何存储。

步骤7:互联网访问仪表板

#p#分页标题#e#
网络仪表板

上面的照片显示了adafruitio实时站仪表显示器。仪表板是每十分钟更新一次。

LORA的物联网网关软件包括MQTT(消息队列遥测传输)来自Adafruit发布数据流adafruitio本质上是MQTT代理客户端。每一个数据流被称为“饲料”,例如,外面的温度是一个饲料。Adafruit创建仪表板,可用于饲料的图形显示工具。

Adafruit已经很好教程这解释了Adafruit账户设置,创造adafruitio键,创建订阅,并创建一个仪表板。AdafruitIO是在beta测试中,Adafruit目前限制饲料每账户数十。

在目前的网关软件的adafruitio(AIO)用户名和密钥保存在一个文件<strong>aio_account。</strong>H如下:

#定义aio_username”aio_username_here_between_quotes”
 
 #定义aio_key”aio_key_here_between_quotes”

网关软件必须重新编译你的aio_account AIO的用户名和关键。h文件。

在未来的软件版本,如果adafruitio用于实时仪表板(见下文),AIO的用户名和密钥将存储在与Temboo和谷歌认证数据的SD卡,无需重新编译一个新用户的软件。

截至日期下面发表,我一直无法达到MQTT连接到AdafruitIO的长期稳定性。连接是稳定的24 - 48小时开机的网关,但最终断开与1返回码。通过软件试图重建连接失败。网关的其他操作不受这。

在调查中为未来的软件版本是网关上的Web服务器服务计直接的实时仪表板不需要MQTT连接或AdafruitIO实现。在JavaScript中使用HTML5 canvas定义标准组件,从SD卡服务的HTML代码,并使用Ajax更新表可以在Arduino Mega的内存限制是可以实现的。

步骤8:劳拉物联网网关软件

LORA的物联网网关软件编写的一个程序的风格和自由评论鼓励增强和重用。软件发布在这里在GitHub上,也附在下面。

在目前的软件版本,唯一的改变需要适应网关软件的新用户是更新aio_account .h文件中所描述的步骤:<strong>网络仪表板</strong>。所有其他的变化配置网关为新用户或位置是通过LCD用户界面和认证文件在SD记忆卡中所描述的步骤:<strong>物联网网关的SD记忆卡的认证文件</strong>。

在软件体系结构的概述,在这一步,但是,一个详细的了解,最好是通过软件实现的代码和注释来完成。

.............................................................................................................................

安装程序

设置代码初始化用于网关的各种Arduino引脚,初始化SD卡和LCD,然后调用一系列初始化例程。

eepromread()

第一次网关软件运行在一个Arduino Mega,默认设置是wrtiien,然后读取EEPROM如下:

  • 时区为东海岸的美国
  • 白天在储蓄=
  • 压力校准偏移= 0.36
  • 所有的站名设置为“站”
  • 温度单位为华氏
  • 液晶显示模式=最后一站的温度
  • 活动站数= 1

如果软件已在arduino mega之前运行,设置保存到EEPROM恢复以前。在启动LCD将显示如果设置从EEPROM或如果未找到数据和设置初始化恢复。

rfm95initialize()

执行硬复位的劳拉无线电。初始化的无线电频率915兆赫和集TX功率+23 dBm(虽然TX不被网关使用)。在未来的软件发布的频率和功率可配置的用户界面,通过LCD。

ethernetinitialize()

初始化以太网接口。网关的IP地址被分配预计通过DHCP,并显示IP地址分配。

readgatewaydata()

读temboo和谷歌认证数据从SD卡。

sendstatus()

发送短信通知所有零数据验证temboo和谷歌Gmail的认证工作。

spreadsheetupdate()

发送一个电子表格更新行全零数据到谷歌表谷歌驱动验证temboo和谷歌驱动器认证工作。

aioconnect()

连接到Adafruit IO MQTT经纪人核实Adafruit IO认证工作。

.............................................................................................................................

主程序循环

主程序<strong>loop()</strong>执行以下功能每通过一次循环:

——检查<strong>功能</strong>按钮被按下如果是的话,叫function()执行LCD菜单例程。

——检查<strong>systemtimeupdate()</strong>看一秒的过去了自从上次通过环-如果是,做到以下几点:

--<u>执行事件循环外时间</u>执行特定的功能,在一个给定的二每一分钟。两个函数执行的每一分钟:

----在每分钟零秒,平adafruitio MQTT经纪人。

----在50秒每分钟更新的液晶2线如果在固定站或循环站显示模式。

——<u>执行基于时间的事件循环内</u>执行特定的功能,在一个给定的每分钟每小时。下面的函数的执行:

----每10分钟:

--------发布的数据输入,AdafruitIO。

--------检查看看是否要发送一个警报需要。

----在过去的一个小时2分钟,将每小时数据更新谷歌驱动器。

----在过去的3分钟时间,使用网络时间协议(NTP)更新系统时间。

----在过去的4分钟时间,检查adafruitio MQTT连接;如果下来,尝试重新连接。

----在过去的一个小时30分钟了,发短信通知。

----在过去的40分钟时间,把劳拉无线电。在劳拉无线电将冻结天的时间跨度,重新初始化电台每小时似乎解决和网关不否则影响性能的问题。

——<u>检查劳拉电台接收到一个数据包从一个远程站</u>-如果是,获得数据包的处理。

——<u>更新2线的液晶</u>显示模式,如果在最后一站站新数据已收到。

.............................................................................................................................

中断服务程序(ISR)

劳拉物联网网关软件使用一个ISR连接到<strong>功能</strong>按钮开关。为了中断中断执行主程序循环<strong>功能</strong>是按下时才能进入液晶显示主菜单功能。中断是在执行液晶主功能菜单的禁用。在退出LCD主功能菜单和返回主程序循环,NTP更新为正确恢复系统时间保持不在网关执行液晶主功能菜单的运行。

.............................................................................................................................

rfm95w劳拉无线电例程

getradiopacket()

“一旦无线分组已由劳拉无线电接收。读取数据包到远程站的数据阵列,并增加了RSSI和接触时间对阵列。

checkalerts()

从主程序循环每十分钟来检查如果失去联系,高湿度和低电池警报需要发送。

.............................................................................................................................

temboo例程

sendstatus()

生成通知消息被发送到电子邮件,短信网关的MnO。默认情况下,软件发送的第一个四活动站的温度和湿度。修改这个函数改变通知消息的内容。

sendalert()

建立失去联系,高湿度和低电池警报消息,电子邮件的MnO邮件短信网关。修改这个函数改变警报消息的内容。

sendemail()

通过temboo编舞的Gmail发送电子邮件Temboo网站生成的代码。

spreadsheetupdate()

建立电子表格的更新是通过temboo追加排舞蹈添加一行数据在谷歌驱动器的谷歌表送。修改这个函数改变站和数据发送到谷歌表。

sendspreadsheetupdate()

代码生成的temboo网站添加一行数据在谷歌驱动谷歌表。

.............................................................................................................................

计时例程

systemtimeupdate()

数秒时间保持和维护当地的本地化的时代。更新液晶线1 HH:MM:SS 24小时制时间显示。

ntptimeupdate()

“每小时从主循环程序和LCD菜单功能后,同步本地时间网关。电话<strong>getntptime()</strong>获取当前时代、定位时代时区和日光储蓄的偏移量,并更新网关本地时间。显示本地日期和时间在一个成功的NTP更新。

.............................................................................................................................

EEPROM例程

EEPROM例程初始化、读、写EEPROM数据结构如下。的eepromex。H <strong>readblock()</strong>和<strong>updateblock()</strong>函数用于读取和写入EEPROM的数据结构。保持生活的<strong>updateblock()</strong> EEPROM,功能检查,如果一个字节的EEPROM改变了之前写的那个字节。

在未来,额外的参数需要持久性可以很容易地添加到数据结构。

typedef struct { 
 int版本;
长timezoneoffset;
长daylightsavings;
浮presscal;
煤焦站[ max_stations ] [ 10 ];
 int stationhumithreshold [ max_stations ];
字节stationalert [ max_stations ];
字节setbacklight;
字节字节stationdisplaymode 
华氏;

.............................................................................................................................

液晶/按钮菜单例程

枚举(enum)是用于索引的液晶显示主菜单项。枚举中的第一个条目是“start_functions”和最后一项是“end_functions”。这些条目书立的菜单项,使菜单项被添加而不需要显式跟踪菜单项的数目。对于start_functions和end_functions测试确定的开始和结束时,分别对菜单项列表的菜单项的数目之间。

enum { 
 start_functions,
 set_back_light,
 set_display_mode,
 display_rssi,
 display_batt,
 set_alerts,
 set_humi_thres,
 set_number_stations,
 set_station_names,
 set_daylight_savings,
 set_time_zone,
 set_press_sensor_cal,
 set_degrees_f_c,
 end_functions 
 };

当<strong>函数</strong>执行时,通过对一段时间(1)环<strong>function()</strong>。而在这个循环中的四个按钮开关监测。

<strong>函数</strong>执行<strong>function()</strong>原因退出并返回到主回路

<strong>进入</strong>原因显示菜单项来执行

<strong>起</strong>原因显示的菜单项增加到下一个菜单项

<strong>下降</strong>原因显示的菜单项递减到下一菜单项

在进入<strong>function()</strong>每个时间<strong>了</strong>或<strong>下</strong>压,<strong>functiondisplay()</strong>,开关/案例基于菜单项从以上的列举,来显示菜单项。同样,当<strong>进入</strong>时,<strong>functionexecute()</strong>,开关/案例基础上的菜单项从以上列举,称为直接的程序执行相应的菜单项的功能。

用这种结构是一个简单的物质添加或删除主菜单项。一个类似的结构来实现菜单选择选项在主菜单的选项,例如,看看如何显示模式菜单是使用一个枚举显示模式和<strong>dodisplaymode()</strong>功能。

#p#分页标题#e#详细描述了操作的每个菜单项包含在步骤:<strong>劳拉物联网网关的用户界面</strong>。

在某些情况下,枚举也使用索引到一个字符数组为对应的字符串显示在LCD。例如,下面是显示模式串的枚举显示模式和相应的字符数组。

enum { 
 start_display_modes,
 last_station_temp,
 last_station_humi,
 fixed_station_temp,
 fixed_station_humi,
 cycle_station_temp,
 cycle_station_humi,
 end_display_modes 
 };
 const char* display_mode [ ] = { 
”,
“最后的STN温度”,
“最后的STN湿”,
固定STN温度”,
”固定的STN湿”,
“周期”,
 STN温度循环;

这种技术是不作为可能是为了节省RAM为广泛。指:https://www.baldengineer.com/arduino-f-macro.html

…const关键字告诉编译器变量是恒定的和不能改变的。根据不同的优化使用,AVR GCC编译器会避免把价值到RAM因为它知道它永远不会改变。但是,技术与C风格字符串或数组不工作。由于数组是基于指针,编译器需要把数组的内存使指针正确工作。这意味着,所有的字符串都需要放入内存才可以使用。

所以即使常数声明使用字符串常数写入RAM。作为网关软件使用许多字符串常量来实现用户界面、内存使用率已经远远高于Arduino Mega 50%。的f()函数是用来缓解这种情况。所以,f()函数是做什么的?

的f()宏告诉编译器把这个特定的阵列PROGMEM。然后,当它的时间来访问它,一个字节的数据被复制到RAM的时候。有一个小的性能开销,这额外的工作。然而,在串行或打印字符串一个液晶是一个非常缓慢的过程,所以一些额外的时钟周期真的不重要。

注意的f()功能只能在一个字符串,它不会对字符串的改变工作,或任何其他变量类型。下面是一段代码展示了如何使用f()。

无效的显示(字节functiontodisplay){ 
 cleardisplayline1(F(“选择功能”));
开关(functiontodisplay)
 { 
案例0:
 { 
打破;
 } 
案例set_back_light:
 { 
 updatedisplayline2(F(“背光”));
打破;
 } 
案例set_number_stations:
 { 
 updatedisplayline2(F(“定数

.............................................................................................................................
SD卡文件例程

功能<strong>readgatewaydata()</strong>读temboo和Goole认证从一个文件名为<strong>gw_data.txt</strong>在SD卡中设置。请参阅步骤:<strong>物联网网关的SD记忆卡的认证文件</strong>信息的内容以及如何创建它gw_data.txt。

<strong>gw_data.txt</strong>包含字符串是划定的“[”、“]”。这是假设的验证字符串不包含这些字符;如果是以前没有的情况下,新的分隔符必须使用。的<strong>readgatewaydata()</strong>函数读取的字符串到字符串数组<strong>gatewaydata [ 12</strong> ]。下列枚举用于指数在<strong>gatewaydata</strong>认证字符串数组。

enum { 
 temboo_account,
 temboo_app_key_name,
 temboo_app_key,
 ss_title,
 ss_refresh_token,
 ss_client_secret,
 ss_client_id,
 em_subject,
 em_password,
 em_username,
 em_to_address 
;

额外的身份验证或其他字符串可以被添加以增加尺寸的<strong>gatewaydata</strong>阵列和添加相应的条目枚举。

.............................................................................................................................
液晶显示程序

的<strong>updatestationdisplay()</strong>功能创建的字符串<strong>laststationdisplay</strong>包含站数据显示在2号线的液晶显示模式选择。每当一个函数使用2线的液晶显示状态或等,<strong>laststationdisplay</strong>用来恢复站的数据时,函数完成。

以下函数用于操纵线在液晶和简化代码。

<strong>updatedisplayline12(字符串line_1,字符串line_2</strong>)-更新线路1和2

<strong>updatedisplayline1(字符串line_1</strong>)-更新线1线2 unchaged离开

<strong>updatedisplayline2(字符串line_2</strong>)-更新线2线1 unchaged离开

<strong>cleardisplayline1(字符串line_1</strong>)-清除1线和2线,并更新1

<strong>cleardisplayline2(字符串line_2</strong>)-清除1线和2线,并更新2

这是它的劳拉物联网网关软件。

 
  • aio_account。Haio_account。H
    下载
  • lora_gateway_v1.5.0.inolora_gateway_v1.5.0.ino
    下载

步骤9:室内站软件

整个室内站的软件编写的一个程序的风格和自由评论鼓励增强和重用。软件发布在这里在GitHub上,也附在下面。该软件的亮点是在这一步,但是,一个详细的了解,最好是通过软件实现的代码和注释来完成。

室内和室外站站统称为远程站。

每个远程站点需要一个唯一的身份证号码是由劳拉物联网网关正确识别。身份证号码是硬编码在当前的软件,因此,远程站的软件必须重新编译为每个远程站一个独特的远程站点ID。该软件目前限制站的最大数量为十,所以站ID应该在0x09 0x00和结束与开始。在未来的软件版本将自动处理网关和远程站之间,使系统可以即插即用。

Adafruit库用于初始化和从sht31传感器读取温度和湿度值。

远程站发送五浮点值的网关,如下面的代码片段所示。

typedef联盟{ 
浮动浮点;
字节二进制[ sizeof(浮点)];
 } binaryfloat;
 
 binaryfloat airtemp;
 binaryfloat gndtemp;
 binaryfloat湿度;

结合地图浮点值字节允许浮点值被发送到无线链路的字节。如int变量和长可以以同样的方式发送。在无线链路上发送变量个数,可以增加通过定义新的变量,并添加变量,下面描述的无线分组。

室内空气温度(airtemp站发送),湿度,和电池电压(batvolt)。在室内站的情况下电池电压是电源电压的羽毛板。室内站地面温度(gndtemp)和压力值为零。

在无线链路上发送数据包的大小确定为5 x 4字节浮每1字节浮+远程站点ID = 21字节。无线数据包是建立在<strong>buildwirelesspacket()</strong>功能使用二进制映射的浮点变量如下。

为(int n = 0;n<4;N + +){ 
 wirelesspacket [n] = airtemp。二进制[N];
 wirelesspacket [ n + 4 ] = gndtemp。二进制[N];
 wirelesspacket [ ] = n + 8的湿度。二[N];
 wirelesspacket [ n + 12 ] =压力。二[N];
 wirelesspacket [ n + 16 ] = batvolt。二进制[N];
 } 
 wirelesspacket;

这个过程是在网关软件反向提取字节从无线分组和地图到相应的浮点值。

下面的代码是用来启用看门狗定时器(WDT)睡眠模式和设置的分频器,其最大值使WDT唤醒处理器的每一~ 8秒。

set_sleep_mode(sleep_mode_pwr_down);<BR> mcusr & = ~(1 << wdrf);
 wdtcsr | =(1 << wdce)|(1 << WDE);
 wdtcsr =(1 << wdp0)|(1 << wdp3);
 wdtcsr | =(1 <<能力;

当WDT唤醒处理器的中断服务程序(ISR)的增量变<strong>statetime</strong>计数8秒为增量的时间,和<strong>loop()</strong>函数被执行一次,最后把处理器回到睡眠模式。的<strong>loop()</strong>函数是一个基于时间的事件循环,使传感器的读数被发送到网关每十分钟。

LORA的收音机放在睡眠模式发送无线分组网关之间。

室内站的其余部分的代码应该是自解释的。这是它的室内站软件。

 
  • indoor_station_v1.5.0.inoindoor_station_v1.5.0.ino
    下载

步骤10:室外站软件

LORA的室外站的软件编写的一个程序的风格和自由评论鼓励增强和重用。软件发布在这里在GitHub上,也附在下面。室外站软件是基于室内站软件,所以只有差异这一步了。一个详细的了解,最好是通过软件实现的代码和注释来完成。

室外站发送的空气温度(airtemp),地面温度(gndtemp)、湿度、压力和电池电压(batvolt)。在室外站的情况下,电池电压的电压的锂离子电池送到羽毛板..

室外站使用bme280温度、湿度、压力传感器。Adafruit库用于初始化和读温度,湿度,和从bme280传感器压力值。

防水的DS18B20温度传感器用于测量地面温度。Adafruit一资讯库用于初始化和从DS18B20读取温度。

这是它的户外站软件。

 
  • outdoor_station_v1.5.0.inooutdoor_station_v1.5.0.ino
    下载

步骤11:物联网网关的SD记忆卡的认证文件

Arduino Mega SD卡插槽以微型SD卡,请参阅步骤:<strong>劳拉物联网网关的硬件</strong>细节的具体使用的卡片。的SD记忆卡容量不是关键。使用SD卡为8GB,留下很多记忆的网关数据记录被添加在未来。

认证数据存储在SD卡中的文件称为gw_data.txt。这样的网关软件可以部署了重新编译为特定用户身份验证数据是存储在SD卡。把SD卡为手机SIM卡。

网关软件读取认证数据从gw_data.txt在SD卡中设置网关软件。<strong>readgatewaydata()</strong>功能的网关软件搜索的分隔符“[”和“]”,并拷贝数据之间的分隔符为一个字符串数组<strong>gatewaydata</strong>。在方括号字符被忽略,只有包含在文件标签认证数据字符串。

<strong>temboo_account</strong>:用户指定名称的temboo帐户

<strong>temboo_app_key_name</strong>:用户指定的应用程序名称

<strong>temboo_app_key</strong>:所产生的temboo网站

<strong>ss_title</strong>:用户指定的名称/姓名的谷歌表文件的云数据存储

<strong>ss_refreshtoken</strong>:所产生的temboo网站在谷歌表舞蹈设置

<strong>ss_clientsecret</strong>:所产生的temboo网站在谷歌表舞蹈设置

<strong>ss_clientid</strong>:所产生的temboo网站在谷歌表舞蹈设置

<strong>em_subject</strong>:用户定义的主题邮件/短信#p#分页标题#e#

<strong>em_password</strong>:用户Gmail的密码

<strong>em_username</strong>:用户的Gmail电子邮件地址

<strong>em_toaddress</strong>:电子邮件”到“地址。发送短信,十位手机号码@运营商短信网关地址的电子邮件。

的gw_data.txt文件应该被创建并保存到SD卡使用一个文本编辑器,不插入不可显示的格式字符。崇高的文本是由作者创建的文件。


(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片