Rencontrez le tueur Arduino: ESP8266

Et si je vous disais qu'il y a une carte de développement compatible Arduino avec Wi-Fi intégré pour moins de 10 $? Eh bien, il y a.

Et si je vous disais qu'il y a une carte de développement compatible Arduino avec Wi-Fi intégré pour moins de 10 $?  Eh bien, il y a.
Publicité

Wi-Fi est un élément essentiel du kit pour les projets de bricolage de l'Internet des objets (IoT), mais notre Arduino préféré ne comprend pas le Wi-Fi, et l'ajout d'un bouclier Wi-Fi peut amener le coût total à 40 $. Et si je vous disais qu'il y a une carte de développement compatible Arduino avec Wi-Fi intégré pour moins de 10 $? Eh bien, il y a.

Rencontrez le tueur Arduino: ESP8266. Ce n'était qu'une question de temps avant que la couronne ne soit volée à la tête brillante de notre cher conseil de développement Arduino. Est-il possible de tomber amoureux d'un circuit imprimé?

Mis à part les noms accrocheurs, l'ESP8266 (également connu sous le nom de NodeMCU) a été initialement commercialisé comme un additif Wi-Fi à faible coût pour les cartes Arduino, jusqu'à ce que la communauté des hackers réalise que l'Arduino pourrait être complètement éliminé de l'équation.

En moins d'un an, l'ESP8266 a explosé en popularité, et est maintenant si bien supporté et développé que si vous utilisez actuellement Arduino, vous devez vous lever et prendre note. Achetez-en un maintenant, puis suivez ce guide pour commencer à programmer votre ESP8266 - le tout depuis l'IDE Arduino habituel.

Vous n'êtes pas limité à utiliser l'IDE Arduino bien sûr - ils sont aussi compatibles avec Lua (qui ressemble à un Python aminci à mes yeux novices), mais puisque nous abordons cela du point de vue de ceux qui ont appris sur Arduino, c'est ce que nous allons couvrir exclusivement aujourd'hui.

Il y a quelques modèles d'ESP8266 à l'heure actuelle, mais je vais aller de l'avant et recommander celui-ci: ESP-12E (également connu sous le nom de NodeMCU 1.0, ou son plus récent frère NodeMCU 2.0).

C'est un peu plus cher que les autres (6, 50 $ par rapport à 4 $!), Mais inclut le pilote série nécessaire pour programmer la puce, et dispose d'un régulateur de puissance intégré, ainsi que de nombreuses broches d'E / S. Il est largement supporté et n'a vraiment besoin d'rien d'autre qu'une connexion USB pour la programmation ou la puissance, c'est donc le plus facile à utiliser. Si vous achetez un autre type de carte ESP8266, vous aurez peut-être besoin d'un régulateur de puissance 3, 3 V séparé et d'une connexion FTDI appropriée pour la programmation.

Premiers pas avec ESP8266-12E et Arduino

Tout d'abord, installez les pilotes série pour ce forum. Vous devrez peut-être désactiver la signature KEXT si vous utilisez El Capitan en raison de nouveaux systèmes de sécurité.

Ensuite, nous devons activer le support pour ESP8266 à partir du gestionnaire de carte de l'IDE Arduino. Ouvrez les préférences, et entrez l'URL suivante où il est indiqué URL supplémentaires de gestionnaire de forum :

 http://arduino.esp8266.com/package_esp8266com_index.json 

arduino board manager URLS

Cliquez sur Ok, puis ouvrez le gestionnaire de cartes dans le menu Outils -> Panneau, recherchez esp8266 et installez la plate-forme. Vous devriez maintenant voir un choix pour NodeMCU 1.0.

sélectionnez le conseil

Laissez le processeur et la vitesse de téléchargement tels quels et sélectionnez votre nouveau port série. Sur Mac, cela apparaît comme cu.SLAB_USBtoUART .

En tant que premier programme, je suggère le simple scanner Wi-Fi - le trouver à partir de Fichier -> Exemples -> ESP8266WiFi -> WifiScan . Notez qu'il est assez lent à télécharger, mais il finira par dire "terminé le téléchargement" et à ce stade (pas avant, ou vous casserez le processus de téléchargement), vous pouvez ouvrir le moniteur série. Vous devriez voir quelque chose de similaire à ceci:

test de balayage wifi esp8266
Succès! Maintenant, essayons de nous connecter à un.

Voici un code barebones absolument simple pour se connecter à un réseau Wi-Fi. Il ne fait rien d'autre que se connecter, mais c'est quelque chose que vous pouvez ajouter plus tard. N'oubliez pas de modifier les paramètres YOUR_SSID et YOUR_PASSWORD dans vos informations Wi-Fi. Télécharger, ouvrez la console série et vous devriez le voir se connecter.

#include const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup() { Serial.begin(115200); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { } 

N'est-ce pas génial comme c'était ridiculement simple?

Avant de continuer, voici le diagramme de brochage - il pourrait être utile plus tard. Notez que les numéros de broche mentionnés dans le code sont les numéros GPIO, pas le D0-16 écrit probablement sur votre carte PCB. Si vous ne pouvez absolument pas comprendre pourquoi un capteur ne fonctionne pas, vous avez probablement mélangé les numéros de broche.

NodeMCU__v1.0_pinout

Capteur maison intelligent rapide avec MQTT et DHT11

Voici un exemple pratique que vous pouvez utiliser immédiatement pour surveiller votre maison. Nous allons ajouter un capteur de température et d'humidité DHT11, puis signaler les valeurs en utilisant le protocole MQTT sur le réseau Wi-Fi, dans mon cas à un système domotique OpenHAB DIY (sinon, vous pouvez lire notre guide des débutants à Ouvrir OpenHAB sur un Raspberry Pi Démarrer avec OpenHAB Home Automation sur Raspberry Pi Démarrer avec OpenHAB Home Automation sur Raspberry Pi OpenHAB est une plate-forme de domotique open source mature qui fonctionne sur une variété de matériel et est agnostique de protocole, ce qui signifie OpenHAB Guide du débutant Partie 2: ZWave, MQTT, les règles et la cartographie OpenHAB Guide du débutant Partie 2: ZWave, il peut se connecter à presque tout matériel domotique sur le marché aujourd'hui. MQTT, Rules and Charting OpenHAB, le logiciel domotique open source, dépasse de loin les capacités des autres systèmes domotiques sur le marché - mais il n'est pas facile à mettre en place. être carrément frustrant. Lire la suite ).

Du côté du câblage, connectez le capteur DHT à GND, 3.3v et ~ D4 (ou GPIO 2). C'est tout ce dont nous avons besoin pour le moment.

Téléchargez ces bibliothèques MQTT et DHT. Même si vous les avez déjà, téléchargez ceux-ci de toute façon, sauvegardez ce que vous avez, et remplacez-les par ceux-ci. La dernière bibliothèque DHT11 d'Adafruit utilise un algorithme automatique pour déterminer la vitesse à laquelle les données sont lues par le capteur, mais il est buggé sur ESP8266 et 90% du temps entraîne des lectures ratées.

Avec l'ancienne version 1.0 de la bibliothèque que j'ai incluse dans le téléchargement, vous pouvez changer manuellement le timing: 11 fonctionne mieux pour ces cartes ESP2866. J'ai également parcouru de nombreuses copies de la bibliothèque MQTT en essayant de trouver une bonne fonction de rappel, pour finalement atterrir sur celle incluse. Vous devrez redémarrer l'IDE Arduino après les avoir remplacés.

Voici le code complet du projet. En haut se trouvent toutes les variables que vous devez modifier, y compris les détails Wi-Fi, le serveur MQTT (une URL peut être utilisée à la place si vous utilisez un serveur cloud, mais pas d'authentification) et les canaux sur lesquels publier les données.

Voici comment cela fonctionne et quelques notes:

  • Nous nous connectons d'abord au Wi-Fi, puis au serveur MQTT, puis commençons la boucle principale ().
  • Dans la boucle, nous interrogeons le capteur DHT toutes les 60 secondes et publions les lectures sur les canaux MQTT correspondants. Encore une fois, si vous trouvez la plupart des lectures dans un message d'échec, vous avez la mauvaise version de la bibliothèque DHT - downgrade vers v1.0.
  • client.loop () transmet le contrôle à la bibliothèque MQTT, lui permettant de réagir aux messages entrants.
  • Il y a une fonction messageReceived () où nous gérons les messages entrants - faites simplement une instruction simple if pour comparer la charge utile avec le message que vous attendez. Vous pouvez utiliser ceci pour activer un relais, par exemple.
  • Après avoir fonctionné pendant quelques jours, j'ai constaté qu'ils cesseraient de fonctionner au hasard - je suppose qu'il s'agit d'une sorte de fuite de mémoire, mais étant donné que je n'ai pas la compétence de codage pour gérer cela, J'ai opté pour une réinitialisation logicielle simple tous les jours. Exactement un jour après la première activation des capteurs, ils redémarrent eux-mêmes.
  • Lors de l'alimentation de ces modules DHT11 bon marché de 3.3v, les valeurs d'humidité sont bien inférieures à ce qu'elles devraient être. J'ai résolu cela avec une simple multiplication, et calibré contre un capteur commercial. Je vous conseille de confirmer aussi contre votre propre source connue, avant de s'appuyer sur les lectures. Vous pouvez également les alimenter avec 5V - mais vous devez placer un levier de niveau logique 5v-3.3v entre la broche de données et l'ESP8266, sinon vous risquez de l'endommager .

Si tout s'est bien passé, vous devriez maintenant recevoir des relevés de capteurs dans votre courtier MQTT, et vous pouvez les relier à OpenHAB comme indiqué dans la partie 2 de notre guide du début. OpenHAB Beginner's Guide Partie 2: ZWave, MQTT, Règles et Graphiques OpenHAB Débutant Guide Partie 2: ZWave, MQTT, Règles et Graphiques OpenHAB, le logiciel domotique open source, dépasse de loin les capacités des autres systèmes domotiques sur le marché - mais il n'est pas facile à configurer. En fait, cela peut être carrément frustrant. Lire la suite, où je vous ai également montré comment graver les données.

graphique humdity de openhab

Adieu Arduino, nous t'aimions tellement. Je plaisante: pas partout dans ma maison ne peut même obtenir le Wi-Fi, donc pour ces endroits, j'ai toujours besoin d'un réseau maillé avec des récepteurs Arduino et RF. Mais que ferez-vous avec ESP8266? Tous les projets utilisant ESP8266 que vous aimeriez voir écrits sur MakeUseOf? Faites le nous savoir dans les commentaires!

In this article