ZYB ARTICLES REPOS

使用Arduino UNO和SX1278进行LoRa数据收发

使用的硬件

接线方法

   E32-TTL-100----- Arduino UNO
   M0         ----- GND
   M1         ----- GND
   TX         ----- PIN 2 (PullUP)
   RX         ----- PIN 3 (PullUP & Voltage divider)
   AUX        ----- Not connected
   VCC        ----- 3.3v/5v
   GND        ----- GND

其中E32-TTL-100的RX引脚需要连接一个1K欧姆电阻再连到Arduino UNO的引脚3。

测试代码

用的是Arduino库管理器下载的EByte LoRa E32 library(https://www.mischianti.org/category/my-libraries/lora-e32-devices/)。

发送代码

#include "Arduino.h"
#include "LoRa_E32.h"

LoRa_E32 e32ttl100(2, 3);


void setup() {
  Serial.begin(9600);
  delay(500);

  e32ttl100.begin();

  Serial.println("LoRa EByte E32, SX1278 Sender");

}

int loop_cnt = 0;
void loop() {
  String s = "LoRa Message " + String(loop_cnt++);
  ResponseStatus rs = e32ttl100.sendMessage(s);
  Serial.print("send \"");
  Serial.print(s.c_str());
  Serial.print("\" ");
  Serial.println(rs.getResponseDescription());
  delay(1000);
}

接收代码

#include "Arduino.h"
#include "LoRa_E32.h"

LoRa_E32 e32ttl100(2, 3);


void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  
  Serial.begin(9600);
  delay(500);

  e32ttl100.begin();


  Serial.println("LoRa EByte E32, SX1278 Receiver");
}

void loop() {
  if (e32ttl100.available() > 1) {
    ResponseContainer rc = e32ttl100.receiveMessage();
    if (rc.status.code != 1) {
      rc.status.getResponseDescription();
    } else {
      // Print the data received
      Serial.println(rc.data);
      digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    }
  }
}