Luka Code

Lis 31/31: Meka Nzoto na Malili na Wi-Fi na kosalela DHT11 mpe ESP01 SunFounder Kit

Lis 31/31: Meka Nzoto na Malili na Wi-Fi na kosalela DHT11 mpe ESP01 SunFounder Kit

Module ya ESP8266 ESP01

Mayek oyo ozwaka awa ekoki kozwama mpo na misala mingi. Esaleli oyo esengeli mpo na misala mingi ya malamu, lokola:

  • Kokela esika ya kotalela mosika mpo na elanga to elanga ya nkasa mpo na komeka ete biloko ezali kokola malamu.
  • Kokela sioso ya ndako mpo na kotalela klima na shambre moko, lokola shambre ya vino to shambre ya mwana.
  • Kokela esaleli ya kotya ba données ya environnement na ntalo moke mpo na projɛ ya siansi ya kelasi.
  • Kokela sioso ya libateli to ya kokebisa oyo ekoki koyebisa yo mbala moko soki température ebongwani.

Biloko ya Matériel

Mpo na kolanda projɛ oyo, okosengela biloko oyo elandi. Biloko ya liboso ezali module ya ESP8266 mpe senseur ya DHT11, kasi biloko mosusu ezali mpo na programmation mpe mpo na kopesa nguya na module.

  • Module ya ESP8266 (ESP-01S): Microcontrôleur ya kati oyo ezali na capacité ya Wi-Fi.
  • Senseur ya température mpe ya humidité DHT11: Senseur oyo emekaka ba données ya environnement.
  • Arduino Uno Board (mpo na conversion USB-to-Serial): Na projɛ oyo, board ya Arduino ezali kosalelama te mpo na nguya na yango ya processing. Kasi, chip na yango ya USB-to-serial ezali kosalelama mpo na programmation ya module ya ESP8266.
  • Résistance ya 330-ohm: Esalelamaka mpo na test ya liboso ya LED mpo na kokanga courant.
  • Résistance ya 1k-ohm to 10k-ohm: Résistance ya pull-up mpo na ligne ya données ya senseur DHT11.
  • LED mpe ba fils ya jumper: Mpo na phase ya test mpe mpo na kosala ba connexions nyonso.
  • Breadboard: Mpo na kosala ba connexions ya circuit.

Guide ya Wiring

Wiring ya esp8266 ESP01 mpe DHT11 mpo na lesson 31 ya Sunfounder 3-in-1 course

Processus ya wiring esalemaka na ba étapes. Liboso, tokosala circuit ya liboso mpo na programmation ya ESP-01. Oyo esengeli kosalela Arduino Uno lokola programmeur. Vidéo emonisaka setup oyo polele. Ba connexions ya liboso ezali oyo elandi:

Mpo na kokota na mode ya programmation, esengeli okangisa IO1 (GPIO1) na Ground (GND). Oyo eyebisaka ESP8266 ete ezela firmware ya sika. Ba connexions mosusu mpo na programmation ezali:

  • VCC (3.3V) na EN (Enable): Oyo epesaka nguya na module.
  • GND na GND: Ground ya commune mpo na circuit.
  • VCC (5V) na VCC (5V): Mpo na kopesa nguya na board ya programmeur.
  • RX (ESP) na TX (Arduino): Mpo na communication série kobanda na programmeur kino na module.
  • TX (ESP) na RX (Arduino): Mpo na communication série kobanda na module kino na programmeur.
  • RST (Reset) na GND: Oyo ezali connexion ya mwa moke oyo esalelamaka mpo na kozongisa module na esika na yango nsima ya programmation.

Nsima ya programmation ya ESP-01, wiring mpo na senseur ezali pete. Senseur ya DHT11 esengeli résistance ya pull-up na ligne na yango ya données mpo na komeka ete communication ezali ya semba.

Mpo na setup ya senseur, wiring ezali oyo elandi:

  • DHT11 VCC (Pin 1) na 3.3V: Nguya mpo na senseur.
  • DHT11 DATA (Pin 2) na GPIO2 (IO2) na ESP-01: Ligne ya données mpo na ba mesures ya senseur. Résistance ya pull-up ya 1k-ohm to 10k-ohm esengeli kokangama kati na ligne ya données oyo mpe ligne ya nguya ya 3.3V.
  • DHT11 GND (Pin 4) na GND: Ground ya commune mpo na senseur.

Kobongisa Arduino IDE

Mpo na programmation ya ESP8266, esengeli liboso okotisa support ya board na yango na Arduino IDE na yo. Oyo esalemaka na ba étapes mibale:

  1. Kotisa URL ya Board Manager: Kende na File > Preferences. Na esika ya "Additional Boards Manager URLs", pésa URL oyo elandi: http://arduino.esp8266.com/stable/package_esp8266com_index.json mpe klik "OK".
  2. Kotisa package ya Board ya ESP8266: Kende na Tools > Board > Boards Manager.... Luka "esp8266", luka "esp8266 by ESP8266 Community", mpe klik "Install". Nsima ya installation, okoki kopona board na Tools > Board > ESP8266 Boards > Generic ESP8266 Module.

Kotisa Bibliothèque ya Senseur DHT

Code etyelaka libateli mpo na kosolola na senseur ya DHT11. Bibliothèque oyo esengeli kotiama na Arduino IDE na yo.

  1. Kende na Tools > Manage Libraries....
  2. Luka "DHT sensor library".
  3. Luka bibliothèque oyo esalemaki na Adafruit mpe klik "Install". Bibliothèque oyo ekomisaka pete processus ya kotanga ba données kobanda na senseur.

Projɛ 1: Test ya Blink ya LED

Libosá na kokoma na mosala ya senseur, esengeli mpo na kolakisa ete okoki koprograma ESP-01 na ndenge ya malamu. Esalemi na ndakisa ya "Blink" ya kala. Vidéo emonisi ndenge ya kobimisa fichier ya compilé mpe kosalela fichier ya batch moko ya mosika mpo na koflasher, oyo ezali ndenge ya kosalela mpo na configuration ya USB-to-serial. Ntina ezali komona LED ya libanda ezali kobwaka, mpo na kondima ete chaîne ya programmation ezali kosala. Mpo na kopelisa module na nsima ya programmation, esengeli kokabola nsinga oyo ekangisi IO1 na GND, na nsima kokangisa pin ya RST na GND mwa moke mpo na kofungola module.

Projet 2: Kotanga DHT11 na Serial Monitor

Ntango programmation ekomi kondimama, etape oyo elandi ezali kokangisa senseur ya DHT11 mpe kotanga ba données na yango. Projet oyo esalelaka ndakisa ya DHTtester oyo euti na bibliothèque ya senseur ya Adafruit DHT. Code esalemi mpo na kosalela pin ya malamu mpe lolenge ya senseur. Na nsima ya koflasher programme oyo, okoki kofungola Serial Monitor (okoma na 9600 baud) mpo na komona ba lectures ya température mpe ya humidité.

Projet 3: Kobongisa Serveur Web

Projet ya suka esangisaka makambo nyonso. ESP8266 eprogramami mpo na kokangama na réseau Wi-Fi ya ndako na yo mpe koyamba page web moko ya pete. Page oyo emonisaka ba lectures ya température mpe ya humidité na ntango ya sika. Code ezali version modifiée ya ndakisa ya ESP8266 "HelloServer". Vidéo emonisi ndenge ya kozwa ba données oyo na kokoma adresse IP ya appareil to nkombo ya mDNS na yango (ndakisa, robojaxDHT.local) na navigateur web na appareil nyonso oyo ekangami na réseau moko.

Explication ya Code

Lokola programme mobimba ezali ya kokitisama, eteni oyo elobelaka ba variables ya utilisateur oyo esengeli kobongola mpo na réseau mpe préférences na yo. Code ezali version modifiée ya ndakisa ya ESP8266 "HelloServer". Logique ya liboso ezali kotanga senseur mpe kobongisa page HTML mpo na komonisa ba données.

Tala ba parties ya ntina ya code oyo esengeli kobongola:

// Ba identifiants ya Wi-Fi - OSENGELI KOBONGOLA BANGO
const char* ssid = "YourWiFiSSID"; // Bongola na nkombo ya réseau Wi-Fi na yo
const char* password = "YourWiFiPassword"; // Bongola na mot de passe ya Wi-Fi na yo

Eteni oyo ezali ya ntina mingi mpo na kobongola. Ba variables ssid mpe password esengeli kokokana na réseau Wi-Fi ya ndako na yo na ndenge ya malili. Nkombo ya Wi-Fi ezali na ba lettres ya minene mpe ya mike, yango wana tia likebi mpo na kokoma yango na ndenge ya malamu.

// Configuration ya senseur DHT11
#define DHTPIN 2     // Pin ya digitale oyo ekangami na senseur ya DHT (GPIO2)
#define DHTTYPE DHT11   // Lolenge ya senseur DHT 11

Ba définitions oyo ebongisaka senseur. DHTPIN ezali pin ya GPIO na ESP8266 oyo nsinga ya ba données ya senseur ekangami na yango (oyo ezali GPIO2 na guide oyo). DHTTYPE elakisi lolenge ya senseur. Soki ozalaki kosalela senseur ya DHT22, okoki kolongola commentaire na ligne ya DHT22 mpe kotia commentaire na oyo ya DHT11.

// Ba variables oyo esengeli kobongola
const long interval = 3000; // ba millisecondes kati na ba lectures ya senseur
char temperature[] = "00.0";
char humidity[] = "00.0";

Variable interval ekolakisa mbala na mbala oyo senseur etangamaka mpe page web ebongisamaka. Valeur ya liboso ezali 3000 millisecondes (3 secondes). Okoki komatisa yango na valeur ya likolo lokola 5000 to 10000 mpo na kokitisa mbala ya mise à jour.

Code ezali mpe na fonction moko oyo ebongisaka lecture ya température. Okoki kopona kolakisa température na Celsius to Fahrenheit na kobongola logique na fonction sendTemperature(). Vidéo elobi ete variable Tvalue ezali ya kosimba valeur ya Celsius, kasi okoki kobongola yango mpo na kosalela variable ya Fahrenheit F na esika na yango.

Démonstration ya Projet na Ntango ya Sika

Na vidéo, projet oyo esili kolakisa. Na nsima ya koflasher code mpe kofungola module, ekokangama na réseau Wi-Fi. Serial Monitor emonisaka état ya connexion mpe adresse IP ya appareil. Na kokende na adresse IP oyo na navigateur web, okoki komona page moko ya pete oyo emonisaka température mpe humidité ya sika. Démonstration emonisaka ba lectures oyo ezali kobongwana na ntango ya sika. Ntango senseur ya DHT11 epelisamaka na pistolet ya mpasi, lecture ya température na page web ematamaka na ndenge yango. Soki nsinga ya ba données ya senseur ekabwani, page emonisaka "None" mpo na ba valeurs ya senseur, oyo ezali lisalisi moko ya malamu mpo na koluka problème.

Ba Chapitres

  • [00:00] Introduction na Projet
  • [01:33] Kososola ESP8266 mpe ba Serveurs Web
  • [05:47] Kokangisa ESP-01 mpo na Programmation
  • [08:51] Kotiya Support ya ESP8266 Board na Arduino IDE
  • [11:47] Projet 1: Kobwaka LED na ESP8266
  • [20:28] Kokangisa Senseur ya DHT11
  • [22:34] Kotiya Bibliothèque ya Senseur ya DHT
  • [23:13] Projet 2: Kotanga DHT11 na Serial Monitor
  • [30:10] Explication ya Code mpo na Projet ya Serveur Web
  • [36:14] Projet 3: Koflasher Code ya Serveur Web
  • [38:42] Démonstration: Komona Température na Wi-Fi
  • [41:43] Conclusion mpe Koluka Problèmes

Images

ESP8266 ESP01 module
ESP8266 ESP01 module
ESP8266 ESP01 and DHT11 wiring for lesson 31 Sunfounder 3-in-1 course
ESP8266 ESP01 and DHT11 wiring for lesson 31 Sunfounder 3-in-1 course
895-Lesson 31/31: DHT11 and ESP01 over WiFi code
Langue: C++

 /*
 * Display temperature using DHT11, DHT22 with NodeMCU ESP8266 
 * over WiFi in local network on computer o mobile devices
 * 
 * Written by Ahmad Shamshiri on Sep 27, 2019
 * in Ajax, Ontario, Canada
 * Watch video instruciton for this video: https://youtu.be/1A4-6hDARQc
 * 
 * I have combined DHT library of Adafruit with ESP8266 WebServer both links 
 * Adafruit DHT library on GitHub: https://github.com/adafruit/DHT-sensor-library
 * and 
 * ESP8266 on GitHub : https://github.com/esp8266/Arduino
 * Download and resource page https://robojax.com/RJT614

 * 
Get this code and other Arduono codes from Robojax.com


 * Code is available at https://robojax.com/RJT614
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>. 

*/

const int refresh=3;//3 seconds
// DHT settings starts
#include "DHT.h"
#define DHTPIN 2     // what digital pin we're connected to
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
float tValue, hValue;// 
char *simipleName="robojaxDHT";//android
// ****** DHT settings end (Robojax.com )


#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

#ifndef STASSID
#define STASSID "Robojax" // Your WiFi SSID
#define STAPSK  "100%Right" //Your WiFi password
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

ESP8266WebServer server(80);


void sendTemp() {

  String page = "<!DOCTYPE html>";
  page +="    <meta http-equiv='refresh' content='";
  page += String(refresh);// how often temperature is read
  page +="'/>";  
  page +="<html dir=\"rtl\">";
  page +="<body>"; 
  page +="<h1>&#1585;&#1591;&#1608;&#1576;&#1578; &#1608; &#1581;&#1585;&#1575;&#1585;&#1578; &#1578;&#1608;&#1587;&#1591; &#1583;&#1740; &#1575;&#1670; &#1578;&#1740;</h1>";
      
  page +="<p style=\"font-size:150px;\">&#1581;&#1585;&#1575;&#1585;&#1578;<br/>";  
  page +="<span style=\"color:red; font-size:150px;\">";
  page += String(tValue, 2);
  page +="&#176C</p>";

  page +="<p style=\"font-size:150px;\">&#1585;&#1591;&#1608;&#1576;&#1578;<br/>";  
  page +="<span style=\"color:red; font-size:150px;\">";
  page += String(hValue, 2);
  page +="%</p>";  
      
  page +="</body>";  
  page +="</html>";  
 server.send(200,  "text/html",page);

}

void handleNotFound() {
 
  String message = "File Not Found";
  message += "URI: ";
  message += server.uri();
  message += "Method: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "Arguments: ";
  message += server.args();
  message += "";
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " " + server.argName(i) + ": " + server.arg(i) + "";
  }
  server.send(404, "text/plain", message);

}

void setup(void) {
  // Robojax.com code for ESP8266 and DHT11 DHT22
   dht.begin();
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  if (WiFi.status() == WL_CONNECTED)
  {
    uint8_t macAddr[6];
    WiFi.macAddress(macAddr);
    Serial.printf("Connected, mac address: %02x:%02x:%02x:%02x:%02x:%02x", macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]);
  }  
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin(simipleName)) {
    Serial.print("or view http://");
    Serial.println(simipleName);
  }

  server.on("/", sendTemp);

  server.on("/inline", []() {
    server.send(200, "text/plain", "this works as well");
  });

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
}

void loop(void) {
  // Robojax.com code for ESP8266 and DHT11 DHT22
  server.handleClient();
  MDNS.update();//multicast DNS
  float c = dht.readTemperature();// Read temperature as Celsius (the default)
  float h = dht.readHumidity();// Reading humidity 
  float f = dht.readTemperature(true);// Read temperature as Fahrenheit (isFahrenheit = true)
    Serial.print(c);
    Serial.println(F("°C "));
 tValue =c;//save temperature for display
 hValue =h;//save humidity for display
  delay(300);// change this to larger value (1000 or more) if you don't need very often reading
  // Robojax.com code for ESP8266 and DHT11 DHT22
}

Mokili na bisika

Pas encore de ressources.

Fichiers📁

Koodu ya Arduino (.ino)

Fritzing File

Manuel de l'utilisateur