| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 基于Lora的远程农业监测与控制系统,过程回顾及经验总结 -> 正文阅读 |
|
[嵌入式]基于Lora的远程农业监测与控制系统,过程回顾及经验总结 |
最近毕业设计终于是告一段落了,大概断断续续边做边玩搞了两个月吧,论文还没写麻了。 今天写这篇博客的主要目的是记录梳理一下自己做毕设的过程,同时也希望自己的毕设经验能给有需要的人提供一些帮助。 一、基本信息题目:基于Lora的远程农业监测与控制系统 目的:通过Lora子节点采集好各种传感器的信息,发送给汇聚节点,汇聚节点将数据通过ESP8266上传至云端,使用了微信小程序进行监测与控制 元器件:正点原子lora模块3个、正点原子STM32F103ZET6最小系统开发板3个、MQ2气敏传感器(替代二氧化碳传感器)、雨滴传感器、土壤湿度传感器、光照传感器、DHT11温湿度传感器、水位传感器、三路继电器、12V转5V、3.3V电源模块 成品: 主要元器件图片: 二、设计思路下面的过程略微有点长,不过算是记录了我详细的思考过程,有需要的小伙伴可以看看 其实我觉得设计思路是整个毕设最重要的部分,因为它决定着你后续工作的展开,这里我仅提供自己的设计思路做以参考,希望大佬多多指点。 子节点:采集各种传感器数据,在接收到汇聚节点的指令后发出数据 汇聚节点:发送指令与接收子节点返回的数据 整体思路:汇聚节点发出获取A节点数据的指令后立马开启接收函数,并且对收到的值进行判断以确保没有丢包,如果数据不完整会再次重复发送过程,三次不成功后将跳过对A节点的询问,直接开始对B节点进行询问。 子节点采集好各种传感器数据后,在接收到子节点的查询指令后,使用串口3通过Lora发出,同时会在末尾加上校验数据,比如0X55,当汇聚节点收到数据后可以直接判断末尾是否为0x55,确保数据的完整性。 这里我们有一个需要注意的问题,如果不对子节点进行地址和信道的单独设置会使得数据在发送时存在干扰问题。通过研究正点原子Lora使用手册,可以使用定向传输,在进行Lora配置时,对每个子节点进行信道、地址单独配置,发送数据时携带上目标节点的信道和地址即可。 参考下图(来源AN1801A ATK-LORA-01 无线串口模块使用说明): 最重要部分:个人认为最重要的就是汇聚节点对子节点的轮询,因为我们不可能同时访问到两个子节点,就算可以也会存在数据干扰,因此我们需要轮流询问子节点,简单理解就是一次只能跟一个人交流,面对一群人时我们只能一个一个的交流。 我的初步想法是在一个while循环里通过判断一个节点是否接收完毕然后开始下一个节点,这样的话感觉理论上是没有什么问题的,但是和导师说完我的想法后,导师直接说我想的过于简单,建议我使用一个实时操作系统来完成轮询。 后面我经过思考发现,如果只是在while里面轮询,对于数据上传和命令下发是非常不友好的。因为我们的要求是对子节点的控制命令优先级要高于对节点数据采集。并且我们在收到数据后还要进行数据上云的步骤,如果只是普通while循环的话是远远不够的。 最终通过网上查询相关资料,和简单了解之后我是用了FreeRTOS系统,另一部分原因也是正点原子官方提供的开发板资料里面有一些FreeRTOS的使用里程和教程。 三、整体设计方案及结构图1、系统整体设计
四、系统软件设计虽然整个软件设计比较简单或者说大多是重复工作,比如传感器的ADC采集,但是我尽可能多用集中方式来实现,感兴趣的小伙伴可以做个参考。如果有不对的地方或者更优解欢迎指出。 1、子节点A软件设计上面这个过程可能有些许复杂,我自己画的可能也有点问题。下面我会再详细的叙述一遍代码执行过程。 因为是毕业设计暂时在答辩未完成前不会公布太过于详细的代码 有这方面需要的可以私聊我一起讨论解决 分割线————————————————————— 时间2022年3月10日,忙完了一些事有点空了,接着上面的继续。 如果你没有看明白上面的流程图,那么没关系,可以看看我下面的文字叙述,及主要代码分析 (1)、模块配置 这个地方我们可以参考正点原子的ATK-LORA配置软件 V1.2,软件的下载地址可以去这里面寻找:开发工具专栏-OpenEdv-开源电子网 指令帮助一栏里面有相应配置指令的使用方式,我这里的配置代码如下所示:
我们要特别注意地址、信道、传输模式、空中速率的配置,这里有必要说一下传输模式的区别。 传输模式一共有三种,分别是{0 一般模式}、{1 唤醒模式}、{2 省电模式}、{3 信号强度模式},信号强度模式我并未测试,但是前面两种我已经测试完毕。 一般模式:这个模式下可以进行无线透明、定向传输数据,接收方必须是工作在一般模式和唤醒模式 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:46:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |