2023.21
在前文 esp32 + sx1268 的 spi 驱动调通之后,又尝试 ardunio +sx1268 驱动,实现不同主控对于lora模块 sx1268 的控制
文章目录
- 1. 实验结果
- 2.硬件描述
- 2.1 sx1268
- 2.2 ardunio ATmega328
- 3.接线实物图
- 5.开发环境
- 6.代码实现
关于esp32+sx1268 的驱动以及代码,请参考:
【Esp32】Esp32+sx1268 Spi接口驱动SX1268模块
1. 实验结果
描述:
Esp32 sender ardunio reciever
完成完成一次数据交互:
- Esp32 发送ping
- ardunio 接收到ping 后,回复 pong
- Esp32 接收到 pong
2.硬件描述
2.1 sx1268
SX1268 lora模块,采用,深圳市硅传科技有限公司,封装好的模组
SX1268ZTR4-GC
2.2 ardunio ATmega328
本实验ardunio 开发板主控为 ATmega328,是8位单片机,资料请参考:
Arduino Uno R3 硬件参考
3.接线实物图
5.开发环境
ardunio IDE
6.代码实现
ardunio IDE
void setup()
{
delay(1000);
Serial.begin(115200);
int16_t ret = lora.begin(RF_FREQUENCY, //frequency in Hz
TX_OUTPUT_POWER); //tx power in dBm
if (ret != ERR_NONE) while(1) {delay(1);}
lora.LoRaConfig(xx,xx,xx,xx,xx,xx); //请自行添加参数
}
void loop()
{
uint8_t rxData[255];
uint8_t txData[255];
uint8_t rxLen = lora.Receive(rxData, 255);
if ( rxLen > 0 )
{
Serial.print("Receive rxLen:");
Serial.println(rxLen);
if(memcmp(rxData,"PING",4)==0){
Serial.print("接收到数据为 PING \r\n");
sprintf((char *)txData, "PONG");
Serial.print("回复数据 PONG \r\n");
lora.Send(txData, 4, SX126x_TXMODE_SYNC);
}
int8_t rssi, snr;
lora.GetPacketStatus(&rssi, &snr);
Serial.print("rssi: ");
Serial.print(rssi, DEC);
Serial.println(" dBm");
Serial.print("snr: ");
Serial.print(snr, DEC);
Serial.println(" dB");
Serial.println();
}
delay(1);
}