概述
LORA的一些基础知识
1.配置模式:MD0接3.3V AUX悬空 通信模式:MD0接GND或悬空 AUX悬空
通信模式可以用串口调试助手进行调试。
2.几个重要的通信指标:
1.扩频因子(SF):扩频设置用的,扩频因子越大,信噪比越高,传输距离越远,传输速率越低。
2.低噪声放大器(LNA):这个是把天线接受到的信号进行放大,为解码做准备的。
3.信噪比(SNR):信号和噪声的比值,信噪比越高,说明信号干扰越小。
4.扩频调制带宽 (BW):带宽也表示传输速率,这里的带宽指的是频宽,即频段的频率宽度,它决定了中心频率的上下频率。比如中心频率433MHZ, 带宽是2MHZ,则通信的频谱(信道)的频率为432MHZ~434MHZ 。
5.功率放大器(PA):就是常说的功放,用来放大信号的。
3.如何修改一些基本参数,例如扩频因子
这些参数都有对应的寄存器的。修改对应的寄存器值就可以了。以SX1278为例,参考芯片手册的6.4. LoRa TM Mode Register Map,例如要修改带宽,查看芯片手册,发现对应的寄存器是RegModemConfig
1
(0x1D),这个寄存器控制Bw 、CodingRate、ImplicitHeaderModeOn 。根据需要向此寄存器写入对应的值就可以了。
4.正点原子lora模块的操作步骤
我用的是一端是stm32f4探索版,一端是usb转ttl的接口。
(1)在单片机这边,首先要接上屏幕,将对应的代码下载进去。按照屏幕的提示,进入通信模式,按下按键就会发送信息。
(2)在USB转TTL这边,一定要留意,配置的时候要把MD0接口接到3.3v上面,这样在串口软件上才能实现保存设置,发送指令等操作。通信的时候一定要这个线拔掉。
(3)当USB这端作为发送端的时候,单片机这边的接受端有两个,你可以在单片机上接收,不用调试,进入通信模式就行。同时在上位机软件上也可以接收,但一定要串口的波特率和LORA模块的波特率,两个有可能不一样。一般情况下,配置的时候波特率都要设置为115200,当通信的时候波特率一般是9600。
5.代码知识
(1)u8是unsigned char,u16是unsigned short,u32是unsigned long。8,u16,u32都是C语言数据类型,分别代表8位,16位,32位长度的数据类型,一个字节是8位,所以u8是1个字节,u16是2个字节,u32是4个字节。
(2) c语言中的大写字母O和数字0实在太像了!!!小写的l和数字1也实在太像了。
(3)一个警告,不允许嵌套注释,就是说前面用了/********,中间不能再用。
(4)#ifndef是"if not defined"的简写,通过这样写避免软件重定义错误
(5)??为什么在引脚初始化的时候,有时候可以不用写GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出输出的类型?
(6)使用外部中断的时候,一定要先使能这个函数RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); //使能SYSCFG时钟
注意,这些函数都是在RCC.h文件里面,可以直接复制粘贴。
6.LORA论文设计
(1)LoRa 技术在数字农业中的应用——这篇论文让我想能不能写一个有关监控苹果生长状态的论文。
(2)https://blog.csdn.net/qq646497210/article/details/80143245 ——这个网站不错。
https://blog.csdn.net/yunmao2882/article/details/90516995——介绍自组网。
(3)esp8266做图片生成器。然后lua二进制读取。通过串口传给lora.
.key.c文件中的扫描函数解析
u8 KEY_Scan(u8 mode)
{
static u8 key_up=1;//按键按松开标志 //static代表这个定义只执行一次
if(mode)key_up=1; //支持连按 //mode为1之后)key_up就会持续为1
if(key_up&&(KEY00||KEY10||KEY20||WK_UP1))//一旦支持连按mode=1,按键按下之后,虽然下面key_up被置0,但按键没有松开,
//新一轮的扫描开始,下面又一次返回按键值,从而造成按键不放持续产生返回值的情况
{
delay_ms(10);//去抖动
key_up=0; //当不支持连按mode=0时,)key_up在这里被置0,从而这个if语句只会被执行一次就结束掉,不会出现持续按键的情况。
if(KEY00)return 1; //注意KEY0返回的是1
else if(KEY10)return 2;
else if(KEY20)return 3;
else if(WK_UP1)return 4; //注意这个是1是按下,0是松开
}else if(KEY01&&KEY11&&KEY21&&WK_UP0)key_up=1;
return 0;// 无按键按下,返回0
}
enum 关键字在c中用的是比较多的,它常用来定义标记整型常量。下面这个链接一下子帮我把枚举讲清楚了
https://zhidao.baidu.com/question/577960653.html?qbl=relate_question_2&word=%CD%A8%CB%D7%BD%B2%BD%E2c%D3%EF%D1%D4%C3%B6%BE%D9
最后
以上就是生动小甜瓜为你收集整理的LORA开发(三)的全部内容,希望文章能够帮你解决LORA开发(三)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复