- ส่วนประกอบที่จำเป็น
- แนะนำสั้น ๆ เกี่ยวกับ Li-Fi
- ส่วนเครื่องส่งสัญญาณ Li-Fi โดยใช้ Arduino
- ส่วนตัวรับ Li-Fi โดยใช้ Arduino
- Arduino Coding สำหรับ Li-Fi
Li-Fi (Light Fidelity)เป็นเทคโนโลยีขั้นสูงที่ช่วยให้ถ่ายโอนข้อมูลโดยใช้การสื่อสารด้วยแสงเช่นแสงที่มองเห็นได้ ข้อมูล Li-Fi สามารถเดินทางผ่านแสงแล้วตีความที่ด้านรับโดยใช้อุปกรณ์ที่ไวต่อแสงเช่น LDR หรือโฟโตไดโอด การสื่อสารแบบ Li-Fi เร็วกว่า Wi-Fi 100 เท่า
ในโครงการนี้เราจะสาธิตการสื่อสาร Li-Fi โดยใช้ Arduino สองตัว ที่นี่ข้อมูลข้อความจะถูกส่งโดยใช้ปุ่มกด LED และ 4x4 และจะถูกถอดรหัสที่ฝั่งตัวรับโดยใช้ LDR ก่อนหน้านี้เราได้อธิบายรายละเอียดเกี่ยวกับ Li-Fi และใช้ Li-Fi เพื่อถ่ายโอนสัญญาณเสียง
ส่วนประกอบที่จำเป็น
- Arduino UNO
- LDR เซนเซอร์
- ปุ่มกด 4 * 4
- 16 * 2 LCD ตัวอักษรและตัวเลข
- โมดูลอินเทอร์เฟซ I2C สำหรับ LCD
- เขียงหั่นขนม
- การเชื่อมต่อจัมเปอร์
- LED 5 มม
แนะนำสั้น ๆ เกี่ยวกับ Li-Fi
ตามที่กล่าวไว้ข้างต้น Li-Fi เป็นเทคโนโลยีการสื่อสารขั้นสูงซึ่งเร็วกว่าการสื่อสารผ่าน Wi-Fi ถึง 100 เท่า การใช้เทคโนโลยีนี้สามารถถ่ายโอนข้อมูลโดยใช้แหล่งกำเนิดแสงที่มองเห็นได้ ลองนึกภาพว่าหากคุณสามารถเข้าถึงอินเทอร์เน็ตความเร็วสูงได้โดยใช้แหล่งกำเนิดแสงของคุณ มันดูน่าสนใจมากไม่ใช่เหรอ?
Li-Fi ใช้แสงที่มองเห็นได้เป็นสื่อในการสื่อสารสำหรับการส่งข้อมูล LED สามารถทำหน้าที่เป็นแหล่งกำเนิดแสงและโฟโตไดโอดทำหน้าที่เป็นตัวรับส่งสัญญาณที่รับสัญญาณแสงและส่งกลับ เราสามารถส่งรูปแบบข้อมูลที่ไม่ซ้ำกันได้โดยการควบคุมชีพจรแสงที่ด้านเครื่องส่งสัญญาณ ปรากฏการณ์นี้เกิดขึ้นด้วยความเร็วสูงมากและไม่สามารถมองเห็นได้ด้วยตามนุษย์ จากนั้นที่ด้านรับโฟโตไดโอดหรือตัวต้านทานแบบขึ้นกับแสง (LDR) จะแปลงข้อมูลให้เป็นข้อมูลที่มีประโยชน์
ส่วนเครื่องส่งสัญญาณ Li-Fi โดยใช้ Arduino
ดังแสดงในรูปด้านบนในส่วนของเครื่องส่งสัญญาณของการสื่อสาร Li-Fi ปุ่มกดจะถูกใช้เป็นอินพุตที่นี่ นั่นหมายความว่าเราจะเลือกข้อความที่จะส่งโดยใช้ปุ่มกด จากนั้นข้อมูลจะถูกประมวลผลโดยหน่วยควบคุมซึ่งไม่มีอะไรนอกจาก Arduino ในกรณีของเรา Arduino แปลงข้อมูลเป็นพัลส์ไบนารีซึ่งสามารถป้อนไปยังแหล่ง LED สำหรับการส่ง จากนั้นข้อมูลเหล่านี้จะถูกส่งไปยังไฟ LED ซึ่งจะส่งพัลส์ของแสงที่มองเห็นไปยังด้านรับ
แผนภาพวงจรของส่วนเครื่องส่งสัญญาณ:
การตั้งค่าฮาร์ดแวร์สำหรับด้านเครื่องส่ง:
ส่วนตัวรับ Li-Fi โดยใช้ Arduino
ในส่วนของเครื่องรับเซ็นเซอร์ LDR จะรับพัลส์แสงที่มองเห็นได้จากด้านเครื่องส่งสัญญาณและแปลงเป็นพัลส์ไฟฟ้าที่แปลความหมายได้ซึ่งป้อนเข้ากับ Arduino (ชุดควบคุม) Arduino รับพัลส์นี้และแปลงเป็นข้อมูลจริงและแสดงบนจอ LCD 16x2
แผนภาพวงจรของส่วนรับ:
การตั้งค่าฮาร์ดแวร์สำหรับด้านตัวรับ:
Arduino Coding สำหรับ Li-Fi
ดังที่แสดงไว้ด้านบนเรามีสองส่วนสำหรับตัวส่งและตัวรับ Li-Fi รหัสที่สมบูรณ์สำหรับแต่ละส่วนจะได้รับที่ด้านล่างของบทช่วยสอนและคำอธิบายทีละขั้นของรหัสมีดังต่อไปนี้:
รหัสเครื่องส่งสัญญาณ Arduino Li-Fi:
ในด้านเครื่องส่งสัญญาณ Arduino Nano ใช้กับ 4x4 Keypad และ LED ขั้นแรกให้ดาวน์โหลดและติดตั้งไฟล์ไลบรารีที่ขึ้นอยู่กับ Arduino ผ่าน Arduino IDE ที่นี่ไลบรารีปุ่มกดใช้สำหรับการใช้ปุ่มกด 4 * 4 ซึ่งสามารถดาวน์โหลดได้จากลิงค์นี้ เรียนรู้เพิ่มเติมเกี่ยวกับการเชื่อมต่อปุ่มกด 4x4 กับ Arduino ที่นี่
# รวม
หลังจากการติดตั้งไฟล์ไลบรารีสำเร็จให้กำหนดหมายเลข ของแถวและค่าคอลัมน์ซึ่งเป็น 4 สำหรับทั้งคู่เนื่องจากเราใช้ปุ่มกด 4 * 4 ที่นี่
const ไบต์ ROW = 4; const ไบต์ COL = 4; ถ่าน keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
จากนั้นกำหนดพิน Arduino ที่ใช้เพื่อเชื่อมต่อกับปุ่มกด 4 * 4 ในกรณีของเราเราใช้ A5, A4, A3 และ A2 สำหรับ R1, R2, R3, R4 ตามลำดับและ A1, A0, 12, 11 สำหรับ C1, C2, C3 และ C4 ตามลำดับ
ไบต์ rowPin = {A5, A4, A3, A2}; ไบต์ colPin = {A1, A0, 12, 11}; ปุ่มกด customKeypad = ปุ่มกด (makeKeymap (keyscode), rowPin, colPin, ROW, COL);
ภายใน การตั้งค่า () ขาเอาท์พุตถูกกำหนดไว้ซึ่งเชื่อมต่อแหล่งกำเนิด LED นอกจากนี้ยังปิดอยู่ขณะเปิดเครื่อง
การตั้งค่าเป็นโมฆะ () { pinMode (8, OUTPUT); digitalWrite (8, ต่ำ); }
ภายใน ขณะ วนซ้ำค่าที่ได้รับจากปุ่มกดจะถูกอ่านโดยใช้ customKeypad.getKey () และจะเปรียบเทียบใน ลูป if-else เพื่อสร้างพัลส์ที่ไม่ซ้ำกันในการกดปุ่มแต่ละครั้ง จะเห็นได้ในรหัสว่าช่วงเวลาจับเวลาจะถูกเก็บไว้ไม่ซ้ำกันสำหรับค่าคีย์ทั้งหมด
ถ่าน customKey = customKeypad.getKey (); ถ้า (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); ล่าช้า (10); digitalWrite (8, ต่ำ); }
รหัสตัวรับ Arduino Li-Fi:
ในด้านตัวรับ Li-Fi Arduino UNO จะเชื่อมต่อกับเซ็นเซอร์ LDR ดังแสดงในแผนภาพวงจร ที่นี่เซ็นเซอร์ LDR เชื่อมต่อแบบอนุกรมกับตัวต้านทานเพื่อสร้างวงจรแบ่งแรงดันไฟฟ้าและเอาต์พุตแรงดันอนาล็อกจากเซ็นเซอร์จะถูกป้อนให้กับ Arduino เป็นสัญญาณอินพุต ที่นี่เรากำลังใช้โมดูล I2C กับ LCD เพื่อลดจำนวน ของการเชื่อมต่อกับ Arduino เนื่องจากโมดูลนี้ต้องการพินข้อมูลเพียง 2 พิน SCL / SDA และ 2 พินเพาเวอร์
เริ่มต้นรหัสโดยรวมไฟล์ไลบรารีที่จำเป็นทั้งหมดในโค้ดเช่น Wire.h สำหรับการสื่อสาร I2C, LiquidCrystal_I2C.h สำหรับ LCD เป็นต้นไลบรารีเหล่านี้จะติดตั้งมาพร้อมกับ Arduino ดังนั้นจึงไม่จำเป็นต้องดาวน์โหลด
# รวม
สำหรับการใช้โมดูล I2C สำหรับ LCD ตัวอักษรและตัวเลข 16 * 2 ให้กำหนดค่าโดยใช้คลาส LiquidCrystal_I2C ที่นี่เราต้องส่งที่อยู่แถวและหมายเลขคอลัมน์ซึ่งเป็น 0x3f, 16 และ 2 ตามลำดับในกรณีของเรา
LiquidCrystal_I2C จอแอลซีดี (0x3f, 16, 2);
ภายใน การตั้งค่า () ให้ ประกาศพินอินพุตพัลส์สำหรับรับสัญญาณ จากนั้นพิมพ์ข้อความต้อนรับบนจอ LCD ซึ่งจะแสดงขึ้นในระหว่างการเริ่มต้นโครงการ
การตั้งค่าเป็นโมฆะ () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); LCD.backlight (); lcd.setCursor (0, 0); lcd.print ("ยินดีต้อนรับสู่"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); ล่าช้า (2000); lcd.clear (); }
ภายในลูป ในขณะ ที่ระยะเวลาอินพุตพัลส์จาก LDR จะคำนวณโดยใช้ฟังก์ชัน pulseIn และประเภทของพัลส์ถูกกำหนดซึ่งเป็น LOW ในกรณีของเรา ค่านี้จะพิมพ์บนมอนิเตอร์แบบอนุกรมเพื่อวัตถุประสงค์ในการดีบัก ขอแนะนำให้ตรวจสอบระยะเวลาเนื่องจากอาจแตกต่างกันสำหรับการตั้งค่าที่แตกต่างกัน
ระยะเวลายาวที่ไม่ได้ลงนาม = pulseIn (8, สูง); Serial.println (ระยะเวลา);
หลังจากตรวจสอบระยะเวลาของพัลส์เครื่องส่งทั้งหมดแล้วตอนนี้เรามีช่วงระยะเวลาพัลส์ 16 ช่วงซึ่งบันทึกไว้สำหรับการอ้างอิง ตอนนี้เปรียบเทียบโดยใช้ IF-ELSE loop เพื่อรับข้อมูลที่แน่นอนที่ถูกส่ง ลูปตัวอย่างหนึ่งสำหรับคีย์ 1 ได้รับด้านล่าง:
ถ้า (ระยะเวลา> 10,000 && ระยะเวลา <17000) { lcd.setCursor (0, 0); lcd.print ("ได้รับ: 1"); }
เครื่องส่งและตัวรับ Li-Fi โดยใช้ Arduino
หลังจากอัปโหลดรหัสที่สมบูรณ์ในทั้ง Arduinos แล้วให้กดปุ่มใด ๆ บนแป้นพิมพ์ที่ด้านข้างของเครื่องรับและตัวเลขเดียวกันจะแสดงบนจอ LCD 16x2 ที่ด้านตัวรับ
นี่คือวิธีใช้ Li-Fi เพื่อส่งข้อมูลผ่านแสง หวังว่าคุณจะสนุกกับบทความนี้และเรียนรู้สิ่งใหม่ ๆ จากมันหากคุณมีข้อสงสัยคุณสามารถใช้ส่วนความคิดเห็นหรือถามในฟอรัม