基于Zstack协议栈的智慧农业

news2024/11/25 8:21:41

界面演示

在这里插入图片描述
在这里插入图片描述

实物演示

在这里插入图片描述
包含两个终端节点以及一个协调器,协调器与上位机通过串口线连接,协调器与终端节点树形组网

硬件

cc2530
DHT11
超声波传感器
MQ-2
LED
三极管
直流电机

软件

Qt IAR Sqlyug Mysql

项目架构

智慧农业系统分为上位机和下位机,通信协议使用串口通信,硬件设置两个终端节点和一个协调器,彼此间利用Z-stack协议栈组网,终端节点负责实时采集各类传感器的数据,并将其发送给协调器。协调器通过串口线连接上位机,使用串口协议将接收到的数据按每秒一次的频率发送给上位机。
上位机将接收到的数据报进行进行可视化处理显示

通信协议

1 串口通信

串口通信是一种通过串行接口进行数据传输的通信方式。串口通信常见于许多设备之间的数据传输,例如计算机和外部设备如打印机、传感器、微控制器等之间的通信。
以下是串口通信的一般步骤:

  1. 确定串口参数:在进行串口通信之前,需要确定串口的参数,包括波特率(Baud rate)、数据位(Data
    bits)、校验位(Parity)、停止位(Stop bits)等。这些参数需要在通信的两端设备上保持一致。
  2. 打开串口:在计算机或控制设备的软件中,打开串口并与目标设备建立连接。这需要使用相应的串口编程接口或库函数来实现。
  3. 发送数据:通过串口发送数据,可以将要发送的数据写入到串口缓冲区。数据可以是文本、二进制数据或者是特定的控制命令,根据需求来决定。
  4. 接收数据:在目标设备接收到数据时,它会将数据写入到串口缓冲区。在计算机或控制设备的软件中,可以通过读取串口缓冲区来获取接收到的数据。
  5. 处理数据:一旦接收到数据,你可以对其进行解析和处理。这可能包括将数据进行格式化、提取需要的信息、对数据进行逻辑判断等操作。
  6. 关闭串口:当通信结束时,需要关闭串口以释放资源并终止连接。
    需要注意的是,在进行串口通信时,需要确保通信双方的串口参数一致,以及正确处理异常情况和错误校验等。此外,不同的编程语言和操作系统可能有不同的串口编程接口和库函数,你可以根据具体的开发环境来查找相应的文档和资料进行实现。

2 ZigBee通信

Zigbee是一种基于IEEE 802.15.4标准的低功耗、短距离无线通信技术,特别适用于物联网应用。它采用了网状网络拓扑结构和分层的协议架构,能够支持大规模的设备互联和数据传输。
以下是Zigbee通信的一般流程:

  1. 网络建立:在Zigbee网络中,一个设备可以充当协调器(Coordinator)、路由器(Router)或终端设备(End
    Device)的角色。协调器负责网络的组网和管理,其他设备通过与协调器或其他路由器建立连接加入网络。一旦网络建立,设备之间就可以通过Zigbee进行通信。
  2. 设备发现和加入:设备可以通过主动广播或被动扫描的方式,发现并加入附近的Zigbee网络。加入过程中,设备会获得一个唯一的网络地址,并与网络中的其他设备进行关联。
  3. 路由选择:Zigbee网络采用网状拓扑结构,意味着数据可以通过多个路由器进行中转。路由器负责选择最佳的路径来转发数发数据,以保证稳定的通信。路由选择使用基于跳数(hops)和信号强度等指标来评估。
  4. 数据传输:在Zigbee网络中,设备可以通过点对点通信或广播方式进行数据传输。数据可以是传感器数据、控制命令或其他应用数据。传输时,数据会被封装到Zigbee帧中,并遵循Zigbee协议的规定来进行传输。
  5. 网络管理:Zigbee网络具有自组织和自修复的能力,可以动态地管理设备加入和离开网络,以及路由选择和优化。网络管理功能由协调器负责执行。
    需要注意的是,Zigbee通信使用的是特定的硬件和协议栈,通常需要使用相应的开发工具和库函数进行编程和配置。开发者可以使用Zigbee开发套件或相关开发平台来进行应用程序的开发和测试。

数据库技术

登录数据表设计
在这里插入图片描述

采集数据表设计
在这里插入图片描述

Zstack协议栈实现主要思路


//回调函数
static void rxCB(uint8 port,uint8 event){
  uint8 buf[50];
  uint8 rxLength=0;//接收字符的大小
  rxLength=Hal_UART_RxBufLen(0);//已经接收到的字符个数
  if(rxLength>0){
    HalUARTRead(0,buf,11);//接收到数据
//    if(osal_memcmp(buf,"hello world",11)){
//      HalUARTWrite(0,buf,11);
//      HalUARTWrite(0,"\r\n",2);
//    }
    if(osal_memcmp(buf,"255",3)){
      HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);
    }else if(osal_memcmp(buf,"254",3)){
      HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);
    }
    
    
  }
}

上述只演示了收到字符串255或253会让灯的IO口变化,其实大体思路也是这样,协调器相当于中转站,负责接收上位机指令或者上传终端数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nvm安装后出现node不是内部或外部命令,也不是可运行的程序

nvm作为node管理工具可以在前端开发时,在本地安装多个node版本从来适应不同的工程代码,是比较推荐使用的!! 注意:在安装使用nvm时,需确保本地没有安装任意版本的nodejs(防止环境路径覆盖&#x…

opencv/深度学习框架/图像识别零基础学习课程(代码+视频+详细pdf资料)

课程介绍 open cv 学习掌握OpenCV的所有必要知识是成为一名优秀计算机视觉工程师的必经之路。通过深入学习OpenCV的图像处理、图像分割、特征提取、目标跟踪、机器学习等相关知识,可以让你在面试中更有信心,同时也能够更加流畅地编写高效的代码。不仅如…

代码随想录算法训练营第五十六天

第一题、两个字符串的删除操作 力扣题目链接 class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size()1, vector<int>(word2.size()1, 0));for(int i 1; i < word1.size()1; i){for(int j 1; j &l…

程序员转项目经理 快速成长的5个重点

程序员转项目经理&#xff0c;在刚开始时往往保留原有的固定思维&#xff0c;专注于项目技术的提升和突破&#xff0c;往往容易忽略干系人管理、进度管理、团队建设等问题&#xff0c;从而造成项目进度延期、费用超支等一系列的风险问题。那么我们该如何快速顺利地转型成为合格…

每天一点Python——day47

#第四十七天字典生成式&#xff1a;字典生成的公式 a[ab,ac,ad] b[12,13,14] 把a&#xff0c;b列表合并为字典 将第一个列表中的元素作为字典当中的键&#xff0c;第二个列表中的元素作为字典当中的值 这个过程我们需要打包 我们需要使用内置函数zip()生成字典 #如图所示 #例&a…

加密文件怎么解密?电脑文件加密后的解密方法

加密可以很好地保护电脑中的重要文件&#xff0c;那么加密文件该怎么解密呢&#xff1f;下面我们就一起来了解一下。 EFS加密 在使用EFS加密文件后&#xff0c;指定用户打开文件不需要输入密码。所以&#xff0c;在解密时同样无需输入密码。 我们在EFS加密文件上单击鼠标右键…

用wordpress建站效果怎么样?WordPress建站的8个主要优点

使用WordPress建站具有许多优势&#xff0c;其效果取决于您的需求、技能水平以及所选择的主题和插件。总体而言&#xff0c;WordPress是一个功能强大且灵活的内容管理系统&#xff0c;可用于创建各种类型的网站&#xff0c;从个人博客和企业网站到电子商务平台和社区论坛。 以下…

[Flask] Cookie与Session

由于HTTP的无状态性&#xff0c;为了使某个域名下的所有网页能够共享某些数据&#xff0c;Cookie和Session应运而生 1.Cookie对象 HTTP是无状态(stateless)协议&#xff0c;一次请求响应结束后&#xff0c;服务器不会留下任何关于对方状态的信息 也就是说&#xff0c;尽管在…

Linux——进程信号(上)

目录 前文 一&#xff0c;什么是进程信号 二&#xff0c;信号的产生 2.1 通过按键终端产生信号 2.2 调用系统函数向进程发信号 2.3 由软条件产生信号 2.4 硬件异常产生信号 总结 前文 上文主要讲了一下进程间用管道通信的相关知识&#xff0c;本文主要带领大家深度认识一…

cpolar在windows系统下的关闭方法

计算机&#xff0c;右键-管理 管理–服务–cpolar service&#xff0c;停止服务

InfluxDB 压力测试

一、基础环境 1. InfluxDB V1.7.8&#xff0c;预置了10.3G 数据做为初始数据 &#xff08;调整了 部分参数&#xff0c;否则数据库动不动就崩溃&#xff09; 2. 模拟141个设备&#xff0c;共计1390个点位 3. 服务器配置 128G内存&#xff0c;2.4Ghz CPU&#xff0c;虚拟机 …

前端十万个为什么——软件设计的架构模式

&#x1f600;博主&#xff1a;小猫娃来啦 &#x1f600;文章核心&#xff1a;软件设计的架构模式 上篇文章&#xff0c;我们聊了一下前端的普遍性问题以及解决策略。书接上文&#xff0c;我们今天聊聊软件设计的架构模式。 在正文开始前&#xff0c;先思考几秒&#xff1a;为…

《安全软件开发框架(SSDF) 1.1:降低软件漏洞风险的建议》解读(二)

安全软件开发框架SSDF是由美国国家标准与技术研究院发布的关于安全软件开发的一组实践&#xff0c;帮助开发组织减少发布的软件中的漏洞数量&#xff0c;减少利用未检测到或未解决的漏洞的潜在影响&#xff0c;从根本上解决漏洞防止再次发生。本文根据《Secure Software Develo…

想学会如何翻译pdf中的英文?让我教你三招

曾经有一个名叫小明的年轻人&#xff0c;他是一名热爱阅读的书虫。每天&#xff0c;他都会沉浸在大量的pdf文档中&#xff0c;探索着各种知识的海洋。然而&#xff0c;有时候他遇到了一些困扰&#xff0c;因为有些pdf文档并不是他熟悉的语言书写的。小明很苦恼&#xff0c;他希…

python接口自动化(十四)--session关联接口(详解)

简介 上一篇cookie绕过验证码模拟登录博客园&#xff0c;但这只是第一步&#xff0c;一般登录后&#xff0c;还会有其它的操作&#xff0c;如发帖&#xff0c;评论等等&#xff0c;这时候如何保持会话呢&#xff1f;这里我以jenkins平台为例&#xff0c;给小伙伴们在沙场演练一…

vue3在浏览器段展示海康监控视频

一、需求 需要在浏览器点击查看海康的监控视频 二、最后成果展示 插件下载地址&#xff1a;https://download.csdn.net/download/xm_w_xm/87995593 三、思路和方法 3.1 首先安装插件&#xff0c;可以在上面的地址中下载安装&#xff0c;建立一个dom <div id"playW…

利用Dockerfile构建带sshd、jdk服务的自定义镜像

什么是Dockerfile? Dockerfile 是一个文本格式的配置文件&#xff0c; 用户可以使用 Dockerfile 来快速创建自定义的镜像 dockerfile 的基本结构 Dockerfile 由一行行命令语句组成&#xff0c;并且支持以 # 开头的注释行。 一般的&#xff0c;Dockerfile 分为四部分&#…

SpringCloud入门实战(十一)-Spring Cloud Stream消息驱动概述

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

聚焦云原生安全攻防|构建纵深防御的运行时威胁检测体系

7月2日&#xff0c;诸子云北京分会研讨会活动—网络安全攻防对抗在北京成功举办。 作为国内云原生安全领导厂商&#xff0c;安全狗也参与此次活动。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;成立于2013年&#xff0c;致力于提供云安全、&…