Прошивка APM через ESP8266

sugoma_11
Offline
Зарегистрирован: 14.05.2022

Нужно прошить APM2.8, используя ESP8266, при этом не используя прошивку от jee-labs, много весит, и нет нужды постоянно использовать вай-фай.

АРМ и есп соединены по ЮАРТ, Mission Planer передает данные на есп через точку доступа мобильного телефона. Скетч ниже работает, но очень медленно, и при передаче файлов на четверти процесса Mission Planer уходит в таймаут. Размер массива в 108 взят из библиотеки mavlink, MAX_PACKET_LEN там определён как 108. С другими размерами массива совсем не работает.

Считаю, что проблема в программной реализации передачи данных, т.е в нерациональном укладывании в буфер. Вероятно, дело и в посредничестве телефона как точки доступа (в jee-labs передача идёт напрямую).

Замечу факт того, что с одним и тем же скетчом данные могут как и передаться на четверть, так и Mission Planer с APM даже не обменяются heartbeat'ами. Причину этого вижу в том, что Mission Planer от раза к разу по неизвестным мне причинам по-разному отправляет пакеты, по необходимости могу прикрепить лог вывода.

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <WiFiServer.h>

WiFiServer wifiServer(23);
void setup() {
  Serial.begin(57600);
  //Serial.setRxBufferSize(108);
  WiFi.begin("Xperia XZ1 Compact_c199", "amogus_sus");
  delay(5000);
  wifiServer.begin();
  Serial.swap();
  Serial.setTimeout(50);
}

char buff_mp[108];
char buff_apm[108];

void loop() {
  WiFiClient client = wifiServer.available();
  if(client){
    while(client){
    while(client.available() > 0){
      client.readBytes(buff_mp, 108);
      Serial.write(buff_mp, 108);
      Serial.flush();
      Serial.readBytes(buff_apm, 108);
      client.write(buff_apm, 108);
      Serial.flush();
    }
    }
  }
}

 

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

насколько я помню даже через стандартный канал телеметрии загрузить прошивку бывают проблемы, мала скорость

sugoma_11
Offline
Зарегистрирован: 14.05.2022

С софтом jeelabs все загружается молниеносно без проблем. В заголовке, получается, ошибка, потому что именно в стандартный порт телеметрии APM выводы esp RX-TX и идут.