Rencontrez le tueur arduino: esp8266

Wi-Fi est un peu essentiel de kit pour tout internet des objets (IdO) projets de bricolage, mais notre Arduino préféré ne vient pas avec une connexion Wi-Fi, et l`ajout d`un écran Wi-Fi peut apporter le coût total à environ 40 $. Et si je vous ai dit il y a une carte Arduino dev compatible avec le Wi-Fi pour moins de 10 $? Eh bien, il y a.

Rencontrez le tueur Arduino: ESP8266. Il était seulement une question de temps avant que la couronne a été volée à la tête brillante de notre chère carte de développement Arduino. Est-il possible de tomber amoureux d`une carte de circuit?

Les noms accrocheurs de côté, le ESP8266 (également connu sous le nom NodeMCU) a été vendu à l`origine comme un faible coût Wi-Fi add-on pour les cartes Arduino, jusqu`à ce que la communauté des hackers réalisé, vous pouvez couper l`Arduino de l`équation entièrement.

Video: U=RI | Arduino Ep.16 - Installation du module Wifi ESP8266

En moins d`un an, le ESP8266 est monté en flèche en popularité et est maintenant si bien soutenu et développé que si vous utilisez actuellement Arduino, vous avez besoin de se lever et prendre note. Acheter un maintenant, puis suivre ce guide pour commencer la programmation de votre ESP8266 - tout cela depuis le familier Arduino IDE.

Video: Arduino ide, установка и настройка для новичков +прошивка ESP8266

Vous n`êtes pas limité à l`aide de l`IDE Arduino bien sûr - ils sont compatibles avec Lua trop (qui ressemble à un maigri Python à mes yeux novices), mais puisque nous nous attaquons à ce dans la perspective de nous ceux qui ont appris sur Arduino, c`est ce que nous allons couvrir exclusivement aujourd`hui.

Il est tout à fait quelques modèles de ESP8266 autour de maintenant, mais je vais aller de l`avant et de recommander celle-ci: ESP-12E (également connu sous le nom NodeMCU 1.0 NodeMCU, ou il est le plus récent frères et soeurs 2.0).

Il est un peu plus cher que les autres (6,50 $ par rapport à 4 $!), Mais comprend le pilote de série nécessaire pour programmer la puce, et dispose d`un régulateur de puissance intégré, ainsi que beaucoup de broches IO. Il est largement soutenu et ne pas vraiment besoin de quelque chose en dehors d`une connexion USB pour la programmation ou de la puissance, il est donc plus facile de travailler avec. Si vous achetez un autre type de carte ESP8266, vous devrez peut-être un régulateur de puissance 3.3v séparé et d`une connexion FTDI appropriée pour la programmation.

Mise en route avec ESP8266-12E et Arduino

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

Video: Модуль ESP8266 в среде Arduino IDE Библиотека aREST

, Nous avons besoin d`activer le support de ESP8266 du gestionnaire de la carte Arduino IDE. Ouvrez Préférences, puis entrez l`URL suivante où il est dit Conseil supplémentaires URL Manager:

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

arduino directeur du conseil d`administration URLS

Cliquez sur OK, puis ouvrez le conseils directeur de Outils -gt; Planche menu, rechercher esp8266 et installer la plate-forme. Vous devriez maintenant voir un choix pour 1,0 NodeMCU.

conseil de sélection

Laissez la CPU et vitesse de téléchargement comme il est, et sélectionnez votre nouvelle installation port série. Sur Mac, cela apparaît comme cu.SLAB_USBtoUART.

En tant que premier programme, je vous suggère le simple scanner Wi-Fi - trouver à partir Fichier -gt; Exemples -gt; ESP8266WiFi -gt; WifiScan. Notez qu`il est assez lent à télécharger, mais finalement il va dire « DONE téléchargement » et à ce moment (pas avant, ou vous briser 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, nous allons essayer de vous connecter à un.

Voici un code barebones absolument simple pour se connecter à un réseau Wi-Fi. Il ne fait rien d`autre que de simplement se connecter, mais il est quelque chose que vous pouvez ajouter trop tard. Rappelez-vous de changer le YOUR_SSID et votre_mot_de_passe à vos données Wi-Fi. Télécharger, ouvrez la console série et vous devriez voir la connexion.

#includeconst char * = ssid "YOUR_SSID"-const char * password = "VOTRE MOT DE PASSE"-WiFiClient configuration wifiClient-void () {Serial.begin (115200) -Serial.print ("Connexion à ") -Serial.println (ssid) -WiFi.begin (ssid, mot de passe) -Tout (WiFi.status ()! = WL_CONNECTED) {retard (500) -Serial.print (".") -} Serial.println ("") -Serial.println ("WiFi connecté") -Serial.println ("Adresse IP: ") -Serial.println (WiFi.localIP ()) -} void loop () {}

Est-il pas grand comment cela était ridiculement simple?

Avant de nous poursuivons, voici le diagramme de Brochage - il pourrait être utile plus tard. Notez que les numéros de broches visés au code sont les numéros GPIO, pas le D0-16 probablement écrit sur votre PCB de la carte. Si vous absolument, positivement ne peut pas comprendre pourquoi un capteur ne fonctionne pas, vous avez probablement mélangé les numéros de broches vers le haut.

NodeMCU__v1.0_pinout

Quick Smart Sensor Accueil avec MQTT et DHT11

Voici un exemple pratique, vous pouvez mettre à utiliser à distance pour surveiller directement votre maison. Nous ajouterons un capteur de température et d`humidité DHT11, rapports alors les valeurs en utilisant le protocole MQTT sur le réseau Wi-Fi, dans mon cas à un système domotique bricolage OpenHAB (sinon, vous pouvez lire notre Un guide pour débutants se OpenHAB et en cours d`exécution sur un Raspberry Pi, et la partie 2, qui traite spécifiquement l`installation d`un serveur MQTT).Mise en route avec OpenHAB Home Automation sur Raspberry PiMise en route avec OpenHAB Home Automation sur Raspberry PiOpenHAB est une plate-forme domotique source mature, ouverte qui fonctionne sur une variété de matériel et est le protocole agnostique, ce qui signifie qu`il peut se connecter à presque tout matériel domotique sur le marché aujourd`hui.Lire la suite

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

Téléchargez ces bibliothèques MQTT et DHT. Même si vous avez déjà, télécharger ceux-ci de toute façon, sauvegarde ce que vous avez, et écraser avec ces derniers. La dernière bibliothèque DHT11 de Adafruit utilise un algorithme automatique pour déterminer la vitesse à laquelle les données sont lues à partir du capteur, mais il est buggy ESP8266 et 90% des résultats de temps dans des lectures faussées.

Avec l`ancienne version 1.0 de la bibliothèque, j`ai inclus dans le téléchargement, vous pouvez modifier manuellement la synchronisation: 11 fonctionne le mieux pour ces ESP2866 conseils. Je suis aussi allé à travers de nombreuses copies de la bibliothèque MQTT en essayant de trouver un bon rappeler fonction, enfin l`atterrissage sur celui inclus. Vous devrez redémarrer l`IDE Arduino après avoir remplacé ces derniers.

Voici le code complet du projet. Au sommet sont toutes les variables dont vous avez besoin de changer, y compris les détails Wi-Fi, serveur MQTT (une URL peut être utilisée à la place si vous utilisez un serveur cloud, mais il n`y a pas d`authentification en place), et les canaux de publier des données sur.

Video: Загрузка файлов в файловую систему ESP8266 с помощью Arduino IDE

