Taula de continguts:
- Pas 1: el circuit …
- Pas 2: Nexardu amb servidor web intern (amb NTP)
- Pas 3: Nexardu amb servidor extern
- Pas 4: informació valuosa
- Pas 5: acabat
Vídeo: NexArdu: Control intel·ligent d’il·luminació: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Actualització
Si heu desenvolupat la mateixa funcionalitat amb Home Assistant. Home Assistant ofereix un ventall immens de possibilitats. Podeu trobar el desenvolupament aquí.
Un esbós per controlar la il·luminació de la llar de manera intel·ligent mitjançant dispositius sense fil tipus X10 a 433,92 MHz (també coneguts com a 433 MHz), p. Nexa.
Antecedents
Pel que fa a la il·luminació decorativa, d'alguna manera m'ha cansat que cada segona o tercera setmana hagués de reajustar els temporitzadors que encenen els llums a causa del canvi de l'hora solar respecte al CET. algunes nits anem al llit abans que altres. Per això, de vegades els llums s'apaguen "massa tard" o "massa d'hora". L’anterior m’ha desafiat a pensar: vull que la il·luminació decorativa s’encengui sempre al mateix nivell de llum ambiental i després s’apagui en determinat moment en funció de si estem desperts o no.
Objectiu
Aquesta instrucció explota les possibilitats de dispositius controlats sense fils com System Nexa que funcionen a la freqüència de 433,92 MHz. Aquí presentem:
- Control automatitzat de la il·luminació
- Control web
Control web. Servidor web intern vs extern
El servidor intern aprofita la possibilitat que el blindatge Ethernet Arduino proporcioni un servidor web. El servidor web atendrà les trucades dels clients web per comprovar i interactuar amb l’Arduino. Aquesta és una solució directa amb una funcionalitat limitada; les possibilitats de millorar el codi del servidor web estan limitades per la memòria de l’Arduino. El servidor extern requereix la configuració d’un servidor web PHP extern. Aquesta configuració és més complicada i no és compatible amb aquest tutorial, però, el codi / pàgina PHP per comprovar i dirigir l'Arduino es proporciona amb funcionalitats bàsiques. Les possibilitats de millorar el servidor web estan, en aquest cas, limitades pel servidor web extern.
Factura de materials
Per aprofitar al màxim les possibilitats que ofereix aquest esbós, necessiteu:
- Un Arduino Uno (provat a R3)
- Un escut Ethernet Arduino
- Un conjunt Nexa o similar que funciona a 433,92 MHz
- Un sensor PIR (Passive InfraRed) que funciona a 433,92 MHz
- Una resistència de 10KOhms
- Un LDR
- Un RTC DS3231 (només versió del servidor extern)
- Un transmissor de 433,92 MHz: XY-FST
- Un receptor de 433,92 MHz: MX-JS-05V
El mínim recomanat és:
- Un Arduino Uno (provat a R3)
- Un conjunt Nexa o similar que funciona a 433,92 MHz
- Una resistència de 10KOhms
- Un LDR
- Un transmissor de 433,92 MHz: XY-FST
(L'omissió del blindatge d'Ethernet requereix modificacions de l'esbós que no es proporcionen dins d'aquesta instrucció)
La lògica Nexa. Una breu descripció
El receptor Nexa aprèn la identificació del control remot i la identificació del botó. Dit d’una altra manera, cada comandament a distància té el seu número de remitent i cada parell de botons d’encès / apagat té el seu ID de botó. El receptor ha d'aprendre aquests codis. Alguns documents de Nexa indiquen que un receptor es pot emparellar amb fins a sis comandaments a distància. Els paràmetres Nexa:
- SenderID: identificador del control remot
- ButtonID: número de parell de botons (activat / desactivat). Comença amb el número 0
- Grup: sí / no (també conegut com a botons "Tots apagats / activats")
- Ordre: activat / desactivat
Passos instructius. Nota
Els diferents passos descrits aquí són oferir dos sabors diferents sobre com aconseguir l’objectiu. No dubteu a triar el que vulgueu. Aquí teniu l’índex:
Pas 1: el circuit
Pas 2: Nexardu amb servidor web intern (amb NTP)
Pas 3: Nexardu amb servidor extern
Pas 4: informació valuosa
Pas 1: el circuit …
Connecteu els diversos components tal com es mostra a la imatge.
Pin Arduino # 8 a Pin de dades al mòdul RX (receptor) Pin d'Arduino # 2 a Pin de dades al mòdul RX (receptor) Pin d'Arduino # 7 a Pin de dades al mòdul TX (remitent) Pin d'Arduino A0 a LDR
Configuració RTC. Només es necessita a la configuració del servidor extern. Pin pin Arduino A4 a pin SDA al mòdul RTC Pin PIN Arduino A5 a pin SCL al mòdul RTC
Pas 2: Nexardu amb servidor web intern (amb NTP)
Les biblioteques
Aquest codi fa ús de moltes biblioteques. La majoria es poden trobar a través del "Gestor de biblioteques" de l'IDE Arduino. Si no trobeu una biblioteca a la llista, si us plau, google.
Wire. Client NTP
L’esbós
El codi següent explota la possibilitat d'utilitzar la placa Arduino UNO no només com a mitjà per controlar els dispositius Nexa, sinó que també inclou un servidor web intern. Un comentari que cal afegir és que el mòdul RTC (Real Time Clock) s’ajusta automàticament mitjançant NTP (Network Time Protocol).
Abans de penjar el codi a Arduino, és possible que hàgiu de configurar el següent:
- SenderId: primer heu d’ensumar el SenderId, vegeu-ho a continuació
- PIR_id: primer heu d’ensumar el SenderId, vegeu-ho a continuació
- Adreça IP de la LAN: configureu una IP de la vostra LAN al vostre escut Ethernet Arduino. Valor per defecte: 192.168.1.99
- Servidor NTP: no és estrictament necessari, però podria ser bo buscar google per als servidors NTP del vostre entorn proper. Valor per defecte: 79.136.86.176
- El codi s’ajusta per a la zona horària CET. Ajusteu aquest valor -si cal, a la vostra zona horària per mostrar l'hora correcta (NTP)
Ensumant els codis Nexa
Per a això, heu de connectar, com a mínim, el component RX a l'Arduino tal com es mostra al circuit.
A continuació trobareu l’esbós de Nexa_OK_3_RX.ino que, en el moment d’escriure-ho, és compatible amb els dispositius Nexa NEYCT-705 i PET-910.
Els passos a seguir són:
- Vinculeu el receptor Nexa amb el comandament a distància.
- Carregueu Nexa_OK_3_RX.ino a l'Arduino i obriu el "Monitor de sèrie".
- Premeu el botó del control remot que controla el receptor Nexa.
- Preneu nota del "RemoteID" i "ButtonID".
- Definiu aquests números a SenderID i ButtonID a la declaració de variable de l'esbós anterior.
Per llegir la identificació del PIR, només cal que utilitzeu aquest mateix esbós (Nexa_OK_3_RX.ino) i llegeixi el valor al "Monitor de sèrie" quan el PIR detecti moviment.
Pas 3: Nexardu amb servidor extern
Les biblioteques
Aquest codi fa ús de moltes biblioteques. La majoria es poden trobar a través del "Gestor de biblioteques" de l'IDE Arduino. Si no trobeu una biblioteca a la llista, si us plau, google.
Wire.hRTClib.h: aquesta és la biblioteca de https://github.com/MrAlvin/RTClibSPI.h - Requereix Ethernet shield NexaCtrl.h - Controlador de dispositiu Nexa Ethernet.h - Per habilitar i incloure el blindatge EthernetRCSwitch.h - Obligatori per a PIRTime.h - Obligatori per a RTCTimeAlarms.h - Gestió de l'alarma horària aREST.h - per a serveis d'API RESTful explotats per un servidor externairair / wdt.h - Gestió del temporitzador de vigilància
L’esbós
L'esbós següent presenta un altre sabor del mateix, aquesta vegada potencia les possibilitats que pot donar un servidor web extern. Com ja s'ha esmentat a la introducció, El servidor extern requereix la configuració d'un servidor web PHP extern. Aquesta configuració és més complicada i no és compatible amb aquest tutorial, però, el codi / pàgina PHP per comprovar i dirigir l'Arduino es proporciona amb funcionalitats bàsiques.
Abans de penjar el codi a Arduino, és possible que hàgiu de configurar el següent:
- SenderId: primer heu d’ensumar el SenderId, consulteu Inxolar els codis Nexa al pas anterior
- PIR_id: primer heu d’ensumar el SenderId, consulteu Inxolar els codis Nexa al pas anterior
- Adreça IP de la LAN: configureu una IP de la vostra LAN al vostre escut Ethernet Arduino. Valor per defecte: 192.168.1.99
Per obtenir el procediment de detecció de codi Nexa, consulteu el pas número 1.
Expedient complementari
Pengeu el fitxer nexardu4.txt adjunt al vostre servidor PHP extern i canvieu el nom a nexardu4.php
Temps RTC definit
Per establir la data / hora a l'RTC, faig servir l'esbós SetTime que combina la biblioteca DS1307RTC.
Pas 4: informació valuosa
És bo conèixer el comportament
-
Quan Arduino està sota "Control automàtic de llum", pot passar per quatre estats diferents en relació amb la il·luminació ambiental i l'hora del dia:
- Despert: Arduino espera que arribi la nit.
- Actiu: ha arribat la nit i Arduino ha encès els llums.
- Somnolent: els llums estan encesos, però arriba el moment d'apagar-los. Comença a "time_to_turn_off - PIR_time", és a dir, si time_to_turn_off s'estableix a 22:30 i PIR_time s'estableix a 20 minuts, l'Arduino entrarà en estat somnolent a les 22:10.
- Inactiu: la nit passa, Arduino ha apagat els llums i Arduino espera que l'alba es desperti.
- Arduino sempre escolta els senyals que envien els comandaments a distància. Això inclou la possibilitat de mostrar l’estat de les llums (encès / apagat) a la xarxa quan s’utilitza el control remot.
- Mentre Arduino està despert, intenta apagar els llums tot el temps, per tant, els senyals ON enviats per un control remonte per encendre els llums podrien ser capturats per Arduino. En cas que això passi, l'Arduino intentarà tornar a apagar els llums.
- Mentre Arduino està actiu, intenta que els llums s’encenguin tot el temps, per tant, els senyals OFF enviats per un control remot per apagar els llums podrien ser capturats per Arduino. En cas que això passi, l'Arduino intentarà tornar a encendre els llums.
- En estat somnolent, els llums es poden encendre / apagar amb un comandament a distància. L'Arduino no contrarestarà.
- En un estat somnolent, el compte enrere PIR començarà a restablir-se de "time_to_turn_off - PIR_time" i, per tant, el time_to_turn_off s'amplia 20 minuts cada vegada que el PIR detecta moviment. Un "senyal PIR detectat!" es mostrarà el missatge al navegador web quan això passi.
- Mentre que Arduino està latent, els llums es poden activar i apagar mitjançant el comandament a distància. L'Arduino no contrarestarà.
- Un restabliment o un cicle d’alimentació de l’Arduino el portarà al mode actiu. Això significa que si l'Arduino s'ha restablert després del time_turn_off, Arduino encendrà els llums. Per evitar-ho, cal que Arduino passi al mode manual (marqueu "Control automàtic lleuger") i espereu fins al matí per tornar-lo a "Control automàtic lleuger".
- Com s'ha esmentat, Arduino espera que l'alba es torni a activar. Per això, el sistema es pot enganyar dirigint una llum prou forta cap al sensor de llum que superi el llindar de "lluminositat mínima". En cas que això passi, Arduino canviarà a estat actiu.
- El valor de tolerància és d’elevada importància per tal d’evitar que el sistema pugui activar i desactivar-se al voltant del valor llindar Lluminositat mínima. Les llums led, a causa del seu parpelleig i la seva alta capacitat de resposta, poden ser una font de comportament de batuda. Augmenteu el valor de tolerància si experimenteu aquest problema. Faig servir el valor 7.
És bo saber-ne el codi
- Com podeu observar, el codi és molt gran i fa servir una quantitat considerable de biblioteques. Això compromet la quantitat de memòria lliure necessària per a l'emmagatzematge dinàmic. En el passat, he notat un comportament inestable en frenar el sistema, sobretot després de trucades web. Per tant, el repte més gran que he tingut ha estat limitar la seva mida i l’ús de diverses variables per tal de fer que el sistema sigui estable.
- El codi que explota el servidor intern que he utilitzat a casa, funciona des de febrer de 2016 sense problemes.
- He fet esforços considerables per enriquir el codi amb explicacions. Aprofiteu-ho per jugar amb diversos paràmetres com el nombre d'enviaments de codi Nexa per ràfega, el temps de sincronització NTP, etc.
- El codi no inclou l’estiu. S’ha d’ajustar mitjançant el navegador web quan s’apliqui.
Alguns punts a tenir en compte
- Afegiu les antenes als mòduls de radiofreqüència (RF) TX i RX. T'estalviarà temps queixant-se de dos punts principals: la resistència i l'abast del senyal de RF. Faig servir un cable de 50 Ohms de 17,28 cm (6,80 polzades) de llarg.
- Aquest intructable pot funcionar amb altres sistemes domòtics com Proove, per exemple. Una de les moltes condicions que cal complir és que funcionin a la freqüència de 433,92 MHz.
- Un mal de cap important amb Arduino és tractar amb biblioteques que poden actualitzar-se amb el pas del temps i de sobte no tornar a ser compatibles amb el vostre "vell" esbós; el mateix problema pot sorgir en actualitzar el vostre IDE Arduino. Compte que aquest podria ser el nostre cas aquí -sí, el meu problema també.
- Diversos clients web simultanis amb diferents modes de llum creen un estat de "parpelleig".
Captura de pantalla
Al carrusel de la imatge de dalt, trobareu una captura de pantalla de la pàgina web que es mostra quan truqueu l'Arduino mitjançant el vostre navegador web. Donada la configuració IP predeterminada del codi, l'URL seria
Un aspecte que podria ser objecte de millora és el posicionament del botó "enviar", ja que té efecte a totes les caixes d'entrada i no només al "Control automàtic de llum", com es podria pensar. En altres paraules, si voleu canviar algun dels valors possibles, sempre heu de prémer el botó "Envia".
Documentació detallada / avançada
He adjuntat els fitxers següents perquè us puguin ajudar a entendre tota la solució, especialment per a la resolució i millora de problemes.
Arduino_NexaControl_IS.pdf proporciona documentació sobre la solució del servidor intern.
Arduino_NexaControl_ES.pdf proporciona documentació sobre la solució del servidor extern.
Referències externes
Sistema Nexa (suec)
Pas 5: acabat
Aquí ho teniu tot acabat i en acció!
El cas Arduino Uno es pot trobar a Thingiverse com a "Arduino Uno Rev3 amb caixa Ethernet Shield XL".
Recomanat:
Llum LED d'escriptori intel·ligent - Il·luminació intel·ligent amb Arduino - Espai de treball Neopixels: 10 passos (amb imatges)
Llum LED d'escriptori intel·ligent | Il·luminació intel·ligent amb Arduino | Espai de treball de Neopixels: ara passem molt de temps a casa estudiant i treballant virtualment, per què no fer que el nostre espai de treball sigui més gran amb un sistema d’il·luminació personalitzat i intel·ligent basat en els LEDs Arduino i Ws2812b. Aquí us mostro com construir el vostre Smart Llum LED d'escriptori que
Converteix un telèfon intel·ligent no utilitzat en una pantalla intel·ligent: 6 passos (amb imatges)
Converteix un telèfon intel·ligent no utilitzat en una pantalla intel·ligent: el tutorial de Deze es troba a Engels, per a la versió del clàssic espanyol. Teniu un telèfon intel·ligent (antic) sense utilitzar? Convertiu-lo en una pantalla intel·ligent amb Fulls de càlcul de Google i paper i llapis seguint aquest senzill tutorial pas a pas. Quan hagis acabat
Sistema d’il·luminació de passarel·la intel·ligent: equip Sailor Moon: 12 passos
Sistema d’il·luminació intel·ligent de passarel·la: equip Sailor Moon: Hola! Es tracta de Grace Rhee, Srijesh Konakanchi i Juan Landi, i junts som Team Sailor Moon. Avui us presentarem un projecte de bricolatge en dues parts que podeu implementar directament a casa vostra. El nostre sistema d’il·luminació de passarel·la intel·ligent final inclou un ul
Làmpada LED intel·ligent controlada per telèfon intel·ligent Bluetooth: 7 passos
Làmpada LED intel·ligent controlada per telèfon intel·ligent Bluetooth: sempre somio amb controlar els meus aparells d’il·luminació. Aleshores algú va fabricar una increïble llum LED de colors. Fa poc em vaig trobar amb una làmpada LED de Joseph Casha a Youtube. Inspirant-me en ell, vaig decidir afegir diverses funcions mantenint la comoditat
Rellotge despertador intel·ligent: un despertador intel·ligent fabricat amb Raspberry Pi: 10 passos (amb imatges)
Rellotge despertador intel·ligent: un rellotge despertador intel·ligent fet amb Raspberry Pi: Heu volgut mai un rellotge intel·ligent? Si és així, aquesta és la solució per a vosaltres. He creat Smart Alarm Clock (Rellotge despertador intel·ligent), aquest és un rellotge que permet canviar l’hora de l’alarma segons el lloc web. Quan l’alarma s’activi, hi haurà un so (brunzidor) i 2 llums