arduino lora通讯_智能酒桶-arduino+lora通信
购买的模块终于到齐了,来个接线图:
第一步:通过官方工具,将lora模块进行初始化,注意一定要选定点传输方式,我一开始不知道在这里搞了好久。第一个模块设置地址为1,这个模块到时接树莓派,第二个模块设置地址为2,接到arduino上。
第二步:接线,这步要注意,lora模块有m0,m1两根针,用来控制模式的,如果不用,一定要接地,这里我也尝试了好久。
第三步:编写通信代码,我要实现一个简单的功能,01模块向02模块发送一个指令,arduino验证指令完整后向01模块响应。多话不说,直接上代码:
#include
SoftwareSerial rolaSerial(2, 3); // 电流表数据通讯TTL RX, TX
String cmdBuffer = ""; // 命令缓存
int loggerLevel = 1; // 日志级别
char szTmp[3]; // 串口读取
unsigned char channel = 0x04; // 信道
void setup() {
Serial.begin(9600);
rolaSerial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// 读取串口指令到buffer
if(rolaSerial.available() > 0) {
digitalWrite(LED_BUILTIN, HIGH);
}
while (rolaSerial.available() > 0)
{
sprintf( szTmp, "%02X", (unsigned char) rolaSerial.read() );
cmdBuffer += szTmp;
delay(2);
}
digitalWrite(LED_BUILTIN, LOW);
if(cmdBuffer.length() > 0) {
parseBuffer();
}
}
void parseBuffer() {
// 长度超过2048,清空
if(cmdBuffer.length() > 2048) {
cmdBuffer = "";
logger("size out 2048");
return;
}
// 查找AA333380
int start = cmdBuffer.indexOf("AA333380");
if(start > 0) {
cmdBuffer = cmdBuffer.substring(start);
} else if(start == -1) {
return;
}
// 查找FCFF
String temp = "";
int end = cmdBuffer.indexOf("FCFF");
if(end != -1) {
temp = cmdBuffer.substring(0, end + 4);
cmdBuffer = cmdBuffer.substring(end + 4);
sendReturn();
}
String cmdstr = temp.substring(8, 12);
String data = temp.substring(12, temp.length() - 4);
if(cmdstr.equals("0001")) {
logger(data);
}
}
// 收到信息号响应
void sendReturn() {
unsigned char dest[11] = {0x00, 0x01, channel, 0xBB, 0x66, 0x66, 0x80, 0xFF, 0xFF, 0xFc, 0xFF};
rolaSerial.write(dest, 11);
}
void logger(String str) {
if(loggerLevel) {
Serial.println(str);
}
}
第四步:测试
连通性测试,发送一条,响应一条
压力测试:
定时发送设置为100,200,300,400,在100ms情况下,模块接收到数据错乱。300以后正常,但偶尔发生不回复的情况,500ms较为稳定。
因为lora模块是通过无线电来传输的,首先,传输的数据不能太多。第二,需要一点时间。所
以确定500ms为一次通信较为稳定。
距离与稳定性测试:
官方数据说在3KM之内通信,我测试了在1-2KM,是正常的,再远没测试过了。电梯内也可以正常收发,在电梯运动时会偶尔收发失败。
lora通信基本测试成功,下一步使用树莓派开发中继器
arduino lora通讯_智能酒桶-arduino+lora通信相关推荐
- arduino摄像头监控_如何使用Arduino和Pusher制作实时光监控器
arduino摄像头监控 by Neo Ighodaro 由新Ighodaro 如何使用Arduino和Pusher制作实时光监控器 (How to make a realtime light mon ...
- arduino 温度调节器_怎样使用Arduino制作自己的温度控制器
使用Arduino温度控制器提高完美的面包,酿造精美的啤酒和饲养快乐的小鸡.如果您的生活环境不太可靠,例如英格兰,那么告诉您将某物保持在设定温度下的指示并没有特别帮助-我们没有空调,并且为整个房子提高 ...
- Arduino录音时间延长_如何用arduino设计出可以语音播报的数字时钟
A:您好,1.基本要求:能利用现有的硬件系统设计一个至少能显示分.秒的控制电路.分和秒均用两位数码管指示,并具有调时.复位功能: 2.扩展要求:能同时显示小时(两位数码管)并能调节小时功能:具有闹钟* ...
- 【STM8】两个单片机之间的Lora通讯实验
文章目录 前言 一.SX1278的AT命令 二.使用步骤 1.SPI驱动 2.串口驱动 3.串口发送 总结 前言 这一次的实验,主要是要使用两个STM8单片机和SX1278Lora模块,互相实现数据的 ...
- arduino lora通讯_Arduino开发板和树莓派之间实现Lora点对点通讯
随着物联网.互联汽车.M2M.工业4.0等的出现,LoRa越来越受欢迎.由于其能够以非常低的功率进行长距离通信,因此它非常适合设计人员用于发送/接收来自电池供电的数据.我们已经讨论了LoRa的基础知识 ...
- 【arduino】(1)介绍、lora和温度传感器的连接
(持续更新中) 1 arduino arduino较为简单.其是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE).它适用于爱好者.艺术家 ...
- lora模块 A39系列 远距离通信 Arduino 串口案列程序
lora模块 A39系列 远距离通信 Arduino 串口案列程序 一.器材 Lora通信模块 A39C-T400A22D1a *2 USB转TTL *1 Arduino *1 面包板 *1 杜邦线 ...
- arduino蓝牙通讯代码_「Arduino」OLED屏使用教程,显示内容听谁的?我不管,听我的...
玩转Arduino小伙伴肯定都接触过OLED屏吧,不管是在Arduino还是树莓派中都起到浓墨重彩的一笔,会写编程的同学也可以变换更多的花样. 材料清单: Arduino驱动板 x 1 OLED模块 ...
- python和arduino哪个好_基于Python和Arduino的智能花盆系统
基于 Python 和 Arduino 的智能花盆系统 杨吉云 YANG Ji-yun :徐乾淏 XU Qian-hao :沈莲 SHEN Lian :章晓敏 ZHANG Xiao-min [摘 要] ...
最新文章
- 调整亮度_【紫墨手机摄影课堂】图片调整
- 从业务在线到互联互通,钉钉宜搭进入低代码3.0阶段新模式
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的解决方案...
- NPOI之Excel——设置单元格背景色
- js 日期天数相加减,格式化yyyy-MM-dd
- AsyncTask 源码流程简析
- Python中list,tuple,dict,set的区别和用法
- win7和xp,哪个才是你的选择?
- java 读文件 解析
- 多智能体强化学习(一) IQL、VDN、QMIX、QTRAN算法详解
- Backtrader量化平台教程(六)Analyzer
- AC Dream1069
- VR视频为什么都是弯的?
- 【Redis学习05】优惠券秒杀及其优化
- JavaScript - JS验证邮箱 ××× VISA 卡输入是否正确|正则表达式
- C++内存管理与指针的使用
- 怎么在线压缩PDF文件?常见途径说明
- ff新推荐的关闭办法
- Archive for the 'TED' Category TED视频:Tan Le 能读懂脑电波的耳机
- vs点击方法跳不到对于的地方_【阿司足球】今天带来一场欧国联的比赛,比利时VS冰岛...