/ * ESP8266 + MQTT Humidité et noeud de température
* Peut également recevoir Commands- régler la fonction MessageReceived ()
* Voir MakeUseOf.com pour guide complet de construction et instructions
* Auteur: James Bruce, 2015
* /
#comprendre
#comprendre
#comprendre
const char * = ssid "YOUR_SSID"-
const char * password = "VOTRE MOT DE PASSE!"-
char * subscribeTopic = "openhab / parentsbedroom / entrant"- // vous abonner à ce sujet-envoyé quoi que ce soit ici sera transmis dans la fonction MessageReceived
char * tempTopic = "openhab / parentsbedroom / température"- // sujet de publier des lectures de températures
char * humidityTopic = "openhab / parentsbedroom / humidité"- // publier des lectures d`humidité
const char * server = "192.168.1.99"- // serveur ou l`URL du courtier MQTT
Chaîne clientName = "la Chambre des parents-"- // juste un nom utilisé pour parler au courtier MQTT
long intervalle = 60000- // (ms) - 60 secondes entre les rapports
unsigned long resetPeriod = 86400000- // 1 jour - c`est la période après laquelle nous remettons en marche l`unité centrale de traitement, pour traiter les erreurs de fuite de mémoire impair
#define DHTTYPE DHT11 // DHT11 ou DHT22
#define DHTPIN 2
prevTime- unsigned long
DHT DHT (DHTPIN, DHTTYPE, 11) -
flotteur h, T-
WiFiClient wifiClient-
MQTTClient client-
Chaîne macToStr (const uint8_t * mac)
{
chaîne result-
pour (int i = 0 i lt; 6- ++ i) {
résultat + = String (mac [i], 16) -
si je lt; 5)
résultat + = `:` -
}
retour result-
}
void setup() {
Serial.begin (115200) -
dht.begin () -
client.begin (serveur, wifiClient) -
Serial.print ("Connexion à ") -
Serial.println (ssid) -
WiFi.begin (ssid, mot de passe) -
while (WiFi.status ()! = WL_CONNECTED) {
retard (500) -
Serial.print (".") -
}
Serial.println ("") -
Serial.println ("WiFi connecté") -
Serial.println ("Adresse IP: ") -
Serial.println (WiFi.localIP ()) -
// Générer le nom du client basé sur l`adresse MAC et le dernier 8 bits de microseconde counter
uint8_t mac [6] -
WiFi.macAddress (mac) -
clientName + = macToStr (mac) -
clientName + = "-"-
clientName + = chaîne de caractères (micros () & 0xFF, 16) -
Serial.print ("Connexion à ") -
Serial.print (serveur) -
Serial.print (" comme ") -
Serial.println (clientName) -
si (client.connect ((char *) clientName.c_str ())) {
Serial.println ("Relié au courtier MQTT") -
Serial.print ("Abonné à: ") -
Serial.println (subscribeTopic) -
client.subscribe (subscribeTopic) -
}
autre {
Serial.println ("MQTT Échec de la connexion") -
Serial.println ("Réinitialisera et essayez à nouveau ...") -
avorter()-
}
prevTime = 0
}
void loop () {
static int compteur = 0
if (intervalle prevTime + lt; Millis () || prevTime == 0) {
prevTime = Millis () -
Serial.println ("vérifier à nouveau") -
Serial.println (prevTime) -
h = dht.readHumidity () -
t = dht.readTemperature () -
h = h * 1.23-
t = t * 1.1-
// Vérifiez si un début a échoué et lectures de sortie (pour essayer de nouveau).
si (isnan (h) || isnan (t)) {
Serial.println ("Échec de lecture du capteur de DHT!") -
}
else if (! client.connected ()) {
Serial.println ("Connexion au courtier interruption de travail réessayant") -
}
autre{
char * TPayload = F2 (t, 0) -
char * hPayload = F2 (h, 0) -
Serial.println (t) -
Serial.println (h) -
Serial.println (TPayload) -
Serial.println (hPayload) -
client.publish (tempTopic, TPayload) -
client.publish (humidityTopic, hPayload) -
Serial.println ("les données environnementales publiées") -
}
}
client.loop () -
// remis à zéro après une journée pour éviter les fuites de mémoire
si (Millis () gt; resetPeriod) {
ESP.restart () -
}
}
/ * Flottant à chaîne
* F est le flotteur pour se transformer en une chaîne
* P est la précision (nombre de décimales)
* Retourner une représentation de chaîne du flotteur.
* /
char * F2 (float f, int) {p
char * pBuff- // utiliser pour rappeler quelle partie du tampon à utiliser pour dtostrf
const int iSize = 10 // nombre de tampons, un pour chaque flotteur avant enroulement autour
omble sBuff [iSize] [20] statique - // espace pour 20 caractères NULL pour chaque terminaison flotteur
= Statique int iCount // 0- garder un onglet de la prochaine place dans sBuff à utiliser
pBuff = sBuff [iCount] - // utiliser ce tampon
si (iCount gt; = iSize -1) {// vérifier wrap
iCount = // si 0- emballage nouveau départ et remise à zéro
}
autre{
iCount ++ - // avance le compteur
}
retourner dtostrf (f, 0, p, pBuff) - // appeler la fonction de bibliothèque
}
annuler MessageReceived (sujet String, charge utile chaîne, octets char *, longueur unsigned int) {
Serial.print ("entrant: ") -
Serial.print (sujet) -
Serial.print (" - ") -
Serial.print (charge utile) -
Serial.println () -
}
Voir rawesp8266_mqtt_humtemphosted avec ❤ par GitHub

Voici comment cela fonctionne et quelques notes:

  • Tout d`abord nous connecter au réseau Wi-Fi, puis sur le serveur MQTT, puis commencer la principale boucle().
  • Dans la boucle, nous sondons le DHT capteur toutes les 60 secondes et publier des lectures aux canaux de MQTT pertinents. Encore une fois, si vous trouvez la plupart des lectures résultats dans un message d`échec, vous avez la mauvaise version de la bibliothèque DHT - downgrade v1.0.
  • client.loop () passe la commande à la bibliothèque MQTT, ce qui lui permet de réagir aux messages entrants.
  • Il y a un message reçu() fonction où nous traitons les messages entrants - faire une simple instruction if pour comparer la charge utile avec le message que vous vous attendez. Vous pouvez l`utiliser pour activer un relais, par exemple.
  • Après l`exécution de ces quelques jours, j`ai trouvé qu`ils cesseraient au hasard de travail - Je suppose que cela est une sorte de fuite de mémoire, mais étant donné que je n`ai pas les compétences de codage pour faire face à cela et il serait peut-être avec les bibliothèques de base, je « ai opté pour un simple soft reset tous les jours. Exactement un jour après les nœuds capteurs sont d`abord activés, ils se remettre en marche.
  • Lors de la mise sous tension de ces modules bon marché de DHT11 de 3.3v, les valeurs d`humidité sont bien inférieurs à ce qu`ils devraient être. J`ai résolu ce problème avec une simple multiplication et étalonnés par rapport à un capteur commercial. Je vous conseille de confirmer contre votre propre source connue aussi, avant de se fonder sur les lectures. Sinon, mettez-les avec 5V - mais vous devez placer un décalage de niveau logique 5v-3.3v entre la broche de données et la ESP8266, ou vous endommager.

Si tout va bien, vous devriez maintenant recevoir les lectures des capteurs dans votre courtier MQTT, et peut aller de l`avant avec la connexion à ces OpenHAB comme indiqué dans partie 2 du guide de notre débutant, où je vous ai aussi montré comment représenter graphiquement les données.Guide de OpenHAB débutant Partie 2: ZWave, MQTT, Règles et ChartingGuide de OpenHAB débutant Partie 2: ZWave, MQTT, Règles et ChartingOpenHAB, le logiciel domotique open source, dépasse de loin les capacités d`autres systèmes d`automatisation de la maison sur le marché - mais il est difficile de se mettre en place. En fait, il peut être carrément frustrant.Lire la suite

graphique humdity de openhab

Adieu Arduino, nous te aimait. Just kidding: pas partout dans ma maison peut même obtenir une connexion Wi-Fi, donc pour ces endroits, je vais quand même besoin d`un réseau maillé avec Arduino et récepteurs RF. Mais qu`allez-vous faire avec ESP8266? Tous les projets utilisant ESP8266 vous aimeriez voir rédigé à MakeUseOf? Faites le nous savoir dans les commentaires!

Articles connexes