查看Lora实战的源代码
←
Lora实战
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
=== Lora 简介和资料 === [https://www.lora-alliance.org/ Lora 联盟] [http://www.semtech.com/images/datasheet/sx1276_77_78_79.pdf SX1276/77/78/79 DataSheet] Lora 窄带, 低速, 低功耗, 远距离. 支持扩频/跳频通讯. 抛开高大上的 LoraWan不谈, 作为一个低速 Lan, 桥接传感器尤其适合. <br> 在此仅以 [[Arduino_精要]] 作为控制器介绍Lora快速原型项目以及遇到的实际问题. [[文件:Arduino-lora-demo.jpg|right|300px]] === Lora 开源项目和驱动 === Arduino以其丰富的生态, 几乎任意传感器/外围都是 copy/paste 模式即可达到demo目的, 在此之上项目即可高速启动. Lora开源项目中 法国 波城大学(University of Pau) C. Pham 创始的[https://github.com/CongducPham/LowCostLoRaGw Low Cost Lora GateWay]项目做到了基本完善的Demo, 可以作为项目参考. [https://github.com/CongducPham/LowCostLoRaGw Low Cost Lora GateWay] 以树梅派作为网关, Arduino 作为传感器采集端, 实现了上下行, 带应答通讯, Lora CAD(通道活动侦测)等特性. [https://github.com/CongducPham/LowCostLoRaGw Low Cost Lora GateWay] 项目采用的驱动原型是[https://github.com/wirelessopensource/lora_shield_arduino Lora Shield Arduino 驱动]. 此驱动仅支持1278, C. Pham在 [https://github.com/CongducPham/LowCostLoRaGw Low Cost Lora GateWay] 扩展了驱动的支持, 使其支持SX1272/76/78/79全系列芯片, 并扩展了报文应答. 需要注意, 这是一个Poll(轮询)模式的驱动. 没有中断, 适合big loop. 对于强大的CPU, 一个线程轮询一个芯片即可. 对于Arduino, 这似乎够用, 尤其是Lora的速度不快, 传感器也不需要密集上报数据的情况. === 调试步骤和建议=== 在完成硬件连接后(可以先用杜邦线连接Arduino和模块), 可以开启debug, 修改文件 [https://github.com/CongducPham/LowCostLoRaGw/blob/master/Arduino/libraries/SX1272/SX1272.h SX1272.h] 如下选项: <code> #define SX1272_debug_mode 1 //change from 0 to 1 </code> 如果出现异常, 首先要检查读出的 硬件版本信息. 可以加一个打印信息, 看看到底读出的硬件版本. 位于件[https://github.com/CongducPham/LowCostLoRaGw/blob/master/Arduino/libraries/SX1272/SX1272.cpp SX1272.cpp] 中的函数 SX1272::ON() 中. 这是驱动复位芯片后的第一个动作. 如果版本读取不正确, 请检查硬件连接, SPI配置. 如版本正确, 一般驱动就可以工作了. 下一步可以检查输出. 用微功率计检查输出功率. 如无功率, 但是驱动又报告发送正常,一般应该是芯片配置问题, 请打开或者关闭PABOOST配置. === Lora 问题和解决 === ====驱动用到的引脚==== [https://github.com/CongducPham/LowCostLoRaGw/tree/master/Arduino/Arduino_LoRa_Simple_temp LowCostGW- Arduino Client Demo] 中使用的驱动, Aruino UNO下, 实际上使用了如下的引脚. 但是其文档却未指明Reset和NSS (SPI CS)的使用情况,这将直接导致SPI无法工作. 特别是采用了LowCostGW没有宣称支持的模块时, 这里要着重检查. Reset 线接:3 NSS(CS)接:2 MOSI接:11 MISO接:12 CK(SCK)接:13 还有极为重要的是, 驱动并未设置Reset和NSS的引脚模式,请在 setup中加入以下两行作为初始化: <code> #define SX1272_SS 2 #define SX1272_RST 3 pinMode(SX1272_SS, OUTPUT); pinMode(SX1272_RST, OUTPUT); </code> ====ACK模式==== LowCost GW 实现的ACK模式工作并非特别稳定, 建议不使用, 而采用APP层自己的应答措施. 驱动采用延迟一定时间的方式等待发送方切换到接收模式, 不是很可靠. * CRC错误 [https://github.com/CongducPham/LowCostLoRaGw/tree/master/Arduino/Arduino_LoRa_Gateway Arduino GW] 此工程是LowCost Lora GW 项目的Arduino网关, 只要修复了驱动引脚的问题, 网关可以运行. 当信号弱, CRC校验开启时, 网管会Reset SX1278/1272 收发器. 这段逻辑明显不合适, 需要删除. 请禁如下代码: <code> if (e==2) { #if 0 //特别是在信号弱的情况下, CRC错误返回值也是2, 导致这里判断混乱 // Power OFF the module sx1272.OFF(); radioON=false; PRINT_CSTSTR("%s","^$Resetting radio module"); PRINTLN; e = sx1272.ON(); PRINT_CSTSTR("%s","^$Setting power ON: state "); PRINT_VALUE("%d",e); PRINTLN; #endif if (!e) { radioON=true; startConfig(); } // to start over status_counter=0; e=1; } </code> ====驱动和PA选择==== [[文件:Sx1278-PA.jpg]] 如果驱动设置一切看起来正常, 但是发射距离又特别的短, 这是比较典型的PA设置错误. Lora 1278收发器又3个不同的 PA(射频功放), 只要宣称了支持20dBm发射功率的, 都需要打开 PABOOST 编译选项, 使驱动正确选用连接PA_BOOST引脚的PA. ====转接板问题==== 如果购买了带转接板的邮票模块, 有时候因为品质控制不良, 导致接收不稳定, GW一直出现 error, 或者在没有信号的时候也出现收到未知报文, 这预示着此模块可能有焊接问题. 本人就遇到了这样的模块. 解决办法是补焊,并去除多余的焊锡,然后用无水酒精清洗PCB, 最终问题解决.
返回到
Lora实战
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面