背景知识视频教程

Arduino分步指南:完整指南 - 国外课栈​viadean.com

Arduino微控制器:学习Arduino制作项目 - 国外课栈​viadean.com

通过构建实际应用程序来掌握Arduino - 国外课栈​viadean.com

空气污染是当今世界上最大的环境和公共卫生挑战之一。 空气污染会对我们的健康,气候和生态系统产生不利影响。 监测空气质量对于了解和预防空气污染以及评估排放源以保持更健康的空气状况并有助于对抗温室效应至关重要。

该项目旨在创建两个能够通过LoRa无线通信相互通信的设备。 有很多传感器可以用来监测空气质量,但是在这个项目中,我们将重点介绍两个DSM501A灰尘传感器和MQ131臭氧气体传感器。 这些传感器将通过Ra-02 LoRa模块作为客户端收发器连接到第一台设备。 第二个设备将具有LoRa屏蔽作为服务器收发器,并将SIM800L作为ThingSpeak的网关连接。

硬件

软件

库文件

介绍

Ra-02 SX1278 LoRa模块

Ra-02 LoRa模块可与兼容的FSK(频移键控)远程调制和解调一起用于超长距离扩频通信。 这为距离覆盖范围,抗干扰和功耗低的传统无线设计提供了解决方案。 Ra-02可广泛用于各种联网场合,例如自动抄表,房屋自动化,安全系统和远程灌溉系统。

Dragino LoRa板

Dragino LoRa Shield是基于Arduino屏蔽形式并基于开源库的远程收发器。 LoRa Shield允许用户发送数据并以低数据速率到达极长的范围。 它提供超远距离扩频通信和高抗干扰性,同时将电流消耗降至最低。

它们如何工作

他们使用一种称为扩频通信的技术。 信息在比必要的宽得多的带宽上传输。 这样,增加了抵抗外部窄带干扰的强度。 由于任何发射信号的带宽越宽,干扰在带宽的一小部分上的相对影响就越小。 扩频技术允许在同一带宽中同时复用多个传输。 由于多个用户可以共享相同的扩频带宽而不会互相干扰,因此可以将它们称为多址技术。

SIM800L GSM / GPRS模块

SIM800L是一个蜂窝模块,可用于GPRS数据传输,发送和接收SMS以及拨打和接听语音电话。 该板尺寸紧凑,电流消耗低。 它甚至具有省电技术,可在不使用时将电流消耗限制为低至1 mA。 最重要的是,该模块支持四频GSM / GPRS网络,这意味着它可以在世界上的任何地方工作。

它是如何工作

该模块旨在类似于带有SIM卡的蜂窝电话的操作。 上电后,模块启动,搜索最近的蜂窝网络并自动连接到该网络。 板上的LED显示屏指示连接状态。 没有网络覆盖时,它会快速闪烁,但在连接时会缓慢闪烁。

DSM501A灰尘传感器

DSM501A灰尘传感器模块是一种低成本,紧凑的颗粒密度传感器。它能够定量测量小至1微米的微粒

它是如何工作

红外发光二极管和光电晶体管被对角地布置在设备内部。 这样可以检测周围空气中灰尘的反射光。 它在检测非常细小的颗粒(如香烟烟雾)中特别有效,通常用于空气净化器系统。

MQ131臭氧气体传感器

顾名思义,MQ131臭氧气体传感器可以感应臭氧气体(O3)。 它对臭氧具有很高的敏感性,同时也对诸如CL2和NO2之类的强氧化物敏感。 无论是家用还是工业用,它们都广泛用于空气质量监测应用中。

它是如何工作

臭氧气体传感器的黑色胶木内部是一种相当敏感的材料,称为三氧化钨(WO3)。 在干净的空气中,其电导率很高,但是当周围存在臭氧气体时,电导率会降低。 用户可以将电导率的变化转换为与检测到的气体浓度对应的输出信号。

硬件设置

客户端(带有传感器的Ra-02 LoRa模块)

Ra-02 LoRa模块连接

DSM501A灰尘传感器连接

MQ131臭氧气体传感器连接

服务器(带SIM800L模块的Dragino LoRa Shield)

ThingSpeak设置

要设置ThingSpeak,首先您必须在其网站https://thingspeak.com上注册。如果您已经有一个帐户,请登录并单击“Channel”。

这样做时,应将您定向到您的频道页面。点击“新频道”创建一个新频道。

加载后,将显示频道设置。填写所需的内容,然后检查2个字段,每个传感器读数显示一个字段。您只需要给它一个名称和描述即可;其余的都是不必要的。

完成后,只需滚动到页面底部,然后点击“保存频道”即可。之后,您可以通过单击顶部的“私人视图”选项卡来私密查看显示内容。您可以通过单击铅笔图标来自定义字段图。

您还需要获取Arduino代码的API密钥,以便SIM800L将数据传输到ThingSpeak。要检查您的API密钥,请单击顶部的“ API密钥”标签。

代码

客户端(带有传感器的Ra-02 LoRa模块)

AQM_Client.ino代码

</>

服务器(带SIM800L模块的Dragino LoRa Shield)

AQM_Server.ino代码

</>

代码分解

客户端

预初始化

</>

在开始之前,我们必须包括要在项目中使用的库。 RHReliableDatagram用于发送寻址,确认和重传的数据报,并且在RH_RF95库中。 这两个库的功能取决于SPI(串行外围接口),因此也包括其中一个。

</>

之后,我们定义客户端地址和服务器地址。 重要的是要确保与LoRa防护罩进行一对一通信,而不要与附近的其他任何通信。 接下来,我们以驱动程序和客户端地址作为参数来创建RF95驱动程序对象和数据报管理器。

</>

接下来,我们将引脚分配给传感器。 对于DSM501,第一个参数用于分配给引脚6的PM1.0。第二个参数用于PM2.5。 对于MQ131,第一个参数用于加热器,该加热器已经集成到模块中,因此您可以将其分配给尚未使用的任何引脚。

Void Setup()

</>

在setup()函数中,我们将串行波特率设置为9600 bps,这是串行通信的默认值。 然后,我们放置一条if语句,以通过在失败时打印一条消息来检查可靠的数据报管理器是否已初始化。

Void Loop()

</>

在loop()函数内部,我们使用dsm501.update()获取灰尘传感器的读数,然后使用dsm501.getParticleWeight(1)获得2.5 µm以上颗粒的颗粒物密度。 然后,我们必须将此浮点值转换为字符串,并使用dtostrf()同时将其存储在变量中。

</>

然后可以使用manager.sendtoWait()将这些数据发送到服务器端。 这将发送消息(并重试)并等待确认。 如果收到确认,则返回true,从而允许它使用manager.recvfromAckTimeout()打印确认答复。

</>

接下来,我们使用o3sensor.begin()获取臭氧气体传感器的读数,然后使用o3sensor.getO3(UG_M3)获得以µg / m3为单位的值。 如果要获取在全球统计数据报告中更常用的十亿分之一,则可以使用o3sensor.getO3(PBB)代替。 类似于上面的灰尘传感器读数,然后我们必须将float值转换为字符串,并使用dtostrf()同时将其存储在变量中。

这一部分与上面的部分类似,我们将传感器的读数发送到服务器端,但是这次是针对臭氧气体传感器的。

服务器

预初始化

</>

同样,我们必须包括要在项目中使用的库。 SoftwareSerial库允许在Arduino的其他数字引脚上进行串行通信,这使我们可以将引脚2和3分别用作接收器和发送器。 这也使我们可以将其用作调试序列,并打印出以后收到的消息。

</>

之后,我们定义客户端地址和服务器地址。 同样,这一点很重要,以确保您与Ra-02进行一对一交流,而不是与附近的其他任何人进行交流,因此请确保它们与客户端代码中的内容相同。 接下来,我们以驱动程序和服务器地址为参数创建RF95驱动程序对象和数据报管理器。

</>

在这里,我们创建要在服务器端收到消息时发送给客户端的消息,并初始化变量buf来存储传入的传感器读取数据。 稍后将使用索引来区分接收到的两个数据值。

Void Setup()

</>

在setup()函数内部,我们将串行波特率设置为9600 bps,这是串行通信的默认值,而GSM串行波特率设置为4800 bps。 之后,我们放置一条if语句,通过在失败时打印一条消息来检查可靠的数据报管理器是否已初始化。

SIM800L AT命令用于将数据发送到ThingSpeak

</>

AT(ATtention)命令是用于控制调制解调器的指令。 首先,AT + CIPMODE = 0将TCPIP应用模式设置为正常模式,因为这对于控制SIM800L与Internet的连接是必需的。 其次,AT + CIPMUX = 0启动单个IP连接,AT + CGATT = 1将我们附加到GPRS服务。 第三,AT + CSTT =“ APN”启动任务并将访问点名称设置为指定的URL,然后AT + CIICR建立与GPRS的无线连接。 您可以找到用于在线拥有的SIM卡的APN。

Void Loop()

</>

在loop()函数中,我们检查是否通过manager.available()收到了一条消息,并且如果index为1,则表示它是第一个传感器的数据。 recvfromAck()将从缓冲区中获取数据并在串行监视器中打印。 完成后,它将调用gsmSend()函数,该函数包含所有AT命令,以将数据发送到ThingSpeak,然后将索引设置为2,以便知道第二个传感器的数据即将到来。

</>

这部分与上面的部分类似,我们将数据发送到ThingSpeak,但是这次是第二个接收到的数据,该数据来自第二个传感器。

参阅

构建Arduino的LoRa远程智能空气质量监测系统 - 国外课栈​viadean.com

arduino读取水位传感器的数据显示在基于i2c的1602a上_构建Arduino的LoRa远程智能空气质量监测系统...相关推荐

  1. arduino读取水位传感器的数据显示在基于i2c的1602a上_基于PC-CAN适配卡和总线技术实现潜水电机分布式监控系统的应用方案...

    目前,国内外已有多家公司开发出针对个体潜水电机的智能电了保护装置,虽然可以达到保护电机的目的,但无法实现集中管理.因此,对潜水电机群的实时监控与统一管理的要求日益迫切.本文设计了基于CAN现场总线的潜 ...

  2. arduino读取水位传感器的数据显示在基于i2c的1602a上_XSB-IC-S2智能水位监测仪-老友网...

    XSB-IC-S2智能水位监测仪 多功能本身就是智能仪器仪表的一个特点.例如,为了设计速度较快和结构较复杂的数字系统,仪器生产厂家制造了具有脉冲发生器.频率合成器和任意波形发生器等功能的函数发生器.这 ...

  3. 创新“芯”引擎 | 国民技术N32G457 RT-Thread设计大赛 -基于RT-Thread的远程智能空气质量检测系统

    基于RT-Thread系统的一款远程智能空气质量检测系统:硬件部分由ESP8266WIFI模块,MQ135空气质量检测模块,0.96oled屏幕,N32G457主控板等组成:软件部分实现实时检测空气质 ...

  4. 基于物联网的智能厨房安全监测系统-下位机程序

    CSDN话题挑战赛第2期 参赛话题:学习笔记 最近遇到一个基于TCP/IP网络的远程智能物联网系统,采用Arduino Uno控制器作为下位机,采用LabVIEW作为远程监控软件,两者通过网络实现通信 ...

  5. ESP32开发之旅——基于ESP32的室内空气质量检测系统

    ESP32开发之旅--基于ESP32的室内空气质量检测系统 前言 成果展示 核心代码 MQTT部分 获取传感器数据部分 连接WiFi部分 结尾 前言 本文主要是我课设项目的一个备忘,部分资料来源于网上 ...

  6. 基于 Python 的全国空气质量监测与可视化分析平台

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 空气质量优劣程度与一个城市的综合竞争力密切相关,它直接影响到投资环境和居民健康,因此越来越受到政府和 ...

  7. 基于单片机的室内空气质量检测系统(甲烷甲醛)

    设计简介: 本设计是基于单片机的室内空气质量检测系统,主要实现以下功能: 可通过LCD1602显示当前甲烷和甲醛的值: 可通过按键调整甲醛甲烷的最大值: 可通过MS1100检测甲醛的值: 可通过MQ- ...

  8. java基于ssm空气质量检测系统源码网站空气质量监测源码

    简介 Java基于ssm的空气质量检测系统,检测设备检测一定范围内的企业空气指数,如果有污染则地图显示红色标记. 演示视频 https://www.bilibili.com/video/BV1GK4y ...

  9. 【毕设狗】【单片机毕业设计】基于单片机的室内空气质量检测系统的设计

    软件安装: Keil:点击下载 Proteus:点击下载 AD:点击下载 Visio:点击下载 设计简介: 本设计是基于单片机的室内空气质量检测系统的设计,主要实现以下功能: 实现通过甲烷气体传感器检 ...

最新文章

  1. python3入门(三)字典的使用
  2. ubuntu子系统多版本
  3. FileChannel应用实例——拷贝文件transferFrom方法
  4. antd 设置表头属性_解决react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐...
  5. 搜百度 php教程,jquery php 百度搜索框智能提示效果_PHP教程
  6. Visual Studio Code 使用 ESLint 增强代码风格检查 - gyzhao - 博客园
  7. BufferedWriter 和 BufferedReader 的基本用法,附演示程序。以及一个复制文本文件的程序
  8. 多模态AI开发套件HiLens Kit:超强算力彰显云上实力
  9. matlab之svd、svds函数
  10. layabox flash转html5,FlashBuilder中第一个H5程序“Hello Layabox”
  11. Css属性:border边框,设置圆角,border-radius
  12. 我大学到研究生学过的计算机基础课程(数据结构、计算机网络、算法、操作系统),绝对推荐,全部在这里了!
  13. 树莓派实现实时视频监控
  14. 任何进行推理的系统都必须具有一些基本的智能
  15. 蓝牙设备删除失败_十代混动雅阁车载蓝牙连接不上怎么办?
  16. Java导出多个excel并打包压缩成.zip文件
  17. 实现保留3位有效数字(四舍六入五成双规则)
  18. Email营销课堂:邮件群发平台与软件区别
  19. 头歌 MongoDB 数据库基本操作
  20. 象形文字--中文自然语言理解的突破

热门文章

  1. Dropbox 的崛起之路,创始人曾拒绝乔布斯天价收购
  2. 国内数据中心变革的见证者,揭秘阿里巴巴数据中心技术积淀
  3. “云”话数字经济:2020 腾讯全球数字生态大会定档 9 月!​
  4. 陆奇:疫情下的创业者,最不能缺这两大能力
  5. 当勒索病毒盯上视频产业,UP主们该如何保护数据安全?
  6. 170 亿参数加持,微软发布史上最大 Transformer 模型 T-NLG!
  7. 我的 CDMA 往事
  8. 罗永浩将举办「老人与海」发布会;微软疑似遭遇大范围全球宕机;Python 3.9 首个测试版发布 | 极客头条...
  9. 用故事来给你讲负载均衡的原理
  10. iSPRINT:Google 最高能的创新加速课程,让你 5 天就能验证创业想法!