Lora модули e32-868t20d, E32-433T20DC и иже с ними..

Домосед
Домосед аватар
Offline
Зарегистрирован: 18.09.2019

Lora модули e32-868t20d краткое описание и работа с ними

Домосед
Домосед аватар
Offline
Зарегистрирован: 18.09.2019

Опс,  первый пост получился коротким и без возможности редактирования :( Как бы его удалить?
Посвящу некоторую толику своего времени описанию моего знакомства с Lora модулем E32-868T20D на чипе SX1276. Необходимость приобретения и освоения данного модуля было вызвано желанием создать условно бесплатное по связи устройство, обеспечивающее сигнализацию и охрану на личном хозяйственном обЪекте типа "сарай кирпичный" неподалеку от места проживания ~ 600м, в условиях городской застройки средней плотности. Пока там стоит GSM сигналка реализованная на основе Ардуино и SIM800C. Но за услуги мобильного оператора как известно надо регулярно отстегивать кровно заработанные..

 Просмотрел видеоролики демонстрирующие дальнобойность данной технологии и был приятно удивлен :0 link  link Поскольку времени на изучение и освоение полных возможней 137 MHz to 1020 MHz Long Range Low Power Transceiver SX1276 и пр. честно говоря жалко, приобрел максимально простые в управлении и освоении 2 модуля E32-868T20D и антенны TX868-JKD-20. Антенны некстати дорогие, проще сделать самому, это не сложно. Кратко остановлюсь на их характеристиках:
 Питание по даташиту от 3,3V до 5,2V, уменя работали и при 2,7V , без видимой потери мощности. Мощность передатчика, регулируемая до 100 mW.  Диапазон 868 МГц. Четыре режима работы по энергопотреблению.. В общем все описано в даташите, материалы выложил на GooDrive , там же наличествует и утилита для настройки через UART. Основной даташит переведен на русский, пользуйтесь. 
 Самое главное - простота управления модулем по UART интефейсу. Рекомендованные уровни сигналов до 3,3v, но я, 
 при питании Arduino Pro Mini и E32-868T20D от Li-Ion аккумулятора согласования по уровням не делал.
 Принцип работы с модулем на пины M0 M1 high уровень, модуль в режим sleep, далее посылка по UART три раза 0xC1 и 6 байт конфигурации. Затем можно прочитать настройки послав 3 раза 0xC3. Потом перевод в рабочий режим, опустив уровни M0 M1 на модуле в low, и вуаля - либо шлем по UART данные, либо принимаем, проверяя уровень на AUX перед передачей, сигнализирущим о готовности модуля.
 Изготовил пробный "комплект оборудования" для проверки дальности работы. Испытал на мощности 10 mW в двух режимах передача-прием и передача-прием-передача-прием.
 Получил устойчивый положительный результат.
 Конечно данные модули и ему подобные не позволяют в полной мере реализовать все возможности Lora технологии, но реализуют необходимые минимальные возможности при довольно низком уровне вхождения и затрат. Для желающих расширить возможности E32-868T20D есть материал
 
Домосед
Домосед аватар
Offline
Зарегистрирован: 18.09.2019
Комплект скетчей прилагаю.
Первый передатчик, приемник.
// демонстрация работы с Lora модулем e32-868t20d
// запись и чтение параметров модуля, передача в эфир тестовой строки
// FreeGnuPnu Licensing from Domosed version 0.0.0.1

#include <SoftwareSerial.h>

#define pinM0  10   // на пин M0
#define pinM1  11   // на пин M1
#define pinAUX 12   // на пин AUX

SoftwareSerial LoraUART(8, 9);  // RX, TX UART к Lora E32

void setup() {
  pinMode( pinM0, OUTPUT);        // пин управления режимом работы модуля 
  pinMode( pinM1, OUTPUT);        // пин управления режимом работы модуля
  pinMode( pinAUX, INPUT);        // контрольный пин AUX c Lora
  Serial.begin( 9600);            // порт отладки 
  LoraUART.begin( 9600);          // порт Lora
  
  digitalWrite( pinM0, HIGH);     // перевод в режим sleep для настройки
  digitalWrite( pinM1, HIGH);     // ..
  
  while ( !digitalRead( pinAUX)); // ожидание готовности Lora
  Serial.println( "Lora ready -> settings"); 
  
  // настройка E32
  LoraUART.write(byte (0xC0));           // HEAD   сохранить настройки при выключении ( 0xC0)
  LoraUART.write(byte (0x0));            // ADDH   верхний байт адреса модуля
  LoraUART.write(byte (0x0));            // ADDL   нижний байт адреса модуля
  LoraUART.write(byte (0x1A));           // SPEED  параметры и скорость UART и AIR
  LoraUART.write(byte (0x07));           // CHAN   рабочий канал ( частота = 862 + 0x07 = 869 МГц)
  // 10 mW, FEC on, Fixed mode on, 250ms wake up, push-pull IO
  LoraUART.write(byte (0b1000111));      // OPTION режим передачи, мощность 
  
  while ( !digitalRead( pinAUX));         // ожидание готовности Lora 
  Serial.println( "Settings Ok"); 
}

void loop() {
  while ( !digitalRead( pinAUX));         // ожидание готовности Lora
  LoraUART.write(byte (0xC1));            // запрос параметров 3 раза 0xC1
  LoraUART.write(byte (0xC1)); 
  LoraUART.write(byte (0xC1));  
  while ( !digitalRead( pinAUX));         // ожидание готовности Lora
  Serial.print( "Read settings -> "); 
  while ( LoraUART.available()){
    char inByte = char (LoraUART.read());
    Serial.print ( inByte, HEX);          // вывод в терминал конфигурации модуля
  }
  Serial.println(" ok");
  delay( 2000);
  digitalWrite( pinM0, LOW);              // перевод в режим normal 
  digitalWrite( pinM1, LOW);              // ..
tr1:                                      // передача данных
  while ( !digitalRead( pinAUX));         // ожидание готовности Lora 
  Serial.println("Lora ready Ok");
  Serial.println("Lora send testing string");
  LoraUART.print("Test Ok :)");           // отправка тестовой строки
  delay(5000);
  goto tr1;  
}
// тестирование приемника с Lora модулем e32-868t20d на дальность
// запись и чтение параметров модуля, прием с эфира тестовой строки
// подсчет принятых пакетов и ошибочных
// FreeGnuPnu Licensing from Domosed version 0.0.0.1

#include <SoftwareSerial.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED ширина
#define SCREEN_HEIGHT 32 // OLED высота
#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define pinM0  10   // на пин M0 Lora
#define pinM1  11   // на пин M1 Lora
#define pinAUX 12   // на пин AUX Lora
#define pinLed 13   // светодиод
#define pinBuzz 7   // пищалка

SoftwareSerial LoraUART(8, 9);  // RX, TX UART к Lora E32

char testStr[] = "Test Ok :)";

void setup() {                    // настройка модуля
  Serial.begin( 9600);
  if(!display.begin( SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32
    Serial.println( F("SSD1306 init failed"));
    for(;;); // Don't proceed, loop forever
  }
  display.setTextSize(2);             
  display.setTextColor(WHITE);
  pinMode( pinM0, OUTPUT);        // пин управления режимом работы модуля 
  pinMode( pinM1, OUTPUT);        // пин управления режимом работы модуля
  pinMode( pinAUX, INPUT);        // контрольный пин AUX c Lora
  LoraUART.begin( 9600);          // UART Lora 9600 bps
  
  digitalWrite( pinM0, HIGH);     // перевод в режим sleep для настройки
  digitalWrite( pinM1, HIGH);     // ..
  
  while ( !digitalRead( pinAUX)); // ожидание готовности Lora
  Serial.println( "Lora ready -> settings"); 
  
  // настройка E32
  LoraUART.write(byte (0xC0));    // HEAD   сохранить настройки при выключении ( 0xC0)
  LoraUART.write(byte (0x0));     // ADDH   верхний байт адреса модуля
  LoraUART.write(byte (0x0));     // ADDL   нижний байт адреса модуля
  LoraUART.write(byte (0x1A));    // SPEED  параметры и скорость UART и AIR
  LoraUART.write(byte (0x07));    // CHAN   рабочий канал ( частота = 862 + 0x07 = 869 МГц)
  // 10 mW, FEC on, Fixed mode on, 250ms wake up, push-pull IO
  LoraUART.write(byte (0b1000111));      // OPTION 
  
  while ( !digitalRead( pinAUX));        // ожидание готовности Lora 
  display.clearDisplay();
  display.setCursor(0,0);
  display.println( "SetOk");          
  display.display();
  delay( 2000);
}

void loop() {
  uint16_t nPacket = 0,                  // принято пакетов
           nBroken = 0;                  // битых пакетов
  byte i;
  bool fComplete;                        // пакет без ошибок
  while ( !digitalRead( pinAUX));        // ожидание готовности Lora
  LoraUART.write(byte (0xC1));           // запрос параметров
  LoraUART.write(byte (0xC1)); 
  LoraUART.write(byte (0xC1));  
  display.clearDisplay();
  display.setCursor(0,0);
  display.println( "Config");
  while ( !digitalRead( pinAUX));         // ожидание готовности Lora
  while ( LoraUART.available()){
    byte inByte = byte (LoraUART.read());
    display.print( inByte, HEX);          // вывод на экран конфигурации модуля
  }
  display.display();
  delay( 2000);
  display.clearDisplay();
  display.setCursor(0,0);
  display.println( "Receiving");
  display.display();
  delay( 2000);  
  digitalWrite( pinM0, LOW);         // перевод Lora в режим normal
  digitalWrite( pinM1, LOW);
  display.clearDisplay();
rec1:                                // loop приёма
  fComplete = true;
  display.setCursor(0,0);
  while ( !digitalRead( pinAUX));    // ожидание готовности Lora
  if ( LoraUART.available()) {
    nPacket++;
    i = 0;
    display.clearDisplay();
    tone( pinBuzz, 500, 300);        // пищалка 
  }    
  while ( LoraUART.available()){
    char inByte = char (LoraUART.read());
    display.print( inByte);          // вывод на экран принятого
    if ( testStr[i++] != inByte)     // проверка целостности пакета
      fComplete= false;
    digitalWrite( pinLed, HIGH);     // светодиод 
  }
  if ( !fComplete) {                 // битый пакет
    nBroken++;
    tone( pinBuzz, 200, 300); 
  } 
  display.setCursor(0,16);
  display.print( nPacket);
  display.setCursor(64,16);
  display.print( nBroken);
  display.display();  
  digitalWrite( pinLed, LOW); 
  goto rec1;
  //display.invertDisplay( false);
}

Второй передатчик-приемник, повторитель..

// Ведущий приемопередатчик с Lora модулем e32-868t20d
// циклически посылает тестовую строку, ждет ответа
// подсчитывает принятые пакеты
// FreeGnuPnu Licensing from Domosed version 0.0.0.1

#include <SoftwareSerial.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED ширина
#define SCREEN_HEIGHT 32 // OLED высота
#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define pinM0  10   // на пин M0 Lora
#define pinM1  11   // на пин M1 Lora
#define pinAUX 12   // на пин AUX Lora
#define pinLed 13   // светодиод
#define pinBuzz 7   // пищалка

SoftwareSerial LoraUART(8, 9);  // RX, TX UART к Lora E32

char testStr[] = "Test Ok :)";

void setup() {                    // настройка модуля
  Serial.begin( 9600);
  if(!display.begin( SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32
    Serial.println( F("SSD1306 init failed"));
    for(;;); // Don't proceed, loop forever
  }
  display.setTextSize(2);             
  display.setTextColor(WHITE);
  pinMode( pinM0, OUTPUT);        // пин управления режимом работы модуля 
  pinMode( pinM1, OUTPUT);        // пин управления режимом работы модуля
  pinMode( pinAUX, INPUT);        // контрольный пин AUX c Lora
  LoraUART.begin( 9600);          // UART Lora 9600 bps
  
  digitalWrite( pinM0, HIGH);     // перевод в режим sleep для настройки
  digitalWrite( pinM1, HIGH);     // ..
  
  while ( !digitalRead( pinAUX)); // ожидание готовности Lora
  Serial.println( "Lora ready -> settings"); 
  
  // настройка E32
  LoraUART.write(byte (0xC0));    // HEAD   сохранить настройки при выключении ( 0xC0)
  LoraUART.write(byte (0x0));     // ADDH   верхний байт адреса модуля
  LoraUART.write(byte (0x0));     // ADDL   нижний байт адреса модуля
  LoraUART.write(byte (0x1A));    // SPEED  параметры и скорость UART и AIR
  LoraUART.write(byte (0x07));    // CHAN   рабочий канал ( частота = 862 + 0x07 = 869 МГц)
  // 10 mW, FEC on, Fixed mode on, 250ms wake up, push-pull IO
  LoraUART.write(byte (0b1000111));      // OPTION 
  
  while ( !digitalRead( pinAUX));        // ожидание готовности Lora 
  display.clearDisplay();
  display.setCursor(0,0);
  display.println( "SetOk");          
  display.display();
  delay( 2000);
}

void loop() {
  uint16_t nPacket = 0,                  // принято пакетов
           nLost = 0;                  // битых пакетов
  uint32_t curTime;
  byte i;
  bool fComplete;                        // пакет без ошибок
  while ( !digitalRead( pinAUX));        // ожидание готовности Lora
  LoraUART.write(byte (0xC1));           // запрос параметров
  LoraUART.write(byte (0xC1)); 
  LoraUART.write(byte (0xC1));  
  display.clearDisplay();
  display.setCursor(0,0);
  display.println( "Config");
  while ( !digitalRead( pinAUX));         // ожидание готовности Lora
  while ( LoraUART.available()){
    byte inByte = byte (LoraUART.read());
    display.print( inByte, HEX);          // вывод на экран конфигурации модуля
  }
  display.display();
  delay( 2000);
  display.clearDisplay();
  display.setCursor(0,0);
  display.println( "Run Leader");
  display.display();
  delay( 2000);  
  digitalWrite( pinM0, LOW);         // перевод Lora в режим normal
  digitalWrite( pinM1, LOW);
  display.clearDisplay();
  fComplete = true;
  
label1:                              // loop приёма передачи
  display.clearDisplay();
  display.setCursor(0,0);
  if ( fComplete)
    display.print( "Send Data");
  else {
    display.print( "Lost");    
    display.setCursor(80,0);
    display.print( nLost);    
    display.setCursor(0,16);
    display.print( "Replay");
    
  }
  display.display();
  while ( !digitalRead( pinAUX));    // ожидание готовности Lora   
  LoraUART.print("Test Ok :)");      // отправка тестовой строки 
  delay( 500);
  nPacket++;
  while ( !digitalRead( pinAUX));    // ожидание готовности Lora
  curTime = millis();
  while ( !LoraUART.available()) {    // нет данных приема
    if ( (millis() - curTime) > 5000) { // нет ответа 3 сек
      tone( pinBuzz, 100, 500);       // пищалка - потеря
      fComplete = false;
      nLost++;
      goto label1;                      
    }
  }
  digitalWrite( pinLed, HIGH);     // светодиод   
  display.clearDisplay();
  display.setCursor(0,0);
  fComplete = true;  
  tone( pinBuzz, 500, 300);        // пищалка - ок
  while ( LoraUART.available()){
    char inByte = char (LoraUART.read());   // чтение данных c Lora
    display.print( inByte);                 // вывод на экран принятого
  }
  display.setCursor(0,16);        // вывод числа пакетов и потерянных пакетов
  display.print( nPacket);
  display.setCursor(64,16);
  display.print( nLost);
  display.display();  
  digitalWrite( pinLed, LOW); 
  delay( 4500);
  goto label1;
}
// Ведомый приемопередатчик с Lora модулем e32-868t20d
// принимает пакет и отправляет обратно
// FreeGnuPnu Licensing from Domosed version 0.0.0.1

#include <SoftwareSerial.h>

#define pinM0  10   // на пин M0 Lora
#define pinM1  11   // на пин M1 Lora
#define pinAUX 12   // на пин AUX Lora
#define pinLed 13   // светодиод

SoftwareSerial LoraUART(8, 9);  // RX, TX UART к Lora E32

char testStr[] = "Test Ok :)";

void setup() {                    // настройка модуля
  Serial.begin( 9600);
  pinMode( pinM0, OUTPUT);        // пин управления режимом работы модуля 
  pinMode( pinM1, OUTPUT);        // пин управления режимом работы модуля
  pinMode( pinAUX, INPUT);        // контрольный пин AUX c Lora
  LoraUART.begin( 9600);          // UART Lora 9600 bps
  
  digitalWrite( pinM0, HIGH);     // перевод в режим sleep для настройки
  digitalWrite( pinM1, HIGH);     // ..
  
  while ( !digitalRead( pinAUX)); // ожидание готовности Lora
  Serial.println( "Lora ready -> settings"); 
  
  // настройка E32
  LoraUART.write(byte (0xC0));    // HEAD   сохранить настройки при выключении ( 0xC0)
  LoraUART.write(byte (0x0));     // ADDH   верхний байт адреса модуля
  LoraUART.write(byte (0x0));     // ADDL   нижний байт адреса модуля
  LoraUART.write(byte (0x1A));    // SPEED  параметры и скорость UART и AIR
  LoraUART.write(byte (0x07));    // CHAN   рабочий канал ( частота = 862 + 0x07 = 869 МГц)
  // 100 mW, FEC on, Fixed mode on, 250ms wake up, push-pull IO
  LoraUART.write(byte (0b1000100));      // OPTION 
  
  while ( !digitalRead( pinAUX));        // ожидание готовности Lora 
  Serial.println( "SetOk");          
  delay( 300);
}

void loop() {
  bool fRec=false;                       // пришел пакет
  uint16_t nPacket = 0;                  // принято пакетов
  byte i=0;                              // счетчик принятых байт
  while ( !digitalRead( pinAUX));        // ожидание готовности Lora
  LoraUART.write(byte (0xC1));           // запрос параметров
  LoraUART.write(byte (0xC1)); 
  LoraUART.write(byte (0xC1));  
  Serial.print( "Config ");
  while ( !digitalRead( pinAUX));         // ожидание готовности Lora
  while ( LoraUART.available()){
    int inByte = int (LoraUART.read());
    Serial.print( inByte, HEX);          // вывод  конфигурации модуля
  }
  delay(300);
  Serial.println( " ");
  Serial.println( "Run Slave");
  digitalWrite( pinM0, LOW);         // перевод Lora в режим normal
  digitalWrite( pinM1, LOW);
  delay(300);
  
label1:                              // loop приёма передачи
  fRec = false;
  i = 0;                             // сброс счетчика байт приема  
  while ( !digitalRead( pinAUX));    // ожидание готовности Lora
  while ( LoraUART.available()){
    char inByte = char (LoraUART.read());   // чтение данных c Lora
    Serial.print( inByte);          // вывод принятого
    testStr[i] = inByte;            // заполнение буфера приема
    i++;
    fRec=true;
    digitalWrite( pinLed, HIGH);     // светодиод 
  }

  while ( !digitalRead( pinAUX));    // ожидание готовности Lora
  if ( fRec) {                       // если принято, отправка обратно
    Serial.println( " -> send");
    for ( byte k=0; k<i; k++) {
      LoraUART.write( testStr[k]);
    }
  }
  digitalWrite( pinLed, LOW); 
  goto label1;
}

 

 

При включенном FEC ,принятые битые пакеты данных отбрасываются. Всё тривиально, но авось кому пригодиться :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

иногда лучше жувать, чем выкладывать такой код... 

Domosed
Offline
Зарегистрирован: 15.07.2019

Апологетам программистской изящности Не заткнуть Истинный источник кондового, можно сказать, народно-рабочекрестьянского кода. Хе-хе.. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Самое главное - это решение ГКРЧ! Зачёт!

Домосед
Домосед аватар
Offline
Зарегистрирован: 18.09.2019

Код, стыдливо припрятал в спойлеры, пардон с первого раза не получилось :-}

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

Самое главное - это решение ГКРЧ! Зачёт!

это что?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ua6em пишет:

Самое главное - это решение ГКРЧ! Зачёт!

это что?

а это разрешение на использование оного девайса

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

а это разрешение на использование оного девайса

это что, заслуга нашего ТС?

Если чо - я поставил плюсик Деду за его оценку кода... имел удовольствие насладится еще до того, пока ТС его не убрал.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ua6em пишет:

а это разрешение на использование оного девайса

это что, заслуга нашего ТС?

Если чо - я поставил плюсик Деду за его оценку кода... имел удовольствие насладится еще до того, пока ТС его не убрал.

код в стиле аля ардуино, это жеж не музыка, тут вникать долго надо, чтобы понять, что что-то не так, это там сразу слышно как ноты и длительности слажал )))
Кстати, вчера один мальчик 17 лет на ТВ показал возможности радиолюбительского уха, выделение разговора одного из 20-ти одновременно говорящих (работа в пайлапах она такая, да еще когда английский не твой родной) )))

Домосед
Домосед аватар
Offline
Зарегистрирован: 18.09.2019

b707 пишет:
имел удовольствие насладится еще до того, пока ТС его не убрал.

Фото картонной коробки тоже убрать? C=:-)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Домосед пишет:

b707 пишет:
имел удовольствие насладится еще до того, пока ТС его не убрал.

Фото картонной коробки тоже убрать? C=:-)

намедни солнце вошло в зодиакальный знак Скорпиона, со всеми вытекающими )))

Домосед
Домосед аватар
Offline
Зарегистрирован: 18.09.2019

ua6em пишет:
намедни солнце вошло в зодиакальный знак Скорпиона, со всеми вытекающими )))
Эвона как.. Спасибо добрый человек - объяснил ;)

Перед сборкой готового устройства замерил токи потребления модуля E32-868T20D в разных режимах. Измерял падение напряжения на сопротивлении 1Ом, включенном в разрыв положительного провода цепи питания модуля. Приятного просмотра.. Есть неувязка с даташитом..

  
Хотя возможен температурный дрейф нуля осциллографа.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Домосед пишет:

ua6em пишет:
намедни солнце вошло в зодиакальный знак Скорпиона, со всеми вытекающими )))
Эвона как.. Спасибо добрый человек - объяснил ;)

так это же классика:
И теперь ближайшие 30 дней все жители Вселенной будут брать с них пример!

Владеть, так всем миром!
Воевать, так до полной победы!
Любить, так до потери пульса!
Ревновать, ненавидеть... буквально каждой клеточкой!
Жертвовать - всем!
Терпеть - до последнего вздоха!
Не доверять, так никому!
Скорпион - это максималист!

Домосед
Домосед аватар
Offline
Зарегистрирован: 18.09.2019

То хорошо, что хорошо заканчивается ;)

Lora TX-RX

Plasteroid
Plasteroid аватар
Offline
Зарегистрирован: 15.07.2020

В Е32  стоят SX1276.

С модулями на SX1276 типа RA-01,RA-02  проще работать напрямую через SPI.

Atmega328  на платах приемника и передатчика (условно приемник- передатчик). Начинал с  НС-12-не то.

Заказал модули  Е32. Попробовал -чет не хватает. И дороговасто.

Заказал RA-01, RA-02 , попробовал - то что нужно.

В условиях плотной городской застройки и наличия всяких помех уверенный прием до  300 метров за бетонными зданиями , в подвалах и т.д.

Пульт для испытаний. Испытывал с такими антенками как на пульте.

 

iliya22
Offline
Зарегистрирован: 21.01.2021

Привет всем, народ прошу помощи разобраться с кодировкой (или настройкой) модуля E32433T30D суть проблемы в следующем -отправляю с ком порта компьютера текстовое сообщение на модуль E32433T30D на втором модуле Tx-Rx замкнуты в ответ приходит абракадабра, со скоростями все в порядке, что и где искать не знаю. такое чувство что сами модули что то кодируют. мож кто нибудь сталкивался с аналогичной проблемой?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Начните с того, что определите, что именно отправляется и что принимается. "Абракадабра" - это, мягко говоря, не очень конкретно.

iliya22
Offline
Зарегистрирован: 21.01.2021

Спасибо за отклик, проблема в следующем:

отправляю в в ком порт компьютера (usb-uart CH340) сообщение "test" на модуль E32 433T30D,

второй модуль Rx-Tx замкнут в ответ прилетает вместо "test" "WV‘."

iliya22
Offline
Зарегистрирован: 21.01.2021

iliya22
Offline
Зарегистрирован: 21.01.2021

iliya22
Offline
Зарегистрирован: 21.01.2021

iliya22
Offline
Зарегистрирован: 21.01.2021

iliya22
Offline
Зарегистрирован: 21.01.2021

случайно заметил закономерность странную

если перед сообщение " 0test" (пробел0test) то в ответ приходит что то более вменяемое ".test."

iliya22
Offline
Зарегистрирован: 21.01.2021

Кто нибудь сталкивался с такой проблемой?

Домосед
Домосед аватар
Offline
Зарегистрирован: 18.09.2019

iliya22 пишет:
Спасибо за отклик, проблема в следующем:отправляю в в ком порт компьютера (usb-uart CH340) сообщение "test" на модуль E32 433T30D,второй модуль Rx-Tx замкнут в ответ прилетает вместо "test" "WV‘."

Lora модули не имеют возможности работы в дуплексном режиме, только полудуплекс или симплекс. Даже если на модуле подобном E32-433T30D имеется MCU.
Замыкание TX-RX в данном случае не означает немедленную передачу данных по приему и приводит к сбою логики работы MCU.
Так что все ручками ( дуинками) - сначала принимаем, потом отправляем. 

 

 

iliya22
Offline
Зарегистрирован: 21.01.2021

читал на других форумах и смотрел видно там все так и работает

iliya22
Offline
Зарегистрирован: 21.01.2021

даже если принимать и передавать в ардуино результат тот же все голову уже разбил себе

iliya22
Offline
Зарегистрирован: 21.01.2021

вот если сообщение начинается с пробела затем ноль то все идет как нужно

что за херь не пойму ни как

Домосед
Домосед аватар
Offline
Зарегистрирован: 18.09.2019

iliya22 пишет:
что за херь не пойму ни как

Значит где то, кто то накосячил.
Для начала, модули перед обменом должны иметь идъентичные настройки ?
Далее алгоритм работы определяемый в скетче ?
1 - Аппаратные проблемы - исправность, подключение, питание и тп?

iliya22
Offline
Зарегистрирован: 21.01.2021

да я сбрасываю модули к заводским настройкам на скрин шоте выше видно видно

iliya22
Offline
Зарегистрирован: 21.01.2021

правда использую ардуино в режиме TTL переходника но видно что настройки меняются и сохраняются

 

iliya22
Offline
Зарегистрирован: 21.01.2021

затем один модуль подключаю к переходнику USB-UART (CН340) там настройки порта те же что и модулей

 

iliya22
Offline
Зарегистрирован: 21.01.2021

второй модуль 

1 вариант Rx-Tx замкнут

2 подключен к ардуине Serial

3 подключен к ардуине softserial

4 подключен к USR WIFI232 602 через виртуальный порт тоже на ком

И везде один и то же результат

 

Nikki
Nikki аватар
Offline
Зарегистрирован: 26.10.2014

Есть два идентичных модуля из топика на 433, купленные, правда, в разных магазинах. Версии и настройки совпадают, поле ключа в настройках отсутствует. Подключены к ESP8266 и ESP32, используется Arduino IDE и библиотека https://github.com/xreef/LoRa_E32_Series_Library.

Передавать без искажений не хотят, начиная с базовых примеров. Искажения присутствуют как с выключенным, так и с включенным FEC. При передаче одинаковых символов искажения выглядят как сдвиг на константу, общее количество выведенных символов оказывается в полтора-два раза меньше, чем переданных. Передаются исключительно алфавитные символы и цифры.

В каком направлении искать проблему, чтобы не сразу к логическому анализатору и SDR? Существуют ли какие-либо средства для быстрого тестирования подобных модулей (заведомо исправные конвертеры есть, через приложение от производителя модули реконфигурируются тоже внешне корректно)? Если у кого есть опыт работы с SPI-версиями модулей, хотелось бы узнать, насколько сильно влияет навесной монтаж пигтейла на дальность работы модуля и какие библиотеки лучше использовать?

iliya22
Offline
Зарегистрирован: 21.01.2021

Доброго времени суток. Интересует решилась ли Ваша проблема с передаче данных без искажений через  E332 ?

b707
Offline
Зарегистрирован: 26.05.2017

iliya22 пишет:

Доброго времени суток. Интересует решилась ли Ваша проблема с передаче данных без искажений через  E332 ?

Почитал ветку - вы задали в теме с десяток вопросов, при этом ни разу не показали и строчки кода. Вы так уверены в том. что все правильно отправляете и принимаете и косячат именно модули?

В любом случае, без двух скетчей -  отправки и приема - тут говорить вообще не о чем, по-моему