Как читать сообщения LoRa в последовательном мониторе через heltec esp32

Я новичок в обмене сообщениями esp32 и LoRa.

Я следую двум примерам из библиотеки lora heltect esp32.

Два модуля, которые я использую для отправки и получения данных, имеют OLED-дисплей ... и я распечатываю их значения на последовательном мониторе. Значения данных отображаются на OLED-дисплее, но они представляют собой случайные символы на последовательном мониторе, например ... ⸮⸮3⸮⸮JS⸮ ⸮⸮⸮⸮J) ⸮⸮.

Мой вопрос в том, как я могу получить данные от отправителя в виде строк / чисел с плавающей запятой / целых чисел, чтобы я мог выполнять на них логику. Я новичок в c ++ и lora, поэтому любая помощь приветствуется.

Я почти уверен, что это (первый блок кода непосредственно под этим абзацем) - это фрагмент кода, отвечающий за печать полученного сообщения, но он не печатается ни в каком формате, с которым я могу работать, даже когда я меняю char dtype на String .

while (LoRa.available()) {
  Serial.print((char)LoRa.read());
}

Код получателя

/* 
  Check the new incoming messages, and print via serialin 115200 baud rate.
  
  by Aaron.Lee from HelTec AutoMation, ChengDu, China
  成都惠利特自动化科技有限公司
  www.heltec.cn
  
  this project also realess in GitHub:
  https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series
*/

#include "heltec.h"

#define BAND    915E6  //you can set band here directly,e.g. 868E6,915E6
void setup() {
    //WIFI Kit series V1 not support Vext control
  Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);

}

void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    // received a packet
    Serial.print("Received packet '");
    // read packet
    while (LoRa.available()) {
      Serial.print((char)LoRa.read());
    }
    // print RSSI of packet
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
  }
}

Код отправителя

    /* 
  Basic test program, send date at the BAND you seted.
  
  by Aaron.Lee from HelTec AutoMation, ChengDu, China
  成都惠利特自动化科技有限公司
  www.heltec.cn
  
  this project also realess in GitHub:
  https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series
*/
#include "heltec.h"
#define BAND    915E6  //you can set band here directly,e.g. 868E6,915E6

int counter = 0;

void setup() {
  
  //WIFI Kit series V1 not support Vext control
  Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);

  
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);
  // send packet
  LoRa.beginPacket();
/*
* LoRa.setTxPower(txPower,RFOUT_pin);
* txPower -- 0 ~ 20
* RFOUT_pin could be RF_PACONFIG_PASELECT_PABOOST or RF_PACONFIG_PASELECT_RFO
*   - RF_PACONFIG_PASELECT_PABOOST -- LoRa single output via PABOOST, maximum output 20dBm
*   - RF_PACONFIG_PASELECT_RFO     -- LoRa single output via RFO_HF / RFO_LF, maximum output 14dBm
*/
  LoRa.setTxPower(14,RF_PACONFIG_PASELECT_PABOOST);
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();
  
  counter++;
  digitalWrite(25, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(25, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

person johnny_sands    schedule 22.08.2020    source источник


Ответы (1)


Возможно, монитор последовательного порта настроен с неправильной скоростью передачи данных? В моем случае по умолчанию в IDE было 9600, но ESP32 отправил с 115200. Вы можете изменить скорость передачи в поле со списком в последовательном мониторе.

person Tom Pom    schedule 01.09.2020
comment
в этом и была проблема. Спасибо. Я проверил документацию по esp32 и обнаружил, что она запрашивает скорость передачи для 115200. Я видел ее изначально, но не знал, что искал. Спасибо - person johnny_sands; 03.09.2020