Spil Guider > videospil > alle video game > DIY Smart Home Sensorer med Arduino, MySensors og OpenHAB

DIY Smart Home Sensorer med Arduino, MySensors og OpenHAB

Smart Home sensorer koster et latterligt beløb af penge. På $ 60- $ 100 bare for en bevægelsesdetektor eller fugtighedssensor, ledningsføring et helt hus bliver det domæne af dem med fjollede mængder af den disponible indkomst. Lad os bygge vores eget.

Heldigvis det hårde arbejde er allerede gjort af de fine folk bag MySensors.org. I dag vil jeg være at vise dig, hvordan du bruger rammer MySensors at skabe en billig vifte af smart home sensorer, der kan indgå i en OpenHAB installere (se vores guide til Kom godt i gang med OpenHAB på Raspberry Pi). Jeg antager du har en fungerende MQTT serveren allerede, og forstå det grundlæggende i MQTT messaging-format; hvis ikke, skal du sørge for at læse opfølgningen af ​​OpenHAB guide, som omfatter installation af en MQTT server.

Selv om jeg vil beskæftige sig specifikt med fremsendelse af MySensors data fra et netværk af Arduinos, hjælp MQTT , til en OpenHAB installere, skal jeg påpege, at rammerne MySensors kan indgå i en række forskellige home automation controllere. Jeg har fremlagt dette her som en komplet løsning, der virker for mig, men du tjekke de MySensors websted, som du måske finde det også passer til dit lignende formål, men ved hjælp af lidt anden hardware eller en anden messaging-protokol. Det er utrolig alsidig.


hardware omkostninger for mit setup er mindre end $ 10 per node (lidt mere for gateway), men kan tilføjes ekstra sensorer og aktuatorer for meget lidt (den DHT11 fugt og temperaturføler for eksempel er omkring $ 1 hver, en høj spænding relæ er omkring $ 3)

Hvad vi laver

Den grundlæggende idé er, at i stedet for at tilføje på vores eksisterende overfyldt. lokale netværk med upålidelige Wi-Fi eller dyre Ethernet skjolde, skaber vi en helt separat mesh-stand netværk kun for Arduinos; derefter bro, at til det lokale netværk ved hjælp af en enkelt gateway node, som har både en Ethernet-forbindelse og en radio-forbindelse til de andre Arduinos. Så vi laver et par sensor noder, som samles data; og en gateway node, som relæer, at data på den OpenHAB serveren.

Igen, dette er hvad der virker for mig, fordi min Wi-Fi modtagelse er så forfærdelig, og jeg ønsker ikke at rode det med unødvendige data . Hvis du er tilfreds med Wi-Fi, se på at bruge de lave omkostninger ESP8266 Arduino-kompatible med indbygget Wi-Fi-boards -. MySensors understøtter dem også

Vigtigt for El Capitan brugere og Arduino Kloner: Apple formået at bryde den serielle chauffører, der benyttes til at kommunikere med en række Arduino klon bestyrelser i den nyeste version af El Capitan takket være nye sikkerhedsforanstaltninger. For at se, om du er ramt, se på dit bord og chippen nærmest USB-porten. Hvis der står CH340, er du berørt af dette. Følg vejledningen her til at deaktivere driveren kext signering, installere CH340 serielle drivere igen

Komponenter Needed

For gateway, du har brug for:.

  • Arduino Uno

    Ethernet Shield (W5100 baseret)

    NRF24L01 modul - jeg har brugt de + PA + LNA-versioner overalt, som har en øget rækkevidde på op til 1 km. Ledningsnettet er den samme uanset hvilken du vælger

    For hver sensor node:.

  • Arduino Uno

    NRF24L01 modul

    Sensorer ( til at starte med, vil jeg foreslå en temperatur og luftfugtighed DHT11 eller DHT22 modul)

    Yderligere /Valgfrit:

    10uF kondensatorer, en for hver RF modul du har ( linket er for en pakke med 50)

    Strømforsyning med 5v og 3.3v output (YwRobot MB102 fungerer godt, og de er $ 1 hver) -! påkrævet, hvis du bruger en klon Arduino. Du skal også bruge en 9-12v DC strømforsyning til disse.

  • Prototyping Shields, eller korte mand-kvinde jumperledninger.

    Arbejde med NRF24L01 moduler

    Lad os starte med NRF24L01 moduler, da de er mest komplekse del af projektet. Jeg gik til dyrere, længere rækkevidde version af disse: teknisk kendt som NRF24L01 + PA + LNA. De kommer med en indbygget kredsløb og antenne tilslutning signal forstærkning, selvom jeg foreslår, at du prøve den billigere ikke-antenne version af modulerne først, hvis du har en normal hjem med regelmæssige vægge, ikke meter tykke solide sten slags mur, der Jeg gør. Det hævdede vifte af disse er omkring en kilometer, mere end nok for mig lagt i haveskur

    Men disse ting er, virkelig
    vanskeligt at arbejde med.; hvis du gå videre og sætte alt i uden at læse disse tips først, vil du blive skuffet

    Modulet har brug 3.3V input strøm til VCC pin -. ikke 5v. Hvis du lægger i 5v, du steger den.

  • Lod en 10uF kondensator på tværs af VCC /GND terminalerne. Det faste grå linje på kondensator angiver negative /GND side

    Brug korte, høj kvalitet hoppe kabler.; eller endnu bedre, lodde dem direkte til en prototyping skjold for at holde kabellængde til et minimum og solide forbindelser.

    Hvis du bruger en Arduino klon, er spændingsregulatoren ikke helt give nok for dem på 3,3 v pin - du bliver nødt til at bruge en ekstern bestyrelse strømforsyning (knyttet ovenfor), til rådighed for omkring $ 1 hver. Disse giver en stabil 3.3v. Hvis du bruger en original
    Arduino mærke Uno, det synes ikke at være et problem.

    jeg kraftigt foreslå du gøre nogle grundlæggende tests først bare for at etablere din radio virker. Wire to radioer op, som vist på siden MySensors. Det betyder ikke noget, at deres diagram viser Arduino Micro boards - de samme pin numre anvendes. Bemærk, at diagrammet viser NRF24L01 fra toppen; du faktisk være at tilslutte ting i fra undersiden. Mentalt justere i overensstemmelse hermed. Ignorer den grå IRQ pin, er det ikke i øjeblikket anvendes. Sammenfattende:

    VCC går til 3.3v på din eksterne strømforsyning

    GND går til fælles fodslag rail

    CE til ben 9

    CSN /CS til ben 10

    MOSI til pin 11

    miso til ben 12

    SCK til pin 13


    Du skal bruge to noder fuldt kablede at teste med. Download RF24 bibliotek og indlæse enkleste Introduktion eksempel. Tænd begge moduler, men forlade en tilsluttet via USB og åbne den serielle konsol. Skriv "T" og sende, at skifte det til sendetilstand, hvorefter du bør få fejlretningsmeddelelser siger det er lykkedes pinge en besked til den anden node.

    Opbygning af MySensors MQTT Client Gateway

    Ok, nu, at vi kender RF24 radioer er forbundet i og fungerer korrekt, gå videre og downloade udviklingen gren af ​​MySensors Arduino pakke. Denne tutorial er skrevet ved hjælp af version 1.5, men bør være ok med senere versioner også. Vi bruger udviklingen gren fordi i skrivende stund, den MQTT klient
    gateway er endnu ikke en del af de vigtigste pakke.

    Selv om der er MQTTGateway rådighed i det store gren , det virker som en server også, som vi ikke ønsker, fordi vi allerede har en stabil MQTT server, der kører på Raspberry Pi. Vi ønsker blot at sende de MySensors data på det. Igen, hvis dette ikke er hvad du vil - hvis du hellere vil ikke bruge MQTT overhovedet -. Derefter se på EthernetGateway eller SerialGateway, som begge er også kompatible med OpenHAB

    Det er værd at bemærke, at download pakke ikke bare omfatter væsentlige MySensors filer, det omfatter også kompatible biblioteker er nødvendige for alle mulige sensor. For at undgå konflikter, vil jeg foreslå bare sikkerhedskopiere hele din nuværende biblioteker mappe og erstatte det hele med dem i download-pakken

    Ledningsføring for gateway er lidt anderledes.; når du har din Ethernet skjold, bruge følgende stifter til radiomodulet:

    CE til pin 5

    CSN til pin 6

    SCK til pin A0

    MOSI at pin A1

    miso til ben A2

    Du skal også gøre det muligt for #define SOFTSPI linje i biblioteker /mySensors /MyConfig.h fil. Gør dette ved at fjerne //at afkommentere det, det er omkring linie 309 på mine

    Vi er nødt til at gøre dette, fordi både radiomodul og netværk skjold bruge SPI, og de er uforenelige.; så vi bare flytte radiomodul SPI til nogle andre stifter og udføre SPI kommunikation i software i stedet (dermed, blød
    SPI).

    Læg op den MySensors /GatewayW5100MQTTClient skitse. Hvis du ikke kan se dette under menuen MySensors, behøver du ikke har den udvikling gren
    installeret. Brug linket ovenfor for at re-downloade hele biblioteket.


    Du skal definere en statisk IP-adresse til controlleren, IP på dit netværk router og subnet, og IP-adressen på din eksisterende MQTT server. Du er velkommen til at ændre emnet præfikser også hvis du vil. Upload, og sæt den ting ind i netværket. Kort kontrollere Serial konsol for eventuelle åbenbare fejl som ikke er i stand til at oprette forbindelse til din MQTT server, ellers sæt den til side (men lad det på).



    Opbygning af sensoren Nodes
    < p> først kommentere, at #define SOFTSPI linje i MyConfig.h filen igen ved at sætte //tilbage i starten. Det er kun nødvendigt for porten - vi bruger den standard NRF24L01 ledninger til sensor noder, som bruger hardware SPI. Hvis du har brug minde:

    VCC går til 3.3v på din eksterne strømforsyning (eller på Arduino sig selv, hvis det er en original og ikke en klon)

  • GND går til fælles fodslag rail

    CE til ben 9

    CSN /CS til ben 10

    MOSI til pin 11

    miso til pin 12

    SCK til pin 13

    Næste, tråd op dit valg af sensor; Jeg bruger DHT11 fugt og temperaturføler til test, men hvis du ruller ned til sensorer og aktuatorer listen i sidebjælken på siden MySensors, finder du et stort udvalg af andre muligheder: døre, regnmåler, lys, bevægelse, selv RFID - og belastninger mere. Du kan se, jeg har også tilføjet et relæ til node billedet nedenfor, men mere om det senere.


    Endelig lægge op HumiditySensor eksempel fra menuen MySensors og tilføje følgende linje umiddelbart efter kommentarerne.

     #define MY_NODE_ID 2 

    Da vi bruger en speciel udgave af controlleren, som bare videresender tingene på vores egen MQTT server, betyder det ikke har den standard controller funktion, der automatisk ville tildele node id'er til hver ny knude. I stedet vi bare manuelt definere det hver gang. Notér dette nummer et sted for dine egne optegnelser, og ændre det for hver node

    Aktiver debug output også:.

     #define MY_DEBUG 

    Endelig kontrollere data pin af din DHT11 sensor er korrekt.

     #define HUMIDITY_SENSOR_DIGITAL_PIN 7 

    Så, uploade!

    det er værd at åbne den serielle konsol til at tage et kig. Det afgørende bit at se er st =, hvilket er status for meddelelsen. st = mislykkes betyder beskeden blev ikke sendt. Det er muligt, du ikke har defineret et entydigt node id, eller at din gateway er offline. Jeg forfalsket disse fejl ved blot at frakoble gateway:


    Hvis alt fungerer, bør du begynde at se nogle data læsninger kommer i din MQTT server. Sætte dem i OpenHAB ligger uden for rammerne af denne tutorial, men blev dækket i del 2 af OpenHAB guide, så du kan henvise tilbage der.

    kombinere Sensor Code

    Selvom at få en enkelt sensor node op og kører, er forholdsvis enkel, det bliver lidt tricky, når du ønsker at tilføje flere sensorer til hver node. Hovedsagelig du kommer til at blande sammen kode her fra fra to forskellige eksempler. Den nemmeste måde til at vise dig dette er ved eksempel med en video! Her er jeg kombinere vores grundlæggende fugtighed sensor med et relæ.


    Du kan finde den udfyldte kode for fugtføler og relæ her, hvilket allerede er blevet modificeret med en ikke-blokerende loop som jeg nævnte i videoen. Hvis du vil vide mere om MQTT kommandostrukturen nødvendig for at aktivere relæet, kontrollere Serial API -Men tilstrækkeligt at sige følgende kanal styrer første relæ i koden jeg har givet (med et budskab krop på 0 eller 1):

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

    Din eneste begrænsning nu er mængden af ​​hukommelse på Arduino, og jeg vil sige dette - de mest pålidelige sensorer i mit smart home er ikke de kommercielle Z-Wave-moduler, der koster $ 80, men de MySensors brugerdefinerede dem.

    jeg vil ende det der i dag, men hvis du har problemer, kan du spørge væk i kommentarerne eller meget aktive brugerfora af MySensors . Vil du være at sammensætte dine egne billige sensor noder? Hvordan er dit intelligente hjem kommer?

  • Relaterede artikler