Turinys:

Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių: 4 žingsniai
Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių: 4 žingsniai

Video: Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių: 4 žingsniai

Video: Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių: 4 žingsniai
Video: Running light without Arduino#arduinoproject #science #led 2024, Liepa
Anonim
Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių
Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių
Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių
Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių
Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių
Belaidė „Arduino“šviesą atitinkanti LED lempa naudojant fotorezistorių

Šioje instrukcijoje išsamiai aprašomi žingsniai, kurių reikia norint sukurti pradinę belaidę šviesos jutimo LED lempą naudojant „Arduino Unos“ir fotorezistorių. Galimas šio prietaiso pritaikymas būtų kambario, kuriame nėra langų, apšvietimas dirbtine saulės šviesa, atitinkantis realias apšvietimo sąlygas lauke realiu laiku. Pradėkime!

Tiekimo sąrašas:

Arduino Uno x2

NRF24L01 x2 belaidis siųstuvas -imtuvas (pasirinktinai - NRF24L01 kuprinė x2)

TIP120 Darlingtono tranzistorius

Fotorezistorius

5 mm šviesos diodai x3

Mygtukas

100 omų rezistorius x3

10 kΩ rezistorius x3

Įvairūs jungiamieji laidai

1 žingsnis: NRF24L01 modulių ir grandinės prijungimas

NRF24L01 modulių ir grandinės prijungimas
NRF24L01 modulių ir grandinės prijungimas
NRF24L01 modulių ir grandinės prijungimas
NRF24L01 modulių ir grandinės prijungimas
NRF24L01 modulių ir grandinės prijungimas
NRF24L01 modulių ir grandinės prijungimas

Šiame projekte vienas „Arduino“veiks kaip siųstuvas, siųsdamas šviesos lygio duomenis iš fotorezistoriaus, kai bus paspaustas mygtukas. Kitas „Arduino“tarnaus kaip imtuvas, paimdamas tuos duomenis ir paversdamas juos signalu į šviesos diodus. Pirmasis vaizdas rodo siųstuvo schemą, o antrasis - imtuvą.

Pastaba: mano projekto nuotraukose pastebėsite, kad NRF24L01 siųstuvas -imtuvai yra prijungti prie kitos PCB. Tai siųstuvo -imtuvo kuprinės modulis, veikiantis kaip galios reguliatorius. Šios kuprinės ne tik palengvina laidų prijungimą, bet ir reguliuoja NRF24L01 įvestį, leidžiantį naudoti 5 V maitinimo šaltinį. Aiškumo dėlei diagramoje praleidau šias kuprines.

(Jei nuspręsite naudoti kuprines, naudokite šią nuorodą, kad gautumėte kaiščių vietų schemą, nurodytą atsargų NRF24L01).

Žemiau pridedama grandinės PDF kopija, kad būtų lengviau priartinti/išsamiai peržiūrėti.

2 žingsnis: siųstuvo kodavimas

Paskutinis žingsnis yra kodavimas. Norėdami naudoti su NRF24L01 moduliais, turėsite įdiegti „RadioHead“biblioteką arba lygiavertę biblioteką.

Šiam projektui siųstuvas ir imtuvas „Arduinos“naudoja skirtingą kodą. Čia yra siųstuvo kodas:

Patogumo dėlei pridėjau.ino failą (NRF_Send).

#įtraukti

#įtraukti

RH_NRF24 nrf24; // Imtuvo imtuvo inicijavimas kaip nrf24

int mygtukas = 5; // Mygtuko ir fotorezistoriaus kaiščio verčių nustatymas

int pRezistorius = A0; int reikšmė = 0; // Šviesos vertė nuo 0-1023

negaliojanti sąranka ()

{Serial.begin (9600); pinMode (mygtukas, INPUT); pinMode (pResistor, INPUT); if (! nrf24.init ()) // Įspėja vartotoją, jei nepavyksta inicijuoti modulio Serial.println ("init nepavyko"); // Pagal numatytuosius nustatymus po init yra 2,402 GHz (2 kanalas), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel nepavyko"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF nepavyko"); }

tuštumos kilpa ()

{if (digitalRead (mygtukas)) {// Siųsti pranešimą, jei mygtukas yra paspaustas value = analogRead (pResistor); // Skaityti fotorezistoriaus reikšmę (0-1023) uint8_t data = {value}; // Nustato masyvą, pavadintą „data “, kuriame yra šviesos vertė nrf24.send (data, sizeof (data)); // Siųsti masyvą imtuvui nrf24.waitPacketSent (); // Palaukite, kol paketas bus išsiųstas Serial.println ("Light Value:" +String (value)); // Spausdinkite šviesos vertę į nuoseklųjį monitorių}}

3 žingsnis: imtuvo kodavimas

Imtuve kodas taip pat naudoja „RadioHead“biblioteką.

#įtraukti

#įtraukti

RH_NRF24 nrf24;

int LEDPin = 3;

int reikšmė = 0; // Šviesos vertė nuo 0-1023

negaliojanti sąranka ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); if (! nrf24.init ()) Serial.println ("init nepavyko"); // Numatytieji nustatymai po init yra 2,402 GHz (2 kanalas), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel nepavyko"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF nepavyko"); }

tuštumos kilpa ()

{// Palaukite pranešimo uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // Gautą pranešimą išsaugoti kaip masyvą, pavadintą "buf " uint8_t len = sizeof (buf); // Išsaugokite buf dydį kaip „len“, kol (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Gauna pranešimą 200 milisekundžių arba kol bus gautas visas pranešimas {value = buf [0]; // Nustato vertę į pirmąjį buf indeksą, kuris yra int iš fotorezistoriaus analogWrite (LEDPin, map (value, 0, 1023, 0, 255)); // Nustato PWM kaištį, kad išvestų skalės reikšmę tarp 0–255 šviesos diodo ryškumui Serial.println (String (vertė)); } analogWrite (LEDPin, 0); }

4 žingsnis: ATLIKTA

Mėgaukitės žaisdami su skirtingu apšvietimo lygiu ir stebėdami, kaip šviesos diodai juos atitinka! Fotorezistorius kartais gali būti švelnus ir geriausiai veikia tamsioje patalpoje, kurioje yra lokalizuotas šviesos šaltinis (tačiau gali veikti ir lauke, saulėje).

Rekomenduojamas: