OTA (Over-the-Air) programovanie pre ESP8266
1. Čo je OTA?
OTA (Over-the-Air) je funkcia, ktorá ti umožňuje nahrávať nový program na dosku ESP8266 bezdrôtovo, cez Wi-Fi sieť. Je to ideálne pre zariadenia, ku ktorým máš sťažený fyzický prístup.
2. Kód pre aktiváciu OTA
Aby OTA fungovalo, musí mať program, ktorý je práve nahraný na doske, implementovanú OTA funkcionalitu. Aktivuje sa pomocou dvoch kľúčových riadkov:
ArduinoOTA.begin();: Spustí OTA službu a pripraví dosku na prijímanie aktualizácií.ArduinoOTA.handle();: Neustále kontroluje, či neprišla požiadavka na aktualizáciu. Musí byť volaná v slučkeloop().
Základný príklad OTA kódu:
Tento kód stačí nahrať na dosku raz (cez USB), aby si OTA aktivoval.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <ESP8266WiFi.h> #include <ArduinoOTA.h> const char* ssid = "vas_wifi_ssid"; const char* password = "vas_wifi_heslo"; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } ArduinoOTA.begin(); } void loop() { ArduinoOTA.handle(); } |
3. Ako nahrávať program cez OTA
- Uisti sa, že tvoj počítač a ESP8266 sú pripojené k rovnakej Wi-Fi sieti.
- V Arduino IDE prejdeš do
Nástroje->Port. Tam si namiesto COM portu vyberieš IP adresu tvojej dosky (napr.192.168.1.76). - Upravíš kód podľa potreby a klikneš na
Nahrať. Arduino IDE automaticky použije Wi-Fi namiesto USB.
Pozor: USB kábel môže zostať počas nahrávania pripojený.
4. Kľúčové pravidlo
Každý ďalší program, ktorý nahrávaš cez OTA, musí obsahovať OTA kód!
Ak by si nahral kód, v ktorom chýba ArduinoOTA.handle(), stratil by si možnosť ďalšej bezdrôtovej aktualizácie. V tom prípade by si musel dosku opäť pripojiť cez USB.
Príklad kombinácie OTA s inou funkciou (Blikanie LED):
Tento kód bliká LED diódou a zároveň umožňuje ďalšie OTA aktualizácie.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#include <ESP8266WiFi.h> #include <ArduinoOTA.h> const char* ssid = "vas_wifi_ssid"; const char* password = "vas_wifi_heslo"; void setup() { Serial.begin(115200); // Inicializácia WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } // Inicializácia OTA služby ArduinoOTA.begin(); // Inicializácia LED pre blikanie pinMode(LED_BUILTIN, OUTPUT); } void loop() { // Obsluha OTA je vždy na prvom mieste ArduinoOTA.handle(); // Hlavná funkcia programu digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } |
5. Riešenie bežnej chyby
Najčastejšia chyba je [ERROR]: No response from device. Jej príčinou je takmer vždy firewall na tvojom počítači, ktorý blokuje komunikáciu na porte 8266. Riešením je pridať výnimku pre Arduino IDE v nastaveniach firewallu.


