Taula de continguts:

Construïu un mòdul de lluminositat amb AtHome: 7 passos
Construïu un mòdul de lluminositat amb AtHome: 7 passos

Vídeo: Construïu un mòdul de lluminositat amb AtHome: 7 passos

Vídeo: Construïu un mòdul de lluminositat amb AtHome: 7 passos
Vídeo: Can you make your own battery pack for EVs - Edd China's Workshop Diaries 27 2024, Juliol
Anonim
Construeix un mòdul de lluminositat amb AtHome
Construeix un mòdul de lluminositat amb AtHome

AtHome és un projecte d'estudiants completament obert i de programari obert realitzat pel grup AtHome d'Epitech, amb l'objectiu de desenvolupar una solució connectada de diversos mòduls de sensors individuals que es comuniquin amb una base de dades allotjada a si mateixa que exposa una API que s'utilitza per alimentar una aplicació per a telèfons intel·ligents i una aplicació web. Els mòduls supervisen l’entorn interior d’una casa i són capaços de donar una retroalimentació visual a l’usuari, passant del verd (bo) al vermell (dolent) i les dades transmeses són visibles per l’usuari mitjançant la comunicació serial d’un mòdul o les nostres aplicacions si les feu servir.

Tot i que aquest projecte encara està en desenvolupament actiu, les funcionalitats bàsiques dels nostres mòduls ja estan preparades i suposadament fàcils d’utilitzar per desenvolupar mòduls personalitzats. Per això, us proposo que vegeu com construir el vostre propi mòdul senzill amb aquest exemple de mòdul de lluminositat.

Aquests mòduls es construeixen bàsicament amb una placa compatible amb Arduino (un nucli Arduino parcial hauria de ser suficient sempre que tingui suport Stream, Wire i UART), un LED (vermell o RGB) que es posi vermell en cas de problema, sensor, una font d'alimentació (alimentació de paret o bateria) i una caixa tallada per làser.

Sí, definitivament no és nou, hi ha molts projectes de sensors, però esperem que altres funcions com la detecció de problemes de salut, la comunicació i l’emmagatzematge d’informació en un servidor allotjat i l’aplicació de visualització us ajudin. O si només voleu controlar casa vostra, projectes senzills o no menys interessants:)

Pas 1: Recopilació de components

Recopilació de components
Recopilació de components

Per a aquest projecte, necessitareu uns quants components per construir el mòdul AtHome:

  • 1x targeta compatible amb Arduino: aquí utilitzaré un Arduino UNO (però també funciona amb altres plaques com TI Launchpads i ESP8266)
  • 1x sensor: utilitzaré un sensor de lluminositat TSL2561 (la llista de sensors compatibles està disponible a la documentació de la nostra biblioteca)
  • 1x led: faré servir un LED RGB encadenable Grove (però també pot ser un led vermell simple o un NeoPixel)
  • Filferros Dupont

La llista de components compatibles està disponible a la documentació del nostre projecte.

Pas 2: Instal·lació de la nostra biblioteca

Instal·lació de la nostra biblioteca
Instal·lació de la nostra biblioteca
Instal·lació de la nostra biblioteca
Instal·lació de la nostra biblioteca

Per instal·lar la nostra biblioteca, haureu de descarregar-la del nostre dipòsit (la publicarem més endavant a la llista Arduino IDE i PlatformIO) amb aquest enllaç:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy

A continuació, aneu a l'IDE Arduino i trieu "Sketch> Include Library> Add. ZIP Library …". A continuació, seleccioneu el fitxer zip anomenat "artifacts.zip" i feu clic a "D'acord".

Pas 3: Instal·lació de les biblioteques necessàries

Instal·lació de biblioteques necessàries
Instal·lació de biblioteques necessàries
Instal·lació de biblioteques necessàries
Instal·lació de biblioteques necessàries
Instal·lació de biblioteques necessàries
Instal·lació de biblioteques necessàries

Per funcionar, la nostra biblioteca necessita instal·lar algunes altres biblioteques al vostre ordinador:

  • Biblioteca Arkhipenko TaskScheduler
  • Biblioteca SEEED Studio Grove Digital Light Sensor
  • Biblioteca LED RGB encadenable de Studio Grove
  • Biblioteca Adafruit NeoPixel

Podeu instal·lar-los mitjançant el gestor de biblioteques de l'IDE Arduino, accedint a "Sketch"> "Inclou biblioteca"> "Gestiona biblioteques …".

A la nova finestra que s’obrirà, escriviu a la barra de cerca blanca el nom de la biblioteca que voleu instal·lar i feu clic al seu bloc. Apareixerà un botó "Instal·la", només cal que hi feu clic i l'IDE el descarregui i l'instal·li.

Pas 4: Muntatge del mòdul

Muntatge del mòdul
Muntatge del mòdul

Començarem pel sensor. Connecteu mitjançant un cable el pin VCC del TSL2561 al pin 5V de l'Arduino, el pin GND del sensor a un dels pin GND de l'Arduino i els pins SDA i SCL del sensor als pins SDA i SCL de l'Arduino. Ara heu acabat!

Ara, connecteu el pin VCC del LED RGB encadenable Grove al pin de 5 V de l’Arduino i el pin GND del LED al segon GND de l’Arduino. Si només sou un pin de 5V, podeu utilitzar una placa de connexió per connectar els 5v de l’Arduino a una fila + de la placa de taula i connectar-hi tots els components de pins de 5V o soldar-los junts en un tros de tauler de fusta o utilitzeu connectors wago o el que preferiu. Ara, connecteu el pin CI del vostre LED al pin 7 del vostre Arduino i el pin DI del vostre LED al pin 8 del vostre Arduino. Si no teniu aquest LED, no us preocupeu, és possible utilitzar el LED incorporat de la vostra placa Arduino o un clàssic amb només un petit canvi de codi.

Pas 5: escriure l'esbós del mòdul de lluminositat

Redacció del croquis del mòdul de lluminositat
Redacció del croquis del mòdul de lluminositat

Creem un nou esbós i escrivim el codi del nostre mòdul.

Si no us interessa l'explicació de l'esbós, podeu copiar-lo i enganxar-lo al vostre IDE Arduino:

#incloure

utilitzant LightModule = AtHomeModule; Stream * streams = {& Serial, nullptr}; GroveChainableLED:: Pins grovePins = {7, 8}; Led LED GroveChainable (& grovePins); LightModule * module = LightModule:: getInstance (); void setup () {// poseu aquí el vostre codi de configuració per executar-lo una vegada: Serial.begin (9600); module-> setStreams (corrents); GroveDigitalLightSensor * lightSensor = nou GroveDigitalLightSensor (); module-> setSensor (lightSensor); module-> setDisplay (& led); mòdul-> setup (); } void loop () {// poseu aquí el vostre codi principal per executar-lo repetidament: module-> run (); }

Si voleu entendre tot el que fa aquest codi, podeu llegir el següent o, si no us interessa, podeu passar directament al següent pas.

Per començar, hem d’incloure la nostra biblioteca al nostre esbós escrivint aquesta línia a la part superior de l’esbós:

#incloure

Ara, hem de crear un àlies de l’objecte del mòdul que farem servir. Es pot veure com un quadre amb diversos botons que serveixen per canviar els components, iniciar-lo, aturar-lo, etc. etc. Com que és una caixa construïda per una plantilla (com la plantilla habitual que fem servir per a projectes com a humans, té una base d’inici i el compilador d’Arduino construeix el codi final segons els paràmetres que li donem) que defineix el tipus que representa un valor del sensor i el nombre de valors del sensor que volem guardar a la memòria, s’especifica al seu nom i normalment s’ha de repetir cada vegada que el vulguem utilitzar. Això és una mica molest, per això associarem un nom nou, un àlies, al nom complet d’aquest quadre.

Posem per exemple que vull que aquest quadre es digui "LightModule", ja que s'utilitzarà per implementar un mòdul de control de lluminositat i vull mantenir només un valor a la vegada. La lluminositat es representa en lux com un tipus integral pel nostre sensor TSL2561, que és representat com un uint16_t per ordinadors. El nostre àlies serà així:

utilitzant LightModule = AtHomeModule;

la paraula clau "utilitzant" significa que estem creant un àlies i el nom que li donem just després correspon a la seqüència posterior al caràcter "=".

"AtHomeModule" és el nom real d'aquest quadre on donem un nom nou i els paràmetres que defineixen la representació del valor i el nombre de valors guardats a la memòria s'enumeren entre "".

Ara, quan més endavant utilitzarem el nom "AtHomeModule", Arduino sabrà que fa referència al nom complet "AtHomeModule".

Si voleu que el vostre quadre pugui conservar 5 valors a la memòria en lloc d’1, només heu de substituir el “1” per “5” i Arduino us generarà un tipus de quadre diferent per fer el que vulgueu. Tingueu en compte, però, que si el mòdul està programat per enviar els seus valors abans que tingui temps de mesurar efectivament 5 valors del sensor, mai no en veureu 5 enviats, ja que només envia els nous valors des de la darrera càrrega.

A continuació, hem de crear una matriu de punteres que continguin punteres en fluxos Arduino que el mòdul utilitza per comunicar-se, sempre finalitzats per keyworkd "nullptr". Aquí, només estic fent servir el flux "Serial" de l'Arduino que es comunica amb l'ordinador pel port USB, de manera que la matriu té aquest aspecte:

Stream * streams = {& Serial, nullptr};

El caràcter "*" significa que el tipus és un punter (la ubicació de l'element, no l'element en si) i els claudàtors "" vol dir que a Arduino és una matriu, de manera que podem posar diversos valors.

A continuació, hem de crear el nostre LED. Per fer-ho, hem d’escriure les dues línies següents;

GroveChainableLED:: Pins grovePins = {7, 8};

Led LED GroveChainable (& grovePins);

Si no teniu un LED Grove RGB però encara voleu obtenir una retroalimentació visual, podeu fer-ho amb un simple canvi a l'esbós. Substitueix les dues línies anteriors per aquesta línia:

LED monocromàtic (LED_BUILTIN);

En aquesta configuració, el LED integrat de color verd s’encendrà sempre que el valor monitoritzat sigui correcte per a la salut i s’apagui quan estigui fora d’enllaç. Si preferiu que s'encengui quan està fora de servei (perquè utilitzeu, per exemple, un LED vermell en lloc del verd del pin 13), podeu utilitzar aquesta línia:

Led LED monocromàtic (LED_BUILTIN, cert);

El següent pas és crear el nostre mòdul. Es fa la primera vegada que obtenim la seva ubicació a la memòria trucant al mètode "getInstance", així:

LightModule * module = LightModule:: getInstance ();

A continuació, hem d’establir els paràmetres a la funció “setup ()” d’Arduino, començant per inicialitzar el port “Serial” com és habitual als croquis d’Arduino:

Serial.begin (9600);

Creem el sensor de llum escrivint aquesta línia:

GroveDigitalLightSensor * lightSensor = nou GroveDigitalLightSensor ();

A continuació, li diem al nostre mòdul que utilitzi la nostra gamma de punteres a Arduino Stream per comunicar-se mitjançant ells:

module-> setStreams (corrents);

També li diem al nostre mòdul que utilitzi el nostre sensor de llum per controlar la intensitat de la llum on es troba el mòdul:

module-> setSensor (lightSensor);

Li diem al nostre mòdul que utilitzi el nostre LED per donar-nos una retroalimentació visual:

module-> setDisplay (& led);

Finalment, informem al nostre mòdul que està preparat per fer qualsevol configuració interna que hagi de fer trucant a la seva pròpia funció "setup":

mòdul-> setup ();

El nostre darrer pas ara és anomenar la funció "run ()" del nostre mòdul, que està dissenyat per cridar-se a cada iteració de la funció "loop" d'Arduino escrivint aquesta línia dins de la funció "loop":

module-> run ();

Ara, el nostre esbós ja està a punt per penjar-se a l’Arduino i provar el nostre mòdul.

Pas 6: provar el nostre mòdul AtHome

Provant el nostre mòdul AtHome
Provant el nostre mòdul AtHome
Provant el nostre mòdul AtHome
Provant el nostre mòdul AtHome

Per carregar l'esbós a l'Arduino, trieu la vostra placa Arduino UNO anant a "Eines"> "Port"> "[COMx o / dev / x] (Arduino / Genuino UNO)".

Per acabar, només cal que feu clic al botó "Puja" (el botó del cercle amb una fletxa que apunta a la dreta, la segona icona de la barra d'eines) per penjar l'esbós al tauler.

Està fet! Ara el mòdul hauria de funcionar i enviar valors al vostre ordinador visibles al monitor sèrie d’Arduino. Podeu comprovar-ho obrint el "Monitor serial" d'Arduino al menú "Eines" i hauríeu de tenir una sortida semblant a la segona imatge del títol d'aquest pas:)

Pas 7: Construir un cas per al mòdul

Construint un cas per al mòdul
Construint un cas per al mòdul

Podeu construir una caixa senzilla per al vostre mòdul tallant-lo amb làser en una planxa de fusta contraxapada de 3 mm.

Per fer els nostres estoigs, fem servir makercase per preparar una plantilla amb les dimensions desitjades que personalitzem més endavant. Trobareu el fitxer svg del mòdul de lluminositat adjunt a aquest pas.

A continuació, només cal enganxar les cares, excepte una, perquè pugueu obrir-la més endavant, posar el circuit a dins i enganxar el LED al forat de la caixa (utilitzem cinta transparent per omplir el forat i difondre la llum, a més d'enganxar el LED al davant d’ella).

Ara només cal afegir una bateria per alimentar el vostre Arduino, tanqueu la funda i el mòdul estarà llest i hauria de quedar bé:)

Recomanat: