Spisu treści:
- Kieszonkowe dzieci
- Krok 1: OTA
- Krok 2: Układ pamięci Flash Ameba
- Krok 3: Przepływ rozruchu
- Krok 4: Przykład
Wideo: Programowanie Arduino Over the Air (OTA) - Ameba Arduino: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Na rynku dostępnych jest wiele mikrokontrolerów Wi-Fi, wielu producentów lubi programować swój mikrokontroler Wi-Fi za pomocą Arduino IDE. Jednak często pomijana jest jedna z najfajniejszych funkcji mikrokontrolera Wi-Fi, czyli programowanie i przesyłanie kodu zdalnie i bezprzewodowo za pomocą funkcji OTA (Over-The-Air).
W tej instrukcji pokażę, jak skonfigurować OTA na mikrokontrolerze Wi-Fi za pomocą wszechobecnego Arduino IDE na mikrokontrolerze Wi-Fi Ameba Arduino!
Kieszonkowe dzieci
Ameba Arduino x 1
Krok 1: OTA
OTA (Over-The-Air) odnosi się do mechanizmu aktualizacji online przez Internet.
Arduino IDE oferuje funkcję OTA, która jest zgodna z przepływem pracy na powyższym rysunku.
(i) Arduino IDE wyszukuje przez mDNS urządzenia z usługą Arduino IDEOTA w sieci lokalnej.
(ii) Ponieważ usługa mDNS działa w Amebie, Ameba odpowiada na wyszukiwanie mDNS i otwiera określony port TCP do połączenia.
(iii) Użytkownik tworzy program w środowisku Arduino IDE. Po zakończeniu wybierz port sieciowy.
(iv) Kliknij Prześlij. Następnie Arduino IDE wysyła obraz OTA do Ameby przez TCP, Ameba zapisuje obraz pod określonym adresem i ustawia opcję rozruchu na rozruch z tego obrazu następnym razem.
Przepływ pracy składa się z trzech części: procesu obrazu mDNS, TCP i OTA. Szczegóły dotyczące mDNS są opisane w samouczku mDNS. Programowanie gniazd TCP jest używane do przesyłania obrazu i jest już dostępne w OTA API.
W następnej sekcji omówimy sposób przetwarzania obrazu OTA i przedstawimy podstawową wiedzę na temat układu pamięci flash Ameba i przepływu rozruchu.
Krok 2: Układ pamięci Flash Ameba
Rozmiar pamięci flash Ameba RTL8195A to 2 MB, waha się od 0x00000000 do 0x00200000. Jednak rozmiar pamięci flash Ameba RTL8710 wynosi 1 MB. Aby dopasować użycie różnych płyt, zakładamy, że układ pamięci flash wynosi 1 MB.
Jak pokazano na powyższym rysunku, program Ameba zajmuje trzy części pamięci flash:
- Obraz rozruchowy:
To znaczy bootloader. Podczas uruchamiania Ameba umieszcza obraz rozruchowy w pamięci i wykonuje inicjalizację. Ponadto określa, gdzie należy postępować po bootloaderze. Bootloader sprawdza adres OTA i pin odzyskiwania w obszarze danych systemowych i określa, który obraz zostanie następnie wykonany. Na końcu bootloadera umieszcza obraz w pamięci i przystępuje do jego wykonania.
- Domyślny obraz 2:
W tej części umieszczony jest kod dewelopera, adres zaczyna się od 0x0000B000. Pierwsze 16 bajtów to nagłówek obrazu, 0x0000B008~0x0000B00F zawiera sygnaturę, która służy do weryfikacji poprawności obrazu. Pole podpisu ma dwie prawidłowe wartości, aby odróżnić nowy obraz od starego.
-Obraz OTA:
Dane w tej części to również kod programisty. Domyślnie ta część pamięci zaczyna się od 0x00080000 (można zmienić). Główne różnice między obrazem OTA a obrazem domyślnym 2 to adres pamięci flash i wartość Signature.
Oprócz kodu istnieje kilka bloków danych:
-Dane systemowe:
Blok danych systemowych zaczyna się od 0x00009000. Istnieją dwa dane związane z OTA:
1. Adres OTA:4 bajty danych zaczynające się od 0x00009000. Wskazuje adres obrazu OTA. Jeśli wartość adresu OTA jest nieprawidłowa (tj. 0xFFFFFFFF), obraz OTA w pamięci flash nie może być poprawnie załadowany.
2. Pin przywracania: 4 bajty danych zaczynające się od 0x00009008. Pin przywracania służy do określenia, który obraz (domyślny obraz 2 lub obraz OTA) należy wykonać, gdy oba obrazy są prawidłowe. Jeśli wartość pin odzyskiwania jest nieprawidłowa (tj. 0xFFFFFFFF), nowy obraz zostanie wykonany domyślnie.
Dane systemowe zostaną usunięte, gdy wgramy program do Ameby przez DAP. Oznacza to, że adres OTA zostanie usunięty, a Ameba stwierdzi, że nie ma obrazu OTA.
- Dane kalibracyjne: W tym bloku umieszczane są dane kalibracji urządzeń peryferyjnych. Zwykle te dane nie powinny być usuwane.
Krok 3: Przepływ rozruchu
Z powyższego obrazka, Omawiamy następujące scenariusze: (i) OTA nie jest używany, użyj DAP do wgrania programu:
W takiej sytuacji bootloader sprawdza sygnaturę domyślnego obrazu 2 oraz adres OTA. Ponieważ adres OTA zostanie usunięty, domyślny obraz 2 zostanie wybrany do wykonania.
(ii) Obraz OTA jest przesyłany do Ameba, adres OTA jest ustawiony poprawnie, nie ustawiono kodu odzyskiwania:
Ameba otrzymała zaktualizowany obraz za pośrednictwem OTA, sygnatura domyślnego obrazu 2 zostanie ustawiona na starą sygnaturę.
Bootloader sprawdza sygnaturę domyślnego obrazu 2 oraz adres OTA. Odkryje, że adres OTA zawiera prawidłowy obraz OTA. Ponieważ kod odzyskiwania nie jest ustawiony, wybiera nowy obraz (tj. Obraz OTA) do wykonania.
(iii) Obraz OTA jest przesyłany do Ameba, adres OTA jest ustawiony poprawnie, ustawiony jest pin odzyskiwania:
Ameba otrzymała zaktualizowany obraz za pośrednictwem OTA, sygnatura domyślnego obrazu 2 zostanie ustawiona na starą sygnaturę.
Bootloader sprawdza sygnaturę domyślnego obrazu 2 oraz adres OTA. Odkryje, że adres OTA zawiera prawidłowy obraz OTA. Następnie sprawdź wartość pinezki przywracania. Jeśli pin odzyskiwania jest podłączony do LOW, nowy obraz (tj. Obraz OTA) zostanie wykonany. Jeśli pin odzyskiwania jest podłączony do HIGH, zostanie wykonany stary obraz (tj. domyślny obraz 2).
Krok 4: Przykład
Aby korzystać z funkcji OTA, zaktualizuj oprogramowanie DAP do wersji > 0.7 (wersja 0.7 nie jest dołączona). Domyślnym fabrycznym oprogramowaniem sprzętowym DAP jest wersja 0.7. Postępuj zgodnie z instrukcjami, aby zaktualizować oprogramowanie DAP:
Otwórz przykład: "Plik" -> "Przykłady" -> "AmebaOTA" -> "ota_basic"
Wpisz identyfikator i hasło w przykładowym kodzie połączenia sieciowego.
Istnieje kilka parametrów związanych z OTA:
§ MY_VERSION_NUMBER:W pierwszej wersji musimy ustawić adres OTA i PIN odzyskiwania. Ponieważ tym razem wgrywamy przez USB jest to pierwsza wersja, nie musimy zmieniać tej wartości.
§ OTA_PORT:Arduino IDE znajdzie Ameba przez mDNS. Ameba poinformuje Arduino IDE, że otwiera port TCP 5000, aby czekać na obraz OTA.
§ RECOVERY_PIN: Skonfiguruj kod PIN używany do odzyskiwania. Używamy tutaj pinu 18.
Następnie używamy programu do wgrywania USB do Ameby. Kliknij Narzędzia -> Porty, sprawdź port szeregowy, którego chcesz użyć:
Należy pamiętać, że Arduino IDE wykorzystuje jeden port do przesyłania programu i dziennika wyjściowego. Aby uniknąć sytuacji, w której log nie może zostać wyprowadzony, gdy używamy OTA, używamy innego terminala portu szeregowego (np. Tera term lub putty) zamiast monitora szeregowego do oglądania komunikatu dziennika.
Następnie kliknij prześlij i naciśnij przycisk resetowania.
W wiadomości dziennika:
1. Pomiędzy „===== Enter Image 1====” a „Enter Image 2 ====” znajduje się „Flash Image 2:Addr 0xb000”. Oznacza to, że Ameba decyduje się na rozruch z domyślnego obrazu 2 przy 0xb000.
2. Po „Enter Image 2 ====” możesz znaleźć „This is version 1”. To jest komunikat dziennika, który dodajemy w szkicu.
3. Gdy Ameba połączy się z AP i otrzyma adres IP „192.168.1.238”, aktywuje mDNS i czeka na klienta.
Następnie zmieniamy „MY_VERSION_NUMBER” na 2.
Kliknij "Narzędzia" -> "Port", zobaczysz listę "Porty sieciowe". Znajdź „MyAmeba at 192.168.1.238 (Ameba RTL8195A)”, MyAmeba to nazwa urządzenia mDNS, którą ustawiliśmy w przykładowym kodzie, a „192.168.1.238” to adres IP Ameby.
Jeśli nie możesz znaleźć portu sieciowego Ameba, potwierdź:
- czy twój komputer i Ameba są w tej samej sieci lokalnej?
- spróbuj zrestartować Arduino IDE.
- sprawdź komunikat dziennika w Monitorze szeregowym, aby zobaczyć, czy Ameba jest pomyślnie połączony z AP.
Następnie kliknij prześlij. Tym razem program zostanie wgrany przez TCP. W terminalu dziennika możesz zobaczyć informacje o połączeniu klienta.
Po pomyślnym pobraniu obrazu OTA, Ameba uruchomi się ponownie, a następujący dziennik zostanie wyświetlony w terminalu dziennika.
- Pomiędzy „===== Enter Image 1====” a „Enter Image 2 ====” można zobaczyć komunikat dziennika „Flash Image 2:Addr 0x80000”. Oznacza to, że Ameba decyduje się na rozruch z obrazu OTA przy 0x80000.
- Po „Enter Image 2 ====” dziennik „This is version 2” to wiadomość, którą dodajemy w szkicu.
Aby przywrócić poprzedni obraz po pobraniu obrazu OTA do Ameby, podłącz pin odzyskiwania, który ustawiliśmy w szkicu (tj. Pin 18) do HIGH (3.3V) i naciśnij reset.
Następnie domyślny obraz 2 zostanie wybrany podczas uruchamiania. Zwróć uwagę, że pobrany obraz OTA nie jest usuwany, gdy pin odzyskiwania zostanie odłączony od HIGH, obraz OTA zostanie wykonany.
Na poniższym rysunku podsumowujemy przebieg rozwoju za pomocą OTA.
Zalecana:
Programowanie ATmega328 z Arduino IDE przy użyciu 8MHz Crystal: 4 kroki
Programowanie ATmega328 z Arduino IDE przy użyciu 8 MHz Crystal: W tym Instuctable omówię krok po kroku programowanie układu ATmega328P IC (ten sam mikrokontroler obecny w Arduino UNO) przy użyciu Arduino IDE i Arduino UNO jako programisty, aby stać się programistą niestandardowe Arduino, aby Twoje projekty
ATtiny85 Poręczny zegarek do śledzenia aktywności wibracyjnej i programowanie ATtiny85 z Arduino Uno: 4 kroki (ze zdjęciami)
ATtiny85 Wearable Wibracyjny zegarek do śledzenia aktywności i programowanie ATtiny85 z Arduino Uno: jak zrobić zegarek do noszenia na ciele? Jest to gadżet do noszenia, który wibruje, gdy wykryje stagnację. Czy spędzasz większość czasu przy komputerze tak jak ja? Siedzisz godzinami, nie zdając sobie z tego sprawy? Wtedy to urządzenie jest f
PROGRAMOWANIE AT89S52 ZA POMOCĄ ARDUINO: 4 kroki
PROGRAMOWANIE AT89S52 PRZY UŻYCIU ARDUINO: Programowanie w systemie (ISP) aka In-Circuit Serial Programming (ICSP) to możliwość programowania niektórych programowalnych urządzeń logicznych, mikrokontrolerów i innych urządzeń wbudowanych podczas instalacji w kompletnym systemie, zamiast konieczności chi
Programowanie Arduino przez telefon komórkowy -- Arduinodroid -- Arduino Ide dla Androida -- Mrugnięcie: 4 kroki
Programowanie Arduino przez telefon komórkowy || Arduinodroid || Arduino Ide dla Androida || Blink: Proszę zasubskrybuj mój kanał youtube, aby uzyskać więcej filmów…… Arduino to płytka, którą można programować bezpośrednio przez USB. Jest bardzo prosty i tani dla projektów uczelnianych i szkolnych, a nawet prototypów produktów. Wiele produktów najpierw opiera się na nim dla
Pierwsze kroki z Esp 8266 Esp-01 z Arduino IDE - Instalowanie płytek Esp w Arduino Ide i programowanie Esp: 4 kroki
Pierwsze kroki z Esp 8266 Esp-01 z Arduino IDE | Instalowanie płyt Esp w Arduino Ide i programowanie Esp: W tej instrukcji dowiemy się, jak zainstalować płyty esp8266 w Arduino IDE oraz jak zaprogramować esp-01 i przesłać w nim kod. Ponieważ płyty esp są tak popularne, pomyślałem o naprawieniu instrukcji dla to i większość ludzi boryka się z problemem