- Thành phần bắt buộc
- Giới thiệu ngắn gọn về Li-Fi
- Phần Bộ phát Li-Fi sử dụng Arduino
- Phần bộ thu Li-Fi sử dụng Arduino
- Mã hóa Arduino cho Li-Fi
Li-Fi (Light Fidelity) là một công nghệ tiên tiến cho phép truyền dữ liệu bằng giao tiếp quang học như ánh sáng nhìn thấy. Dữ liệu Li-Fi có thể truyền qua ánh sáng và sau đó được giải thích ở phía máy thu bằng bất kỳ thiết bị nhạy sáng nào như LDR hoặc photodiode. Giao tiếp Li-Fi có thể nhanh hơn 100 lần so với Wi-Fi.
Ở đây trong dự án này, chúng tôi sẽ trình diễn giao tiếp Li-Fi sử dụng hai Arduino. Tại đây, dữ liệu văn bản được truyền bằng đèn LED và bàn phím 4x4. Và nó được giải mã ở phía thu bằng LDR. Trước đây chúng tôi đã giải thích chi tiết về Li-Fi và sử dụng Li-Fi để truyền tín hiệu âm thanh.
Thành phần bắt buộc
- Arduino UNO
- Cảm biến LDR
- Bàn phím 4 * 4
- 16 * 2 LCD chữ và số
- Mô-đun giao diện I2C cho LCD
- Breadboard
- Kết nối Jumper
- LED 5 mm
Giới thiệu ngắn gọn về Li-Fi
Như đã thảo luận ở trên, Li-Fi là một công nghệ giao tiếp tiên tiến có thể nhanh hơn 100 lần so với giao tiếp Wi-Fi. Sử dụng công nghệ này, dữ liệu có thể được truyền bằng các nguồn ánh sáng nhìn thấy được. Hãy tưởng tượng, nếu bạn có thể truy cập Internet tốc độ cao chỉ bằng cách sử dụng nguồn sáng của mình. Nó có vẻ rất thú vị phải không?
Li-Fi sử dụng ánh sáng khả kiến làm phương tiện giao tiếp để truyền dữ liệu. Đèn LED có thể hoạt động như một nguồn sáng và điốt quang hoạt động như một bộ thu phát nhận tín hiệu ánh sáng và truyền lại chúng. Bằng cách Kiểm soát xung ánh sáng ở phía máy phát, chúng tôi có thể gửi các mẫu dữ liệu duy nhất. Hiện tượng này xảy ra với tốc độ cực cao và mắt người không thể nhìn thấy được. Sau đó, ở phía máy thu, điốt quang hoặc Điện trở phụ thuộc ánh sáng (LDR) sẽ chuyển đổi dữ liệu thành thông tin hữu ích.
Phần Bộ phát Li-Fi sử dụng Arduino
Như trong hình trên, trong phần phát của giao tiếp Li-Fi, bàn phím được sử dụng làm đầu vào ở đây. Điều đó có nghĩa là chúng tôi sẽ chọn văn bản sẽ được truyền bằng bàn phím. Sau đó, thông tin được xử lý bởi đơn vị điều khiển không gì khác ngoài Arduino trong trường hợp của chúng tôi. Arduino chuyển đổi thông tin thành các xung nhị phân có thể được đưa đến nguồn LED để truyền. Sau đó, những dữ liệu này được đưa đến ánh sáng LED để gửi các xung ánh sáng nhìn thấy được đến phía máy thu.
Sơ đồ mạch của phần máy phát:
Thiết lập phần cứng cho phía máy phát:
Phần bộ thu Li-Fi sử dụng Arduino
Trong phần máy thu, cảm biến LDR nhận các xung ánh sáng nhìn thấy từ phía máy phát và chuyển nó thành các xung điện có thể hiểu được, được đưa đến Arduino (Bộ điều khiển). Arduino nhận xung này và chuyển nó thành dữ liệu thực tế và hiển thị trên màn hình LCD 16x2.
Sơ đồ mạch của phần thu:
Thiết lập phần cứng cho phía máy thu:
Mã hóa Arduino cho Li-Fi
Như hình trên, chúng ta có hai phần dành cho Bộ phát và Bộ thu Li-Fi. Các mã hoàn chỉnh cho mỗi phần được đưa ra ở cuối hướng dẫn và giải thích từng bước về các mã được đưa ra bên dưới:
Mã phát Li-Fi Arduino:
Ở phía Máy phát, Arduino Nano được sử dụng với Bàn phím 4x4 và đèn LED. Đầu tiên, tất cả các tệp thư viện phụ thuộc được tải xuống và cài đặt vào Arduino thông qua Arduino IDE. Tại đây, thư viện Bàn phím được sử dụng để sử dụng Bàn phím 4 * 4 có thể tải xuống từ liên kết này. Tìm hiểu thêm về giao diện bàn phím 4x4 với Arduino tại đây.
#include
Sau khi cài đặt thành công các tệp thư viện, hãy xác định số không. giá trị hàng và cột là 4 cho cả hai vì chúng tôi đã sử dụng bàn phím 4 * 4 ở đây.
const byte ROW = 4; const byte COL = 4; char keycode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Sau đó, các chân Arduino được xác định dùng để giao tiếp với bàn phím 4 * 4. Trong trường hợp của chúng tôi, chúng tôi đã sử dụng A5, A4, A3 và A2 tương ứng cho R1, R2, R3, R4 và A1, A0, 12, 11 cho C1, C2, C3 và C4 tương ứng.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Keypad customKeypad = Bàn phím (makeKeymap (mã phím), rowPin, colPin, ROW, COL);
Bên trong setup (), chân đầu ra được xác định, nơi nguồn LED được kết nối. Ngoài ra, nó được giữ TẮT trong khi BẬT thiết bị.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, THẤP); }
Bên trong vòng lặp while, các giá trị nhận được từ bàn phím được đọc bằng customKeypad.getKey () và nó được so sánh trong vòng lặp if-else , để tạo ra các xung duy nhất trong mỗi lần nhấn phím. Có thể thấy trong mã rằng các khoảng thời gian được giữ duy nhất cho tất cả các giá trị chính.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); chậm trễ (10); digitalWrite (8, THẤP); }
Mã bộ thu Li-Fi Arduino:
Ở phía bộ thu Li-Fi, Arduino UNO được giao tiếp với một cảm biến LDR như thể hiện trong sơ đồ mạch. Tại đây cảm biến LDR được mắc nối tiếp với một điện trở để tạo thành mạch chia điện áp và đầu ra điện áp Analog từ cảm biến được đưa đến Arduino làm tín hiệu đầu vào. Ở đây chúng tôi đang sử dụng một mô-đun I2C với LCD để giảm không. kết nối với Arduino vì mô-đun này chỉ yêu cầu 2 chân dữ liệu SCL / SDA và 2 chân nguồn.
Bắt đầu mã bằng cách bao gồm tất cả các tệp thư viện bắt buộc trong mã như Wire.h cho giao tiếp I2C, LiquidCrystal_I2C.h cho LCD, v.v. Các thư viện này sẽ được cài đặt sẵn với Arduino, vì vậy không cần tải chúng xuống.
#include
Để sử dụng mô-đun I2C cho màn hình LCD chữ và số 16 * 2, hãy định cấu hình nó bằng cách sử dụng lớp LiquidCrystal_I2C . Ở đây chúng ta phải chuyển địa chỉ, hàng và số cột lần lượt là 0x3f, 16 và 2 trong trường hợp của chúng ta.
Màn hình LCD LiquidCrystal_I2C (0x3f, 16, 2);
Bên trong setup (), khai báo chân đầu vào xung để nhận tín hiệu. Sau đó in thông báo chào mừng trên màn hình LCD sẽ được hiển thị trong quá trình khởi tạo dự án.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); LCD đèn nền(); lcd.setCursor (0, 0); lcd.print ("CHÀO MỪNG ĐẾN"); lcd.setCursor (0, 1); lcd.print ("ĐOẠN MẠCH"); chậm trễ (2000); lcd.clear (); }
Bên trong vòng lặp while, khoảng thời gian đầu vào của xung từ LDR được tính bằng cách sử dụng hàm xungIn và loại xung được xác định là THẤP trong trường hợp của chúng tôi. Giá trị được in trên màn hình nối tiếp cho mục đích gỡ lỗi. Bạn nên kiểm tra thời lượng, vì nó có thể khác nhau đối với các thiết lập khác nhau.
thời gian dài không dấu = xungIn (8, CAO); Serial.println (thời lượng);
Sau khi kiểm tra thời lượng cho tất cả các xung của máy phát, bây giờ chúng tôi có 16 phạm vi thời lượng xung, được ghi chú lại để tham khảo. Bây giờ so sánh chúng bằng cách sử dụng vòng lặp IF-ELSE để lấy dữ liệu chính xác đã được truyền. Dưới đây là một vòng lặp mẫu cho Khóa 1:
if (thời lượng> 10000 && thời lượng <17000) { lcd.setCursor (0, 0); lcd.print ("Đã nhận: 1"); }
Bộ phát và bộ thu Li-Fi sử dụng Arduino
Sau khi tải lên mã hoàn chỉnh trong cả hai Arduinos, nhấn bất kỳ nút nào trên bàn phím ở phía máy thu và cùng một chữ số sẽ được hiển thị trên màn hình LCD 16x2 ở phía máy thu.
Đây là cách Li-Fi có thể được sử dụng để truyền dữ liệu qua ánh sáng. Hy vọng bạn thích bài viết và học được điều gì đó mới từ nó, nếu bạn có bất kỳ nghi ngờ nào, bạn có thể sử dụng phần bình luận hoặc hỏi trong diễn đàn.