Reparera Design möbel

Hemgjorda sensorer för arduino. Hemmagjorda rörelsesensorer (temperatur, luftfuktighet, belysning) för Smart Home baserade på MySensors-systemet. Lär känna Arduino

Kom ihåg att grunden för detta projekt är Arduino. Den utför ett antal viktiga funktioner: den läser data från IR-sensorn, bearbetar signaler, reagerar på rörelser och USB meddelar datorn om behovet av att skicka ett meddelande. I den här artikeln kommer vi att överväga två frågor:

  1. Ansluta en PIR-sensor till Arduino;
  2. Hur man ställer in relationen mellan sensorn och automatisk e-postsändning .
Krävs för projektet:
  • Arduino UNO (du kan välja på Aliexpress).
  • PIR-sensor.
  • Bradboard.
  • Bunt av trådar.

Alla listade föremål för montering kan ses på bilderna:

Först och främst behöver du en dator med internetuppkoppling. Vi använde Raspberry Pi.

Vi ansluter PIR-sensorn till Arduino-satsen:

För att utföra detta steg måste du ta ledningarna som kommer från sensorn och fästa dem på plattformen. Därefter kommer du att få ett foto med ett diagram:

Arbetar med en skiss

När rörelse uppstår bör Arduino som använder USB Serial skicka ett e-postmeddelande. Självklart, om du skickar ett e-postmeddelande med någon rörelse som inträffar kommer brevlådan att vara full. Därför fixade vi det så här, om det är en kort tid mellan två signaler kommer ett e-postmeddelande med följande text att skickas:

int pirpin = 7; int minSecsBetweenEmails = 60; // 1 min lång senastSend = -minSecBetweenEmails * 1000; void setup() ( pinMode(pirPin, INPUT); Serial.begin(9600); ) void loop() ( long now = millis(); if (digitalRead(pirPin) == HIGH) ( if (nu > (lastSend + minSecBetweenEmails * 1000)) ( Serial.println("RÖRELSE"); lastSend = now; ) else ( Serial.println("Too soon"); ) ) delay(500); )

« MinSecBetweenEmails" - denna variabel kan växlas till andra värden som är bekväma för användaren. Du kan till exempel ställa in intervallet till en minut, vilket innebär att nästa e-postmeddelande skickas först efter 60 sekunder.

"senaste skicka" hjälper dig att spåra när det senaste meddelandet skickades. Denna variabel initieras med ett negativt tal, vilket är lika med millisekunder, vilket indikeras i "MinSecBetweenEmails" . Som ett resultat får vi en garanti att efter att ha startat skissen i Arduino så kommer PIR-sensorn att starta omedelbart.

På grund av vad vi kan beräkna millisekunder, jämföra deras antal med tiden för den senaste sensoroperationen? Allt tack vare en inbyggd funktion som heter Millis. I händelse av att rörelse upptäcks, men lite tid har gått sedan den senaste aktiveringen av sensorn, kommer bokstäver med texten att skickas "För tidigt".

Denna funktion måste testas först. För att göra detta, öppna Seriell monitor. Låt oss se hur det ser ut härnäst:

Efter att du är övertygad om korrekt funktion kan du skriva ett program i Python, det används för att bearbeta signaler från plattformen.

Så här installerar du PySerial och Python:

Operativsystemet Linux har Python automatiskt installerat. Windows har inte den här funktionen, så du måste installera programmet själv. PySerial fungerar som ett bibliotek för att hjälpa till att kommunicera med Arduino.

Installerar Python:

Det är inte ovanligt att Python 3 orsakar problem när du arbetar med PySerial, speciellt om du använder Windows. För att undvika detta, istället för den tredje versionen, kan du ladda ner Python 2 .

Efter att ha slutfört installationen av programmet i Start-menyn kan du hitta en speciell grupp. När vi går vidare till måste vi samarbeta med Python med hjälp av kommandoraden. Därför är det bättre att omedelbart lägga till den önskade katalogen till PATH. Nedan kan du se en extra bild:

För att lägga till en katalog behöver vi: öppna kontrollpanelen, hitta avsnittet "Systemegenskaper" i den. Sedan trycker vi på tangenten, som kallas "Environment Variables" (Environment Variabes), ett fönster kommer att dyka upp framför oss. Längst ner på den ska det stå "Path", som måste väljas. Klicka nu på "Redigera" - Ändra och slutför processen genom att klicka på "variabelt värde". Du kan inte ta bort texten du fick, du bör lägga till följande inskription till den - ";C:\Python27". Glöm inte att sätta ";" efter varje mapp som anges i texten. Nu kontrollerar vi om ingången "Path" är korrekt. För att göra detta, skriv in ordet "python" på kommandoraden. Om det inte finns några fel visar skärmen följande bild:

Installera PySerial:

Oavsett vilket operativsystem som används, ladda ner installationspaketet .tar.gz för PySerial 2.6 från. Den här webbplatsen kan hjälpa dig att göra just det - //pypi.python.org/pypi/pyserial . Vi får en fil som heter pyserial-2.6.tar.gz. Om du använder Windows måste du packa upp filerna till den valda mappen. Detta är inte en vanlig ZIP-fil, du måste göra ytterligare steg - ladda ner 7-zip (du kan göra det här - //www.7-zip.org/ ). För ett Linux-system måste du använda en terminalsession, ge kommandot "CD" i den, ange namnet på mappen som du laddade ner pyserial-2.6.tar.gz till. För att packa upp måste du ange:

$ tar -xzf pyserial-2.6.tar.gz

Efter det måste du köra kommandot:

sudo python setup.py installera

Pytonorm

Du måste skapa ett separat program för att arbeta med Python. Du måste kopiera koden till en fil med samma namn - "movement.py". På Linux kan du använda "nano"-redigeraren, medan på Windows måste du skapa en fil med Python-redigeraren "IDLE". Den finns i startmenyn.

importtid import serieimport smtplib TO=" [e-postskyddad]"GMAIL_USER=" [e-postskyddad]" GMAIL_PASS = "lägg ditt lösenord här" SUBJECT = "Intrång!!" TEXT = "Din PIR-sensorrörelse upptäcktes" ser = serial.Serial("COM4", 9600) def send_email(): print("Skicka e-post") smtpserver = smtplib. SMTP("smtp.gmail.com",587) smtpserver.ehlo() smtpserver.starttls() smtpserver.ehlo smtpserver.login(GMAIL_USER, GMAIL_PASS) header = "Till:" + TO + "\n" + "Från: " + GMAIL_USER header = header + "\n" + "Ämne:" + SUBJECT + "\n" utskriftshuvud msg = header + "\n" + TEXT + " \n\n" smtpserver.sendmail(GMAIL_USER, TO, msg) smtpserver.close() medan True: meddelande = ser.readline() print(meddelande) om meddelande == "M" : send_email() time.sleep(0.5)

Detta visas på följande bild:

Efter ändringarna kommer programmet att börja använda kommandoraden:

pythonrörelse.py

Så installationen är klar.

Möjligheterna slutar inte där, det finns tillägg som gör att du kan ta emot meddelanden med temperaturrapporter eller annan information.

Bifogade filer :

Hemgjord temperatur- och fuktighetssensor DHT11 och DHT22 - ansluter till Arduino Biometriskt lås - montering av styrkortet och programmering av mikrokontrollern

God eftermiddag, idag ska jag dela med mig av instruktionerna för att göra en klocka med en rumstermometer ( Gör-det-själv-klocka på arduino). Klockan drivs av en Arduino UNO, och en WG12864B grafisk skärm används för att visa tid och temperatur. Som temperatursensor - ds18b20. Till skillnad från de flesta andra klockor kommer jag inte att använda RTS (Real Time Clock), men kommer att försöka klara mig utan denna extra modul.

Arduino-kretsar kännetecknas av sin enkelhet, och alla kan börja lära sig Arduino. Du kan läsa om hur du ansluter bibliotek och flash arduino i vår artikel.

Låt oss börja.

För att skapa den här klockan behöver vi:

Arduino UNO (eller något annat Arduino-kompatibelt kort)
- Grafisk skärm WG12864B
- Temperaturgivare ds18b20
- Motstånd 4,7 Kom 0,25 W
- Motstånd 100 ohm 0,25 W
- Batterifack för 4 AA-batterier
- Matchande låda
- liten fil
- Nagellack (svart eller kroppsfärg)
- Något tunn plast eller kartong
- Isoleringstejp
- Anslutningsledningar
- Kretskort
- Knappar
- lödkolv
- Löd, kolofonium
- Dubbelsidig tejp

Förbereder den grafiska skärmen.
Med anslutningen av skärmen, vid första anblicken, finns det många problem och svårigheter. Men om du först tar itu med deras typer blir det mycket lättare och tydligare. Det finns många varianter och typer av skärmar på styrenheten ks0107/ks0108. Alla skärmar är vanligtvis indelade i fyra typer:
Alternativ A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Alternativ B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ-skärmar AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway 4SGW1, Q86i LM422, Q86JW1, Q86I 6 4F, TM12864L-2, 12864J-1
Alternativ C: Shenzhen Jinghua Displays Co Ltd. JM12864
Alternativ D: Wintek- Cascades WD-G1906G, Wintek - GEN/WD-G1906G/KS0108B, Wintek/WD-G1906G/S6B0108A, TECDIS/Y19061/HD61202, Varitronix/MGLS19264/HD6122

Listan är inte komplett, det finns många av dem. Den vanligaste och, enligt min mening, bekväma WG12864B3 V2.0. Skärmen kan anslutas till Arduino via en seriell eller parallell port. När det används med en Arduino UNO är det bättre att välja en seriell portanslutning - då behöver vi bara 3 mikrokontrollerutgångar, istället för minst 13 linjer när den är ansluten via en parallellport. Allt hänger ihop helt enkelt. Det finns ytterligare en nyans, till försäljning kan du hitta två visningsalternativ, med en inbyggd potentiometer (för att justera kontrasten) och utan den. Jag valde, och jag råder dig att göra detsamma, med den inbyggda.


Detta minskar antalet delar och lödtiden. Det är också värt att sätta ett 100 ohm strömbegränsande motstånd för bakgrundsbelysning. Genom att koppla direkt 5 volt finns risk för att bakgrundsbelysningen bränns.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - +5V
4 (RS) - 10
5 (R/W) - 11
6(E)-13
15 (PSB) - GND
19 (BLA) - genom ett motstånd - + 5V
20 (BLK) - GND

Det bekvämaste sättet är att montera allt detta på baksidan av skärmen och ta 5 ledningar från den för att ansluta till Arduino UNO. I slutändan borde det se ut ungefär så här:


För den som ändå väljer en parallellkoppling ger jag en anslutningstabell.

Och diagrammet för skärmarna för alternativ B:



Flera sensorer kan anslutas till en kommunikationslinje. En räcker till vår klocka. Vi ansluter ledningen från "DQ"-stiftet på ds18b20 till "stift 5" på Arduino UNO.

Förberedelse av tavlan med knappar.
För att ställa in tid och datum på klockan använder vi tre knappar. För enkelhetens skull löder vi tre knappar på kretskortet och matar ut ledningarna.


Vi ansluter enligt följande: vi ansluter tråden som är gemensam för alla tre knapparna till "GND" Arduino. Den första knappen, den tjänar till att gå in i tidsinställningsläget och byta efter tid och datum, vi ansluter till "Pin 2". Den andra, öka värde-knappen, till "Pin 3", och den tredje, minska värde-knappen, till "Pin 4".

Att sätta ihop allt.
För att undvika kortslutning bör skärmen vara isolerad. Vi lindar den i en cirkel med elektrisk tejp, och på baksidan fäster vi en stång av isoleringsmaterial på en dubbelsidig tejp, skuren i storlek. Tjock kartong eller tunn plast duger. Jag använde plast från en papperstablett. Det visade sig följande:


På framsidan av skärmen, längs kanten, limmar vi dubbelhäftande tejp på en skumbas, gärna svart.


Ansluta skölden till Arduino:


Vi ansluter plus från batterifacket till "VIN" på Arduino, minus till "GND". Placera den på baksidan av Arduino. Före installation i väskan, glöm inte att ansluta temperatursensorn och knappkortet.


Förbereda och fylla i skissen.
Temperatursensorn kräver OneWire-biblioteket.

Skärmutgång görs genom U8glib-biblioteket:

För att redigera och fylla skissen måste du installera dessa två bibliotek. Detta kan göras på två sätt. Packa bara upp dessa arkiv och placera de uppackade filerna i mappen "bibliotek" som finns i mappen med Arduino IDE installerad. Eller det andra alternativet är att installera biblioteken direkt i programmeringsmiljön. Utan att packa upp de nedladdade arkiven, i Arduino IDE, välj menyn Sketch - Include Library. Högst upp i rullgardinsmenyn väljer du Lägg till .Zip-bibliotek. I dialogrutan som visas väljer du det bibliotek du vill lägga till. Öppna menyn Sketch - Include Library igen. Längst ner i rullgardinsmenyn bör du se det nya biblioteket. Nu kan biblioteket användas i program. Glöm inte att starta om Arduino IDE efter allt detta.

Temperatursensorn fungerar enligt One Wire-protokollet och har en unik adress för varje enhet – en 64-bitars kod. Det är inte praktiskt att leta efter den här koden varje gång. Därför måste du först ansluta sensorn till Arduino, fyll den med skissen som finns i menyn Arkiv - Exempel - Dallas Temperatur - OneWireSearch. Kör sedan Tools - Port Monitor. Arduino bör hitta vår sensor, skriva dess adress och aktuella temperaturavläsningar. Vi kopierar eller skriver helt enkelt ner adressen till vår sensor. Öppna skissen Arduino_WG12864B_Term, leta efter raden:

Byte addr=(0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97);//adress till min sensor

Vi skriver adressen till din sensor mellan lockiga hängslen och ersätter adressen till min sensor.

Stock:

//u8g.setPrintPos(44, 64); u8g.print(sek); // Mata ut sekunder för att kontrollera om draget är korrekt

Fungerar för att visa sekunder bredvid inskriptionen "Data". Detta är nödvändigt för att exakt ställa in tidsförloppet.
Om klockan är snabb eller efter bör du ändra värdet på raden:

If (micros() - prevmicros >494000) ( // ändra till något annat för att justera det var 500000

Jag bestämde empiriskt vid vilket nummer klockan är tillräckligt korrekt. Om din klocka är snabb bör du öka denna siffra, om du är efter, minska den. För att avgöra rörelsens noggrannhet behöver du utdata på sekunder. Efter exakt kalibrering av numret kan sekunder kommenteras ut och därmed tas bort från skärmen.

Jag har länge velat automatisera processen att torka badrummet efter badet. Jag hade många recensioner om ämnet luftfuktighet. Jag bestämde mig för att implementera (så att säga) en av metoderna för att hantera det. Förresten, på vintern torkar vi våra kläder i badrummet. Det räcker med att slå på avgasfläkten. Men att övervaka fläkten är inte alltid praktiskt. Så jag bestämde mig för att sätta automatisering på det här fallet. Den första implementeringsupplevelsen misslyckades. Recensionen var. Men jag gav inte upp...

När jag flyttade in i en ny lägenhet satte jag nästan direkt en fläkt med backventil i huven. En fläkt behövs för att torka badrummet efter badet. En backventil behövs för att förhindra att främmande lukter från grannar kommer in i lägenheten (när fläkten är tyst). Det händer. Alla ventilationskanaler är individuella, men cement sparades tydligen vid läggning. Förmodligen passerar lukten genom springorna.
Fläktar Jag har en mängd olika alternativ. Det finns enkla sådana, det finns med en timer (tidsintervalljustering), som på bilden.


Det är vad jag har använt till denna dag.
I just det här fallet (vem som inte har en fläkt med timer) kan allt göras på mjukvarunivå.
Eftersom jag bor i en lägenhet "myrstack" är det enda stället att torka kläder på balkongen. I badrummet kan det blekna. Torkning kräver antingen låg luftfuktighet eller luftcirkulation. Att uppfylla båda villkoren är det bästa alternativet. Fläkten skulle lösa detta problem. Till en början var det precis vad han gjorde. Det viktigaste är att inte glömma att stänga av den. Medan fläkten är igång är det nödvändigt att öppna fönstret något. Behöver du påminna om skolproblemet med en pool och två rör? För att luften ska gå in i huven är det nödvändigt att den kommer in i lägenheten någonstans ifrån. Vem som har träfönster, inte plast, kommer inte att vara några problem. Tillräckligt med sprickor. Men med plast förvandlas lägenheten till ett terrarium.
Det var då jag började fundera på att automatisera processen. Det var därför jag beställde sensorerna.
Jag har redan delat med mig av den sorgliga upplevelsen av att genomföra min idé. Här är den modulen. Det kan inte fungera i PRINCIP. Men ingenting kommer att finnas kvar. Och han kommer att användas.


(Strömförsörjningsspänning: 5V. Maximal belastning: 10A 250V AC och 10A 30V DC). Jag använder den som relälåda. För en vanlig fläkt räcker detta.
Jag ritade också ett diagram över modulen. Det blir inga anslutningsproblem.


Den röda lysdioden indikerar närvaron av matningsspänning. Grön - reläaktivering. Jag ersatte den värdelösa sensorn (fuktsensor, den finns inte längre) med ett 10kΩ motstånd. Och tillförde också mer motstånd. Det kommer att gå till det "smarta" blocket. Båda markerade i rött. Allt detta bör eliminera eventuella missförstånd. När allt kommer omkring drivs reläenheten med en spänning på 5V, och den "smarta" enheten drivs av 3,3V. Reläblocket styrs av en låg nivå. En hög nivå stänger av reläet (fläkten). Den fasta programvaran tar hänsyn till detta.
Kretsen är baserad på en komparator på LM393. Trimmermotståndet designades ursprungligen för att ställa in tröskeln för fuktighetsomkopplaren. Den kan behöva roteras lite.
Du kan använda enkla reläblock. De är till salu. Jag kommer att använda det som är kvar efter det senaste misslyckade försöket.
Det är dags att se i vilken form AM2302-sensorerna (DHT22) kom. Jag beställde tre på en gång. Jag tror inte att det är begränsat till badrummet. Det finns många idéer i mitt huvud. Var skulle bara hitta tid och lust att genomföra dem.


Sensorerna förseglades i antistatiska påsar. Allt i sinnet. Lödningen är snygg. Jag har inga klagomål på utseendet. Även brädan är tvättad.


Så här står det på butikssidan:

AM2302 Humicap digital temperatur- och fuktighetsmodul är en digital utsignal som innehåller en kalibrerad temperatur- och fuktighetssensor. Den använder en dedikerad digital moduler fånga teknologi och temperatur- och fuktighetssensorteknik för att säkerställa att produkter med hög tillförlitlighet och utmärkt långsiktig stabilitet. Sensorn inkluderar ett kapacitivt fuktavkännande element och en högprecisionstemperaturmätningsanordning, och med en högpresterande 8-bitars mikrokontroller ansluten. Därför har produkten utmärkt kvalitet, snabb respons, anti-interferensförmåga, höga kostnader och andra fördelar. Ultraliten storlek, låg strömförbrukning, signalöverföringsavstånd upp till 20 meter. Gör det till det bästa valet för alla typer av applikationer och även de mest krävande applikationerna.
Specifikation:
Mått: 40 x 23 mm
Vikt: 4g
Spänning: 5V
Port: digital tvåvägs enkelbuss
Temperaturområde: -40-80 °C ± 0,5 °C
Luftfuktighet: 20-90%RH±2%RH
Plattform: Arduino, SCM
Förpackningen innehåller:
3 x sensormodul
Åtminstone på delarnas styrelse. Sensorerna är ej separerbara, gick inte sönder.
Det är dags att börja jobba. En del av det jag kommer att använda har jag redan visat. Jag behöver också en 5V strömförsörjning. Jag kommer att göra den från en gammal (redan onödig) laddare till telefonen.

Denna laddare har ingen USB-port. Tja, det är väldigt gammalt (jag rekommenderar att du använder nyare, de har 5V-utgång). Därför är utgången 7V. Jag var tvungen att löda MC-stabilisatorn KREN5. Det är inget svårt i detta. Vem är vän med en lödkolv, han vet. Och vem är inte vänner, förgäves läser ämnet.


Var inte för rädd, jag gjorde en provisorisk. Efter att ha felsökt mekanismen kommer allt att se anständigt ut. Jag kanske byter laddare. Allt beror på resultatet som jag kommer i mål med. Jag kommer att installera det lokalt (permanent) efter en "omfattande testning". Du kan behöva använda vinter-/sommarversionen av programvaran. Luftens temperatur- och luftfuktighetsegenskaper på vintern/sommaren är olika.
Jag behöver också WIFI-modulen från den tidigare recensionen.


En omvandlarkabel (USB till RS232 TTL UART) är användbar för programmering av WIFI-modulen.


Blockschemat för min idé ser enkelt ut.


Men visst finns det nyanser.
Det återstår att göra ett program för att styra fläkten.
Flera villkor:
1. Fläkten startar när luftfuktigheten når mer än 68 %.
2. Arbetstid (timer) 5 minuter.
3. Överföra temperatur- och luftfuktighetsdata via WIFI (för säkerhets skull).
4. Lägesindikering via WIFI.
Om du stannar vid villkor nummer 1 räcker det med den enklaste Arduino. Men jag har bara ett Arduino-kort, och det finns tre WIFI-moduler :)
För mig personligen är det svåraste stället att förbereda programmet, lite (milt uttryckt) är inte mitt ämne. Men livet flödar och bär i sin gång allt fler massor av människor. Jag kommer att förstå de stora vidderna av Arduino med exemplet med en DHT22 fuktighetssensor och en WIFI-modul. Men om jag lyckades, då kan du också.
Först lite information för dummies som mig.
Arduino IDE-programmet saknas i inställningarna för de kort som jag kommer att använda. Till exempel behöver ESP8266 läggas till.

Lägger till komponenter på exemplet med ESP8266.

Först och främst laddade jag ner och installerade Arduino IDE på min dator. Sedan kör jag programmet.
Arkiv→ Inställningar→ Infoga länk i tillägg. länkar → klicka på OK. Länk:



Detta kräver en internetanslutning. Nödvändigtvis!
Sedan går jag till styrelsechefen.
Verktyg→Styrelse:...→Styrelsechef.


Hitta min modul Jag väljer den senaste versionen. Jag klickar på installera.


Det nedladdade Arduino IDE-programmet saknar också bibliotek för sensorer. Till exempel måste DHT22-biblioteket också läggas till.

Ansluta biblioteket med hjälp av DHT22-sensorn som exempel.

Först laddar jag ner ett arkiv som DHT.zip från Internet. Att hitta är inget problem.
Sedan startar jag Arduino IDE-programmet.
Skiss→ Inkludera bibliotek→ Lägg till zip-bibliotek.


En flik som denna visas.


Ange lagringsplats...Öppen.
Biblioteket är anslutet.


Det finns lite kvar att göra :)
Kopplingsschemat för fuktgivaren kan variera. Min kom som en modul med tre stift och motstånd redan installerade på kortet.

Och slutligen fylla skissen.

Skissfyllning.

Jag öppnar den färdiga skissen. I mitt fall, "WiFi-DHT22_AleksPoroshin68.ino.


Arduino IDE startar automatiskt.
Sedan ansluter jag programmeraren, går till verktygen och ansluter Com-porten. Den som den är ansluten till är markerad. Jag kommer att aktivera den. Det finns tre av dem på min netbook: dessa är com6, com8 och com10.


Jag lär mig firmware. Du kan ändra åtkomstnamn och lösenord.

Jag klickar på nedladdningsknappen.


Skissen håller på att sammanställas. Tillräckligt länge.


Vid denna tidpunkt måste du trycka på reset på den monterade modulkretsen.

Samtidigt är GPIO 00 på noll.
Här är själva skissen:
#omfatta #omfatta #omfatta #omfatta #inkludera "DHT.h" #define DHTPIN 4 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); float dhtTemp = NAN; float dht Fuktighet = NAN; int ledPin = 12; //GPIO 12 /* Ställ in dessa till dina önskade referenser. */ const char *ssid = "AleksPoroshin"; const char *lösenord = "12345678"; ESP8266WebServer server(80); /* Bara ett litet testmeddelande. Gå till http://192.168.4.1 i en webbläsare * ansluten till denna åtkomstpunkt för att se den. */ void handleRoot() ( String s = "\r\n ESP201"; s += " "; s += " "; //s += "Status - Åtgärder - Konfig"; s += "

ESP 201-modul

"; s += " "; if (isnan(dhtTemp)) s += " Temperatur: Läsfel"; annars ( s += " Temperatur: "; s += dhtTemp; s += " C"; ) if ( isnan(dhtHumidity)) s += " Fuktighet: Läsfel"; else ( s += " Fuktighet: "; s += dhtHumidity; s += " %"; ) if(digitalRead(ledPin) == HÖG) s + = "Avgas: Av"; else s += "Avgas: På"; s += ""; server.send(200, "text/html", s); ) void setup() ( delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Konfigurerar åtkomstpunkt. .."); /* Du kan ta bort lösenordsparametern om du vill att AP ska vara öppen. */ WiFi.softAP(ssid, lösenord); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP-adress : "); Serial.println(myIP); server.on("/", handleRoot); server.begin(); Serial.println("HTTP-server startade"); dht.begin(); Serial.println(" DHT22 init success"); pinMode(ledPin, OUTPUT); ) void loop() ( getDHT(); server.handleClient(); ) void getDHT() ( dhtTemp = dht.readTemperature(); dhtHumidity = dht.readHumidity() +5; if (dhtHumidity< 68) { digitalWrite(ledPin, HIGH); Serial.println("ledPin HIGH"); } else { digitalWrite(ledPin, LOW); Serial.println("ledPin LOW"); } }
Skäl inte för hårt. Jag lär mig bara.
Efter att ha laddat upp skissen för att bekräfta programmeringen ansluter jag GPIO:n till +3,3V. Sedan stänger jag av den. Den fasta programvaran är laddad.


Jag gör en layout på en brödtavla. Jag kollar allt. Arbetar. Men allt är inte så bra som det borde vara. I det intervall jag behöver underskattar kinesiska sensorer avläsningarna med 5-6%.


Jag har mer förtroende för den tyska skogsmaskinen. Ja, och priset är flera tiotals gånger högre. Och viktigast av allt, han klarade provet.
Införde en ändring av programmet (tillagda 5 enheter). Jag håller med om att detta är fel. Men i intervallet 40-70% syns det exakt. Det är mer korrekt att ta bort egenskapen och fixa biblioteket. Jag är inte redo för detta :). Resten av sensorerna ljög också. Även om alla visade ungefär likadant.

Så här ser webbsidan ut om den ansluter till min WIFI-modul:


Lösenord och utseende anges i skissen.
Omkoppling sker vid 68 % luftfuktighet. Allt är klart.


Men det finns en varning. Och det går inte att ignorera. Vid gränsen till 68 % luftfuktighet kan fläkten slås på och stängas av. För att lösa detta problem behöver du en timer. Jag har en fläkt med timer. De där. inga problem. Alla som har en vanlig fläkt måste lösa detta problem på mjukvarunivå.
Min ytterligare uppgift är att montera allt detta enligt schemat, men inte längre på en breadboard-modell och testa det i en månad. Alla ändringar kan göras under drift. Vad man ska göra och var man ska infoga, jag skrev allt.
Några ord om installationen av sensorn. Jag rekommenderar inte att placera den i ventilen. Anledningen är enkel. Även i den renaste och mest välskötta lägenheten finns damm, som när fläkten slås på rusar dit (till veterinärkanalen). Men för ett år sedan tog jag ut fläkten och rengjorde den ordentligt.


För att inte byta sensorerna ofta på grund av deras skada rekommenderar jag att du hittar en mer lämplig plats för dem, någonstans i närheten. Dessutom kan du slå in den med en fiberduk eller något liknande för att skydda den från damm. Och du kommer att bli glad.
Jag glömde helt bort att säga att om man själv vill ställa in "koefficienterna" för fuktkontroll så måste man vara åtminstone lite i ämnet. Om du inte har sådana här apparater hemma...


Utan dem kommer det att vara mycket svårt för dig att göra något i detta ämne.
Det är allt.
Hur man korrekt gör sig av med informationen från min recension, bestämmer var och en själv. Om något är oklart, ställ frågor. Hoppas det hjälpte åtminstone någon. Kanske någon vill hjälpa mig. Jag kommer att vara väldigt tacksam.
Lycka till allihopa!
Funktionskontroll:


Fortsättning följer…

Produkten tillhandahålls för att skriva en recension av butiken. Granskningen publiceras i enlighet med paragraf 18 i webbplatsens regler.

Jag planerar att köpa +51 Lägg till i favoriter Gillade recensionen +26 +65

Integrerade ledningssystem för teknisk kommunikation i en bostad, känd som "Smart Home", vinner mer och mer popularitet. Det utbredda införandet av dessa system försvåras av snarare hög kostnad för komponenter element och monteringsarbete. Ett Arduino-baserat smart hem är en lösning som är ganska prisvärd för alla som är åtminstone lite insatta i elektronik.

Vad är Arduino

Arduino är varumärket under vilket hårdvara och mjukvara för självständig konstruktion av automations- och fjärrkontrollsystem.

Faktum är att detta är en modulär konstruktör med ett brett utbud av möjligheter. Arduino hårdvara är ett stort sortiment av tryckta kretskort där olika sensorer, ställdon och expansionskort är organiserade. Kärnan i systemet är kort med programmerbara mikrokontroller olika nivåer av komplexitet från Arduino Pro Mini till Arduino Mega. Expansionskort låter dig använda ett stort antal externa enheter.

En mikrokontroller, några diskreta element, kvarts och olika typer av kontakter, inklusive vertikala stift, installeras på ett litet tryckt kretskort, med hjälp av vilka hyllstrukturer monteras med tillägg av expansionskort. Atmega-chips används som mikrokontroller. Regulatortypen bestämmer kortets funktionalitet, beroende på antalet in- och utgångar.

Så utbredd modulArduino Unomed mikrokontrollerAtmega328 har följande egenskaper:

  • Digital I/O - 14
  • Av dessa är 6 PWM
  • Analoga ingångar - 6
  • Minne - 32 KB
  • Ström - 7-12 V
  • Pris - 950 rubel

Digitala kontakter kan programmeras för att utföra en specifik funktion. Det kan vara en ingång eller en utgång. Dessa ingångar/utgångar kan fungera med enheter som kräver två nivåer för att fungera. Detta är en logisk etta eller nivå nära matningsspänningen och en logisk låg nivå motsvarande noll. Tvånivågivare kan anslutas till de digitala ingångarna. Dessa inkluderar ett par magnet-reedomkopplare. Denna sensor reagerar på att dörrar och fönster öppnas. Många inbrotts- och brandlarmssensorer fungerar enligt denna princip.

Digitala utgångar kan styra driften av elektromagnetiska reläer, som i sin tur slår på och av nätverksuttagen som olika hushållsapparater är anslutna till. Smart från Arduino kommer att kosta mycket mindre än en färdig industrisats.

Analoga ingångar via analog-till-digital-omvandlare överför information till styrenheten om status för temperatursensorer, belysning och vissa andra enheter. Genom att jämföra sensorernas avläsningar med de kommandon som är lagrade i minnet kan systemets centralenhet styra enheter där en jämn effektförändring krävs. Sex utgångar anslutna till pulsbreddsmodulatorn tillåter smidig kontroll av lasteffekten. Justera till exempel ljusstyrkan på en lampa, justera temperaturen på en värmare eller kontrollera hastigheten på en elmotor.

mest kraftfull och multifunktionell bräda av denna linje är Arduino Mega. Monterad på PCB kontroller mega 2560 , diskreta element, USB-kontakt för strömförsörjning. Kortet har 54 universella kontakter som kan programmeras för att utföra I/O-funktioner. 14 av dem kan styra analoga enheter med pulsbreddsmodulering. 16 analoga ingångar är utformade för att ansluta alla analoga enheter.

styrkort Arduino Mega kostar inom 1 500 rubel. Det är enklast att programmera det med en persondator via en USB-port.

Perifera moduler för Arduino

Styrkortet är kärnan i systemet, men du kan inte ansluta några enheter till det. Utgångarna har en liten belastningskapacitet och en begränsad ström. För att organisera ett kontrollsystem för hushållsapparater kommer externa kraftmoduler, kommunikationsenheter och andra enheter att krävas. Detta är inget problem, eftersom ett stort antal kringutrustningsmoduler har utvecklats för Arduino-kontroller.

Här är bara några av dem:

  • Gasanalysator - MQ-2
  • Ljussensor - 2CH-Light-2
  • Extern temperaturgivare - DS18B20-PL
  • Rumstemperatur och fuktighetsgivare – DHT-11
  • Motordrivrutiner - L298N, L9110
  • Relämoduler - 1ch5V, 4ch5V
  • Fjärrkontrollmodul IC2262/2272

Sensorn som upptäcker gasläckage i rummet reagerar på propan och butan, som är komponenter i hushållsgas. Modulen har känslighetsjustering och analoga/digitala utgångar. Ljussensorn kan vara en del av ett automatiserat ljusstyrningssystem. Den består av två oberoende kanaler med individuellt justerbar känslighet. Utetemperaturgivaren är konstruerad för att fungera vid temperaturer från -55 till +125 grader. Rumstemperatur- och luftfuktighetsgivaren är avsedd för . Temperaturintervall från 0 till +55 0 С och luftfuktighet från 20 till 90%.

Eftersom matningsspänningen för Arduino-modulerna ligger i området från 7 till 12 volt, kan alla standardsensorer som har samma driftsnivåer användas för att organisera ett säkerhets- eller brandlarm.

Motorförare låter dig styra enfas, tvåfas, fyrfas och stegmotorer. Med hjälp av sådana enheter kan du öppna och stänga persienner eller gardiner. Servodrivenheter anslutna till drivenheterna låter dig reglera kylvätskeflödet i värmeradiatorer. Relänycklar är oumbärliga i "Smart Home"-systemet. Styrda av potentialen hos en logisk enhet på +5 volt, tillåter reläerna omkopplingsbelastningar i växelströmskretsar upp till 10 ampere vid spänningar upp till 250 volt.

Med deras hjälp kan du slå på och stänga av eluttag, elektriska pumpar och andra system.

Fjärrkontrollmodulen består av en fjärrkontroll och en mottagningsenhet. Fjärrkontrollen är utrustad med fyra knappar och ger överföring av kommandon till den mottagande enheten på ett avstånd av upp till 100 meter. Alla kringutrustningsmoduler har samma matningsspänning och är kompatibla med alla Arduino-mikrokontroller.

Organisation av "Smart Home"-systemet

Utan vissa färdigheter, kunskap om kretsscheman och grunderna i elektronik är det bättre att inte ta på sig Smart Home-systemet fullt ut.

Programmering Arduino mikrokontroller utförs i C/C++.

För att komma igång kan du skriva de enklaste programmen som kan slå på och av lysdioden eller styra mikromotorns funktion. Det finns många exempel på sådana program. De använder enkla operatorer av formen: if, while, then och andra. De låter även skolbarn skriva program. När de första programmen är korrekt utförda kan du försöka montera mer komplexa enheter, där PWM-utgångar kommer att användas för att smidigt styra ljuset.

För att göra ett "smart hem" på Arduino med dina egna händer måste du utarbeta ett tekniskt projekt, som kommer att indikera antalet sensorer och ställdon för varje rum. Du kan börja med ett rum, där några enkla funktioner kommer att implementeras. Vissa av dem kommer att exekveras av signaler från externa sensorer, och några av timersignaler. När en person går upp till jobbet på morgonen kommer Arduino-kontrollen, på signal från timern, att slå på vattenkokaren eller kaffebryggaren. Om det är mörkt ute, vilket upptäcks av utomhussensorn, kommer ljuset i rummet att lysa upp mjukt. Bekväm rumstemperatur kan också ställas in för både att sova och vakna.

För ett litet antal funktioner är Arduino Uno-mikrokontrollern och en uppsättning perifera moduler lämpliga.

För att styra hushållsapparater behöver du relänycklar som slår på och av eluttagen. För att styra ljuset behöver du en rörelsedetektor. Om det smarta systemet är installerat i köket är det nödvändigt att tillhandahålla automatisk aktivering av fläkten, en hushållsgasläckagesensor och en vattenläckagesensor. En brandvarnare ska installeras som brandlarmselement i rummet.

Slutsats

Arduino-kontrollern låter dig slutföra ett smart hemprojekt och möta en relativt liten summa. Om vi ​​beräknar alla kostnader för att utrusta en trerumslägenhet, är det osannolikt att beloppet överstiger 30-40 tusen rubel. Om du minskar antalet funktioner blir budgeten ännu mer blygsam.