Სარჩევი:

უკაბელო Arduino სინათლის შესატყვისი LED ნათურა Photoresistor გამოყენებით: 4 ნაბიჯი
უკაბელო Arduino სინათლის შესატყვისი LED ნათურა Photoresistor გამოყენებით: 4 ნაბიჯი

ვიდეო: უკაბელო Arduino სინათლის შესატყვისი LED ნათურა Photoresistor გამოყენებით: 4 ნაბიჯი

ვიდეო: უკაბელო Arduino სინათლის შესატყვისი LED ნათურა Photoresistor გამოყენებით: 4 ნაბიჯი
ვიდეო: ელექტრო ენერგიის უსადენო გადაცემა 2024, ნოემბერი
Anonim
უკაბელო Arduino სინათლის შესაბამისი LED ნათურა Photoresistor გამოყენებით
უკაბელო Arduino სინათლის შესაბამისი LED ნათურა Photoresistor გამოყენებით
უკაბელო Arduino სინათლის შესატყვისი LED ნათურა Photoresistor გამოყენებით
უკაბელო Arduino სინათლის შესატყვისი LED ნათურა Photoresistor გამოყენებით
უკაბელო Arduino სინათლის შესაბამისი LED ნათურა Photoresistor გამოყენებით
უკაბელო Arduino სინათლის შესაბამისი LED ნათურა Photoresistor გამოყენებით

ეს ინსტრუქცია დეტალურად აღწერს ნაბიჯებს, რომლებიც აუცილებელია ელემენტარული უკაბელო სინათლის მგრძნობიარე LED ნათურის შესაქმნელად Arduino Unos- ისა და ფოტორეზისტორის გამოყენებით. ამ მოწყობილობის შესაძლო გამოყენება იქნება ოთახის განათება, რომელსაც არ აქვს ფანჯრები მზის ხელოვნური შუქით, რომელიც შეესაბამება რეალურ დროში გარე განათების რეალურ პირობებს. Დავიწყოთ!

მიწოდების სია:

Arduino Uno x2

NRF24L01 უკაბელო გადამცემი x2 (სურვილისამებრ - NRF24L01 ზურგჩანთა x2)

TIP120 დარლინგტონის ტრანზისტორი

ფოტორეზისტორი

5 მმ ები LED x3

Pushbutton

100 ohm რეზისტორი x3

10k ohm რეზისტორი x3

სხვადასხვა ჯუმბერის მავთულები

ნაბიჯი 1: NRF24L01 მოდულების და მიკროსქემის გაყვანილობა

გაყვანილობა NRF24L01 მოდულები და წრე
გაყვანილობა NRF24L01 მოდულები და წრე
გაყვანილობა NRF24L01 მოდულები და წრე
გაყვანილობა NRF24L01 მოდულები და წრე
გაყვანილობა NRF24L01 მოდულები და წრე
გაყვანილობა NRF24L01 მოდულები და წრე

ამ პროექტში ერთი არდუინო იმოქმედებს როგორც გადამცემი, რომელიც აგზავნის სინათლის დონის მონაცემებს ფოტო რეზისტორიდან, როდესაც დაჭერით ღილაკს. სხვა Arduino იქნება მიმღები, მიიღებს ამ მონაცემებს და გარდაქმნის მას სიგნალად LED- ებზე. პირველი სურათი აჩვენებს გადამცემის დიაგრამას, მეორე კი მიმღებს.

შენიშვნა: ჩემი პროექტის ფოტოებში შეამჩნევთ, რომ NRF24L01 გადამცემები მიმაგრებულია სხვა PCB- ზე. ეს არის ზურგჩანთის მოდული გადამცემებისთვის, რომელიც მოქმედებს როგორც ენერგიის მარეგულირებელი. გარდა იმისა, რომ გაყვანილობა გაადვილებულია, ეს ზურგჩანთები არეგულირებს NRF24L01- ის დენის ენერგიას, რაც 5V კვების ბლოკის გამოყენების საშუალებას იძლევა. მე გამოვტოვე ეს ზურგჩანთები ჩემს დიაგრამაში სიცხადისთვის.

(თუ თქვენ მაინც გადაწყვეტთ გამოიყენოთ ზურგჩანთები, გთხოვთ, მიმართოთ ამ ბმულს, რათა ნახოთ დიაგრამა PIN– ის ადგილმდებარეობის შესახებ, საფონდო NRF24L01– ის მითითებით).

ქვემოთ მოცემულია სქემის PDF ასლი, გასადიდებლად/დეტალური სანახავად.

ნაბიჯი 2: გადამცემის კოდირება

ბოლო ნაბიჯი არის კოდირება. თქვენ უნდა დააინსტალიროთ RadioHead ბიბლიოთეკა ან ექვივალენტი ბიბლიოთეკა NRF24L01 მოდულებთან გამოსაყენებლად.

ამ პროექტისათვის გადამცემი და მიმღები არდუინოსი იყენებს თითოეულს სხვადასხვა კოდს. აქ არის გადამცემის კოდი:

მე ასევე დავურთე.ino ფაილი (NRF_Send) მოხერხებულობისთვის.

#ჩართეთ

#ჩართეთ

RH_NRF24 nrf24; // გადამცემის მიმღების ინიციალიზაცია, როგორც nrf24

int ღილაკი = 5; // ღილაკისა და ფოტორეზისტორის პინის მნიშვნელობების დაყენება

int pResistor = A0; int მნიშვნელობა = 0; // სინათლის მნიშვნელობა 0-1023-დან

ბათილად დაყენება ()

{Serial.begin (9600); pinMode (ღილაკი, INPUT); pinMode (pResistor, INPUT); თუ (! nrf24.init ()) // აფრთხილებს მომხმარებელს, თუ მოდულის ინიციალიზაცია ვერ მოხერხდა Serial.println ("init ვერ მოხერხდა"); // ნაგულისხმევი პარამეტრების შემდეგ არის 2.402 GHz (არხი 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel failed"); თუ (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ვერ მოხერხდა"); }

ბათილი მარყუჟი ()

{if (digitalRead (ღილაკი)) {// გაგზავნეთ შეტყობინება, თუ ღილაკზე დაჭერილია მნიშვნელობა = analogRead (pResistor); // წაიკითხეთ ფოტორეზისტორის მნიშვნელობა (0-1023) uint8_t მონაცემები = {მნიშვნელობა}; // ადგენს მასივს სახელწოდებით "მონაცემები ", რომელიც შეიცავს სინათლის მნიშვნელობას nrf24.send (მონაცემები, ზომა (მონაცემები)); // მასივის გაგზავნა მიმღებისთვის nrf24.waitPacketSent (); // დაელოდეთ სანამ პაკეტი გაიგზავნება Serial.println ("მსუბუქი მნიშვნელობა:" +სიმებიანი (მნიშვნელობა)); // დაბეჭდე სინათლის მნიშვნელობა სერიულ მონიტორზე}}

ნაბიჯი 3: მიმღების კოდირება

მიმღებისთვის, კოდი ასევე იყენებს RadioHead ბიბლიოთეკას.

#ჩართეთ

#ჩართეთ

RH_NRF24 nrf24;

int LEDPin = 3;

int მნიშვნელობა = 0; // სინათლის მნიშვნელობა 0-1023-დან

ბათილად დაყენება ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); თუ (! nrf24.init ()) Serial.println ("init ვერ მოხერხდა"); // ნაგულისხმევი პარამეტრების შემდეგ არის 2.402 GHz (არხი 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel failed"); თუ (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ვერ მოხერხდა"); }

ბათილი მარყუჟი ()

{// დაელოდეთ შეტყობინებას uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // შეინახეთ მიღებული შეტყობინება მასივის სახით, სახელწოდებით "buf " uint8_t len = sizeof (buf); // შეინახეთ ბუფის ზომა "len" ხოლო (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // იღებს შეტყობინებას 200 მილიწამამდე ან სანამ არ მიიღება მთელი შეტყობინება {value = buf [0]; // ადგენს მნიშვნელობას buf - ის პირველ ინდექსზე, რაც int არის ფოტორეზისტორ analogWrite– დან (LEDPin, რუკა (მნიშვნელობა, 0, 1023, 0, 255)); // ადგენს PWM პინს, რომ გამოუშვას მასშტაბური მნიშვნელობა 0-255 შორის LED სიკაშკაშისთვის Serial.println (სიმებიანი (მნიშვნელობა)); } analogWrite (LEDPin, 0); }

ნაბიჯი 4: შესრულებულია

ისიამოვნეთ თამაშით სხვადასხვა დონის განათებით და უყურეთ LED- ებს, რომლებიც ემთხვევა მათ! ფოტორეზისტორი შეიძლება ხანდახან სახიფათო იყოს და საუკეთესოდ მუშაობს ბნელ ოთახში, ლოკალიზებული სინათლის წყაროსთან ერთად (მაგრამ მას ასევე შეუძლია გარეთ მზეზე მუშაობა).

გირჩევთ: