L'IoT pour un sou: un guide pratique. Partie 2, logiciel

Nous continuons la série d'articles de guide dans lesquels nous considérons comment mettre en œuvre à partir de zéro un appareil IoT contrôlé par le cloud simple et bon marché avec un grand potentiel - sans soudure et difficultés inutiles. Prenez une micropuce propre ESP8266, installez le firmware depuis DeviceHive, configurez et écrivez une simple application Web pour accéder au serveur cloud. Nous assemblons et connectons un simple appareil à la puce électronique, qui peut être contrôlé en quelques clics dans le navigateur. Voici la deuxième partie du cycle, qui décrit quel logiciel est nécessaire, comment le démarrer, comment flasher ESP8266 et se lier d'amitié avec le serveur.


L'auteur de l'article montre ce qui sera discuté aujourd'hui.

Les premiers articles de la série:
IoT pour un sou, ou ce que DeviceHive peut faire.
IoT pour un sou: un guide pratique. Partie 1, matériel.

Créer un serveur

Allons de l'avant et utilisons le terrain de jeu gratuit DeviceHive. Pour ce faire, rendez-vous ici et inscrivez-vous. Après cela, connectez-vous et accédez à cette page:



Toutes nos félicitations! Vous avez maintenant votre propre terrain de jeu sur DeviceHive. Pour vous connecter au groupe de jeu de l'extérieur, utilisez le lien API Url. Il s'agit de l'adresse que nous utilisons pour accéder au serveur depuis ESP8266 et l'application client. Pour accéder au panneau d'administration (à Admin Url), utilisez la connexion spécifiée (connexion initiale) et le mot de passe (mot de passe initial).

Une petite digression: le serveur peut être déployé localement ou sur un service cloud. Recherchez les instructions d'installation ici . Vous pouvez le rendre plus facile - démarrez le serveur en utilisant Docker sur une seule ligne: regardez ici pour une description complète . DeviceHive est un projet entièrement open source. Cela signifie que le serveur peut être déployé à la maison et dans un service cloud, par exemple, Azure

docker run -d --name=devicehive -p 8080:80 -p 9001:9001 devicehive/devicehive-standalone



.

Firmware

Il est temps de faire le firmware. Pour ce faire, nous devons connecter l'ESP8266 à l'ordinateur, puis connecter l'adaptateur USB-> UART, l'alimentation et le module ESP8266.

Installez le pilote de votre adaptateur. Les utilisateurs Linux sont plus faciles ici, car le noyau inclut déjà la plupart de ces pilotes. Mais les utilisateurs de Windows et OS X devront installer le pilote de l'adaptateur eux-mêmes.

Liens vers les pages de téléchargement officielles des puces les plus populaires:

CP210x: www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspx
PL230x: www.prolific.com.tw/US/ShowProduct.aspx?pcid=41
FTDI: www. ftdichip.com/Drivers/VCP.htm
CH341: www.wch.cn/index.php?s=/page-search_content-keyword-CH341SER.html

Connectez l'adaptateur et assurez-vous que le pilote fonctionne correctement. Sous Linux, le périphérique doit apparaître sur le système de fichiers / dev / ttyUSB *, sous OS X /dev/tty.* et sous Windows, un port COM supplémentaire doit apparaître dans le gestionnaire de périphériques. Si tout va bien, déconnectez l'adaptateur de l'ordinateur.

Ensuite, connectez la sortie de l'alimentation (3,3 Volts) à l'ESP8266 avec deux fils. Pour que le module s'allume, lorsqu'il est sous tension, il doit être autorisé à fonctionner en fournissant un niveau élevé à la sortie de CH_PD. Il est nécessaire d'informer le module que nous utiliserons la mémoire interne, donc lorsqu'il est allumé, le GPIO15 doit être faible. Et pour entrer en mode de programmation, nous devons appliquer un niveau bas à GPIO0. Nous n'avons besoin de ce dernier que pendant le firmware. Cela semble effrayant, mais en réalité, nous avons seulement besoin de connecter les trois fils de CH_PD au plus de l'alimentation, et de connecter GPIO0 et GPIO15 à la masse (moins) de l'alimentation. Enfin, nous connectons l'adaptateur USB-> UART à l'aide de trois fils supplémentaires: nous connectons les bornes moins la source (GND) à la masse de l'adaptateur,la sortie de l'adaptateur RX est connectée à la sortie du module TX de l'ESP8266 et la sortie de l'adaptateur TX à la sortie du module RX. Nous obtenons le schéma de connexion final pour trois modules standard différents. Si une sortie manque, elle est probablement déjà connectée à l'intérieur du module, le fil violet est la connexion la plus temporaire pour entrer en mode de programmation.







Un exemple de l'exécution d'une telle connexion:


Comme vous pouvez le voir, rien n'était nécessaire pour souder, toutes les connexions peuvent être faites avec des connecteurs ordinaires.

Ensuite, allumez la source d'alimentation, connectez l'adaptateur à l'ordinateur et téléchargez le micrologiciel DeviceHive recompilé pour ESP8266. Au moment de la publication, la première et dernière version est disponible ici .

De nouvelles versions précompilées peuvent toujours être trouvées sur GitHub . Vous pouvez également prendre l'intégralité du référentiel ici , compiler le firmware vous-même et le modifier à votre guise. Tout le code dans le référentiel est sous licence MIT.
Décompressez l'archive téléchargée à partir du lien ci-dessus dans un répertoire séparé, exécutez esp-flasher- <votre nom de système d'exploitation> à partir de la console (les utilisateurs de Windows peuvent simplement double-cliquer sur esp-flasher-win.exe). Par conséquent, vous devriez avoir quelque chose comme ceci:



En plus de l'utilitaire inclus pour le firmware ESP8266, vous pouvez utiliser n'importe quel autre, par exemple, esptool .

Félicitations - le firmware est installé et fonctionne déjà! Déconnectez maintenant la masse de la broche GPIO0 (elle ne sera plus nécessaire) afin que le module ne revienne pas en mode programmation. Pour vous connecter au terminal ESP8266, exécutez esp-terminal- <votre nom de système d'exploitation> ou tout autre terminal de port série qui prend en charge les caractères d'échappement, par exemple, PuTTY ou l''écran 'de l'utilitaire GNU. Paramètres de port: vitesse 115200, 8N1.

Les deux utilitaires inclus sont capables de détecter automatiquement le port auquel l'ESP8266 est connecté, c'est-à-dire aucun paramètre n'est requis au démarrage.
Au démarrage du terminal, nous verrons l'invitation:



En fait, il s'agit d'un terminal similaire à Unix qui prend en charge la saisie semi-automatique (touche Tab) et l'historique (touches haut, bas). Mais en fait, il n'y a ni fichier ni système d'exploitation. Une liste des commandes disponibles est disponible dans 'help':



Nous sommes intéressés par la commande 'configure'. Exécutez-le pour configurer l'appareil.

L'utilitaire posera cinq questions simples:
  1. Le nom de votre réseau Wi-Fi.
  2. Mot de passe de votre réseau Wi-Fi.
  3. L'adresse API de votre serveur.
  4. DeviceID de votre appareil.
  5. DeviceKey de votre appareil.


Dans l '"URL du serveur DeviceHive", entrez l' "URL de l'API" du serveur. Dans «DeviceID» - un identifiant d'appareil unique pour le serveur, c'est avec ce nom que nous distinguerons les appareils sur le serveur. «DeviceID» peut être en texte brut. En particulier, vous pouvez générer un GUID texte en cliquant sur Tab. Et à la dernière demande de DeviceKey, entrez le mot de passe sélectionné. Il peut être généré en appuyant sur la touche Tab.

Ici, il vaut la peine de faire une petite digression. ESP8266 utilise l'authentification du serveur par DeviceID. Dès que DeviceID et DeviceKey sont enregistrés sur le serveur, aucun autre appareil avec le même DeviceID mais avec un mot de passe différent ne peut se connecter. À l'avenir, un mot de passe DeviceKey peut être requis uniquement si vous souhaitez remplacer le périphérique physique par un autre périphérique avec le même DeviceID.

Voici à quoi ressemble la configuration:



Si nous avons tout fait correctement, nous pouvons examiner la sortie de débogage et nous assurer que le périphérique s'est correctement connecté au serveur. Voici la sortie de débogage d'un périphérique connecté avec succès:



L'adaptateur USB-> UART peut maintenant être désactivé. Vous pouvez le laisser si vous souhaitez pouvoir consulter la sortie de débogage ou l'état du réseau.

Maintenant, dans l'onglet "Appareils" du panneau d'administration, le premier appareil apparaîtra.

Essayons d'envoyer la première commande à l'appareil . Pour ce faire, accédez au panneau d'administration de la manière suivante: "Périphériques" -> "ESP" -> "détails" -> "commandes" -> "entrer une nouvelle commande". Dans le champ "nom", spécifiez "gpio / read" et appuyez sur "push". L'équipe envoyée!

La réponse viendra très rapidement, mais les résultats des commandes du panneau d'administration ne sont pas automatiquement mis à jour. Pour cela, il y a un bouton de rafraîchissement en face de la commande. Cliquez dessus une ou deux secondes après l'envoi et vous verrez cet écran:



Qu'est-il arrivé? En appuyant sur le bouton-poussoir, vous avez envoyé une commande du panneau d'administration (qui dans ce cas est le client du serveur) à la commande du serveur. ESP8266 l'a récupéré, exécuté et transmis le résultat au serveur. En cliquant sur le bouton Actualiser, vous avez demandé au serveur le résultat de la commande: La liste des commandes disponibles se trouve dans le fichier PDF fourni avec le firmware. Il est également disponible ici , mais peut ne pas correspondre à la version de votre firmware.

{"0":"1","1":"0","2":"1","3":"0","4":"1","5":"1","12":"0","13":"0","14":"0","15":"0"}




Par une bonne tradition, nous allumerons la LED sur la carte. Dans la plupart des modules ESP8266, la LED est sur une sortie de type TX, et nous nous en occuperons. Il s'allume lorsqu'un niveau bas apparaît sur la sortie de la puce. Dans le document, nous verrons que GPIO1 n'est rien d'autre que la même sortie TX, alors définissons un zéro logique dessus. Dans ce cas, la LED s'allume sans aucun problème. Après cela, le terminal du module cessera de fonctionner jusqu'au redémarrage.

Maintenant, nous définissons la commande également indiquée dans le document. Dans le champ "nom", nous définissons et dans le champ "paramètres" - . Après avoir exécuté la commande, la LED sur la carte doit s'allumer, comme sur la photo ci-dessous."gpio/write"
"gpio/write"
{"1":"0"}




Une LED bleue sous quartz, à côté de laquelle une rouge brille toujours, qui indique que la carte est alimentée.

Comme vous pouvez le voir sur la photo, seuls deux fils avec alimentation et deux cavaliers sont connectés au module pour allumer le module dans le mode correct. Pour désactiver, envoyez une commande avec un paramètre . Le format des paramètres de commande est JSON ordinaire. Les champs pouvant être remplis, ainsi que leurs valeurs possibles, sont décrits dans le fichier PDF. Aujourd'hui, nous avons découvert comment envoyer les commandes les plus simples du panneau d'administration à l'appareil. Dans le prochain article, nous vous expliquerons comment écrire une application cliente simple pour le serveur qui vous permet d'accéder à l'appareil, et d'implémenter un appareil un peu plus sérieux (rappelez-vous le laser du premier article?). Restez à l'écoute, ce sera intéressant!{"1":"1"}






Publié par Nikolai Khabarov, développeur principal embarqué.

Source: https://habr.com/ru/post/fr383027/


All Articles