Съдържание:

Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор: 4 стъпки
Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор: 4 стъпки

Видео: Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор: 4 стъпки

Видео: Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор: 4 стъпки
Видео: Zigbee LED контроллер C01Z - для диммируемых светильников, обзор и тестирование 2024, Ноември
Anonim
Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор
Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор
Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор
Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор
Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор
Безжична LED лампа Arduino, съвпадаща със светлината, използваща фоторезистор

Тази инструкция подробно описва стъпките, необходими за конструирането на елементарна безжична светодиодна лампа със светодиоди, използваща Arduino Unos и фоторезистор. Възможно приложение за това устройство би било осветяване на стая, която няма прозорци с изкуствена слънчева светлина, съответстваща на действителните условия на осветление навън в реално време. Да започваме!

Списък на доставките:

Arduino Uno x2

NRF24L01 Безжичен трансивър x2 (по избор - раница NRF24L01 x2)

TIP120 Дарлингтън транзистор

Фоторезистор

5 мм светодиоди x3

Натисни бутона

100 ома резистор x3

10k ом резистор x3

Различни джъмперни проводници

Стъпка 1: Окабеляване на модулите и веригата NRF24L01

Окабеляване на модулите и веригата NRF24L01
Окабеляване на модулите и веригата NRF24L01
Окабеляване на модулите и веригата NRF24L01
Окабеляване на модулите и веригата NRF24L01
Окабеляване на модулите и веригата NRF24L01
Окабеляване на модулите и веригата NRF24L01

В този проект един Arduino ще действа като предавател, изпращайки данни за нивото на светлината от фоторезистора, когато бутонът е натиснат. Другият Arduino ще служи като приемник, като приема тези данни и ги трансформира в сигнал към светодиодите. Първото изображение показва диаграмата на предавателя, а второто показва приемника.

Забележка: на снимките на моя проект ще забележите, че трансиверите NRF24L01 са прикрепени към друга печатна платка. Това е раничен модул за трансиверите, който действа като регулатор на мощността. Освен че улесняват окабеляването, тези раници регулират входящата мощност за NRF24L01, позволявайки използването на 5V захранване. За по -голяма яснота съм пропуснал тези раници в диаграмата си.

(Ако решите да използвате раниците, моля, вижте тази връзка за диаграма на местоположението на щифтовете във връзка с наличния NRF24L01).

Приложено по -долу е PDF копие на схемата, за по -лесно мащабиране/подробно гледане.

Стъпка 2: Кодиране на предавателя

Последната стъпка е кодирането. Ще трябва да инсталирате библиотеката RadioHead или еквивалентна библиотека за използване с модулите NRF24L01.

За този проект предавателят и приемникът Arduinos използват различен код за всеки. Ето кода за предавателя:

Приложих и.ino файла (NRF_Send) за удобство.

#включва

#включва

RH_NRF24 nrf24; // Инициализиране на трансивър като nrf24

бутон int = 5; // Задаване на стойности на щифтове за бутона и фоторезистора

int pResistor = A0; int стойност = 0; // Стойност на светлината от 0-1023

void setup ()

{Serial.begin (9600); pinMode (бутон, INPUT); pinMode (pResistor, INPUT); if (! nrf24.init ()) // Предупреждава потребителя, ако инициализацията на модула не успее Serial.println ("init failed"); // По подразбиране след init са 2.402 GHz (канал 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF неуспешно"); }

void loop ()

{if (digitalRead (button)) {// Изпращане на съобщение, ако бутонът е натиснат value = analogRead (pResistor); // Прочетете стойността на фоторезистора (0-1023) uint8_t данни = {стойност}; // Задава масив, наречен "data ", съдържащ светлинната стойност nrf24.send (data, sizeof (data)); // Изпращаме масива на получателя nrf24.waitPacketSent (); // Изчакайте, докато пакетът бъде изпратен Serial.println ("Light Value:" +String (value)); // Отпечатайте светлинната стойност в серийния монитор}}

Стъпка 3: Кодиране на приемника

За приемника кодът използва и библиотеката RadioHead.

#включва

#включва

RH_NRF24 nrf24;

int LEDPin = 3;

int стойност = 0; // Стойност на светлината от 0-1023

void setup ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); if (! nrf24.init ()) Serial.println ("init failed"); // По подразбиране след init са 2.402 GHz (канал 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF неуспешно"); }

void loop ()

{// Изчакайте съобщение uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // Съхраняваме полученото съобщение като масив, наречен "buf " uint8_t len = sizeof (buf); // Съхраняваме размера на buf като "len" while (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Получава съобщението за 200 милисекунди или докато цялото съобщение бъде получено {value = buf [0]; // Задава стойност на първия индекс на buf , който е int от фоторезистора analogWrite (LEDPin, map (стойност, 0, 1023, 0, 255)); // Задава PWM извода за извеждане на мащабирана стойност между 0-255 за яркостта на LED Serial.println (String (стойност)); } analogWrite (LEDPin, 0); }

Стъпка 4: ГОТОВО

Насладете се на игра с различни нива на осветеност и гледайте светодиодите да ги съчетават! Фоторезисторът понякога може да бъде фин и работи най -добре в тъмна стая с локализиран източник на светлина (но може да работи и навън със слънцето).

Препоръчано: