DIY Smart Home Sensors med Arduino, MySensors og OpenHAB

Smart hjem sensorer koster en latterlig mængde penge. Ledning af et helt hus er domænet for dem med dumme mængder disponibel indkomst. Lad os bygge vores egen med MySensors.

Smart hjem sensorer koster en latterlig mængde penge.  Ledning af et helt hus er domænet for dem med dumme mængder disponibel indkomst.  Lad os bygge vores egen med MySensors.
Reklame

Smart hjem sensorer koster en latterlig mængde penge. Ved $ 60 - $ 100 kun for en bevægelsesdetektor eller fugtighedsføler bliver ledningen et helt hus domænet for dem med dumme mængder disponibel indkomst. Lad os bygge vores egne.

Heldigvis er det hårde arbejde allerede blevet udført af de fine folk bag MySensors.org. I dag viser jeg dig hvordan du bruger MySensors-rammerne til at skabe et billigt udvalg af smarte hjemmesensorer, der kan føje til en OpenHAB-installation (se vores guide til Kom godt i gang med OpenHAB på Raspberry Pi) Kom i gang med OpenHAB Home Automation on Raspberry Pi Kom i gang med OpenHAB Home Automation on Raspberry Pi OpenHAB er en moden, åben kilde til hjemmeautomatiseringsplatform, der kører på en bred vifte af hardware og er protokol agnostisk, hvilket betyder, at den kan forbinde til næsten alle hjemmeautomatiseringshardware på markedet i dag. Læs mere . Jeg formoder, at du allerede har en fungerende MQTT-server og forstår det grundlæggende i MQTT-meddelelsesformatet; Hvis ikke, skal du læse opfølgningen af ​​OpenHAB-vejledningen, som indeholder instruktioner til installation af en MQTT-server. OpenHAB Begyndervejledning Del 2: ZWave, MQTT, Regler og diagrammer OpenHAB Begyndervejledning Del 2: ZWave, MQTT, Regler og kortlægning OpenHAB, open source-hjemmeautomatiseringssoftwaren, langt overstiger mulighederne for andre hjemmeautomatiseringssystemer på markedet - men det er ikke let at få oprettet. Faktisk kan det være retfærdigt frustrerende. Læs mere .

Selv om jeg specielt beskæftiger mig med at videresende MySensors-dataene fra et netværk af Arduinos ved hjælp af MQTT til en OpenHAB-installation, skal jeg påpege, at MySensors-rammen kan føje til en række forskellige hjemmeautomatiseringscontrollere. Jeg har præsenteret dette her som en komplet løsning, der fungerer for mig, men tjek venligst MySensors webstedet, som du måske finder det også passer til dit lignende formål, men bruger lidt anderledes hardware eller en anden messagingprotokol. Det er utroligt alsidigt.

mysensors hardware -1

Hardwareomkostningerne til min opsætning er mindre end $ 10 pr. Node (lidt mere for gatewayen), men ekstra sensorer og aktuatorer kan tilføjes for meget lidt (DHT11 fugtighed og temperaturføler er for eksempel ca. $ 1 hver; et højspændingsrelæ er omkring $ 3).

Hvad vi laver

Grundtanken er, at vi i stedet for at tilføje på vores eksisterende overfyldte lokale netværk ved hjælp af upålidelige Wi-Fi eller dyre Ethernet-skjold, skaber et helt separat netværksnetværk kun for Arduinos; derefter bro det til det lokale netværk ved hjælp af en enkelt gateway node, som både har en Ethernet-forbindelse og en radioforbindelse til de andre Arduinos. Så vi laver et par sensor noder, som samler data; og en gateway knude, som relæerer disse data på OpenHAB serveren.

Igen er det her, hvad der virker for mig, fordi min Wi-Fi-modtagelse er så forfærdelig, og jeg vil ikke røre det med unødvendige data. Hvis du er tilfreds med Wi-Fi, skal du se på at bruge den lave pris ESP8266 Arduino-kompatibel Mød Arduino Killer: ESP8266 Mød Arduino Killer: ESP8266 Hvad hvis jeg fortalte dig, at der er en Arduino-kompatibel dev-kort med indbygget Wi -Fi for mindre end $ 10? Nå er der. Læs mere med indbyggede Wi-Fi boards - MySensors understøtter dem også.

Vigtigt bemærkninger til El Capitan-brugere og Arduino-kloner: Apple lykkedes at bryde de serielle drivere, der plejede at kommunikere med en række Arduino klonbrætter i den seneste udgivelse af El Capitan takket være nye sikkerhedsforanstaltninger. For at se, om du er ramt, skal du kigge på dit bord og den chip, der er tættest på USB-porten. Hvis det står CH340, er du påvirket af dette. Følg instruktionerne her for at deaktivere driverkrydsning, installer CH340 serielle drivere igen.

Komponenter nødvendig

For gatewayen skal du:

  • Arduino Uno
  • Ethernet Shield (W5100 baseret)
  • NRF24L01 modul - Jeg har brugt + PA + LNA versionerne i hele, som har et øget interval på op til 1km. Ledningerne er det samme, som du vælger.

For hver sensor knudepunkt:

  • Arduino Uno
  • NRF24L01 modul
  • Sensorer (til at begynde med, jeg vil foreslå en temperatur og fugtighed DHT11 eller DHT22 modul)

Ekstra / Valgfri:

  • 10uF kondensatorer, en til hvert RF modul du har (linket er til en pakke på 50!)
  • Strømforsyning med 5v og 3.3v output (YwRobot MB102 fungerer godt, og de er $ 1 hver) - kræves hvis du bruger en klon Arduino. Du skal også bruge en 9-12v DC strømforsyning til disse.
  • Prototyping Shields, eller korte mænd-jumper jumper ledninger.

Arbejder med NRF24L01 moduler

Lad os starte med NRF24L01 modulerne, da de er mest komplekse dele af projektet. Jeg gik til den dyrere, længere række version af disse: teknisk kendt som NRF24L01 + PA + LNA . De leveres med en indbygget signalforstærkerkreds og antenneforbindelse, selvom jeg foreslår, at du forsøger først at købe den billigere ikke-antenneversion af modulerne først, hvis du har et normalt hjem med regelmæssige vægge, ikke den meter-tykke faste sten slags væg Jeg gør. Den påståede rækkevidde af disse er omkring en kilometer, mere end nok for mig sat i haven skur.

Men disse ting er virkelig svært at arbejde med; Hvis du går videre og tilslutter alt uden at læse disse tips først, bliver du skuffet.

  • Modulet har 3.3v input strøm til VCC pin - ikke 5v . Hvis du sætter i 5v, vil du stege den.
  • Lodde en 10uF kondensator over VCC / GND terminalerne. Den solide grå linje på kondensatoren angiver den negative / GND side.
  • Brug korte høje kabler af høj kvalitet; eller bedre lodd dem direkte til et prototypeskærm for at holde kabellængden til et minimum og solide forbindelser.
  • Hvis du bruger en Arduino klon, giver spændingsregulatoren ikke helt nok til dem på 3.3v pin - du skal bruge et eksternt strømforsyningskort (linket ovenfor), der er tilgængeligt for ca. $ 1 hver. Disse giver en stabil 3, 3v. Hvis du bruger et originalt Arduino-mærke Uno, ser det ikke ud til at være et problem.

Jeg foreslår på det kraftigste, at du foretager nogle grundlæggende tests først for at fastslå, at din radio fungerer. Tråd to radioer op som vist på MySensors-siden. Det er ligegyldigt, at deres diagram viser Arduino Micro boards - de samme pinnumre bruges. Bemærk at diagrammet viser NRF24L01 fra toppen ; Du kommer faktisk til at stikke ting ind fra undersiden . Mentalt justere i overensstemmelse hermed. Ignorer den grå IRQ-pin, den bruges ikke i øjeblikket. Sammenfattende:

  • VCC går til 3.3v på din eksterne strømforsyning
  • GND går til fælles jernbane
  • CE til pin 9
  • CSN / CS til pin 10
  • MOSI til pin 11
  • MISO til pin 12
  • SCK til pin 13

ledninger fra mysensors side

Du skal bruge to knuder, der er helt tilsluttet til at teste med. Download RF24 biblioteket og indlæs det enkleste Komme i gang- eksempel. Tænd begge moduler, men lad den være tilsluttet via USB og åbne seriekonsollen. Skriv "T" og send, for at skifte det til transmissionsmodus, på hvilket tidspunkt skal du få fejlfindingsmeddelelser, der siger, at det har succeset at pinge en besked til den anden knude.

Opbygning af MySensors MQTT Client Gateway

Ok, nu hvor vi ved, at RF24-radioerne er tilsluttet og fungerer korrekt, skal du gå videre og downloade udviklingsafdelingen af ​​MySensors Arduino-pakken. Denne vejledning blev skrevet med version 1.5, men det burde være ok med senere versioner også. Vi bruger udviklingsafdelingen, fordi MQTT klient gateway endnu ikke er en del af hovedpakken på tidspunktet for skrivningen.

Selvom der findes MQTTGateway i masterafdelingen, fungerer den som en server også, som vi ikke ønsker, fordi vi allerede har en stabil MQTT-server, der kører på Raspberry Pi. Vi vil bare videresende MySensors data til det. Igen, hvis dette ikke er det, du vil have - hvis du helst ikke vil bruge MQTT - så kig på EthernetGateway eller SerialGateway, som begge er kompatible med OpenHAB.

Det er værd at bemærke, at downloadpakken ikke kun indeholder vigtige MySensors-filer, det indeholder også kompatible biblioteker, der er nødvendige for alle mulige sensorer. For at undgå konflikter foreslår jeg bare at sikkerhedskopiere hele din nuværende bibliotekskatalog og erstatte det hele med dem i downloadpakken.

Ledninger til gatewayen er lidt anderledes; Når du har dit Ethernet-skærm, skal du bruge følgende ben til radiomodulet:

  • CE til pin 5
  • CSN til pin 6
  • SCK til pin A0
  • MOSI til pin A1
  • MISO til pin A2

Du skal også aktivere #define SOFTSPI- linjen i biblioteket / mySensors / MyConfig.h- filen. Gør dette ved at fjerne // for at uncomment det, det er omkring linje 309 på min.

Vi skal gøre dette, fordi både radiomodulet og netværksskærmen bruger SPI, og de er uforenelige; så vi skifter bare radiomodulet SPI til nogle andre stifter og udfører SPI-kommunikation i software i stedet (dermed blød SPI).

Indlæs MySensors / GatewayW5100MQTTClient skitsen. Hvis du ikke ser dette under MySensors menuen, har du ikke installeringsafdelingen installeret. Brug linket ovenfor for at genindlæse hele biblioteket.

mysensors gateway

Du skal definere en statisk IP-adresse til controlleren, IP-adressen til din netværksrouter og undernet og IP-adressen på din eksisterende MQTT-server. Du er også velkommen til at ændre emnepræfikserne også, hvis du vil. Upload og tilslut den ting til netværket. Kontroller kort seriekonsollen for eventuelle klare fejl som at være ude af stand til at oprette forbindelse til din MQTT-server, ellers stille den til side (men lad den være på).

IP adresser at ændre

Opbygning af sensornodes

Først kommenterer du at #define SOFTSPI linje i MyConfig.h filen igen ved at sætte // tilbage i starten. Det er kun nødvendigt for gatewayen - vi bruger standard NRF24L01 ledninger til sensor noder, der bruger hardware SPI. Hvis du har brug for at minde:

  • VCC går til 3.3v på din eksterne strømforsyning (eller på Arduino selv hvis det er en original og ikke en klon)
  • GND går til fælles jernbane
  • CE til pin 9
  • CSN / CS til pin 10
  • MOSI til pin 11
  • MISO til pin 12
  • SCK til pin 13

Derefter tilslut din valg af sensor; Jeg bruger DHT11 fugt- og temperatursensor til test, men hvis du ruller ned til sensoren og aktuatorlisten på siden af ​​MySensors-siden, finder du et stort udvalg af andre muligheder: døre, regnmåler, lys, bevægelse, selv RFID - og laver mere. Du kan se, jeg har også tilføjet et relæ til noden vist nedenfor, men mere om det senere.

mysensors hardware -2

Til sidst skal du fyldes op med HumiditySensor- eksemplet fra MySensors-menuen og tilføje følgende linje umiddelbart efter kommentarerne.

 #define MY_NODE_ID 2 

Da vi bruger en speciel version af controlleren, der bare videresender ting til vores egen MQTT-server, har den ikke standardkontrolfunktionen, der automatisk tildeler node-id'er til hver ny nod. I stedet skal vi manuelt definere det hver gang. Bemærk dette nummer et sted for dine egne poster, og skift det for hver knude.

Aktivér også fejlfindingsudgangen:

 #define MY_DEBUG 

Endelig skal du kontrollere, at datapinden på din DHT11-sensor er korrekt.

 #define HUMIDITY_SENSOR_DIGITAL_PIN 7 

Så upload!

Det er værd at åbne seriekonsollen for at kigge. Den afgørende smule at se er st =, hvilket er status for meddelelsen. st = fail betyder meddelelsen blev ikke sendt. Det er muligt, at du ikke har defineret et unikt node-id, eller at din gateway er offline. Jeg fejlede disse fejl ved blot at afbryde gatewayen:

st-fail

Hvis alting virker, skal du begynde at se, at nogle dataaflæsninger kommer ind på din MQTT-server. At sætte dem ind i OpenHAB er uden for denne tutorials omfang, men blev dækket i OpenHABs vejledning OpenHAB Beginners Guide Del 2: ZWave, MQTT, Regler og diagrammer OpenHAB Beginners Guide Del 2: ZWave, MQTT, Regler og diagrammer OpenHAB, open source home automation software, langt overstiger mulighederne for andre hjemmeautomatiseringssystemer på markedet - men det er ikke let at komme i gang. Faktisk kan det være retfærdigt frustrerende. Læs mere, så du kan henvise tilbage der.

Kombination af sensorkode

Selvom det er relativt enkelt at få en enkelt sensor-node op og køre, bliver den lidt vanskeligere, når du vil tilføje flere sensorer til hver knude. I det væsentlige skal du blande kodestykkerne fra to forskellige eksempler. Den nemmeste måde at vise dig dette på er eksempelvis med en video! Her kombinerer jeg vores grundfugtighedsføler med et relæ.

Du kan finde den færdige kode for luftfugtighedsføler og relæ her, som allerede er blevet ændret med en ikke-blokeringssløjfe, som jeg nævnte i videoen. Hvis du vil vide mere om MQTT-kommandostrukturen, der er nødvendig for at aktivere relæet, skal du kontrollere Seriel API-men det er tilstrækkeligt at sige, at følgende kanal styrer det første relæ i den kode, jeg har givet (med et meddelelseslegeme på 0 eller 1):

 mysensors-in / 9/1/1/0/2 

Din eneste begrænsning er nu mængden af ​​hukommelse på Arduino, og det siger jeg - de mest pålidelige sensorer i mit smarte hjem er ikke de kommercielle Z-Wave-moduler, der koster $ 80, men MySensors tilpassede.

Jeg afslutter det i dag, men hvis du har problemer, kan du bede dig væk i kommentarerne eller de meget aktive brugerfora i MySensors. Vil du sammensætte dine egne billige sensor noder? Hvordan kommer dit smarte hjem?

In this article