NFC与ZigBee技术在智慧农业物联网监测系统中的应用
近年来,我国农业物联网技术飞速发展,基于物联网技术的智能农业监测系统有望得到较大规模的推广应用。但传统的物联网农业监测系统其网络结构层次单一,多采用基于有线或无线结构的节点-上位机数据采集模式,节点数据访问模式缺乏灵活性,对监测数据的获取过度依赖上位机。使用者需要通过上位机或远程网络才能实时获得种植信息。在很多场合中,使用者感兴趣的仅仅是局部种植信息或现场田间接入,若利用 3G/4G 网络或 WiFi作为技术支持手段,则存在系统建立与维护成本高昂、拓扑结构单一、节点功耗增加、对外部网络依赖性强等缺点。
NFC 是近几年蓬勃发展的一种新型短距离高频无线通信技术。该技术允许电子设备之间进行非接触式点对点数据传输(数厘米内)。相对于 RFID 技术,NEC 不仅可用于识别还具有一定的通信能力。近年来国内外已经将 NFC用于移动支付、广告营销及安全控制等领域。NFC 技术由于具有与移动智能设备集成度好、可用于识别、成本低廉及安全性高等优点,未来将成为物联网的主要短距离通信 /识别手段之一。
本文提出了一种融合近场通信(Near Field Communica-tion,NFC)与 igBee 技术的农业种植监测系统。该系统不仅可以借助 ZigBee 无线网络向上位机传输节点采集到的温湿度、土类温度、光照、氧气含量等数据,还可以让使用者在田间地头直接通过智能手机或平板电脑等移动智能设备与身边的监测节点交互,经由 NFC 实时动地了解局部种植监测信息。该系统可丰富现有物联网智能农业监测系统的工作模式,尤其在一些高端农业种植、个体植林监测与观光农业领域,有望得到推广应用。
1 系统设计
本文提出的农业种植管理系统主要面向智能观光农业领域。管理者通过系统获得温湿度等种植信息,还可将施肥、喷药等信息写入终端节点。而普通访问者(如农业观光园中的游览者)通过具有 NFC 功能的移动智能设备获取某一节点周围局部的挂果时间、农业肥料喷洒时间、栽培品种、温湿度、价格等相关信息供其采摘时参考。管理者还可通过 NFC 接入次数在宏观层面了解各种植区的人流及采摘兴趣。系统中网络节点分为数据采集节点与数据汇聚节点。数据采集节点采集种植区内的空气温湿度、土壤温度、日光照度与氧气数据,并通过ZigBee 送往数据汇聚节点。数据汇聚节点负责将前端数据送往上位机,并周期性地将接收到的上位机下行信息分发到数据采集节点。汇聚节点同样使用 ZigBee 信道与采集节点及上位机进行交互。上位机将采集数据进行存储显示,并对网络进行管理控制。移动智能设备可以通过NFC 从数据采集节点获得种植信息,并利用设备上已安装好的相应 App 来查看。种植信息向节点的写入方式可以采用近程与远程两种模式,既可以由种植区管理者在种植的每一个阶段用NFC 读写器将信息写入节点,也可以由远程上位机下达。如果采用 NFC 读写器写入种植信息,每次写入的结果还将在下一个轮询周期内发往上位机。
2 硬件设计
由于系统中数据采集节点既需承担对种植参数的采集与发送工作,也需要负责 NFC 的数据读写,因此其设计的优劣将直接决定系统的工作性能。在具体设计中,采用微芯公司生产的PIC16F690 单片机作为节点 MCU。PIC16F690 具有高可靠性、低能耗及低成本等特点,非常符合户外监测系统的应用需求。节点温湿度传感器选用 AM2306,该传感器为单总线数字式传感器,温湿度、精度都可以达到 0.1%RH的标准。土壤温度传感器选用不锈钢封装的DS18B20。节点日光照度传感器选取美国 DAVIS 公司生产的 6450光辐照传感器,其光谱响应范围覆盖了 400nm到1100 m的区域,输出角度响应为一余弦响应曲线。氧气传感器采用英国City Technology 公司生产的40XV氧气电池式氧气传感器。40XV 输出信号经由AD8602高精度放大器放大后供 MCU 进行 A/D 采样。
数据采集节点 NFC 部分采用恩智浦半导体(NXP)PN532芯片,PN532是一个高度集成的非接触读写芯片,它包含带 40 KB ROM和1KB RAM的80C51 微控制器内核,用于 NFC协议控制,同时还集成了 13.56 MHZ 的各种主动/被动式非接触通信方法和协议。在 NFC 模式下,典型工作距离约为 100 mm。节点中 PN532 通过 SPI接口与 MCU 相连。节点 ZigBee 部分选用基于 TI公司 CC2530的DRF-2617 透传模块。PIC16F690 通过 USART 接口与其连接。为了降低 ZigBee 传输受葡萄藤蔓、大棚支撑物等障碍物的干扰,还采用了信号增益为 18 dBi的八木定向天线作为增强 ZigBee 传输的手段。
数据采集节点共有三种工作模式,即 NFC 写、NFC读与 ZigBee 采集/传输。
在NFC 写模式下,系统管理者可以利用 NFC 读写器,通过PNS32 将种植信息(如施肥种类/时间、农药喷洒种类/时间、植株挂果时间) 等按照预先设定好的格式写入节点的存储空间中。
在NFC 读模式下,智能设备通过 PN532 读取种植信息,此外还可查阅该时刻节点传感器采集到的氧气浓度、温度等棚内环境实时信息。设计通过绑定读写器 ID 来分设备的工作模式与读写权限。此外,在移动智能设备配套 App 中也设置了相应的权限标签。
在没有 NFC 访问要求时,节点工作于 ZigBee 采集/传输模式下。当接到上位机通过数据汇聚节点发来的轮询传输请求后,节点先检查是否有上位机发来新的种植信息或自身内部存储中是否有未上传的种植信息,如果有则执行相应更新。完成种植信息交互后,节点采集传感器数据,并与周期内 NFC 接入次数一起发往上位机。
3 系统软件设计
3.1上位机软件设计
上位机负责系统的管理与数据存储显示,系统中上位机软件使用 VC++编写。软件初始化时写入网络中各数据汇聚节点与数据采集节点的 ZigBee 网络 ID。针对每一个数据采集节点建立对应的文件夹,每日的监测数据存储到以日期编号的文件中。上位机软件根据节点网络分布设定轮询周期,在每一个轮询周期中对各节点的监测数据进行查询。用户还可通过上位机软件针对特定数据采集节点输入种植信息。通常通过上位机写入的种植信息对应园区施用较广的化肥或农药等。而利用节点 NEC 写入的种植信息是覆盖小片区或单植株的种植信息。上位机软件还提供简洁的 UI,便于拥有较少电脑操作经验的系统管理者使用。由于 40XV 氧气传感器的输出受温湿度等影响较大,而 6450 辐照传感器的输出受日照入射角影响,所以必须在二者的直接测量值上进行处理才能得到真实值。 40XV 在节点装机前都利用变温气室进行测量,得到一组离散的数据节点。之后在上位机软件中结合节点温湿度进行双二次样条插值,从而得到真实的氧气浓度。6450 角度余弦误差则通过利用实时时间引入日照高度角计算值来进行修正。
出处 物联网技术
原标题 基于NFC与ZigBee 技术的农业种植监测系统
作者 万雪芬 杨义 郑涛 蒋学芹
参考资料
https://www.hooketech.com/smart-agriculture-iot-monitoring-system.html
相关文章:

NFC与ZigBee技术在智慧农业物联网监测系统中的应用
近年来,我国农业物联网技术飞速发展,基于物联网技术的智能农业监测系统有望得到较大规模的推广应用。但传统的物联网农业监测系统其网络结构层次单一,多采用基于有线或无线结构的节点-上位机数据采集模式,节点数据访问模式缺乏灵活…...

k8s-cni网络 10
Flannel vxlan模式跨主机通信原理 在同一个节点上的pod 流量通过cni网桥可以直接进行转发; 在需要跨主机访问时,数据包通过flannel(隧道) 知道另一边的mac地址,就可以拿到另一边的ip地址,然后构建常规的以太网数据包,…...

听GPT 讲Rust源代码--src/tools(27)
File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs 文件rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs的作用是实施Clippy lint规则,检测产生潜在性能问题的字符转换代码,并给出相关建议。 在Rus…...

经济危机下,我们普通人如何翻身?2024创业新风口,适合普通人的创业项目
明年的商业环境会比今年更残酷,不是贩卖危机。旅游行业还在刺激性消费,再过几个月大家就没钱了,估计慢慢也消停。中小微企业资金链断裂,大部分公司倒闭,大批人失业,所以经济恢复需要一个周期。 30年河东&am…...

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复
深入浅出图解C#堆与栈 C# Heaping VS Stacking 第五节 引用类型复制问题及用克隆接口ICloneable修复 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节…...
python中基本元素的pop函数
python中基本元素的pop函数 一、列表List二、元组Tuple三、字典dict四、集合set 一、列表List pop() 根据索引删除并返回被删除的元素,索引默认为-1 a [1, 2, 3, 2, 5] b a.pop() # b5,默认返回最后一个值 print(b) b a.pop(2) # b3,返回a[2] pri…...

MPLS动态协议LDP配置示例
一、预习: MPLS是一种根据报文中携带的标签来转发数据的技术,两台LSR必须在它们之间转的数据 的标签使用上“达成共识”。LSR之间可以运行LDP来告知其他LSR本设备上的标签绑定信息,从而实现标签报文的正确转发。 LSR:Label Switch…...

JS调用栈:为何会栈溢出
JS调用栈:为何会栈溢出 JS调用栈什么是函数调用什么是栈在开发中利用调用栈栈溢出 JS调用栈 JavaScript 经常会出现一个函数中调用另外一个函数的情况,调用栈就是用来管理函数调用关系的一种数据结构,首先你要先弄明白函数调用和栈结构 什么…...
代码随想Day52 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
300.最长递增子序列 这道题目的重点在于动态数组的定义 dp[i]:以nums[i]为结尾的最长递增子序列,因为这样定义可以进行递推; 递推:j从0-i进行对比,如果nums[i]大于nums[j],dp[i]dp[j]1; 初始化…...

使用 pytest 相关特性重构 appium_helloworld
一、前置说明 在 pytest 基础讲解 章节,介绍了 pytest 的特性和基本用法,现在我们可以使用 pytest 的一些机制,来重构 appium_helloworld 。 appium_helloworld 链接: 编写第一个APP自动化脚本 appium_helloworld ,将脚本跑起来 代码目录结构: pytest.ini 设置: [pyt…...

猪目标检测数据集VOC格式600张
猪是一种常见的哺乳动物,通常被人们认为是肉食动物,但实际上猪是杂食性动物,以植物性食物为主,也有偶尔食肉的习性。猪的体型较大,圆胖的体型和圆润的脸庞使其显得憨态可掬。它们主要通过嗅觉来感知周围环境࿰…...

Pandas中concat的用法
Pandas中concat的用法 pd.concat 是 pandas 库中的一个函数,用于将多个 pandas 对象(如 Series、DataFrame)沿指定轴进行合并连接。 pd.concat(objs, axis0, joinouter, ignore_indexFalse, keysNone, levelsNone, namesNone, verify_in…...

【C++】引用详解
前言 在学习C语言时,我们通常会遇到两个数交换的问题,为了实现这一功能,我们会编写一个经典的Swap函数,如下所示: void Swap(int *a, int *b) {int tmp *a;*a *b;*b tmp; } 然而,这个Swap函数看起来可…...
平时的一些思考内容
文章目录 阶乘位运算求概率 阶乘 阶乘是一很迷人的,刚开始的的变化还不是很大,到后面变化类似于直线上升的,不知道现实中哪些实例来表示阶乘。19的阶乘就已经超过了long了,在竞赛或者其他中要求2023或者很大数字的阶乘就需要考虑…...

AIGC时代下,结合ChatGPT谈谈儿童教育
引言 都2024年了,谈到儿童教育,各位有什么新奇的想法嘛 我觉得第一要务,要注重习惯养成,我觉得聊习惯养成这件事情范围有点太大了,我想把习惯归纳于底层逻辑,我们大家都知道,在中国式教育下&a…...
Java中的锁(一)
一、前言 在Java中,锁是用于多线程同步的重要概念。它可以保护共享资源,确保多个线程在访问共享资源时的数据一致性。 共享资源指的是多个线程同时对同一份资源进行访问 (读写操作),被多个线程访问的资源就称为共享资源。 如何保证多个线程访…...

CSS-SVG-环形进度条
线上代码地址 <div class"circular-progress-bar"><svg><circle class"circle-bg" /><circle class"circle-progress" style"stroke-dasharray: calc(2 * 3.1415 * var(--r) * (var(--percent) / 100)), 1000" …...

英语中修饰头发的形容词顺序是怎么样的(加补充)
一、英语描述发型 :漂亮长短形状颜色头发。 例如她有一头美丽的黑色的直发。She has beautiful long straight black hair.二、多个形容词修饰同一名词时的顺序是固定的,其顺序为:①冠词、指示代词、不定代词、物主代词②序数词基数词③一般性描绘形容词…...
python的WebSocket编程详解,案例群聊系统实现
1.websocket相关 1.1为什么要用websocket 如果有需求要实现服务端向客户端主动推送消息时(比如聊天室,群聊室)有哪几种方案 轮训:让浏览器每隔两秒发送一次请求,缺点:有延时,请求太多网站压力…...
flutter学习-day22-使用GestureDetector识别手势事件
文章目录 1. 介绍2. 使用2-1. 单击双击和长按2-2. 拖动和滑动2-3. 缩放 3. 注意点 1. 介绍 在 flutter 中,GestureDetector 是手势识别的组件,可以识别点击、双击、长按、拖动、缩放等手势事件,并且可以与子组件进行交互,构造函数…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...