Прошивка APM через ESP8266
- Войдите на сайт для отправки комментариев
Нужно прошить 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(); } } } }
насколько я помню даже через стандартный канал телеметрии загрузить прошивку бывают проблемы, мала скорость
С софтом jeelabs все загружается молниеносно без проблем. В заголовке, получается, ошибка, потому что именно в стандартный порт телеметрии APM выводы esp RX-TX и идут.