使用Arduino的无线传感器节点和远程数据接收器

描述

  无线传感器节点是带有无线发射器的传感器节点。它具有一个或多个带有放大器和信号调节电路或数字/智能传感器的传感元件、一个微控制器单元、调制器和带天线的发射器,以及一个电池。它由电池或太阳能供电,可感应温度、阳光、土壤湿度或震动等,并将信号传输到远程接收器。

  许多这样的传感器节点以固定距离放置在一个大的地理区域中以覆盖整个区域。它们都将数据发送到位于中央数据监控和存储系统中的接收器。所有传感器节点都定期传输数据(值)。接收器从所有这些节点接收数据并存储和显示它以用于监视和控制目的。

  在农田中,自动灌溉系统有许多遍布整个农场的土壤湿度传感器节点。这些周期性地将土壤湿度水平传输到一个中央接收器,该接收器连接到监测和控制系统。如果某一特定区域的土壤湿度水平低于阈值水平,则该区域的水泵、电磁阀等将自动打开。因此,整个农场所需的土壤湿度水平得以维持。

  在两国之间的边界处,可以将带有 PIR 接近传感器的传感器节点放置在固定距离处,以检测边界处的任何运动并向控制站发送警告/警报消息。

  对于温室,需要保持适当的温度、湿度和阳光。因此,它配备了许多传感器节点,可以感知温室内不同位置的温度、湿度和阳光,并定期将数据发送到中央控制室。中央控制室根据收集的传感器数据增加/减少冷却、湿度或光照强度。

  在该项目中,使用的多个传感器是数字湿度和温度传感器、感测环境光的光敏电阻器 (LDR) 和感测土壤水分含量的土壤湿度传感器。该项目还使用 Arduino Nano 作为微控制器 (MCU) 和 433MHz ASK RF 发射器模块。可以有很多这样的传感器节点,但这里只使用两个这样的节点。

  接收器包括 433MHz ASK RF 接收器模块、实时时钟 (RTC) 模块和 Arduino Nano。两个传感器节点都传输温度、湿度、环境光和土壤含水量的感测值数据。接收器接收来自两个传感器的值(共八个值)并将它们提供给计算机,计算机显示这些值并存储以备将来使用。

  如图 1 中项目的框图所示,有两个不同的部分——发射器(传感器节点)和远程数据接收器。传感器节点由不同的传感器、微控制器、射频发射器和电池组成。

  

 

节点

 

  图 1:项目框图

  传感器

  DHT11 是一种智能传感器,可感应周围的温度和湿度并将此数据发送到微控制器。LDR 感应环境光,土壤湿度传感器感应土壤水分含量。

  微控制器

  Arduino Nano 板用作微控制器,从所有三个传感器读取数据并使用 RF 发射器进行传输。

  射频发射器

  具有 433MHz 载波频率的基于 ASK 的射频发射器模块用于调制传感器数据并将其传输到接收器。

  电池

  6V 或 9V 电池用于为完整的传感器节点提供电源。

  LED 闪烁表示传感器节点处于活动状态,并且正在传输数据。

  远程数据接收器只有射频接收器模块和微控制器。

  射频接收器

  具有 433MHz 载波频率的基于 ASK 的 RF 接收器模块用于解调和接收由传感器节点的 RF 发射器模块传输的数据。

  微控制器。Arduino Nano 板用作微控制器,从 RF 接收器模块获取数据并将其提供给计算机,计算机将其存储以备将来使用。

  接收器中的 LED 闪烁表示接收器处于活动状态并且正在接收数据。

  传感器节点(发射机)

  

 

节点

 

  图 2:无线传感器节点的电路图

  如图2中传感器节点的电路图所示,发射器电路中只有五个主要组件:

  1. 具有三个接口引脚的传感器 DHT11:Vcc、Gnd 和数据输出。Vcc 引脚由 Arduino 板提供 5V 电源,Gnd 引脚连接到公共地。数据输出引脚连接到 Arduino Nano 板的数字引脚 D10。它被上拉电阻R3拉高,如图2所示。

  2. 土壤湿度传感器 SS1,具有三个接口引脚:Vcc、Gnd 和 A0。Vcc 引脚由 Arduino Nano 板提供 5V 电源,Gnd 引脚连接到公共地。SIG/A0 引脚是传感器的模拟输出,连接到 Arduino Nano 板的模拟输入引脚 A1。

  3. LDR1,它与一个 10 千欧电阻器 (R2) 以下拉配置连接。它的输出连接到 Arduino Nano 板的模拟输入引脚 A0。

  4. 433MHz 射频发射器模块 (TX1),具有四个接口引脚:Vcc、Gnd、Data 和 Antenna。Vcc 引脚连接到 Arduino 板的 5V 输出,Gnd 连接到公共地。数据引脚连接到 Arduino 板的数字引脚 D11。天线 (ANT.1) 由直径 1mm、长 35cm 的铜线(单芯)绕制而成,该铜线连接到天线引脚。

  5. LED(LED1),通过限流电阻R1连接到数字引脚D12。

  使用 9V 电池或稳压电源为 Arduino 板供电。Arduino 板的 Vin 引脚连接到电池,因此板载 7805 稳压芯片产生 5V 电源,提供给 DHT11 和 433MHz 射频发射器模块(TX1)。

  传感器节点定期检测温度、湿度、土壤湿度和环境光并传输这些值。但是,如框图所示,可能有任意数量的传感器节点。他们都会传递他们的价值观。可能会发生多个节点同时传输数据的情况。另外,接收方如何知道接收到的数据来自哪个节点?

  为了克服这些问题,所有传感器节点都在时间上同步,这样两个节点就不会同时传输。但如果发生这种情况,接收器将接受任何一个传感器数据。此外,所有节点都被分配了编号(例如,从 1 到 N)。在他们传输数据之前,他们传输他们的节点号。因此,接收器知道数据来自哪个传感器节点。

  DHT11 传感器可提供准确且经过校准的温度和湿度测量值。它为两种测量提供直接的数字值。Arduino 微控制器读取这些值并将它们转换为字符形式 (ASCII)。

  随着落在 LDR1 上的环境光增加,其电阻降低,模拟电压输出增加。因此,LDR1 的模拟输出电压与环境光成正比。Arduino 将此模拟电压转换为数字值(0 到 1023 之间)并将其映射到 0 到 99% 之间。最后,它将此百分比值转换为 ASCII 字符。

  土壤水分传感器 (SS1) 产生与土壤水分含量成反比的模拟电压输出。这意味着它的输出电压随着土壤水分含量的增加而降低。Arduino 将此模拟电压转换为数字值(0 到 1023 之间)并将其映射到 0 到 99% 之间。最后,它将此百分比值转换为 ASCII 字符。

  然后这些数据通过Arduino的引脚D11发送到RF发射器模块(TX1)。

  TX1 得到这 10 个字符的字符串(我们可以称它为数据包),使用 433MHz 载波调制它并通过天线 ANT1 传输它。每次发送数据包时,微控制器都会使 LED1 闪烁以指示正在发送数据。此循环在每个设定的时间段(例如 10 秒)后不断重复。

  远程数据接收器

  

 

节点

 

  图 3:远程数据接收器电路图

  如图3远程数据接收器电路图所示,该接收器电路只有三个主要元件:

  1. 433 MHz RF 接收器模块 RX1,具有四个接口引脚:Vcc、Gnd、数据输出和天线。Vcc 引脚连接到 Arduino 板的 5V 输出,Gnd 连接到公共地。数据引脚连接到 Arduino 板的数字引脚 D12。天线(ANT.2)与发射端相同,连接到天线引脚。

  2、这里使用的RTC模块是DS1307 RTC芯片,有四个接口引脚:Vcc、Gnd、SDA和SCL。Vcc 引脚连接到 Arduino 板的 5V 输出,Gnd 连接到公共地。SDA 和 SCL 引脚用于面向 TWI (IIC) 字节的数据传输。它们分别连接到 Arduino Nano 板的 A4 (SDA) 和 A5 (SCL) 引脚。

  3. LED(LED2),通过限流电阻R4连接到Arduino的数字引脚D10。

  Arduino Nano 板和 RF RX1 模块通过 USB 电缆从中央存储系统计算机获得电源。Arduino Nano 板还使用相同的 USB 电缆记录数据并与计算机通信。

  远程数据接收器的工作和操作可以通过以下步骤来理解:

  接收器首先检查 RTC 是否正在运行并给出正确的日期和时间。如果 RTC 正在运行,Arduino 会在串行监视器上显示当前时间。

  RF RX1 模块从每个节点接收数据包。它解调这些数据包并将其提供给 Arduino 微控制器。

  微控制器获取数据包并从每个数据包中提取所有四个值:环境光、土壤水分含量、温度和湿度以及节点编号。

  它作为节点 x 通过 USB 串行发送以下数据到计算机:

  土壤水分:XX %

  光:XX%

  湿度:XX%

  温度:XX°C

  微控制器使 LED2 闪烁以指示正在接收数据。

  此外,每次 Arduino 从任何传感器节点获取数据时,它都会从 RTC 模块读取时间和日期并将其串行发送到计算机。因此,传感器节点数据值与时间和日期一起打印。

  带有时间和日期的所有四个传感器数据值按顺序显示在串行监视器上。

  任何时候从任何节点接收到的每个数据包都会重复此过程。由于所有节点在时间上同步,它们一个接一个地依次传输数据。

  接收器从所有节点一一获取数据,并在设定的时间段后更新任何节点的读数。

  首次打开 RTC 时,必须使用 rtc.adjust ( ) 函数(在程序中给出的注释)设置其当前日期和时间。一旦为 RTC 设置了日期和时间,我们必须再次从程序中注释掉 rtc.adjust ( ) 函数并再次上传程序。因此,接收器程序将在 Arduino Nano 板中上传两次。

  

 

节点

 

  有两个源代码:用于传感器节点的 Labtesttxnode.ino 代码和用于接收器的 LabtestRx.ino 代码。Board1 中的 Labtesttxnode.ino 代码用于从传感器收集数据并处理数据。Board2 中的 LabtestRx.ino 代码用于在串口监视器上显示节点传输的时间、日期和状态。在上传源代码之前,您需要包含相关库 DHT.zip、RTClib.zip 和 VirtualWire.zip。

  构建和测试

  变送器(传感器节点)的实际尺寸 PCB 布局如图 4 所示,其元件布局如图 5 所示。在 PCB 上组装电路后,将 9V DC 连接到 CON1。

  

 

节点

 

  图 4:传感器节点的 PCB 布局

  

 

节点

 

  图 5:图 4 中 PCB 的元件布局

  接收器的实际尺寸 PCB 布局如图 6 所示,其元件布局如图 7 所示。 在 PCB 上组装电路后,将电路板连接到笔记本电脑或台式计算机,以串行方式监控从各个节点发送的数据在 Arduino IDE 中监控。

  

 

节点

 

  图 6:接收器的 PCB 布局

  

 

节点

 

  图 7:图 6 中 PCB 的元件布局

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

全部0条评论

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

×
20
完善资料,
赚取积分