24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- 使用(yòng) Arduino 的无線(xiàn)...
技术专题
使用(yòng) Arduino 的无線(xiàn)传感器节点和遠(yuǎn)程数据接收器
使用(yòng) Arduino 的无線(xiàn)传感器节点和遠(yuǎn)程数据接收器
无線(xiàn)传感器节点是带有(yǒu)无線(xiàn)发射器的传感器节点。它具有(yǒu)一个或多(duō)个带有(yǒu)放大器和信号调节電(diàn)路或数字/智能(néng)传感器的传感元件、一个微控制器单元、调制器和带天線(xiàn)的发射器,以及一个電(diàn)池。它由電(diàn)池或太阳能(néng)供電(diàn),可(kě)感应温度、阳光、土壤湿度或震动等,并将信号传输到遠(yuǎn)程接收器。
许多(duō)这样的传感器节点以固定距离放置在一个大的地理(lǐ)區(qū)域中以覆盖整个區(qū)域。它们都将数据发送到位于中央数据监控和存储系统中的接收器。所有(yǒu)传感器节点都定期传输数据(值)。接收器从所有(yǒu)这些节点接收数据并存储和显示它以用(yòng)于监视和控制目的。
在农田中,自动灌溉系统有(yǒu)许多(duō)遍布整个农场的土壤湿度传感器节点。这些周期性地将土壤湿度水平传输到一个中央接收器,该接收器连接到监测和控制系统。如果某一特定區(qū)域的土壤湿度水平低于阈值水平,则该區(qū)域的水泵、電(diàn)磁阀等将自动打开。因此,整个农场所需的土壤湿度水平得以维持。
在两國(guó)之间的边界处,可(kě)以将带有(yǒu) PIR 接近传感器的传感器节点放置在固定距离处,以检测边界处的任何运动并向控制站发送警告/警报消息。
对于温室,需要保持适当的温度、湿度和阳光。因此,它配备了许多(duō)传感器节点,可(kě)以感知温室内不同位置的温度、湿度和阳光,并定期将数据发送到中央控制室。中央控制室根据收集的传感器数据增加/减少冷却、湿度或光照强度。
在该项目中,使用(yòng)的多(duō)个传感器是数字湿度和温度传感器、感测环境光的光敏電(diàn)阻器 (LDR) 和感测土壤水分(fēn)含量的土壤湿度传感器。该项目还使用(yòng) Arduino Nano 作為(wèi)微控制器 (MCU) 和 433MHz ASK RF 发射器模块。可(kě)以有(yǒu)很(hěn)多(duō)这样的传感器节点,但这里只使用(yòng)两个这样的节点。
接收器包括 433MHz ASK RF 接收器模块、实时时钟 (RTC) 模块和 Arduino Nano。两个传感器节点都传输温度、湿度、环境光和土壤含水量的感测值数据。接收器接收来自两个传感器的值(共八个值)并将它们提供给计算机,计算机显示这些值并存储以备将来使用(yòng)。
如图 1 中项目的框图所示,有(yǒu)两个不同的部分(fēn)——发射器(传感器节点)和遠(yuǎn)程数据接收器。传感器节点由不同的传感器、微控制器、射频发射器和電(diàn)池组成。
图 1:项目框图
传感器
DHT11 是一种智能(néng)传感器,可(kě)感应周围的温度和湿度并将此数据发送到微控制器。LDR 感应环境光,土壤湿度传感器感应土壤水分(fēn)含量。
微控制器
Arduino Nano 板用(yòng)作微控制器,从所有(yǒu)三个传感器读取数据并使用(yòng) RF 发射器进行传输。
射频发射器
具有(yǒu) 433MHz 载波频率的基于 ASK 的射频发射器模块用(yòng)于调制传感器数据并将其传输到接收器。
電(diàn)池
6V 或 9V 電(diàn)池用(yòng)于為(wèi)完整的传感器节点提供電(diàn)源。
LED 闪烁表示传感器节点处于活动状态,并且正在传输数据。
遠(yuǎn)程数据接收器只有(yǒu)射频接收器模块和微控制器。
射频接收器
具有(yǒu) 433MHz 载波频率的基于 ASK 的 RF 接收器模块用(yòng)于解调和接收由传感器节点的 RF 发射器模块传输的数据。
微控制器。Arduino Nano 板用(yòng)作微控制器,从 RF 接收器模块获取数据并将其提供给计算机,计算机将其存储以备将来使用(yòng)。
接收器中的 LED 闪烁表示接收器处于活动状态并且正在接收数据。
传感器节点(发射机)
图 2:无線(xiàn)传感器节点的電(diàn)路图
如图2中传感器节点的電(diàn)路图所示,发射器電(diàn)路中只有(yǒu)五个主要组件:
1. 具有(yǒu)三个接口引脚的传感器 DHT11:Vcc、Gnd 和数据输出。Vcc 引脚由 Arduino 板提供 5V 電(diàn)源,Gnd 引脚连接到公共地。数据输出引脚连接到 Arduino Nano 板的数字引脚 D10。它被上拉電(diàn)阻R3拉高,如图2所示。
2. 土壤湿度传感器 SS1,具有(yǒu)三个接口引脚:Vcc、Gnd 和 A0。Vcc 引脚由 Arduino Nano 板提供 5V 電(diàn)源,Gnd 引脚连接到公共地。SIG/A0 引脚是传感器的模拟输出,连接到 Arduino Nano 板的模拟输入引脚 A1。
3. LDR1,它与一个 10 千欧電(diàn)阻器 (R2) 以下拉配置连接。它的输出连接到 Arduino Nano 板的模拟输入引脚 A0。
4. 433MHz 射频发射器模块 (TX1),具有(yǒu)四个接口引脚:Vcc、Gnd、Data 和 Antenna。Vcc 引脚连接到 Arduino 板的 5V 输出,Gnd 连接到公共地。数据引脚连接到 Arduino 板的数字引脚 D11。天線(xiàn) (ANT.1) 由直径 1mm、長(cháng) 35cm 的铜線(xiàn)(单芯)绕制而成,该铜線(xiàn)连接到天線(xiàn)引脚。
5. LED(LED1),通过限流電(diàn)阻R1连接到数字引脚D12。
使用(yòng) 9V 電(diàn)池或稳压電(diàn)源為(wèi) Arduino 板供電(diàn)。Arduino 板的 Vin 引脚连接到電(diàn)池,因此板载 7805 稳压芯片产生 5V 電(diàn)源,提供给 DHT11 和 433MHz 射频发射器模块(TX1)。
传感器节点定期检测温度、湿度、土壤湿度和环境光并传输这些值。但是,如框图所示,可(kě)能(néng)有(yǒu)任意数量的传感器节点。他(tā)们都会传递他(tā)们的价值观。可(kě)能(néng)会发生多(duō)个节点同时传输数据的情况。另外,接收方如何知道接收到的数据来自哪个节点?
為(wèi)了克服这些问题,所有(yǒu)传感器节点都在时间上同步,这样两个节点就不会同时传输。但如果发生这种情况,接收器将接受任何一个传感器数据。此外,所有(yǒu)节点都被分(fēn)配了编号(例如,从 1 到 N)。在他(tā)们传输数据之前,他(tā)们传输他(tā)们的节点号。因此,接收器知道数据来自哪个传感器节点。
DHT11 传感器可(kě)提供准确且经过校准的温度和湿度测量值。它為(wèi)两种测量提供直接的数字值。Arduino 微控制器读取这些值并将它们转换為(wèi)字符形式 (ASCII)。
随着落在 LDR1 上的环境光增加,其電(diàn)阻降低,模拟電(diàn)压输出增加。因此,LDR1 的模拟输出電(diàn)压与环境光成正比。Arduino 将此模拟電(diàn)压转换為(wèi)数字值(0 到 1023 之间)并将其映射到 0 到 99% 之间。最后,它将此百分(fēn)比值转换為(wèi) ASCII 字符。
土壤水分(fēn)传感器 (SS1) 产生与土壤水分(fēn)含量成反比的模拟電(diàn)压输出。这意味着它的输出電(diàn)压随着土壤水分(fēn)含量的增加而降低。Arduino 将此模拟電(diàn)压转换為(wèi)数字值(0 到 1023 之间)并将其映射到 0 到 99% 之间。最后,它将此百分(fēn)比值转换為(wèi) ASCII 字符。
然后这些数据通过Arduino的引脚D11发送到RF发射器模块(TX1)。
TX1 得到这 10 个字符的字符串(我们可(kě)以称它為(wèi)数据包),使用(yòng) 433MHz 载波调制它并通过天線(xiàn) ANT1 传输它。每次发送数据包时,微控制器都会使 LED1 闪烁以指示正在发送数据。此循环在每个设定的时间段(例如 10 秒(miǎo))后不断重复。
遠(yuǎn)程数据接收器
图 3:遠(yuǎn)程数据接收器電(diàn)路图
如图3遠(yuǎn)程数据接收器電(diàn)路图所示,该接收器電(diàn)路只有(yǒu)三个主要元件:
1. 433 MHz RF 接收器模块 RX1,具有(yǒu)四个接口引脚:Vcc、Gnd、数据输出和天線(xiàn)。Vcc 引脚连接到 Arduino 板的 5V 输出,Gnd 连接到公共地。数据引脚连接到 Arduino 板的数字引脚 D12。天線(xiàn)(ANT.2)与发射端相同,连接到天線(xiàn)引脚。
2、这里使用(yòng)的RTC模块是DS1307 RTC芯片,有(yǒu)四个接口引脚:Vcc、Gnd、SDA和SCL。Vcc 引脚连接到 Arduino 板的 5V 输出,Gnd 连接到公共地。SDA 和 SCL 引脚用(yòng)于面向 TWI (IIC) 字节的数据传输。它们分(fēn)别连接到 Arduino Nano 板的 A4 (SDA) 和 A5 (SCL) 引脚。
3. LED(LED2),通过限流電(diàn)阻R4连接到Arduino的数字引脚D10。
Arduino Nano 板和 RF RX1 模块通过 USB 電(diàn)缆从中央存储系统计算机获得電(diàn)源。Arduino Nano 板还使用(yòng)相同的 USB 電(diàn)缆记录数据并与计算机通信。
遠(yuǎn)程数据接收器的工作和操作可(kě)以通过以下步骤来理(lǐ)解:
接收器首先检查 RTC 是否正在运行并给出正确的日期和时间。如果 RTC 正在运行,Arduino 会在串行监视器上显示当前时间。
RF RX1 模块从每个节点接收数据包。它解调这些数据包并将其提供给 Arduino 微控制器。
微控制器获取数据包并从每个数据包中提取所有(yǒu)四个值:环境光、土壤水分(fēn)含量、温度和湿度以及节点编号。
它作為(wèi)节点 x 通过 USB 串行发送以下数据到计算机:
土壤水分(fēn):XX %
光:XX%
湿度:XX%
温度:XX°C
微控制器使 LED2 闪烁以指示正在接收数据。
此外,每次 Arduino 从任何传感器节点获取数据时,它都会从 RTC 模块读取时间和日期并将其串行发送到计算机。因此,传感器节点数据值与时间和日期一起打印。
带有(yǒu)时间和日期的所有(yǒu)四个传感器数据值按顺序显示在串行监视器上。
任何时候从任何节点接收到的每个数据包都会重复此过程。由于所有(yǒu)节点在时间上同步,它们一个接一个地依次传输数据。
接收器从所有(yǒu)节点一一获取数据,并在设定的时间段后更新(xīn)任何节点的读数。
首次打开 RTC 时,必须使用(yòng) rtc.adjust ( ) 函数(在程序中给出的注释)设置其当前日期和时间。一旦為(wèi) RTC 设置了日期和时间,我们必须再次从程序中注释掉 rtc.adjust ( ) 函数并再次上传程序。因此,接收器程序将在 Arduino Nano 板中上传两次。
有(yǒu)两个源代码:用(yòng)于传感器节点的 Labtesttxnode.ino 代码和用(yòng)于接收器的 LabtestRx.ino 代码。Board1 中的 Labtesttxnode.ino 代码用(yòng)于从传感器收集数据并处理(lǐ)数据。Board2 中的 LabtestRx.ino 代码用(yòng)于在串口监视器上显示节点传输的时间、日期和状态。在上传源代码之前,您需要包含相关库 DHT.zip、RTClib.zip 和 VirtualWire.zip。
构建和测试
变送器(传感器节点)的实际尺寸 PCB 布局如图 4 所示,其元件布局如图 5 所示。在 PCB 上组装電(diàn)路后,将 9V DC 连接到 CON1。
图 4:传感器节点的 PCB 布局
图 5:图 4 中 PCB 的元件布局
接收器的实际尺寸 PCB 布局如图 6 所示,其元件布局如图 7 所示。 在 PCB 上组装電(diàn)路后,将電(diàn)路板连接到筆(bǐ)记本電(diàn)脑或台式计算机,以串行方式监控从各个节点发送的数据在 Arduino IDE 中监控。
图 6:接收器的 PCB 布局
图 7:图 6 中 PCB 的元件布局