Table des matières:

Programmation Arduino Over the Air (OTA) - Ameba Arduino : 4 étapes
Programmation Arduino Over the Air (OTA) - Ameba Arduino : 4 étapes

Vidéo: Programmation Arduino Over the Air (OTA) - Ameba Arduino : 4 étapes

Vidéo: Programmation Arduino Over the Air (OTA) - Ameba Arduino : 4 étapes
Vidéo: Презентация DevCon 2020 при участии Microsoft: создание управляемого устройства IoT с Microsoft Azure и STM32L4+ 2024, Novembre
Anonim
Programmation Arduino Over the Air (OTA) - Ameba Arduino
Programmation Arduino Over the Air (OTA) - Ameba Arduino

Il existe de nombreux microcontrôleurs Wi-Fi sur le marché, de nombreux fabricants aiment programmer leur microcontrôleur Wi-Fi à l'aide d'Arduino IDE. Cependant, l'une des fonctionnalités les plus intéressantes qu'un microcontrôleur Wi-Fi a à offrir a tendance à être négligée, à savoir la programmation et le téléchargement de votre code à distance et sans fil à l'aide de la fonction OTA (Over-The-Air).

Dans ce Instructable, je vais vous montrer comment configurer OTA sur votre microcontrôleur Wi-Fi à l'aide de l'IDE Arduino omniprésent sur le microcontrôleur Ameba Arduino Wi-Fi !

Fournitures

Ameba Arduino x 1

Étape 1: OTA

OTA
OTA

OTA (Over-The-Air) fait référence au mécanisme de mise à niveau en ligne via Internet.

Arduino IDE propose une fonctionnalité OTA, qui suit le flux de travail de la figure ci-dessus.

(i) Arduino IDE recherche via mDNS les appareils avec le service Arduino IDEOTA dans le réseau local.

(ii) Étant donné que le service mDNS s'exécute sur Ameba, Ameba répond à la recherche mDNS et ouvre le port TCP spécifique pour la connexion.

(iii) L'utilisateur développe un programme dans Arduino IDE. Une fois terminé, choisissez le port réseau.

(iv) Cliquez sur télécharger. Ensuite, Arduino IDE envoie l'image OTA à Ameba via TCP, Ameba enregistre l'image à une adresse spécifique et définit l'option de démarrage pour démarrer à partir de cette image la prochaine fois.

Le flux de travail se compose de trois parties: processus d'image mDNS, TCP et OTA. Les détails liés au mDNS sont décrits dans le didacticiel mDNS. La programmation de socket TCP est utilisée pour transférer l'image et est déjà fournie dans l'API OTA.

Dans la section suivante, nous expliquerons comment traiter l'image OTA et présenterons quelques connaissances de base sur la disposition de la mémoire flash Ameba et le flux de démarrage.

Étape 2: Disposition de la mémoire flash Ameba

Disposition de la mémoire flash Ameba
Disposition de la mémoire flash Ameba

La taille de la mémoire flash d'Ameba RTL8195A est de 2 Mo, allant de 0x00000000 à 0x00200000. Cependant, la taille de la mémoire flash de l'Ameba RTL8710 est de 1 Mo. Pour s'adapter à l'utilisation de différentes cartes, nous supposons que la disposition de la mémoire flash est de 1 Mo.

Comme le montre la figure ci-dessus, le programme Ameba occupe trois parties de la mémoire flash:

- Image de démarrage:

C'est-à-dire le chargeur de démarrage. Lorsque Ameba démarre, il place l'image de démarrage en mémoire et effectue l'initialisation. De plus, il détermine où procéder après le bootloader. Bootloader examine l'adresse OTA et la broche de récupération dans la zone de données système et détermine quelle image sera exécutée par la suite. A la fin du bootloader, il place l'image en mémoire et précède son exécution.

- Image par défaut 2:

Le code développeur est placé dans cette partie, l'adresse commence à partir de 0x0000B000. Les 16 premiers octets sont l'en-tête de l'image, 0x0000B008~0x0000B00F comprend la signature, qui est utilisée pour vérifier si l'image est valide. Le champ de signature a deux valeurs valides pour distinguer la nouvelle image de l'ancienne image.

- Image OTA:

Les données de cette partie sont également du code de développeur. Par défaut, cette partie de la mémoire commence à partir de 0x00080000 (peut être modifiée). Les principales différences entre l'image OTA et l'image par défaut 2 sont l'adresse de la mémoire flash et la valeur de la signature.

Outre le code, il existe des blocs de données:

- Données système:

Le bloc de données système commence à partir de 0x00009000. Il existe deux données liées à l'OTA:

1. Adresse OTA:4 octets de données à partir de 0x00009000. Il indique l'adresse de l'image OTA. Si la valeur de l'adresse OTA n'est pas valide (c'est-à-dire 0xFFFFFFFF), l'image OTA dans la mémoire flash ne peut pas être chargée correctement.

2. Broche de récupération: 4 octets de données à partir de 0x00009008, la broche de récupération est utilisée pour déterminer quelle image (image 2 par défaut ou image OTA) à exécuter lorsque les deux images sont valides. Si la valeur de la broche de récupération n'est pas valide (c'est-à-dire 0xFFFFFFFF), la nouvelle image sera exécutée par défaut.

Les données système seront supprimées lorsque nous téléchargerons le programme sur Ameba via DAP. C'est-à-dire que l'adresse OTA sera supprimée et Ameba déterminera qu'il n'y a pas d'image OTA.

- Données d'étalonnage: les données d'étalonnage périphériques sont placées dans ce bloc. Normalement, ces données ne doivent pas être supprimées.

Étape 3: Flux de démarrage

Flux de démarrage
Flux de démarrage

D'après l'image ci-dessus, Nous discutons des scénarios suivants: (i) L'OTA n'est pas utilisé, utilisez DAP pour télécharger le programme:

Dans cette situation, le chargeur de démarrage vérifie la signature de l'image par défaut 2 et de l'adresse OTA. Étant donné que l'adresse OTA est supprimée, l'image par défaut 2 sera sélectionnée pour s'exécuter.

(ii) L'image OTA est transférée vers Ameba, l'adresse OTA est définie correctement, la broche de récupération n'est pas définie:

Ameba a reçu une image mise à jour via OTA, la signature de l'image par défaut 2 serait définie sur l'ancienne signature.

Bootloader vérifie la signature de l'image par défaut 2 et de l'adresse OTA. Il trouvera que l'adresse OTA contient une image OTA valide. Étant donné que la broche de récupération n'est pas définie, elle choisit la nouvelle image (c'est-à-dire l'image OTA) à exécuter.

(iii) L'image OTA est transférée vers Ameba, l'adresse OTA est définie correctement, la broche de récupération est définie:

Ameba a reçu une image mise à jour via OTA, la signature de l'image par défaut 2 serait définie sur l'ancienne signature.

Bootloader vérifie la signature de l'image par défaut 2 et de l'adresse OTA. Il trouvera que l'adresse OTA contient une image OTA valide. Vérifiez ensuite la valeur de la broche de récupération. Si la broche de récupération est connectée à LOW, la nouvelle image (c'est-à-dire l'image OTA) sera exécutée. Si la broche de récupération est connectée à HIGH, l'ancienne image (c'est-à-dire l'image par défaut 2) sera exécutée.

Étape 4: Exemple

Exemple
Exemple
Exemple
Exemple
Exemple
Exemple
Exemple
Exemple

Pour utiliser la fonction OTA, veuillez mettre à niveau le micrologiciel DAP vers la version > 0.7 (la version 0.7 n'est pas incluse). Le micrologiciel DAP par défaut est la version 0.7. Veuillez suivre les instructions pour mettre à niveau le micrologiciel DAP:

Ouvrez l'exemple: "Fichier" -> "Exemples" -> "AmebaOTA" -> "ota_basic"

Remplissez les informations ssid et mot de passe dans l'exemple de code pour la connexion réseau.

Il existe certains paramètres liés à l'OTA:

§ MY_VERSION_NUMBER:Dans la première version, nous devons définir l'adresse OTA et le code PIN de récupération. Étant donné que cette fois, nous téléchargeons via USB est la première version, nous n'avons pas besoin de modifier cette valeur.

§ OTA_PORT:Arduino IDE trouvera Ameba via mDNS. Ameba dira à Arduino IDE qu'il ouvre le port TCP 5000 pour attendre l'image OTA.

§ RECOVERY_PIN:Configurez la broche utilisée pour la récupération. Nous utilisons la broche 18 ici.

Ensuite, nous utilisons le programme de téléchargement USB vers Ameba. Cliquez sur Outils -> Ports, cochez le port série à utiliser:

Veuillez noter qu'Arduino IDE utilise un port pour le programme de téléchargement et le journal de sortie. Pour éviter la situation dans laquelle le journal ne peut pas être généré lorsque nous utilisons OTA, nous utilisons un autre terminal de port série (par exemple, un terme Tera ou un mastic) au lieu d'un moniteur série pour surveiller le message du journal.

Cliquez ensuite sur télécharger et appuyez sur le bouton de réinitialisation.

Dans le message de journal:

1. Entre "===== Enter Image 1====" et "Enter Image 2 ====", vous pouvez trouver "Flash Image 2:Addr 0xb000". Cela signifie qu'Ameba décide de démarrer à partir de l'image par défaut 2 à 0xb000.

2. Après « Entrez l'image 2 ==== », vous pouvez trouver « Ceci est la version 1 ». C'est le message de journal que nous ajoutons dans le croquis.

3. Une fois qu'Ameba est connecté au point d'accès et obtient l'adresse IP « 192.168.1.238 », il active mDNS et attend le client.

Ensuite, nous modifions "MY_VERSION_NUMBER" à 2.

Cliquez sur "Outils" -> "Port", vous pouvez voir une liste de "Ports réseau". Recherchez "MyAmeba at 192.168.1.238 (Ameba RTL8195A)", MyAmeba est le nom du périphérique mDNS que nous avons défini dans l'exemple de code et "192.168.1.238" est l'adresse IP d'Ameba.

Si vous ne trouvez pas le port réseau d'Ameba, veuillez confirmer:

- si votre ordinateur et Ameba sont sur le même réseau local ?

- essayez de redémarrer Arduino IDE.

- vérifiez le message de journal dans Serial Monitor pour voir si Ameba est connecté avec succès à AP.

Cliquez ensuite sur télécharger. Cette fois, le programme sera téléchargé via TCP. Dans le terminal de journal, vous pouvez voir les informations de connexion client.

Lorsque l'image OTA est téléchargée avec succès, Ameba redémarre et le journal suivant s'affiche dans le terminal de journal.

- Entre "===== Enter Image 1====" et "Enter Image 2 ====", vous pouvez voir un message de journal "Flash Image 2:Addr 0x80000". Cela signifie qu'Ameba décide de démarrer à partir de l'image OTA à 0x80000.

- Après « Enter Image 2 ==== », le journal « This is version 2 » est le message que nous ajoutons dans le sketch.

Pour récupérer l'image précédente après le téléchargement de l'image OTA sur Ameba, veuillez connecter la broche de récupération que nous avons définie dans le croquis (c'est-à-dire la broche 18) à HIGH (3,3 V) et appuyez sur reset.

Ensuite, l'image par défaut 2 sera choisie lors du démarrage. Notez que l'image OTA téléchargée n'est pas supprimée, une fois la broche de récupération déconnectée de HIGH, l'image OTA sera exécutée.

Nous résumons le flux de développement à l'aide d'OTA dans la figure suivante.

Conseillé: