İçindekiler:

Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba: 4 Adım
Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba: 4 Adım

Video: Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba: 4 Adım

Video: Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba: 4 Adım
Video: ARDUINO TEMEL TANITIMI VE SENSÖR KULLANIMI 2024, Temmuz
Anonim
Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba
Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba
Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba
Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba
Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba
Fotodirenç Kullanan Kablosuz Arduino Işık Uyumlu LED Lamba

Bu talimat, Arduino Unos ve bir fotodirenç kullanarak ilkel bir kablosuz ışık algılamalı LED lamba oluşturmak için gerekli adımları detaylandırmaktadır. Bu cihaz için olası bir uygulama, pencereleri olmayan bir odayı, gerçek zamanlı olarak dışarıdaki gerçek aydınlatma koşullarına uygun şekilde yapay güneş ışığıyla aydınlatmak olabilir. Başlayalım!

Tedarik listesi:

Arduino Uno x2

NRF24L01 Kablosuz alıcı-verici x2 (Opsiyonel - NRF24L01 sırt çantası x2)

TIP120 darlington transistör

Fotodirenç

5 mm LED'ler x3

Butona basınız

100 ohm direnç x3

10k ohm direnç x3

Çeşitli Jumper Telleri

Adım 1: NRF24L01 Modüllerini ve Devresini Kablolama

NRF24L01 Modüllerini ve Devresini Kablolama
NRF24L01 Modüllerini ve Devresini Kablolama
NRF24L01 Modüllerini ve Devresini Kablolama
NRF24L01 Modüllerini ve Devresini Kablolama
NRF24L01 Modüllerini ve Devresini Kablolama
NRF24L01 Modüllerini ve Devresini Kablolama

Bu projede, bir Arduino verici olarak hareket edecek ve butona basıldığında fotodirençten ışık seviyesi verisi gönderecektir. Diğer Arduino, bu verileri alıp LED'lere sinyale dönüştüren bir alıcı görevi görecek. İlk görüntü verici şemasını, ikincisi ise alıcıyı gösterir.

Not: Projemin fotoğraflarında, NRF24L01 alıcı-vericilerinin başka bir PCB'ye bağlı olduğunu fark edeceksiniz. Bu, güç düzenleyicisi olarak işlev gören alıcı-vericiler için bir sırt çantası modülüdür. Bu sırt çantaları, kablolamayı kolaylaştırmanın yanı sıra, NRF24L01 için güç girişini düzenleyerek 5V güç kaynağının kullanılmasına izin verir. Bu sırt çantalarını açıklığa kavuşturmak için diyagramımda atladım.

(Sırt çantalarını kullanmaya karar verirseniz, NRF24L01 stoğuna göre pim konumlarının bir şeması için lütfen bu bağlantıya bakın).

Aşağıda, daha kolay yakınlaştırma/detaylı görüntüleme için devrenin bir PDF kopyası eklenmiştir.

Adım 2: Vericinin Kodlanması

Son adım kodlamadır. NRF24L01 modülleriyle kullanmak için RadioHead kitaplığını veya eşdeğer bir kitaplığı kurmanız gerekir.

Bu proje için, verici ve alıcı Arduinos, her birinde farklı kod kullanır. İşte vericinin kodu:

Ayrıca kolaylık olması için.ino dosyasını (NRF_Send) ekledim.

#Dahil etmek

#Dahil etmek

RH_NRF24 nrf24; // Bir alıcı-vericiyi nrf24 olarak başlatma

int düğmesi = 5; //Buton ve fotodirenç için pin değerlerinin ayarlanması

int pDirenç = A0; int değeri = 0; // 0-1023 arası ışık değeri

geçersiz kurulum()

{ Serial.başlangıç(9600); pinMode(düğme, GİRİŞ); pinMode(pDirenç, GİRİŞ); if (!nrf24.init()) // Modülün başlatılması başarısız olursa kullanıcıyı uyarır Serial.println("init başarısız"); // Başlatmadan sonraki varsayılanlar 2.402 GHz (kanal 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel başarısız"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF başarısız"); }

boşluk döngüsü()

{ if (digitalRead(button)) { //butona basılırsa mesaj gönder değer = analogRead(pResistor); //Fotorezistörün (0-1023) değerini okuyun uint8_t data = {value}; // nrf24.send(data, sizeof(data)); ışık değerini içeren "data" adında bir dizi ayarlar. //Diziyi alıcıya gönder nrf24.waitPacketSent(); //Paket gönderilene kadar bekleyin Serial.println("Işık Değeri: " +String(değer)); //Işık değerini seri monitöre yazdırın } }

Adım 3: Alıcının Kodlanması

Alıcı için kod ayrıca RadioHead Kitaplığını kullanır.

#Dahil etmek

#Dahil etmek

RH_NRF24 nrf24;

int LEDPin = 3;

int değeri = 0; // 0-1023 arası ışık değeri

geçersiz kurulum()

{ Serial.başlangıç(9600); pinMode(LEDPin, ÇIKIŞ); if (!nrf24.init()) Serial.println("init başarısız"); // Başlatmadan sonraki varsayılanlar 2.402 GHz (kanal 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel başarısız"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF başarısız"); }

boşluk döngüsü()

{ // Mesaj bekleyin uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; //Alınan mesajı "buf" adlı bir dizi olarak saklayın uint8_t len = sizeof(buf); //Buf boyutunu "len" olarak saklar while (nrf24.waitAvailableTimeout(200) && nrf24.recv(buf, &len)) //Mesajı 200 milisaniye boyunca veya tüm mesaj alınana kadar alır { değer = buf[0]; //Fotodirenç analogWrite(LEDPin, map(value, 0, 1023, 0, 255)); //LED parlaklığı için 0-255 arasında ölçeklenmiş bir değer çıkışı verecek şekilde PWM pinini ayarlar Serial.println(String(value)); } analogWrite(LEDPin, 0); }

Adım 4: BİTTİ

Farklı ışık seviyeleriyle oynamanın ve LED'lerin onlarla eşleşmesini izlemenin tadını çıkarın! Fotodirenç bazen titiz olabilir ve en iyi yerel ışık kaynağına sahip karanlık bir odada çalışır (ancak dışarıda güneşle de çalışabilir).

Önerilen: