Talaan ng mga Nilalaman:

Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor: 4 Hakbang
Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor: 4 Hakbang

Video: Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor: 4 Hakbang

Video: Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor: 4 Hakbang
Video: What is a PhotoResistor? 2024, Hulyo
Anonim
Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor
Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor
Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor
Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor
Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor
Wireless Arduino Light-Matching LED Lamp Gamit ang Photoresistor

Itinuturo nito ang mga detalye ng mga hakbang na kinakailangan upang makabuo ng isang panimula ng wireless light-sensing LED lampara gamit ang Arduino Unos at isang photoresistor. Ang isang posibleng application para sa aparatong ito ay ang pag-iilaw ng isang silid na walang mga bintana na may artipisyal na sikat ng araw, na tumutugma sa aktwal na mga kundisyon ng pag-iilaw sa labas ng real time. Magsimula na tayo!

Listahan ng Supply:

Arduino Uno x2

NRF24L01 Wireless transceiver x2 (Opsyonal - NRF24L01 backpack x2)

TIP120 darlington transistor

Photoresistor

5mm LEDs x3

Pushbutton

100 ohm risistor x3

10k ohm risistor x3

Iba't ibang Mga Jumper Wires

Hakbang 1: Pag-kable ng mga Module at Circuit ng NRF24L01

Pag-kable ng mga Module at Circuit ng NRF24L01
Pag-kable ng mga Module at Circuit ng NRF24L01
Pag-kable ng mga Module at Circuit ng NRF24L01
Pag-kable ng mga Module at Circuit ng NRF24L01
Pag-kable ng mga Module at Circuit ng NRF24L01
Pag-kable ng mga Module at Circuit ng NRF24L01

Sa proyektong ito, ang isang Arduino ay kikilos bilang isang transmiter, na magpapadala ng data ng antas ng ilaw mula sa photoresistor kapag pinindot ang pushbutton. Ang iba pang Arduino ay magsisilbing isang tatanggap, kinukuha ang data na iyon at binabago ito sa signal sa mga LED. Ipinapakita ng unang imahe ang diagram ng transmiter, at ang pangalawa ay nagpapakita ng tatanggap.

Tandaan: sa mga larawan ng aking proyekto, mapapansin mo na ang mga NRF24L01 transceiver ay nakakabit sa isa pang PCB. Ito ay isang module ng backpack para sa mga transceiver, na gumaganap bilang isang power regulator. Bilang karagdagan sa ginagawang mas madali ang mga kable, ang mga backpacks na ito ang kumokontrol sa input ng kuryente para sa NRF24L01, na nagpapahintulot sa paggamit ng isang 5V power supply. Inalis ko ang mga backpacks na ito sa aking diagram para sa kapakanan ng kalinawan.

(Kung magpasya kang gamitin ang mga backpacks, mangyaring mag-refer sa link na ito para sa isang diagram ng mga lokasyon ng pin na tumutukoy sa stock NRF24L01).

Nakalakip sa ibaba ay isang kopya ng PDF ng circuit, para sa mas madaling pag-zoom / detalyadong pagtingin.

Hakbang 2: Pag-coding sa Transmitter

Ang huling hakbang ay ang pag-coding. Kakailanganin mong i-install ang RadioHead library o isang katumbas na silid-aklatan para magamit sa mga modyul na NRF24L01.

Para sa proyektong ito, ang transmitter at receiver na Arduinos ay gumagamit ng iba't ibang code sa bawat isa. Narito ang code para sa transmiter:

Nag-attach din ako ng.ino file (NRF_Send) para sa kaginhawaan.

# isama

# isama

RH_NRF24 nrf24; // Initializing a transceiver as nrf24

int button = 5; // Ang pagtatakda ng mga halaga ng pin para sa pindutan at photoresistor

int pResistor = A0; int halaga = 0; // Halaga ng ilaw mula 0-1023

walang bisa ang pag-setup ()

{Serial.begin (9600); pinMode (pindutan, INPUT); pinMode (pResistor, INPUT); kung (! nrf24.init ()) // Alerto ang gumagamit kung nabigo ang pagsisimula ng module na Serial.println ("nabigo ang init"); // Defaults after init are 2.402 GHz (channel 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel failed"); kung (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("Nabigo ang setRF"); }

walang bisa loop ()

{if (digitalRead (button)) {// Magpadala ng isang mensahe kung ang pindutan ay pinindot na halaga = analogRead (pResistor); // Basahin ang halaga ng photoresistor (0-1023) uint8_t data = {halaga}; // Nagtatakda ng isang array na tinatawag na "data " na naglalaman ng light halaga nrf24.send (data, sizeof (data)); // Ipadala ang array sa tumatanggap ng nrf24.waitPacketSent (); // Maghintay hanggang maipadala ang packet sa Serial.println ("Light Value:" + String (halaga)); // I-print ang magaan na halaga sa serial monitor}}

Hakbang 3: Pag-coding ng Tumatanggap

Para sa tatanggap, gumagamit din ang code ng RadioHead Library.

# isama

# isama

RH_NRF24 nrf24;

int LEDPin = 3;

int halaga = 0; // Halaga ng ilaw mula 0-1023

walang bisa ang pag-setup ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); kung (! nrf24.init ()) Serial.println ("init failed"); // Defaults after init are 2.402 GHz (channel 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel failed"); kung (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("Nabigo ang setRF"); }

walang bisa loop ()

{// Maghintay para sa isang mensahe uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // Itago ang natanggap na mensahe bilang isang array na tinatawag na "buf " uint8_t len = sizeof (buf); // Itago ang laki ng buf bilang "len" habang (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Natatanggap ang mensahe para sa 200 milliseconds o hanggang sa ang buong mensahe ay matanggap {value = buf [0]; // Nagtatakda ng halaga sa unang index ng buf , na kung saan ay ang int mula sa photoresistor analogWrite (LEDPin, mapa (halaga, 0, 1023, 0, 255)); // Itinatakda ang PWM pin upang maglabas ng isang naka-scale na halaga sa pagitan ng 0-255 para sa LED brightness Serial.println (String (halaga)); } analogWrite (LEDPin, 0); }

Hakbang 4: TAPOS

Masiyahan sa paglalaro sa paligid ng iba't ibang mga antas ng ilaw at panonood ng mga LED na tumutugma sa kanila! Ang photoresistor ay maaaring maging finicky minsan, at pinakamahusay na gumagana sa isang madilim na silid na may isang naisalokal na mapagkukunan ng ilaw (ngunit maaari ding gumana sa labas ng araw).

Inirerekumendang: