Mundarija:

Fotoresistor yordamida simsiz Arduino yorug'lik mos keladigan LED chiroq: 4 qadam
Fotoresistor yordamida simsiz Arduino yorug'lik mos keladigan LED chiroq: 4 qadam

Video: Fotoresistor yordamida simsiz Arduino yorug'lik mos keladigan LED chiroq: 4 qadam

Video: Fotoresistor yordamida simsiz Arduino yorug'lik mos keladigan LED chiroq: 4 qadam
Video: ESP32 Project 35 - Plant Monitor, soil, temperature and light | SunFounder's ESP32 IoT Learnig kit 2024, Noyabr
Anonim
Fotoresistor yordamida simsiz Arduino Light-Match LED lampasi
Fotoresistor yordamida simsiz Arduino Light-Match LED lampasi
Fotoresistor yordamida simsiz Arduino Light-Match LED lampasi
Fotoresistor yordamida simsiz Arduino Light-Match LED lampasi
Fotoresistor yordamida simsiz Arduino Light-Match LED lampasi
Fotoresistor yordamida simsiz Arduino Light-Match LED lampasi

Bu ko'rsatma Arduino Unos va fotorezistor yordamida oddiy simsiz nurni sezuvchi LED chiroqni yaratish uchun zarur bo'lgan qadamlarni batafsil bayon qiladi. Sun'iy quyosh nuri bo'lmagan derazalari bo'lmagan xonani haqiqiy vaqtda tashqaridagi yorug'lik sharoitlariga mos keladigan tarzda yoritish mumkin. Qani boshladik!

Ta'minot ro'yxati:

Arduino Uno x2

NRF24L01 simsiz qabul qiluvchi x2 (ixtiyoriy - NRF24L01 xalta x2)

TIP120 darlington tranzistor

Fotoresistor

5 mm diodli LEDlar x3

Tugma

100 ohm qarshilik x3

10k ohmli qarshilik x3

Har xil o'tish simlari

1 -qadam: NRF24L01 modullari va sxemasini ulash

NRF24L01 modullari va kontaktlarning zanglashiga olib kelishi
NRF24L01 modullari va kontaktlarning zanglashiga olib kelishi
NRF24L01 modullari va kontaktlarning zanglashiga olib kelishi
NRF24L01 modullari va kontaktlarning zanglashiga olib kelishi
NRF24L01 modullari va kontaktlarning zanglashiga olib kelishi
NRF24L01 modullari va kontaktlarning zanglashiga olib kelishi

Ushbu loyihada bitta Arduino uzatuvchi vazifasini bajaradi, tugma bosilganda fotorezistordan yorug'lik darajasi ma'lumotlarini yuboradi. Boshqa Arduino qabul qiluvchi bo'lib xizmat qiladi, bu ma'lumotlarni oladi va uni LEDga signalga aylantiradi. Birinchi rasmda uzatuvchi diagrammasi, ikkinchisida qabul qiluvchining tasviri ko'rsatilgan.

E'tibor bering: mening loyihamning fotosuratlarida siz NRF24L01 uzatgichlari boshqa PCBga ulanganini ko'rasiz. Bu quvvat regulyatori vazifasini bajaruvchi uzatgichlar uchun ryukzak moduli. Kabelni ulashni osonlashtirishdan tashqari, bu xalta NRF24L01 uchun quvvat manbaini tartibga soladi, bu esa 5V quvvat manbaidan foydalanishga imkon beradi. Men aniqlik uchun diagrammada bu sumkalarni qoldirganman.

(Agar siz ryukzaklardan foydalanishga qaror qilsangiz, iltimos, NRF24L01 zaxirasiga qarab, pinlar joylashuvi diagrammasini ko'ring).

Kattalashtirish/batafsil ko'rish uchun sxemaning PDF nusxasi quyida ilova qilingan.

2 -qadam: Transmitterni kodlash

Oxirgi qadam - kodlash. NRF24L01 modullaridan foydalanish uchun siz RadioHead kutubxonasini yoki unga teng keladigan kutubxonani o'rnatishingiz kerak bo'ladi.

Ushbu loyiha uchun Arduinos uzatuvchi va qabul qiluvchisi har birida har xil kodlardan foydalanadi. Bu erda transmitter kodi:

Men ham qulaylik uchun.ino faylini (NRF_Send) biriktirdim.

#qo'shing

#qo'shing

RH_NRF24 nrf24; // Nrf24 sifatida qabul qilgichni ishga tushirish

int tugmasi = 5; // Tugma va fotorezistor uchun pin qiymatlarini o'rnatish

int pResistor = A0; int qiymati = 0; // 0-1023 gacha bo'lgan yorug'lik qiymati

bo'sh o'rnatish ()

{Serial.begin (9600); pinMode (tugma, INPUT); pinMode (pResistor, INPUT); if (! nrf24.init ()) // Modulni ishga tushirish Serial.println ("init muvaffaqiyatsiz") bajarilmasa, foydalanuvchini ogohlantiradi; // Boshlangandan keyin standart sozlamalar 2,402 gigagertsli (2 -kanal), 2Mbps, 0dBm bo'lsa (! Nrf24.setChannel (1)) Serial.println ("setChannel muvaffaqiyatsiz"); agar (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF bajarilmadi"); }

bo'sh halqa ()

{if (digitalRead (tugma)) {// Agar tugma bosilsa, xabar yuboring value = analogRead (pResistor); // Fotorezistor qiymatini o'qing (0-1023) uint8_t ma'lumotlar = {qiymat}; // nrf24.send (data, sizeof (data)) yorug'lik qiymatini o'z ichiga olgan "data " nomli qatorni o'rnatadi; // massivni qabul qiluvchiga yuboring nrf24.waitPacketSent (); // Paket yuborilishini kuting Serial.println ("Yorug'lik qiymati:" +String (qiymat)); // yorug'lik qiymatini ketma -ket monitorga chop eting}}

3 -qadam: Qabul qiluvchini kodlash

Qabul qiluvchilar uchun kod RadioHead kutubxonasidan ham foydalanadi.

#qo'shing

#qo'shing

RH_NRF24 nrf24;

int LEDPin = 3;

int qiymati = 0; // 0-1023 gacha bo'lgan yorug'lik qiymati

bo'sh o'rnatish ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); if (! nrf24.init ()) Serial.println ("init muvaffaqiyatsiz"); // Boshlangandan keyin standart sozlamalar 2,402 gigagertsli (2 -kanal), 2Mbps, 0dBm bo'lsa (! Nrf24.setChannel (1)) Serial.println ("setChannel muvaffaqiyatsiz"); agar (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF bajarilmadi"); }

bo'sh halqa ()

{// uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN] xabarini kuting; // Qabul qilingan xabarni "buf " qatori sifatida saqlang uint8_t len = sizeof (buf); // buf hajmini "len" sifatida saqlang (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Xabarni 200 millisekundga oladi yoki butun xabar qabul qilinmaguncha {value = buf [0]; // qiymatni buF birinchi indeksiga o'rnatadi, bu analogWrite fotorezistoridan int (LEDPin, map (qiymat, 0, 1023, 0, 255)); // PWM pinini Serial.println (String (qiymat)) LED yorqinligi uchun 0-255 oralig'idagi qiymatni chiqarishga o'rnatadi; } analogWrite (LEDPin, 0); }

4 -qadam: BILDI

Har xil yorug'lik darajalarida o'ynang va LEDlarning ularga mos kelishini tomosha qiling! Fotorezistor ba'zida murakkab bo'lishi mumkin va mahalliy yorug'lik manbai bo'lgan qorong'i xonada yaxshi ishlaydi (lekin tashqarida quyoshda ham ishlashi mumkin).

Tavsiya: