Spisu treści:

Bezprzewodowa lampa LED Arduino dopasowująca się do światła za pomocą fotorezystora: 4 kroki
Bezprzewodowa lampa LED Arduino dopasowująca się do światła za pomocą fotorezystora: 4 kroki

Wideo: Bezprzewodowa lampa LED Arduino dopasowująca się do światła za pomocą fotorezystora: 4 kroki

Wideo: Bezprzewodowa lampa LED Arduino dopasowująca się do światła za pomocą fotorezystora: 4 kroki
Wideo: sterownik serwomechanizmu dla początkujących Mirek Sakowicz 2024, Listopad
Anonim
Bezprzewodowa lampa LED dopasowująca światło Arduino za pomocą fotorezystora
Bezprzewodowa lampa LED dopasowująca światło Arduino za pomocą fotorezystora
Bezprzewodowa lampa LED dopasowująca światło Arduino za pomocą fotorezystora
Bezprzewodowa lampa LED dopasowująca światło Arduino za pomocą fotorezystora
Bezprzewodowa lampa LED dopasowująca światło Arduino za pomocą fotorezystora
Bezprzewodowa lampa LED dopasowująca światło Arduino za pomocą fotorezystora

Ta instrukcja opisuje kroki niezbędne do skonstruowania podstawowej bezprzewodowej lampy LED z czujnikiem światła przy użyciu Arduino Unos i fotorezystora. Możliwym zastosowaniem tego urządzenia byłoby oświetlenie pomieszczenia, w którym nie ma okien sztucznym światłem słonecznym, dopasowując się w czasie rzeczywistym do rzeczywistych warunków oświetlenia na zewnątrz. Zacznijmy!

Lista dostaw:

Arduino Uno x2

Nadajnik-odbiornik bezprzewodowy NRF24L01 x2 (opcjonalnie - plecak NRF24L01 x2)

Tranzystor TIP120 darlington

Fotorezystor

Diody LED 5mm x3

Naciśnij przycisk

Rezystor 100 omów x3

Rezystor 10 kΩ x3

Różne przewody połączeniowe

Krok 1: Okablowanie modułów i obwodu NRF24L01

Okablowanie modułów i obwodu NRF24L01
Okablowanie modułów i obwodu NRF24L01
Okablowanie modułów i obwodu NRF24L01
Okablowanie modułów i obwodu NRF24L01
Okablowanie modułów i obwodu NRF24L01
Okablowanie modułów i obwodu NRF24L01

W tym projekcie jedno Arduino będzie działać jako nadajnik, wysyłając dane o poziomie światła z fotorezystora po naciśnięciu przycisku. Drugi Arduino będzie służył jako odbiornik, pobierający te dane i przetwarzający je na sygnał do diod LED. Pierwszy obraz przedstawia schemat nadajnika, a drugi odbiornik.

Uwaga: na zdjęciach mojego projektu zauważycie, że transceivery NRF24L01 są przymocowane do innej płytki drukowanej. Jest to moduł plecakowy na transceivery, który pełni rolę regulatora mocy. Oprócz ułatwienia okablowania, plecaki te regulują pobór mocy dla NRF24L01, umożliwiając korzystanie z zasilacza 5 V. Pominąłem te plecaki na moim schemacie dla jasności.

(Jeśli zdecydujesz się na użycie plecaków, zapoznaj się z tym linkiem, aby zapoznać się ze schematem lokalizacji pinów w odniesieniu do zapasów NRF24L01).

Poniżej znajduje się kopia obwodu w formacie PDF, ułatwiająca powiększanie/oglądanie szczegółów.

Krok 2: Kodowanie nadajnika

Ostatnim krokiem jest kodowanie. Będziesz musiał zainstalować bibliotekę RadioHead lub równoważną bibliotekę do użytku z modułami NRF24L01.

W tym projekcie nadajnik i odbiornik Arduino używają innego kodu na każdym. Oto kod nadajnika:

Dla wygody załączyłem również plik.ino (NRF_Send).

#włączać

#włączać

RH_NRF24 nrf24; //Inicjalizacja transceivera jako nrf24

wewn przycisk = 5; //Ustawianie wartości pinów dla przycisku i fotorezystora

int pRezystor = A0; wartość int = 0; //Wartość światła od 0-1023

pusta konfiguracja()

{ Szeregowy.początek(9600); pinMode(przycisk, WEJŚCIE); pinMode(pRezystor, WEJŚCIE); if (!nrf24.init()) //Ostrzega użytkownika, jeśli inicjalizacja modułu nie powiedzie się Serial.println("inicjowanie nie powiodło się"); // Wartości domyślne po init to 2,402 GHz (kanał 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF nie powiodło się"); }

pusta pętla()

{ if (digitalRead(przycisk)) { //Wyślij wiadomość po naciśnięciu przycisku value = analogRead(pResistor); //Odczytaj wartość fotorezystora (0-1023) uint8_t data = {value}; //Ustawia tablicę o nazwie "data" zawierającą wartość światła nrf24.send(data, sizeof(data)); //Wyślij tablicę do odbiorcy nrf24.waitPacketSent(); //Poczekaj, aż pakiet zostanie wysłany Serial.println("Wartość światła: " +String(wartość)); //Wydrukuj wartość światła na monitorze szeregowym } }

Krok 3: Kodowanie odbiornika

W przypadku odbiornika kod wykorzystuje również bibliotekę RadioHead.

#włączać

#włączać

RH_NRF24 nrf24;

wewn. LEDPin = 3;

wartość int = 0; //Wartość światła od 0-1023

pusta konfiguracja()

{ Szeregowy.początek(9600); pinMode (LEDPin, WYJŚCIE); if (!nrf24.init()) Serial.println("inicjowanie nie powiodło się"); // Wartości domyślne po init to 2,402 GHz (kanał 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF nie powiodło się"); }

pusta pętla()

{ // Czekaj na wiadomość uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; //Przechowuj odebraną wiadomość jako tablicę o nazwie "buf" uint8_t len = sizeof(buf); //Przechowuj rozmiar buf jako "len" while (nrf24.waitAvailableTimeout(200) && nrf24.recv(buf, &len)) //Odbiera wiadomość przez 200 milisekund lub do momentu odebrania całej wiadomości { value = buf[0]; //Ustawia wartość na pierwszy indeks buf, który jest int z fotorezystora analogWrite(LEDPin, map(value, 0, 1023, 0, 255)); //Ustawia pin PWM tak, aby wyświetlał przeskalowaną wartość z zakresu od 0 do 255 dla jasności LED Serial.println(String(value)); } zapis analogowy(LEDPin, 0); }

Krok 4: GOTOWE

Baw się z różnymi poziomami światła i obserwuj, jak diody LED je dopasowują! Fotorezystor może być czasami wybredny i działa najlepiej w ciemnym pomieszczeniu ze zlokalizowanym źródłem światła (ale może działać również na zewnątrz ze słońcem).

Zalecana: