【问题标题】:LoRa communication between ESP8266 and RPi 3B+ESP8266 和 RPi 3B+ 之间的 LoRa 通信
【发布时间】:2022-11-12 15:21:36
【问题描述】:

我有一个 ESP8266 和一个 RPI 3B+ 都配备了 LoRa-02 (SX1278) 模块。我正在尝试将数据包从 ESP 发送到 RPi,但它不起作用。

请考虑 ESP8266 上的以下代码 sn-p:

main.cpp

#include "loRaComms.h"
void setup() {
  // sender
  Serial.begin(115200);
  initLoRa(434800000);
}

void loop() {
  // sender
  brodcastBuffer();
  delay(1000);
}

loRaComms.cpp

#include <LoRa.h>

void initLoRa(int freq) {
  LoRa.setPins(Lora_NSS, Lora_RESET, Lora_DIO0);
  LoRa.setFrequency(freq);
  LoRa.setSignalBandwidth(62500);
  LoRa.setSpreadingFactor(12);
  LoRa.setCodingRate4(8);
  LoRa.setGain(0);
  LoRa.setPreambleLength(6);
  if (!LoRa.begin(freq)) {
    // initialize ratio at 915 MHz  433E6 - Asia, 866E6 - Europe, 915E6 - North America
    Serial.println("LoRa init failed.");
  } else {
    Serial.println("LoRa init succeeded.");
  }
}

void brodcastBuffer() {
  LoRa.beginPacket(); // start packet
  LoRa.print("hello!");
  LoRa.endPacket();
}

我对 ESP8266 代码没有任何问题。我用 2 个 ESP8266、一个发送器和一个接收器测试了这段代码,一切正常!

现在让我们看看 RPi 3B+ 代码。我已经使用了 [this repository][1] 及其自己的示例代码,如下所示:

void * rx_f(void *p) {
  rxData *rx = (rxData *)p;
  printf("rx done \n");
  printf("CRC error: %d\n", rx->CRC);
  printf("Data size: %d\n", rx->size);
  printf("string: %s\n", rx->buf); // Data we've received
  printf("RSSI: %d\n", rx->RSSI);
  printf("SNR: %f\n", rx->SNR);
  free(p);
  return NULL;
}

int main() {
  LoRa_ctl modem;
  // See for typedefs, enumerations and there values in LoRa.h header file
  modem.spiCS = 0; // Raspberry SPI CE pin number
  modem.rx.callback = rx_f;
  modem.eth.preambleLen = 6;
  modem.eth.bw = BW62_5; // Bandwidth 62.5KHz
  modem.eth.sf = SF12; // Spreading Factor 12
  modem.eth.ecr = CR8; // Error coding rate CR4/8
  modem.eth.freq = 434800000; // 434.8MHz
  modem.eth.resetGpioN = 27; // GPIO4 on lora RESET pin
  modem.eth.dio0GpioN = 17; // GPIO17 on lora DIO0 pin to control Rxdone and Txdone interrupts
  modem.eth.outPower = OP20; // Output power
  modem.eth.powerOutPin = PA_BOOST; // Power Amplifier pin
  modem.eth.AGC = 1; // Auto Gain Control
  modem.eth.OCP = 240; // 45 to 240 mA. 0 to turn off protection
  modem.eth.implicitHeader = 0; // Explicit header mode
  modem.eth.syncWord = 0x12;
  printf("%d\n", modem.eth.bw);
  printf("%d\n", modem.eth.ecr);
  // For detail information about SF, Error Coding Rate, Explicit header, Bandwidth, AGC, Over current protection and other features refer to sx127x datasheet https:// www.semtech.com/uploads/documents/DS_SX127$

  LoRa_begin(&modem);
  LoRa_receive(&modem);

  while (1) {
    usleep(200000);
  }
  printf("end\n");
  LoRa_end(&modem);
}```

But I can't receive anything on RPi. I also tested the ping pong sample on two RPi 3 and it didn't work.

Did I miss something here? I'm open to use any alternative library on RPi3, but I can only use C/C++ libraries. I've used the following pins:

    raspi                       LoRa
    GPIO27, pin13               RESET
    GPIO17, pin 11              DIO0
    MOSI (GPIO10, pin 19)       MOSI
    MISO (GPIO9, pin 21)        MISO
    CLK (GPIO11, pin 23)        SCK
    SPI_CE0 (GPIO8, pin 24)     NSS


  [1]: https://%20github.com/YandievRuslan/sx1278-LoRa-RaspberryPi.git

【问题讨论】:

  • 如果你在两个 RPI3 之间测试并且没有工作,那么这个问题与 ESP8266 无关。
  • @hcheung 您对 RPI3 代码或任何替代方案有什么想法吗?
  • 既然产品使用了SPI,那么你是否启用了SPI?如果您输入ls -l /dev/spidev*,您会看到什么?
  • 我已经从 raspi-config 启用了 SPI。输出为crw-rw---- 1 root spi 153, 0 Oct 31 21:17 /dev/spidev0.0crw-rw---- 1 root spi 153, 1 Oct 31 21:17 /dev/spidev0.1
  • modem.spiCS = 0;你确定吗?

标签: c++ c raspberry-pi3 esp8266 lora


【解决方案1】:

您可以检查您的引脚连接

PI 3 MISO 是 GPIO09,MOSI 是 GPIO10。 因此,您需要将引脚连接更改为以下

raspi                       LoRa

MOSI (GPIO10, pin 19)       MISO

MISO (GPIO9, pin 21)        MOSI

这里是SPI MOSI和MISO的介绍 https://www.analog.com/en/analog-dialogue/articles/introduction-to-spi-interface.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2021-10-26
    • 2021-09-09
    • 2021-07-25
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多