Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:09
V tem nizu navodil bomo pogledali, kako z uporabo preprostega ESP8266 za dvigovanje težkih delov in senzorja temperature/vlažnosti DHT11 sestaviti temperaturno sondo, ki podpira WiFi. Uporabili bomo tudi tiskano vezje, ki sem ga ustvaril, in je zdaj naprodaj tudi v trgovini tindie kanala, če ga želite kupiti.
Začnimo z gradivom, ki ga boste potrebovali:
ESP8266 WiFi modul
amzn.to/2pkGPoa
Senzor DHT11
amzn.to/2phwfhO
Pametni vtič TP-Link
amzn.to/2GElQUz
Celoten modul lahko prevzamete tudi v trgovini tindie za kanal:
www.tindie.com/products/misperry/wifi-enab…
Oglejte si tudi JLCPCB za izdelavo PCB. To so tisti, ki sem jih uporabljal za izdelavo tiskane plošče:
Brezplačna dostava pri prvem naročilu in izdelava PCB v vrednosti 2 USD na
1. korak: Dodajanje kode v ESP8266
Zdaj bomo morali naslednjo kodo utripati na ESP8266. To kodo lahko najdete v naslednjem skladišču github:
V spodnji kodi boste morali nastaviti le nekaj zgornjih razdelkov definicij:
Strežnik MQTT:
Uporabnik MQTT:
Geslo MQTT:
MQTT_sensor_topic:
-Wifi
Rečeno: omenjeno omrežje WiFi, s katerim se povezujete
Geslo: geslo za WiFi.
Ko to izpolnite v spodnji kodi, jo lahko sestavite in preverite, ali so napake, če pa je napaka 0, jo lahko vstavite v ESP8266.
/ * * Ime datoteke: TempHumSensor.ino * * Aplikacija: Termostat grelnika prostora z domačim pomočnikom * * Opis: Ta koda je za napravo, združljivo z arduino *, ki podpira ESP8266 WiFi. To bo posredovalo podatke o temperaturi * naprave DHT11 na vmesnik HASS za obdelavo. * * Avtor: M. Sperry - https://www.youtube.com/misperry * Datum: 03/ * Revizija: 1.0 * * */
#vključi
#include #include #include #include #include
#define CON_TIME_OUT 20 // Časovna omejitev brez povezave z wifi
#define MQTT_TIME_OUT 10 // Časovna omejitev brez povezave s strežnikom MQTT
#define DHTPIN 0 // Pin, ki je povezan s tipalom DHT
#define DHTTYPE DHT11 // Tip senzorja je DHT11, lahko ga spremenite v DHT22 (AM2302), DHT21 (AM2301)
#define mqtt_server "" // Vnesite dodatek ali IP strežnika MQTT. V tem polju uporabljam svoj naslov DuckDNS (vaše ime.duckdns.org)
#define mqtt_user "" // vnesite uporabniško ime za MQTT #define mqtt_password "" // vnesite geslo #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // Vnesite temo za vaš MQTT
// Wifi: SSID in geslo
const char* ssid = ""; const char* geslo = "";
// Nastavitev DHT
DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t zakasnitevMS;
WiFiClient wifiClient;
Odjemalec PubSubClient (wifiClient);
// funkcija za objavo temperature in vlažnosti
void publishedData (float p_temperature) {// ustvarite objekt JSON // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: podatke je treba pretvoriti v niz; pride do težave pri uporabi plovcev … // pretvori v fahrenheitovo p_temperature = (p_temperature * 1.8) + 32; // pretvori v fahrenheit root ["temperature"] = (niz) p_temperature; root.prettyPrintTo (serijski); Serial.println ("");
podatki char [200];
root.printTo (podatki, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, podatki, res); }
// funkcija poklicana, ko je prispelo sporočilo MQTT
void povratni klic (char* p_topic, byte* p_payload, unsigned int p_length) {}
void reconnect () {
// Zanka, dokler se znova ne povežemo while (! Client.connected ()) {Serial.print ("INFO: Poskus povezave MQTT …"); // Poskus povezave if (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: povezan"); } else {Serial.print ("NAPAKA: neuspešna, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: poskusite znova čez 5 sekund"); // Počakajte 5 sekund, preden zamudite ponovni poskus (5000); }}}
void setup (void) {
Serial.begin (9600);
// Začnemo s povezavo v omrežje WiFi
Serial.println (); Serial.println (); Serial.print ("Povezovanje z"); Serial.println (ssid);
WiFi.begin (ssid, geslo);
medtem ko (WiFi.status ()! = WL_CONNECTED) {
zamuda (800); Serial.print ("."); }
Serial.println ("");
Serial.println ("WiFi povezan"); Serial.println ("naslov IP:"); Serial.println (WiFi.localIP ()); // init za povezavo odjemalca MQTT client.setServer (mqtt_server, 1883); client.setCallback (povratni klic);
// Inicializirajte senzor DHT
dht.begin (); Serial.println ("Podatki o enotnem senzorju DHT11");
// Natisni podrobnosti senzorja temp
senzor_t senzor; dht.temperature (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Temperatura"); Serial.print ("Senzor:"); Serial.println (ime senzorja); Serial.print ("Driver Ver:"); Serial.println (senzorska.verzija); Serial.print ("Enolični ID:"); Serial.println (sensor.sensor_id); Serial.print ("Največja vrednost:"); Serial.print (sensor.max_value); Serial.println (" *C"); Serial.print ("Najnižja vrednost:"); Serial.print (sensor.min_value); Serial.println (" *C"); Serial.print ("Ločljivost:"); Serial.print (ločljivost senzorja); Serial.println (" *C"); Serial.println ("------------------------------------"); // Natisnite podrobnosti senzorja vlažnosti. dht.humidity (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Vlažnost"); Serial.print ("Senzor:"); Serial.println (ime senzorja); Serial.print ("Driver Ver:"); Serial.println (senzorska.verzija); Serial.print ("Enolični ID:"); Serial.println (sensor.sensor_id); Serial.print ("Največja vrednost:"); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print ("Najnižja vrednost:"); Serial.print (sensor.min_value); Serial.println ("%"); Serial.print ("Ločljivost:"); Serial.print (ločljivost senzorja); Serial.println ("%"); Serial.println ("------------------------------------");
// Nastavitev zakasnitve med odčitki senzorja glede na podrobnosti senzorja
zakasnitevMS = senzor.min_delay / 1000; }
void loop (void) {
plavajoča temperatura;
if (! client.connected ())
{ponovno povežite (); }
zamuda (delayMS);
// Pridobite temperaturni dogodek in natisnite njegovo vrednost.
sensors_event_t dogodek; dht.temperature (). getEvent (& event); if (isnan (event.temperature)) {Serial.println ("Napaka pri branju temperature!"); temperatura = 0,00; } else {temperatura = dogodek.temperatura; Serial.print ("Temperatura:"); Serijski.tisk (temperatura); Serial.println (" *C"); } // objavi v MQTT publishedData (temperatura); }
2. korak: Nastavitev pametnega vtiča TP-LINK
Pametni vtič TP-LINK ali kateri koli pametni vtič za to napravo boste morali nastaviti tako, kot priporoča proizvajalec.
Bodite pozorni na naslov MAC v napravi. Če je vaša naprava podobna moji napravi TP-LINK, ne morete vzpostaviti statičnega naslova IP. Tako boste morali usmerjevalnik konfigurirati za rezervacijo DHCP. To bo vzelo naslov MAC vaše naprave in ko bo naprava zahtevala naslov, bo usmerjevalnik vsakič dal isti naslov.
Tukaj je povezava, kako to nastaviti s programom Linksys
www.linksys.com/us/support-article?article…
3. korak: Nastavitev domačega pomočnika
Zdaj nastavite pomočnika za dom. Za to boste morali datoteki configuration.yaml, ki se nahaja v /home/homeassistant/.homeassistant strukturi map v napravi, v katero ste jo namestili, dodati naslednje konfiguracije.
Ko to dodate v konfiguracijo domačega pomočnika, boste morali znova zagnati programsko opremo domačega pomočnika, da bodo spremembe vplivale.
Uporabil bom tudi pametni vtič TP-LINK za stikalno napravo, definicija pa je spodaj v konfiguracijski datoteki. Naslov IP, ki se uporablja za napravo, je tisti, ki ste ga nastavili za rezervacijo DHCP v prejšnjem koraku.
To konfiguracijo lahko najdete tudi na naslednjem github repo:
mqtt: stikalo: - platforma: ime tplink: Grelec spalnice gostitelj: 192.168.2.11
senzor 1:
platforma: mqtt state_topic: 'ha/bedroom_temp' ime: Temp. spalnice Temp_mere: '° F' value_template: '{{value_json.temperature}}'
avtomatizacija:
- vzdevek: _Temp Spalnica Temp Visoki sprožilec: - platforma: numeric_state entity_id: sensor. Bedroom_Temp zgoraj: 73
dejanje:
storitev: homeassistant.turn_off entity_id: switch. Bedroom_Heater
- vzdevek: _Temp Spalnica Temp
sprožilec: - platforma: numeric_state entity_id: sensor. Bedroom_Temp spodaj: 73 action: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater
4. korak: Zadnji koraki
S konfiguracijo domačega pomočnika in nastavljeno kodo Arduino boste pripravljeni aktivirati celoten sistem. Tako vtič grelnika/ventilatorja/hladilnika vstavite v pametni vtič in vtaknite v pametni vtič. Ko bo pripravljen, boste morali priključiti majhen polnilnik USB in nato temperaturno sondo, ki podpira WiFi. Ko je vse na spletu, bi morali pogledati na nadzorno ploščo domačega pomočnika in videti, kako se poroča o novi temperaturi.
Najlepša hvala za vso vašo pomoč in podporo. pustite like in obiščite kanal na naslovu https://www.youbue.com/misperry in poglejte, kaj vse imamo za vas. Če želite pomagati kanalu, se naročite in delite s prijatelji.
Priporočena:
Potenciometer in servo: nadzorovano gibanje z Arduinom: 4 koraki
Potenciometer in servo: Nadzirano gibanje z Arduinom: Najprej morate zbrati ustrezne materiale, da sestavite to vezje
2 potenciometra in 2 servomotorja: nadzorovano gibanje z Arduinom: 4 koraki
2 potenciometra in 2 servomotorja: nadzorovano gibanje z Arduinom: Najprej morate zbrati ustrezne materiale, da sestavite to vezje
MicroPython na poceni 3 USD ESP8266 WeMos D1 Mini za 2x temperaturno beleženje, Wifi in mobilno statistiko: 4 koraki
MicroPython na poceni 3 USD ESP8266 WeMos D1 Mini za beleženje 2x temperature, Wifi in mobilno statistiko: Z majhnim poceni čipom / napravo ESP8266 lahko beležite podatke o temperaturi zunaj, v sobi, rastlinjaku, laboratoriju, hladilnici ali na katerem koli drugem mestu popolnoma brezplačno. Ta primer bomo uporabili za beleženje temperature hladilnega prostora, znotraj in zunaj. Naprava bo
Pametni vtič ESP8266: 6 korakov
Smart Plug ESP8266: Bienvenue sur cet article qui a pour but de vous montrer un projet de domotique que j'ai réalisé. Ayant toujours adoré les choses automatiques et optimisées, j'ai décidé de créer moi-même mes prises connectées. Celles-ci sont commandees prek WiFi. La
Alexa Echo + ESP 8266 = Pametni vtič: 4 koraki (s slikami)
Alexa Echo + ESP 8266 = Pametni napajalni vtič: Ta navodila, ki uporabljajo ALEXA ECHO neposredni nadzor ESP8266. Moj strežnik podpira samo avtorizacijo ESP8266 na strežniku Amazon.Moj strežnik ne varnostno kopira vaših podatkov. Glasujte zame: D Hvala