Innholdsfortegnelse:

NexArdu: Illumination Smart Control: 5 trinn
NexArdu: Illumination Smart Control: 5 trinn

Video: NexArdu: Illumination Smart Control: 5 trinn

Video: NexArdu: Illumination Smart Control: 5 trinn
Video: Séance ordinaire - 5 juillet 2021 2024, Juli
Anonim
NexArdu: Illumination Smart Control
NexArdu: Illumination Smart Control

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:

  1. Automatisk belysningskontroll
  2. 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:

  1. En Arduino Uno (testet på R3)
  2. Et Arduino Ethernet -skjold
  3. Et Nexa -sett eller lignende som opererer på 433,92 MHz
  4. En PIR (Passive InfraRed) sensor som opererer på 433,92 MHz
  5. En 10KOhms motstand
  6. En LDR
  7. A RTC DS3231 (kun ekstern serverversjon)
  8. En 433,92 MHz sender: XY-FST
  9. En mottaker på 433,92 MHz: MX-JS-05V

Minste anbefalte er:

  1. En Arduino Uno (testet på R3)
  2. Et Nexa -sett eller lignende som opererer på 433,92MHz
  3. En 10KOhms motstand
  4. En LDR
  5. 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 …

Kretsen …
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:

  1. Koble Nexa -mottakeren med fjernkontrollen.
  2. Last Nexa_OK_3_RX.ino på Arduino og åpne "Serial Monitor".
  3. Trykk på fjernkontrollknappen som styrer Nexa -mottakeren.
  4. Legg merke til "RemoteID" og "ButtonID".
  5. 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

Verdifull informasjon
Verdifull informasjon
Verdifull informasjon
Verdifull informasjon

Godt å vite atferd

  1. Når Arduino er under "Light Automatic Control", kan den gå gjennom fire forskjellige tilstander i forhold til omgivelsesbelysningen og tidspunktet på dagen:

    1. Våken: Arduino venter på natten som kommer.
    2. Aktiv: Natten har kommet og Arduino har slått på lysene.
    3. 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.
    4. Sovende: Natten går, Arduino har slått av lysene og Arduino venter på at morgenen skal bli våken.
  2. 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.
  3. 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.
  4. 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.
  5. I somnolent tilstand kan lysene slås av/på med en fjernkontroll. Arduino vil ikke motvirke.
  6. 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.
  7. Mens Arduino er sovende kan lys slås av og på via fjernkontrollen. Arduino vil ikke motvirke.
  8. 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".
  9. 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.
  10. 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

  1. 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.
  2. Koden som utnytter den interne serveren -brukt av meg hjemme, har kjørt problemfritt siden februar 2016 nå.
  3. 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.
  4. Koden inneholder ikke sommertid. Dette må justeres via nettleseren når den gjelder.

Noen punkter å vurdere

  1. 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.
  2. 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.
  3. 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å.
  4. 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

Ferdig!
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: