- Gerekli Bileşenler
- Li-Fi'ye Kısa Giriş
- Arduino kullanarak Li-Fi Verici Bölümü
- Arduino kullanarak Li-Fi Alıcı Bölümü
- Li-Fi İçin Arduino Kodlaması
Li-Fi (Light Fidelity), görünür ışık gibi optik iletişim kullanarak veri aktarımına izin veren gelişmiş bir teknolojidir. Li-Fi verileri ışıkta dolaşabilir ve ardından LDR veya fotodiyot gibi ışığa duyarlı herhangi bir cihaz kullanılarak alıcı tarafında yorumlanabilir. Li-Fi iletişimi, Wi-Fi'den 100 kat daha hızlı olabilir.
İşte bu projede, iki Arduino kullanarak Li-Fi iletişimini göstereceğiz. Burada metin verileri LED ve 4x4 tuş takımı kullanılarak iletilir. Ve alıcı tarafında LDR kullanılarak kodu çözülür. Daha önce Li-Fi'yi ayrıntılı olarak açıkladık ve ses sinyallerini aktarmak için Li-Fi kullandık.
Gerekli Bileşenler
- Arduino UNO
- LDR Sensörü
- 4 * 4 Tuş Takımı
- 16 * 2 Alfanümerik LCD
- LCD için I2C Arayüz modülü
- Breadboard
- Jumper'ları Bağlama
- 5 mm LED
Li-Fi'ye Kısa Giriş
Yukarıda tartışıldığı gibi, Li-Fi, Wi-Fi iletişiminden 100 kat daha hızlı olabilen gelişmiş bir iletişim teknolojisidir. Bu teknolojiyi kullanarak veriler, görünür ışık kaynakları kullanılarak aktarılabilir. Sadece ışık kaynağınızı kullanarak yüksek hızlı internete erişebildiğinizi hayal edin. Çok ilginç görünmüyor mu?
Li-Fi, veri aktarımı için bir iletişim ortamı olarak görünür ışığı kullanır. Bir LED, bir ışık kaynağı görevi görebilir ve fotodiyot, ışık sinyallerini alan ve bunları geri ileten bir alıcı-verici görevi görür. Verici tarafındaki ışık darbesini kontrol ederek benzersiz veri desenleri gönderebiliriz. Bu fenomen son derece yüksek hızda meydana gelir ve insan gözüyle görülemez. Daha sonra alıcı tarafında, fotodiyot veya Işığa bağlı direnç (LDR) verileri faydalı bilgilere dönüştürür.
Arduino kullanarak Li-Fi Verici Bölümü
Yukarıdaki şekilde gösterildiği gibi, Li-Fi iletişiminin verici bölümünde, tuş takımı burada giriş olarak kullanılır. Bu, iletilecek metni tuş takımını kullanarak seçeceğimiz anlamına gelir. Daha sonra bilgi, bizim durumumuzda Arduino'dan başka bir şey olmayan kontrol ünitesi tarafından işlenir. Arduino, bilgileri iletim için bir LED kaynağına beslenebilen ikili darbelere dönüştürür. Daha sonra bu veriler, görünür ışık darbelerini alıcı tarafına gönderen LED ışığa beslenir.
Verici Bölümünün Devre Şeması:
Verici Tarafı için Donanım Kurulumu:
Arduino kullanarak Li-Fi Alıcı Bölümü
Alıcı bölümünde, LDR sensörü, verici tarafından görünen ışık darbelerini alır ve bunu, Arduino'ya (Kontrol ünitesi) beslenen yorumlanabilir elektrik darbelerine dönüştürür. Arduino bu darbeyi alır ve gerçek veriye dönüştürür ve 16x2 LCD ekranda görüntüler.
Alıcı Bölümünün Devre Şeması:
Alıcı Tarafı için Donanım Kurulumu:
Li-Fi İçin Arduino Kodlaması
Yukarıda gösterildiği gibi, Li-Fi Verici ve Alıcı için iki bölümümüz var. Her bölüm için tam kodlar eğitimin altında verilmiştir ve kodların adım adım açıklamaları aşağıda verilmiştir:
Arduino Li-Fi Verici Kodu:
Verici tarafında ise Arduino Nano 4x4 Keypad ve LED ile birlikte kullanılmaktadır. Öncelikle tüm bağımlı kütüphane dosyaları indirilir ve Arduino IDE üzerinden Arduino'ya yüklenir. Burada Keypad kütüphanesi bu linkten indirilebilen 4 * 4 Keypad kullanımı için kullanılmaktadır. 4x4 tuş takımının Arduino ile arayüzlenmesi hakkında daha fazla bilgiyi burada bulabilirsiniz.
#Dahil etmek
Kitaplık dosyalarının başarılı bir şekilde kurulmasından sonra, no. Burada 4 * 4 tuş takımı kullandığımız için her ikisi için 4 olan satır ve sütun değerleri.
const bayt SATIR = 4; const bayt COL = 4; karakter anahtar kodu = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Ardından, 4 * 4 tuş takımı ile arayüz oluşturmak için kullanılan Arduino pinleri tanımlanır. Bizim durumumuzda sırasıyla R1, R2, R3, R4 için A5, A4, A3 ve A2 ve C1, C2, C3 ve C4 için sırasıyla A1, A0, 12, 11 kullandık.
bayt satır Pin = {A5, A4, A3, A2}; bayt colPin = {A1, A0, 12, 11}; Keypad customKeypad = Tuş takımı (makeKeymap (keyscode), rowPin, colPin, ROW, COL);
İçinde kurulum (), LED kaynağı bağlandığında çıkış pimi, tanımlanır. Ayrıca cihazı açarken KAPALI tutulur.
geçersiz kurulum () { pinMode (8, OUTPUT); digitalWrite (8, DÜŞÜK); }
İçinde ise döngü, tuş takımı alınan değerler ile okunduğunda customKeypad.getKey () ve karşılaştırılır ise-her Her tuşa basıldığında, benzersiz darbeleri üretmek üzere, döngü. Kodda, zamanlayıcı aralıklarının tüm anahtar değerler için benzersiz tutulduğu görülebilir.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); gecikme (10); digitalWrite (8, DÜŞÜK); }
Arduino Li-Fi Alıcı Kodu:
Li-Fi alıcı tarafında, Arduino UNO, devre şemasında gösterildiği gibi bir LDR sensörü ile arayüzlenir. Burada LDR sensörü, bir voltaj bölücü devre oluşturmak için bir dirençle seri olarak bağlanır ve sensörden gelen Analog voltaj çıkışı, bir giriş sinyali olarak Arduino'ya beslenir. Burada hayır azaltmak için LCD'li bir I2C modülü kullanıyoruz. Bu modül sadece 2 veri pini SCL / SDA ve 2 güç pini gerektirdiğinden Arduino ile bağlantı
I2C iletişimi için Wire.h , LCD için LiquidCrystal_I2C.h , vb. Gibi gerekli tüm kitaplık dosyalarını dahil ederek kodu başlatın . Bu kitaplıklar Arduino ile önceden kurulacaktır, bu nedenle bunları indirmeye gerek yoktur.
#Dahil etmek
16 * 2 Alfanümerik LCD için I2C modülünü kullanmak için, LiquidCrystal_I2C sınıfını kullanarak yapılandırın. Burada, bizim durumumuzda sırasıyla 0x3f, 16 ve 2 olan adresi, satırı ve sütun numarasını geçmeliyiz.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
İçinde setup (), sinyalin alınması için atım giriş pin bildirin. Ardından, projenin başlatılması sırasında görüntülenecek olan LCD'de bir karşılama mesajı yazdırın.
geçersiz kurulum () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("HOŞGELDİNİZ"); lcd.setCursor (0, 1); lcd.print ("DEVRE DIGEST"); gecikme (2000); lcd.clear (); }
İçinde ise döngü, LDR gelen darbe giriş süresi kullanılarak hesaplanır pulseIn fonksiyon ve darbenin tipi bizim durumumuzda DÜŞÜK olan tanımlanır. Değer, hata ayıklama amacıyla seri monitörde yazdırılır. Farklı kurulumlar için farklı olabileceğinden sürenin kontrol edilmesi önerilir.
işaretsiz uzun süre = pulseIn (8, YÜKSEK); Serial.println (süre);
Tüm verici darbelerinin sürelerini kontrol ettikten sonra, artık referans için not edilen 16 darbe süresi aralığına sahibiz. Şimdi, aktarılan kesin verileri elde etmek için bir IF-ELSE döngüsü kullanarak bunları karşılaştırın. Anahtar 1 için bir örnek döngü aşağıda verilmiştir:
eğer (süre> 10000 && süre <17000) { lcd.setCursor (0, 0); lcd.print ("Alınan: 1"); }
Arduino kullanarak Li-Fi Verici ve Alıcı
Kodun tamamını her iki Arduino'ya yükledikten sonra, alıcı tarafındaki tuş takımındaki herhangi bir düğmeye basın ve aynı rakam alıcı tarafında 16x2 LCD'de görüntülenecektir.
Li-Fi, verileri ışık yoluyla iletmek için bu şekilde kullanılabilir. Umarım makaleyi beğenmişsinizdir ve ondan yeni bir şey öğrenmişsinizdir, herhangi bir şüpheniz varsa, yorum bölümünü kullanabilir veya forumlarda sorabilirsiniz.