INHOUDSOPGAWE:

Draadlose Arduino ligbypassende LED-lamp met fotoresistor: 4 stappe
Draadlose Arduino ligbypassende LED-lamp met fotoresistor: 4 stappe

Video: Draadlose Arduino ligbypassende LED-lamp met fotoresistor: 4 stappe

Video: Draadlose Arduino ligbypassende LED-lamp met fotoresistor: 4 stappe
Video: Подключение и настройка аналогового датчика освещенности KY-018 с помощью контроллера FIBARO RGBW 2024, November
Anonim
Draadlose Arduino ligbypassende LED-lamp met fotoresistor
Draadlose Arduino ligbypassende LED-lamp met fotoresistor
Draadlose Arduino ligbypassende LED-lamp met fotoresistor
Draadlose Arduino ligbypassende LED-lamp met fotoresistor
Draadlose Arduino ligbypassende LED-lamp met fotoresistor
Draadlose Arduino ligbypassende LED-lamp met fotoresistor

Hierdie instruksies beskryf die stappe wat nodig is om 'n rudimentêre draadlose ligwaarnemende LED-lamp te bou met behulp van Arduino Unos en 'n fotoresistor. 'N Moontlike toepassing vir hierdie toestel is die aansteek van 'n kamer sonder vensters met kunsmatige sonlig, wat ooreenstem met die werklike beligtingstoestande buite in reële tyd. Laat ons begin!

Voorsieningslys:

Arduino Uno x2

NRF24L01 Draadlose transceiver x2 (opsioneel - NRF24L01 rugsak x2)

TIP120 darlington -transistor

Fotoresistor

5 mm LED's x3

Druk knoppie

100 ohm weerstand x3

10k ohm weerstand x3

Verskeie springdrade

Stap 1: Bedrading van die NRF24L01 -modules en stroombaan

Bedrading van die NRF24L01 -modules en stroombaan
Bedrading van die NRF24L01 -modules en stroombaan
Bedrading van die NRF24L01 -modules en stroombaan
Bedrading van die NRF24L01 -modules en stroombaan
Bedrading van die NRF24L01 -modules en stroombaan
Bedrading van die NRF24L01 -modules en stroombaan

In hierdie projek sal een Arduino as 'n sender dien, wat ligvlakdata vanaf die fotoresistor stuur wanneer die drukknop ingedruk word. Die ander Arduino dien as ontvanger, neem die data en omskep dit in die sein na die LED's. Die eerste beeld toon die sender -diagram, en die tweede toon die ontvanger.

Let wel: op die foto's van my projek sien u dat die NRF24L01 -ontvangers aan 'n ander PCB gekoppel is. Dit is 'n rugsakmodule vir die ontvangers, wat dien as 'n kragreguleerder. Behalwe dat die bedrading vergemaklik word, reguleer hierdie rugsakke ook die ingang van die NRF24L01, wat die gebruik van 'n 5V -kragtoevoer moontlik maak. Ter wille van die duidelikheid het ek hierdie rugsakke in my diagram weggelaat.

(As u besluit om die rugsakke te gebruik, verwys na hierdie skakel vir 'n diagram van die penpunte met verwysing na die voorraad NRF24L01).

Hieronder is 'n PDF -kopie van die kring aangeheg vir makliker inzoomen/gedetailleerde besigtiging.

Stap 2: Kodering van die sender

Die laaste stap is kodering. U moet die RadioHead -biblioteek of 'n ekwivalente biblioteek installeer vir gebruik met die NRF24L01 -modules.

Vir hierdie projek gebruik die sender en ontvanger Arduinos verskillende kode op elkeen. Hier is die kode vir die sender:

Ek het ook die.ino -lêer (NRF_Send) aangeheg vir gemak.

#insluit

#insluit

RH_NRF24 nrf24; // Initialiseer 'n transceiver as nrf24

int knoppie = 5; // Stel penwaardes vir die knoppie en fotoresistor in

int pResistor = A0; int waarde = 0; // Waarde van lig van 0-1023

leemte opstelling ()

{Serial.begin (9600); pinMode (knoppie, INVOER); pinMode (pResistor, INPUT); if (! nrf24.init ()) // Waarsku die gebruiker as die inisialisering van die module misluk Serial.println ("init misluk"); // Standaard na init is 2.402 GHz (kanaal 2), 2Mbps, 0dBm as (! Nrf24.setChannel (1)) Serial.println ("setChannel misluk"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF misluk"); }

leemte lus ()

{if (digitalRead (knoppie)) {// Stuur 'n boodskap as die knoppie ingedruk word value = analogRead (pResistor); // Lees die waarde van die fotoresistor (0-1023) uint8_t data = {waarde}; // Stel 'n skikking met die naam "data " wat die ligwaarde nrf24.send bevat (data, sizeof (data)); // Stuur die skikking na die ontvanger nrf24.waitPacketSent (); // Wag totdat die pakkie gestuur is Serial.println ("Light Value:" +String (value)); // Druk die ligwaarde op die seriële monitor}}

Stap 3: Kodering van die ontvanger

Vir die ontvanger gebruik die kode ook die RadioHead -biblioteek.

#insluit

#insluit

RH_NRF24 nrf24;

int LEDPin = 3;

int waarde = 0; // Waarde van lig van 0-1023

leemte opstelling ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); as (! nrf24.init ()) Serial.println ("init misluk"); // Standaard na init is 2.402 GHz (kanaal 2), 2Mbps, 0dBm as (! Nrf24.setChannel (1)) Serial.println ("setChannel misluk"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF misluk"); }

leemte lus ()

{// Wag vir 'n boodskap uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // Stoor die ontvangde boodskap as 'n skikking genaamd "buf " uint8_t len = sizeof (buf); // Stoor die grootte van buf as "len" terwyl (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Ontvang die boodskap vir 200 millisekondes of totdat die hele boodskap ontvang is {value = buf [0]; // Stel waarde op die eerste indeks van buf , wat die int is van die fotoresistor analogWrite (LEDPin, map (waarde, 0, 1023, 0, 255)); // Stel die PWM-pen in om 'n afgeskaalde waarde tussen 0-255 vir die LED-helderheid Serial.println (string (waarde)) uit te voer; } analogWrite (LEDPin, 0); }

Stap 4: GEDOEN

Speel met verskillende ligvlakke en kyk hoe die LED's daarby pas! Die fotoresistor kan soms fyn wees en werk die beste in 'n donker kamer met 'n gelokaliseerde ligbron (maar kan ook buite met die son werk).

Aanbeveel: