Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Автоматика и аппаратура связи Дистанционное и непосредственное управление исполнительными механизмами, сотовая, а также радиосвязь.

 
Опции темы

Алгоритм для прозрачного моста serial на sx1278

Непрочитано 12.07.2019, 21:01  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Алгоритм для прозрачного моста serial на sx1278

Привет!
Дано: ардуинки, ra-01 пара.
Надо: прозрачный мост. Что в одну ардуинку по serial упало, то выпало из другой, и наоборот.
Как правильнее организовать, чтобы минимизировать задержки - неизвестно, как будут сыпаться данные, может с обоих сторон шарагить будет..
Пока смотрю на этот пример: https://github.com/sandeepmistry/ard...pleGateway.ino

Как я понял, есть шлюз и есть нода. Есть один передает - другой слушает, и наоборот. Верно ли я понимаю, что срастив энто дело с механизмом while serial.avaliable, и ограничив буфером определеного размера (начинать передачу даже если serial ещё avaliable) и аналогично с другой стороны, можно рассчитывать на успех?

В принципе, есть надежда что та гадость, что должна гулять по этому делу, вменяемая. То есть если данные передала - ждёт ответ или делает iddle.
Что там конкретно внутри - пока понятия не имею.. Телеметрия для inav, которого пока под рукой тоже нету)

Но hc-12, будучи зарряженными под задачу, справляются. Но хочется дальше и дешевле)
Реклама:
whoim вне форума  
Непрочитано 12.07.2019, 21:42  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,293
Сказал спасибо: 11,863
Сказали Спасибо 4,162 раз(а) в 3,180 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

whoim, для начала понять насколько нужно квитирование.
Без него получится вариация UDP
Дальше уже разобраться с длиной сообщений, возможными скоростями передачи на нужное расстояние, накладными физического уровня и посчитать максимальные скорости передачи и приема.
Потом поделить полученное на ~1.5 (ошибки, запас) и выяснить достаточность полученной скорости для решения задачи.
После этих вычислений и при положительном ответе можно приступать к экспериментам.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 12.07.2019, 21:46  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

mike-y-k, да едрен батон)
А как нибудь так можно?) Безо всего этого?)
whoim вне форума  
Непрочитано 13.07.2019, 00:11  
parovoZZ
Почётный гражданин KAZUS.RUN
 
Регистрация: 15.11.2010
Сообщений: 2,376
Сказал спасибо: 337
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
parovoZZ на пути к лучшему
Подмигивание

Сообщение от whoim Посмотреть сообщение
mike-y-k, да едрен батон)
А как нибудь так можно?) Безо всего этого?)
в этих ваших ардуинах полно примеров с библиотеками. Неужели там нет какого-то примера типа пинг-понга?

Сообщение от mike-y-k Посмотреть сообщение
Потом поделить полученное на ~1.5 (ошибки, запас)
в 1278 это все присутствует аппаратно и даже умеет исправлять их.

Последний раз редактировалось mike-y-k; 13.07.2019 в 01:40.
parovoZZ вне форума  
Непрочитано 13.07.2019, 00:13  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию

parovoZZ, этот пример, только более навороченный, я и упомянул в посте. Но меня не это волнует, а в целом алгоритм правильный.. Организация буффера и т.п. Ну и пофлудить)

В общем, буду ждать пока приедут платки со 168мы атмегами. Они миниатюрные (ардуино микро), и 3.3в с вроде нормальными LDO на 0.5А минимум, чтоб сразу модуль приклеить к ней и запитать от нее же, и с уровнями все нормально.

Тогда и проверю. А так вроде в мониторе порта гоняет )
Принцип: есть буфер для приема по uart. Если он заполняется либо прием в него останавливается на установленное время, идет его отправка в модуль.
Все остальное время - на приеме и выплевывании в порт что пришло.
Компилится)
Код:
#include ‹SPI.h›
#include ‹LoRa.h›

/*
  Gateway - Sends messages with enableInvertIQ()
          - Receives messages with disableInvertIQ()
  Node    - Sends messages with disableInvertIQ()
          - Receives messages with enableInvertIQ()
  With this arrangement a Gateway never receive messages from another Gateway
  and a Node never receive message from another Node.
  Only Gateway to Node and vice versa.
  InvertIQ function basically invert the LoRa I and Q signals.
  See the Semtech datasheet, https://kazus.run/datasheets/pdf-dat...CH/SX1276.html
  for more on InvertIQ register 0x33.
*/

#define LORA_FREQ 433E6             // LoRa LORA_FREQ
#define LORA_CS_PIN 10              // LoRa radio chip select
#define LORA_RESET_PIN 9            // LoRa radio reset
#define LORA_IRQ_PIN 2              // change for your board; must be a hardware interrupt pin
#define TX_BUFF_SIZE 100
#define TX_BUFF_TIMEOUT 20

String tx_buffer_str = "";
boolean SendPacketFlag = false;
boolean LoRa_started = false;
uint8_t tx_buff_counter = 0;
unsigned long last_serial_rx_millis;

void setup() {
  
  // initialize serial:
  Serial.begin(9600);
  while (!Serial);
  
  //reserve buffer
  tx_buffer_str.reserve(TX_BUFF_SIZE);
  
  //LoRa
  LoRa.setPins(LORA_CS_PIN, LORA_RESET_PIN, LORA_IRQ_PIN);
  LoRa_started = LoRa.begin(LORA_FREQ);
  if (!LoRa_started) {
    Serial.println("LoRa init failed. Check your connections.");
  } else {
  LoRa.enableCrc();
  LoRa.onReceive(onReceive);
  LoRa_rxMode();
  }
  Serial.println("Start now");
}

void loop() {
  if (SendPacketFlag) {
    if(LoRa_started) {
        LoRa_sendmessage(tx_buffer_str);
    }
    else {
        Serial.print(tx_buffer_str); //debug
    }
    
    // clear the string:
    tx_buffer_str = "";
    tx_buff_counter = 0;
    SendPacketFlag = false;
  }
  if( ((millis() - last_serial_rx_millis) › TX_BUFF_TIMEOUT) && (tx_buff_counter != 0) ) {
    SendPacketFlag = true;
    last_serial_rx_millis = millis();
  }
}

void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    tx_buffer_str += inChar;
    tx_buff_counter++;
    if (tx_buff_counter == TX_BUFF_SIZE) {
      SendPacketFlag = true;
    }
    else {
          last_serial_rx_millis = millis();
    }
  }
}

void LoRa_rxMode(){
  LoRa.disableInvertIQ();               // normal mode
  LoRa.receive();                       // set receive mode
}

void LoRa_txMode(){
  LoRa.idle();                          // set standby mode
  LoRa.enableInvertIQ();                // active invert I and Q signals
}

void LoRa_sendmessage(String msg) {
  LoRa_txMode();                        // set tx mode
  LoRa.beginPacket();                   // start packet
  LoRa.print(msg);                      // add payload
  LoRa.endPacket();                     // finish packet and send it
  LoRa_rxMode();                        // set rx mode
}

void onReceive(int packetSize) {
  String rx_buffer = "";
  while (LoRa.available()) {
    rx_buffer += (char)LoRa.read();
  }
  Serial.print(rx_buffer);
}
если взлетит - можно какой нибудь семисегментник даже прилепить на базу, RSSI отображать.

Последний раз редактировалось mike-y-k; 13.07.2019 в 01:35.
whoim вне форума  
Непрочитано 13.07.2019, 00:57  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 11,134
Сказал спасибо: 202
Сказали Спасибо 3,285 раз(а) в 2,151 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

https://ru.aliexpress.com/item/17878...AbTest=ae803_4


ищи на али по словам si4432 uart
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 13.07.2019, 00:59  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

индюк, 1 052,29 руб x2, это две тыщи. И за них - 1км.

Ну как то совсем грустно. Я ардуинки заказал по 139р, ra-01 лежали уже давно, тоже недорого брал поковырять.
Да! Поковырять же. В этом суть)
whoim вне форума  
Непрочитано 13.07.2019, 01:03  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 11,134
Сказал спасибо: 202
Сказали Спасибо 3,285 раз(а) в 2,151 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

ну фишка в том что париться с проверками не надо.
послал свои 8 бит и получил. все.

за это и есть 1 тыща рэ.

я то голые си4432 использую. есть о чем подумать там
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 13.07.2019, 01:05  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

индюк, ну так тут то же самое, с либой. Но - теоретически)
Во всех этих модулях примерно так же все организовано - МК читает юсарт и шлет через спай на модуль.
whoim вне форума  
Непрочитано 13.07.2019, 01:15  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 11,134
Сказал спасибо: 202
Сказали Спасибо 3,285 раз(а) в 2,151 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

Сообщение от whoim Посмотреть сообщение
Во всех этих модулях примерно так же все организовано - МК читает юсарт и шлет через спай на модуль.
только попутно нехило обррабатывает и все гавно эфира до тебя не долетает.
а ты сам бушь кодить месяцы пока связь не наладишь.
\а сколько месяц у тебя стоит??
__________________
кагмаподэ магмаподэ
индюк вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27


Часовой пояс GMT +4, время: 02:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.