Raspberry PI Tutorial

Utilisation de Mongoose OS sur votre ESP8266

Par Thomas, le 14 novembre 2020
Utilisation de Mongoose OS sur votre ESP8266

L’ESP8266 a connu une grande fanfare il y a quelques années. C’était un appareil compatible WiFi bon marché qui offrait une faible consommation d’énergie, une petite taille et quelques broches GPIO.

Au fil du temps, les pirates informatiques ont mis la main sur eux et ont pleinement exploité ce qui pouvait être fait avec eux, mais pour certains, cela restait un mystère. C’était jusqu’à ce que Mongoose OS entre en scène, offrant un moyen simple de flasher le code sur la carte et une API simple pour un prototypage rapide.

Dans ce projet, nous présenterons Mongoose OS, un firmware alternatif pour vos appareils ESP8266, ESP32 qui offre une plate-forme simple pour les projets Internet des objets (IoT). Pour approfondir nos connaissances, nous construirons un projet matériel simple qui nous alertera lorsque le poste arrivera.

Pour ce projet, vous aurez besoin

  • Une carte NodeMCU
  • Un capteur de commutateur Reed
  • Un aimant
  • Un ordinateur avec connexion Internet
  • Une boîte aux lettres
  • 2 x fils de raccordement mâle à mâle
  • Une maquette

La construction matérielle de ce projet est incroyablement simple. Nous n’avons besoin que d’un commutateur Reed pour nous connecter à notre carte NodeMCU. Insérez donc la carte NodeMCU dans la planche à pain, puis insérez le commutateur à lames dans la planche à pain comme indiqué sur le schéma. Ensuite, à l’aide des fils de cavalier, connectez un côté de l’interrupteur Reed à D8 (Pin 15 dans Mongoose OS) et l’autre côté de l’interrupteur Reed se connecte à 3V3.

blank

Nous utilisons également des connecteurs Wago pour étendre les fils de notre interrupteur Reed. Les connecteurs Wago sont rapides et faciles à utiliser, nous insérons les fils et les fixons en place, aucun outil requis!

blank

Nous utilisons également un bras en carton pour attacher l’aimant et fournir un élément de flexibilité au bras, juste au cas où le postier serait énergique avec notre courrier.

blank

C’est ça! Passons maintenant à la configuration du logiciel.

Configuration du système d’exploitation Mongoose

blank

Insérez un câble micro USB dans la carte NodeMCU et l’autre extrémité dans votre ordinateur. Pour utiliser Mongoose OS sur notre machine, nous devons d’abord installer le logiciel, et les instructions pour lesquelles peuvent être trouvées sur leur site Web comme https://mongoose-os.com/software.html nous avons suivi les instructions pour Ubuntu Linux.

Quel que soit le système d’exploitation que vous pouvez utiliser, l’exécution de la commande «mos» lancera une nouvelle fenêtre / onglet de navigateur pour la configuration du système d’exploitation Mongoose et notre première tâche ici est de nous assurer que notre carte NodeMCU a été correctement détectée et a reçu un adresse de l’appareil. Dans la première liste déroulante, recherchez l’adresse de périphérique de votre carte NodeMCU, pour Linux / Mac, ce sera quelque chose comme «/ dev / ttyXYZ» et pour Windows, vous devriez voir un port «COM». Sélectionnez l’adresse correcte et appuyez sur Sélectionner.

Pour flasher le système d’exploitation Mongoose sur le NodeMCU, nous devons choisir la plate-forme qui est «esp8266 4M ou plus flash), puis sélectionnez l’application« demo.js »et cliquez sur Flash. Le processus de flash prendra environ 2 minutes et vous relâchera le contrôle une fois terminé.

La dernière étape de configuration consiste à configurer le WIFI avec les paramètres utilisés pour votre réseau.

Configuration terminée, jetons un coup d’œil à l’interface.

Apprendre à connaître Mongoose OS

Mongoose OS fonctionne entièrement dans le navigateur Web (il existe un client de ligne de commande mos, mais la meilleure expérience est via le navigateur) et la disposition de la fenêtre a une colonne à gauche qui fournit un accès rapide aux fichiers, à la configuration et au terminal pour Mongoose OS sur le NodeMCU. La deuxième colonne s’adapte pour afficher le contenu / fichiers / config comme sélectionné dans la première colonne. La colonne de droite contient le code enregistré sur le tableau, ici nous pouvons éditer le code et créer des projets. En bas de la fenêtre, nous pouvons voir les journaux de l’appareil (en bas à gauche) nous montrant la sortie de notre code et les étapes de configuration prises au démarrage. En bas à droite, nous voyons les journaux de l’outil MOS qui nous informent sur la progression du démarrage et du clignotement. Tout en haut à droite de la fenêtre, nous voyons l’adresse IP de la carte et la configuration de l’appareil (pour faire clignoter la carte et apporter des modifications au WiFi.)

Configuration de MQTT

Nous avons déjà couvert ce qu’est MQTT dans un autre article de blog <> mais un aperçu rapide est que MQTT (Message Queue Telemetry Transport) exploite un réseau à faible bande passante et à faible latence sur n’importe quelle connexion Internet. Il fonctionne en utilisant un modèle de publication> courtier> abonné. Les éditeurs publient leurs données à l’aide de «sujets» qui agissent comme des filtres. Le courtier central reçoit le message, puis les abonnés qui recherchent également des messages d’un certain sujet se connectent au courtier et reçoivent des messages en fonction de leurs préférences. Un exemple concret de cela est YouTube, les fournisseurs de contenu publient, YouTube négocie le contenu et les téléspectateurs s’abonnent aux chaînes qui les intéressent.

Dans ce projet, la carte Node MCU est un éditeur, et elle publiera un message sur le sujet «postwatch» lorsque le commutateur Reed est déclenché. Mais avant de pouvoir configurer notre éditeur, nous devons d’abord configurer le courtier auquel notre éditeur enverra des messages.

Créez un courtier rapide

Le moyen le plus rapide de créer un courtier est d’utiliser une machine Raspberry Pi ou Linux et d’installer le logiciel Mosquitto.

Dans un terminal, tapez ce qui suit.

sudo apt install mosquitto mosquitto-clients

Ensuite, pour vous assurer que le courtier MQTT exécute, tapez

sudo service mosquitto start 

Notez l’adresse IP de votre courtier, car l’éditeur (notre Node MCU) et l’abonné (tout appareil que nous souhaitons) devront savoir où se trouve leur courtier.

hostname -a

Configurer l’éditeur

Nous pouvons maintenant configurer l’élément éditeur de la partie Node MCU du projet. Cliquez sur l’option de menu Device Config et dans l’écran de configuration de l’appareil, modifiez les paramètres MQTT afin que le serveur MQTT soit l’adresse IP du courtier, suivie de: 1883. Assurez-vous également que le bouton Activer MQTT est coché. Cliquez ensuite sur le bouton Enregistrer la configuration.

blank

Voilà – maintenant notre carte Node MCU sait où envoyer les messages, il ne nous reste donc plus qu’à écrire le code.

Recevoir les messages

Alors, comment aimeriez-vous être informé de l’arrivée du courrier? Eh bien, voici deux façons dont nous avons utilisé

Application Android pour recevoir des messages

