Système de mise à jour à distance de firmware: Nos débuts
Posté le 26-07-2021 par YoupiLab
Internet des Objets Connectés
Système de mise à jour à distance de firmware: Nos débuts

Chers passionnés de l’électronique, des systèmes embarqués. Nous vous présentons ici nos débuts sur un sujet né des suites de différents problèmes rencontrés lors de la réalisation de nos projets aussi bien en interne que pour nos clients ou le grand public: intervenir sur un système (IoT) déjà installé chez un client pour des correctifs de bugs au niveau du code source ou tout simplement mettre à jour le code source tournant sur le microcontrôleur.


Le problème

Récemment nous avions installé un système domotique (qui plus est connecté à internet) à un client à Ouagadougou au Burkina-Faso (un beau pays en plus).  Alors ? Le client nous a reporté un dysfonctionnement au niveau du système et après analyse avec nos développeurs on a conclu d’un bug au niveau du code source tournant sur le microcontrôleur. Le problème est que le système est déjà installé, le client est à Ouagadougou et notre siège est à Cotonou au Bénin et de toute façon nos ingénieurs en hardware étaient en congés (non je blague). Heureusement nous avions des prototypes du système dans nos locaux et après des reviews de quelques heures nous avions réglé le bug sur l’un d’eux. Maintenant il fallait déployer ces corrections sur celui du client. Ce système n’est pas une application mobile (Playstore ou l’Appstore aurait fait l’affaire) pour un déploiement instantané du code source corrigé et ce n’est pas un ordinateur équipé d’un OS (Windows ou Linux) mais un système doté d’un microcontrôleur AVR ATmega tout simplement. Que faire ?

La solution

Nous avions décidé de faire une mise à jour à distance du code source. Connu sous le sigle OTA (Over The Air updates), le OTA en IoT permet de changer (update) le code source tournant sur le microcontrôleur via une liaison sans file. Un peu comme WhatsApp qui est mis à jour sur le smartphone en se connectant à internet, le système installé chez le client devra se connecter à internet sur l’un de nos serveurs YoupiLab, télécharger la mise à jour du code (correctif de bugs), l’installer et continuer son fonctionnement sans l’intervention humaine ou d’une quelconque machine. Cela semble être la meilleure décision puisque nous n’aurions pas à ramener le système déjà installé dans nos locaux, le client ne se gêne pas pour se déplacer de même que nos ingénieurs et le système de base est connecté à internet.

Le travail

Notre but est alors de connecté notre système à un serveur et de récupérer le nouveau code source et de changer celui tournant déjà par ce dernier: procéder à la mise à jour. Donc deux tâches:

  • Un serveur qui stockera chaque fois les nouvelles mises à jours ou correctifs de bugs

  •  Un code capable de gérer la mise à jour côté matériel (système, hardware)

  •  Un moyen de stockage du nouveau et du récent code source pour des éventuels downgrade/rollback vers l’ancien code source.

Evidement nous ne sommes pas les seuls à rencontrer ce problème d’autres entreprises en IoT comme nous font face à cette situation et proposent des solutions. C’est le cas de l'OTA Updates disponible pour les ESP où le module récupère la mise à jour depuis un serveur HTTP via un réseau Wi-Fi et grâce à la bibliothèque ArduinoOTA procède à la mise à jour du code.

La suite

Nous venons de débuter ce projet et sommes à l’étape de collecte de ressources pour avoir une idée de ce qui a été déjà fait dans ce sens. La prochaine étape est donc de débuter l’écriture du code souce arduino qui va permettre à un système doté du module GSM par exemple de récupérer le code source binaire (.bin) puis mettre à jour le code sur le microcontrôleur. Donc à bientôt pour les avancés sur le sujet.

 

 

 

RESTONS EN CONTACT

Suivez-nous sur les réseaux sociaux