Innholdsfortegnelse:
- Trinn 1: Kretsen …
- Trinn 2: Nexardu med intern webserver (med NTP)
- Trinn 3: Nexardu med ekstern server
- Trinn 4: Verdifull informasjon
- Trinn 5: Ferdig
Video: NexArdu: Illumination Smart Control: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Oppdater
Hvis har utviklet den samme funksjonaliteten ved hjelp av Home Assistant. Home Assistant tilbyr et stort utvalg av muligheter. Du finner utviklingen her.
En skisse for å kontrollere hjemmebelysning på en smart måte via 433,92 MHz (aka 433 MHz) trådløse X10-lignende enheter, f.eks. Nexa.
Bakgrunn
Når det gjelder dekorativ belysning, har det på en eller annen måte vært slitsomt for meg at jeg annenhver eller tredje uke måtte justere tidtakerne som slår på lyset på grunn av endring av soltimene i forhold til CET. På samme tid, noen netter går vi til sengs tidligere enn andre. På grunn av dette slukker lysene noen ganger enten "for sent" eller "for tidlig". Ovenstående utfordret meg til å tenke: Jeg vil at den dekorative belysningen alltid skal slås på på samme nivå av omgivelseslys og deretter slå seg av på et bestemt tidspunkt, avhengig av om vi er våkne eller ikke.
Objektiv
Denne instruksen utnytter mulighetene for trådløse kontrollerte enheter som System Nexa som opererer på 433,92 MHz frekvensen. Her skal vi vise:
- Automatisk belysningskontroll
- Webkontroll
Webkontroll. Intern vs ekstern webserver
Den interne serveren utnytter muligheten for Arduino Ethernet -skjoldet til å skaffe en webserver. Webserveren vil delta på nettklientanrop for å sjekke og samhandle med Arduino. Dette er en grei løsning med begrenset funksjonalitet; mulighetene for å forbedre webserverkoden er begrenset av Arduino -minnet. Den eksterne serveren krever oppsett av en ekstern PHP -webserver. Dette oppsettet er mer komplisert og støttes ikke av denne opplæringen, men PHP -koden/siden for å kontrollere og styre Arduino er utstyrt med grunnleggende funksjonalitet. Mulighetene for å forbedre webserveren er i dette tilfellet begrenset av den eksterne webserveren.
Stykklister
For å dra full nytte av mulighetene denne skissen gir, trenger du:
- En Arduino Uno (testet på R3)
- Et Arduino Ethernet -skjold
- Et Nexa -sett eller lignende som opererer på 433,92 MHz
- En PIR (Passive InfraRed) sensor som opererer på 433,92 MHz
- En 10KOhms motstand
- En LDR
- A RTC DS3231 (kun ekstern serverversjon)
- En 433,92 MHz sender: XY-FST
- En mottaker på 433,92 MHz: MX-JS-05V
Minste anbefalte er:
- En Arduino Uno (testet på R3)
- Et Nexa -sett eller lignende som opererer på 433,92MHz
- En 10KOhms motstand
- En LDR
- En 433,92 MHz sender: XY-FST
(Utelatelse av Ethernet -skjold krever endringer av skissen som ikke er gitt i denne instruksen)
Nexa Logic. En kort beskrivelse
Nexa -mottakeren lærer fjernkontroll -ID og knapp -ID. Med andre ord har hver fjernkontroll sitt avsendernummer, og hvert par av/på -knapper har sin knapp -ID. Mottakeren må lære seg disse kodene. Noen Nexa -dokumenter sier at en mottaker kan kobles til opptil seks fjernkontroller. Nexa -parameterne:
- SenderID: ID på fjernkontrollen
- ButtonID: knapp-parnummer (av/på). Det starter med nummer 0
- Gruppe: ja/nei (også kalt "Alle av/på" -knapper)
- Kommando: på/av
Instruerbare trinn. Merk
De forskjellige trinnene som er beskrevet her, er å tilby to forskjellige smaker om hvordan målet skal nås. Velg den som passer deg best. Her er indeksen:
Trinn 1: Kretsen
Trinn 2: Nexardu med intern webserver (med NTP)
Trinn 3: Nexardu med ekstern server
Trinn 4: Verdifull informasjon
Trinn 1: Kretsen …
Koble de forskjellige komponentene som vist på bildet.
Arduino pin#8 til Data pin på RX (mottaker) modul Arduino pin#2 til Data pin på RX (mottaker) modul Arduino pin#7 til Data pin på TX (sender) modul Arduino pin A0 til LDR
RTC -konfigurasjon. Bare nødvendig på den eksterne serverkonfigurasjonen. Arduino pin A4 til SDA pin på RTC modul Arduino pin A5 til SCL pin på RTC modul
Trinn 2: Nexardu med intern webserver (med NTP)
Bibliotekene
Denne koden bruker mange biblioteker. De fleste av dem kan bli funnet gjennom "Library Manager" for Arduino IDE. Skulle du ikke finne et oppført bibliotek, vennligst google.
Wire.hSPI.h - Kreves av Ethernet -skjermNexaCtrl.h - Nexa -enhetskontroller Ethernet.h - For å aktivere og bruke Ethernet -skjermenRCSwitch.h - Obligatorisk for PIRTime.h - Påkrevd for RTCTimeAlarms.h - TidsalarmbehandlingEthernetUdp.h - Påkrevd for NTP -klient
Skissen
Koden nedenfor utnytter muligheten til å bruke Arduino UNO -kortet ikke bare som middel for å kontrollere Nexa -enheter, men den har også en intern webserver. En kommentar å legge til er at RTC (Real Time Clock) -modulen blir automatisk justert via NTP (Network Time Protocol).
Før du laster opp koden til Arduino, må du kanskje konfigurere følgende:
- SenderId: du må snuse SenderId først, se nedenfor
- PIR_id: du må snuse SenderId først, se nedenfor
- LAN IP -adresse: angi en IP for LAN til Ethernet Arduino -skjoldet. Standardverdi: 192.168.1.99
- NTP -server: Ikke strengt nødvendig, men det kan være bra å google etter NTP -servere i nærheten. Standardverdi: 79.136.86.176
- Koden er justert for CET tidssone. Juster denne verdien -hvis nødvendig, til tidssonen din for å vise riktig tid (NTP)
Sniffing av Nexa -kodene
For dette må du koble -minst RX -komponenten til Arduino som vist i kretsen.
Finn Nexa_OK_3_RX.ino-skissen nedenfor, som i skrivende stund er kompatibel med Nexa-enheter NEYCT-705 og PET-910.
Trinnene som skal følges er:
- Koble Nexa -mottakeren med fjernkontrollen.
- Last Nexa_OK_3_RX.ino på Arduino og åpne "Serial Monitor".
- Trykk på fjernkontrollknappen som styrer Nexa -mottakeren.
- Legg merke til "RemoteID" og "ButtonID".
- Angi disse tallene under SenderID og ButtonID på variabelerklæringen fra forrige skisse.
For å lese ID for PIR, bare bruk den samme skissen (Nexa_OK_3_RX.ino) og les verdien på "Serial Monitor" når PIR oppdager bevegelse.
Trinn 3: Nexardu med ekstern server
Bibliotekene
Denne koden bruker mange biblioteker. Det meste finner du gjennom "Library Manager" i Arduino IDE. Hvis du ikke finner et oppført bibliotek, vennligst google.
Wire.hRTClib.h - dette er biblioteket fra https://github.com/MrAlvin/RTClibSPI.h - Påkrevd av Ethernet -skjermNexaCtrl.h - Nexa -enhetskontrollerEthernet.h - For å aktivere og bruke Ethernet -skjermenRCSwitch.h - Påkrevd for PIRTime.h - Påkrevd for RTCTimeAlarms.h - Tidsalarmstyring aREST.h - for RESTful API -tjenester utnyttet av ekstern serverair/wdt.h - Watchdog timer -håndtering
Skissen
Skissen nedenfor inneholder en annen smak av det samme, denne gangen gir det mulighetene en ekstern webserver kan gi. Som allerede nevnt i innledningen, krever Den eksterne serveren oppsett av en ekstern PHP -webserver. Dette oppsettet er mer komplisert og støttes ikke av denne opplæringen, men PHP -koden/siden for å kontrollere og styre Arduino er utstyrt med grunnleggende funksjonalitet.
Før du laster opp koden til Arduino, må du kanskje konfigurere følgende:
- SenderId: du må snuse SenderId først, se Sniffing av Nexa -kodene på forrige trinn
- PIR_id: du må snuse SenderId først, se Sniffing av Nexa -kodene på forrige trinn
- LAN IP -adresse: angi en IP for LAN til Ethernet Arduino -skjoldet. Standardverdi: 192.168.1.99
For fremgangsmåten for Nexa -kodesniffing, se trinn 1.
Utfyllende fil
Last opp den vedlagte nexardu4.txt -filen til din eksterne PHP -server og gi den nytt navn til nexardu4.php
RTC -tid er angitt
For å angi tid/dato på RTC bruker jeg skisse SetTime som samler biblioteket DS1307RTC.
Trinn 4: Verdifull informasjon
Godt å vite atferd
-
Når Arduino er under "Light Automatic Control", kan den gå gjennom fire forskjellige tilstander i forhold til omgivelsesbelysningen og tidspunktet på dagen:
- Våken: Arduino venter på natten som kommer.
- Aktiv: Natten har kommet og Arduino har slått på lysene.
- Somnolent: Lysene er PÅ, men det er på tide å slå dem av. Den starter ved "time_to_turn_off - PIR_time", det vil si hvis time_to_turn_off er satt til 22:30 og PIR_time satt til 20 minutter, vil Arduino gå inn i den somnolente tilstanden klokken 22:10.
- Sovende: Natten går, Arduino har slått av lysene og Arduino venter på at morgenen skal bli våken.
- Arduino lytter alltid til signalene som sendes av fjernkontroller. Dette har muligheten til å vise tilstanden til lysene (på/av) på nettet når fjernkontroll brukes.
- Mens Arduino er våken prøver den å få lysene AV hele tiden, derfor kan PÅ -signaler sendt av en fjernkontroll for å slå på lysene bli fanget opp av Arduino. Skulle dette skje, vil Arduino prøve å slå av lysene igjen.
- Mens Arduino er aktiv prøver den å slå på lysene hele tiden, derfor kan AV -signaler sendt av en fjernkontroll for å slå av lysene bli fanget opp av Arduino. Skulle dette skje, vil Arduino prøve å slå på lysene igjen.
- I somnolent tilstand kan lysene slås av/på med en fjernkontroll. Arduino vil ikke motvirke.
- I en somnolent tilstand vil nedtellingen for PIR begynne å nullstilles fra "time_to_turn_off - PIR_time", og dermed blir time_to_turn_off forlenget med 20 minutter hver gang PIR oppdager bevegelse. Et "PIR -signal oppdaget!" meldingen vises i nettleseren når dette skjer.
- Mens Arduino er sovende kan lys slås av og på via fjernkontrollen. Arduino vil ikke motvirke.
- En tilbakestilling eller strømssyklus for Arduino vil bringe den til aktiv modus. Dette betyr at hvis Arduino har blitt tilbakestilt etter time_turn_off, vil Arduino slå på lysene. For å unngå dette må Arduino settes i manuell modus (kryss av for "Light Automatic Control") og vente til morgenen for å få den tilbake til "Light Automatic Control".
- Som nevnt venter Arduino på at morgenen skal bli aktiv igjen. På grunn av dette kan systemet bli lurt ved å rette et sterkt nok lys mot lyssensoren som skal overskride terskelen for "minimum lysstyrke". Skulle dette skje, skal Arduino bytte til aktiv tilstand.
- Toleranseverdien er av stor betydning for å unngå at systemet flapper av og på rundt terskelverdien Minimum Luminosity. LED -lys, på grunn av deres flimring og høy respons, kan være en kilde til flappende oppførsel. Øk toleranseverdien hvis du opplever dette problemet. Jeg bruker verdi 7.
Godt å vite om koden
- Som du kan legge merke til, er koden veldig stor og bruker en betydelig mengde biblioteker. Dette kompromitterer mengden ledig minne som er nødvendig for haugen. Jeg har lagt merke til ustabil oppførsel tidligere da systemet ble stoppet, spesielt etter nettsamtaler. Derfor har den største utfordringen jeg har hatt vært å begrense størrelsen og bruken av forskjellige variabler for å gjøre systemet stabilt.
- Koden som utnytter den interne serveren -brukt av meg hjemme, har kjørt problemfritt siden februar 2016 nå.
- Jeg har lagt mye arbeid på å berike koden med forklaringer. Dra nytte av dette for å spille med forskjellige parametere som antall Nexa -kodesendinger per burst, NTP -synkroniseringstid, etc.
- Koden inneholder ikke sommertid. Dette må justeres via nettleseren når den gjelder.
Noen punkter å vurdere
- Legg til antennene i TX- og RX -radiofrekvensmodulene (RF). Det vil spare deg tid for å klage på to hovedpunkter: motstandskraft og rekkevidde for RF -signalet. Jeg bruker en 50Ohms wire 17,28cm (6,80in) lang.
- Denne ustrukturerbare kan fungere med andre hjemmeautomatiseringssystemer, for eksempel Proove, for eksempel. En av de mange betingelsene som skal oppfylles er å få dem til å operere på 433,92 MHz frekvensen.
- En stor hodepine med Arduino er å håndtere biblioteker som kan bli oppdatert over tid og plutselig ikke er tilbake kompatible med din "gamle" skisse; det samme problemet kan oppstå når du oppgraderer din Arduino IDE. Vær oppmerksom på at dette kan være vårt tilfelle her -ja, mitt problem også.
- Flere samtidige webklienter med forskjellige lysmoduser skaper en "blinkende" tilstand.
Skjermdump
I bildekarusellen ovenfor finner du et skjermbilde av websiden som vises når du ringer Arduino gjennom nettleseren din. Gitt standard IP -konfigurasjon for koden, vil URL -adressen være
Et aspekt som kan forbedres er plasseringen av "send" -knappen siden den trer i kraft på alle inndatabokser og ikke bare på "Lysautomatisk kontroll" som man kanskje tror. Med andre ord, hvis du vil endre noen av de mulige verdiene, må du alltid trykke på "send" -knappen.
Detaljert/avansert dokumentasjon
Jeg har vedlagt følgende filer slik at de kan hjelpe deg med å forstå hele løsningen, spesielt for feilsøking og forbedring.
Arduino_NexaControl_IS.pdf gir dokumentasjon om Internal Server -løsningen.
Arduino_NexaControl_ES.pdf gir dokumentasjon om løsningen for ekstern server.
Eksterne referanser
Nexa System (svensk)
Trinn 5: Ferdig
Der har du alt ferdig og i aksjon!
Arduino Uno-saken kan bli funnet i Thingiverse som "Arduino Uno Rev3 with Ethernet Shield XL-case".
Anbefalt:
Smart skrivebord LED -lys - Smart Lighting W/ Arduino - Neopixels arbeidsområde: 10 trinn (med bilder)
Smart skrivebord LED -lys | Smart Lighting W/ Arduino | Neopixels Workspace: Nå tilbringer vi mye tid hjemme, studerer og jobber virtuelt, så hvorfor ikke gjøre arbeidsområdet vårt større med et tilpasset og smart belysningssystem Arduino og Ws2812b LED -er. Her viser jeg deg hvordan du bygger din Smart LED -skrivebordslampe som
Lag et Smart Home Control System på STONE HMI Disp: 23 trinn
Lag et smart hjemmekontrollsystem på STONE HMI Disp: Prosjekt introduksjon Følgende opplæring viser deg hvordan du bruker STONE STVC050WT-01 berøringsskjermmodul til å lage et enkelt kontrollsystem for husholdningsapparater
SONOFF Legger til Alexa og Google Home Voice Control til ZigBee Smart Devices: 3 trinn
SONOFF Legger til Alexa og Google Home Voice Control til ZigBee Smart Devices: Fra Wi-Fi smart switcher og plugger til ZigBee smart switcher og plugger, er talekontroll et populært smart håndfritt kontrollinngangspunkt. Gjennom å jobbe med Amazon Alexa eller Google Home, lar smarte plugger deg ta direkte kontroll over det tilkoblede hjemmet
DIY LED Strip-Study Table Illumination: 6 trinn
DIY LED Strip-Study Table Illumination: Hello Makers, dette er mitt første instruerbare prosjekt. Grunnideen og inspirasjonen bak å gjøre dette prosjektet er å gjøre mitt kjedelige og kjedelige arbeidsbord til et fullt motiverende og oppmuntrende bord. Inspirasjonskilde Stolt sagt
Smart Phone Control Arduino Robot: 3 trinn
Smart Phone Control Arduino Robot: Det er et smarttelefonkontroll Arduino robotprosjekt. for dette prosjektet, har jeg laget en PCB, så ikke noe problem med maskete ledningstilkoblinger.Dette kortet har dual motor driver & noen ekstra Arduino -pinner, 3V, 5V, GND ut, så ved å bruke denne kretskortet kan du lage linjefølge