Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

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

 
Опции темы
Непрочитано 12.07.2019, 21:01  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,612
Сказал спасибо: 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
Адрес: Москва СЗАО
Сообщений: 8,083
Сказал спасибо: 8,393
Сказали Спасибо 2,583 раз(а) в 1,981 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

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

mike-y-k, да едрен батон)
А как нибудь так можно?) Безо всего этого?)
whoim вне форума  
Непрочитано 13.07.2019, 00:11  
parovoZZ
Гражданин KAZUS.RU
 
Регистрация: 15.11.2010
Сообщений: 644
Сказал спасибо: 57
Сказали Спасибо 40 раз(а) в 31 сообщении(ях)
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.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,612
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию

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

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

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

/*
  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, http://www.semtech.com/images/datasheet/sx1276.pdf
  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  
индюк
Почётный гражданин KAZUS.RU
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 6,969
Сказал спасибо: 94
Сказали Спасибо 2,039 раз(а) в 1,250 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

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


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

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

Ну как то совсем грустно. Я ардуинки заказал по 139р, ra-01 лежали уже давно, тоже недорого брал поковырять.
Да! Поковырять же. В этом суть)
whoim вне форума  
Непрочитано 13.07.2019, 01:03  
индюк
Почётный гражданин KAZUS.RU
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 6,969
Сказал спасибо: 94
Сказали Спасибо 2,039 раз(а) в 1,250 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

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

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

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

индюк, ну так тут то же самое, с либой. Но - теоретически)
Во всех этих модулях примерно так же все организовано - МК читает юсарт и шлет через спай на модуль.
whoim вне форума  
Непрочитано 13.07.2019, 01:15  
индюк
Почётный гражданин KAZUS.RU
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 6,969
Сказал спасибо: 94
Сказали Спасибо 2,039 раз(а) в 1,250 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Алгоритм для прозрачного моста serial на sx1278

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

Закладки
Опции темы

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

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

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

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


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot