Прошивка 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 и идут.