Pour un débogage simple et des messages en temps réel, nous utilisons l’application client MQTT pour Android (https://play.google.com/store/apps/details?id=in.dc297.mqttclpro). Comme il s’avère être un outil facile à utiliser lorsque vous devez confirmer que des messages sont publiés et que nous pouvons publier des messages sur le réseau.

blank

Ubuntu hack pour les pop-ups

Si vous souhaitez recevoir des messages sur votre appareil Linux, nous avons découvert qu’une méthode simple pour afficher les messages consistait à utiliser l’application notifier-envoyer pour créer des notifications qui s’affichent sur le bureau. Nous avons également créé un script bash en une ligne qui permettra d’atteindre cet objectif. Cette commande s’abonnera au sujet «postwatch» en utilisant l’adresse IP du courtier (remplacez-la par la vôtre), puis la sortie de cette commande est redirigée vers une variable appelée OUTPUT et celle-ci est ensuite utilisée dans la commande notify-send pour créer le notifications.

mosquitto_sub -t postwatch -h 192.168.0.3 | while read OUTPUT; do notify-send "$OUTPUT"; done

Codage de l’application Postwatch

Notre application a un objectif, nous dire que le message est arrivé, et nous recevons beaucoup de messages! Ces petits colis de Shenzhen montent rapidement et nous oublions presque toujours ce que nous avons commandé il y a quatre semaines.

Pour éditer le code dans ce projet, nous devons d’abord être dans le sous-menu Device Files et à partir de là, via le Device File Manager, nous devons éditer le fichier «init.js». Cliquez sur le fichier et vous verrez le contenu du fichier apparaître à l’écran. Sélectionnez tout le code dans le fichier, puis supprimez-le.

Nous commençons notre code en chargeant deux bibliothèques; le premier permet d’utiliser MQTT avec le projet. Ensuite, nous chargeons la bibliothèque GPIO afin de pouvoir utiliser le commutateur Reed pour déclencher le code.

load('api_mqtt.js');

load('api_gpio.js');

Nous créons ensuite trois variables. La première spécifie la broche GPIO que nous utilisons, 15. La deuxième variable est le sujet de notre connexion MQTT. Enfin, nous utilisons msg pour spécifier le message qui sera envoyé lorsque l’application est déclenchée.

let pin = 15, topic="postwatch";

let msg = 'Letterbox Open';

La ligne de code suivante est longue, mais elle crée une fonction qui gère les pressions sur les boutons. Notre broche, GPIO15, utilise un pull-up interne, puis nous définissons un temps anti-rebond de 2000 millisecondes pour permettre à la personne de poste de publier avec succès notre article et de ne déclencher le capteur qu’une fois.

GPIO.set_button_handler(pin, GPIO.PULL_UP, GPIO.INT_EDGE_NEG, 2000, function() {

Ensuite, nous passons à la création des étapes prises lorsque le capteur Reed a été déclenché. Nous créons une autre variable appelée «res» et en cela nous publions le message sur MQTT, en utilisant la rubrique appropriée et en convertissant les données en message. À des fins de débogage, nous imprimons le succès ou l’échec du message publié dans le journal des périphériques (en bas à gauche de l’écran) avant de fermer la fonction et de terminer le code du projet.

  let res = MQTT.pub(topic, JSON.stringify(msg), 1);

  print('Published:', res ? 'yes' : 'no');

}, null);

Pour écrire le code sur notre carte NodeMCU, il suffit de cliquer sur «Enregistrer + redémarrer». Donnez-lui quelques instants et maintenant prenez un aimant, placez-le contre l’interrupteur à lames puis retirez-le pour déclencher le tableau pour envoyer un message sur le sujet MQTT «postwatch» pour nous informer que le message est arrivé! Nous pouvons voir le message apparaître dans le journal de l’appareil, nous informant d’un message, et selon la façon dont nous avons choisi de recevoir un message, nous verrons le message apparaître sur cet appareil.

Alors voilà, une application de post-veille automatisée qui nous informe de l’arrivée d’un nouveau message via un message sur MQTT. Pour développer ce projet, vous pouvez utiliser un courtier MQTT public tel que http://www.mqtt-dashboard.com/ afin que les messages de votre application Postwatch puissent être envoyés sur Internet. Évidemment, n’envoyez jamais de données sensibles sur Internet ouvert mais cela pourrait être une option intéressante pour créer un projet qui va très loin!

Thomas

Thomas

Fan de Raspberry Pi de la première heure, je suis l'évolution de ces micro-pc depuis maintenant 5 ans. En plus de l'actualité je propose de nombreux tutoriels pour vous aider à exploiter pleinement votre nano-ordinateur côté domotique ou retro-gaming.