Mục lục:

Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang: 4 bước
Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang: 4 bước

Video: Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang: 4 bước

Video: Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang: 4 bước
Video: Arduino | Cảm biến ánh sáng dùng quang trở 2024, Tháng mười một
Anonim
Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang
Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang
Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang
Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang
Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang
Đèn LED kết hợp ánh sáng Arduino không dây sử dụng điện trở quang

Hướng dẫn này trình bày chi tiết các bước cần thiết để tạo một đèn LED cảm biến ánh sáng không dây thô sơ sử dụng Arduino Unos và một điện trở quang. Một ứng dụng khả thi cho thiết bị này là chiếu sáng một căn phòng không có cửa sổ bằng ánh sáng mặt trời nhân tạo, phù hợp với điều kiện ánh sáng thực tế bên ngoài trong thời gian thực. Bắt đầu nào!

Danh sách cung cấp:

Arduino Uno x2

NRF24L01 Bộ thu phát không dây x2 (Tùy chọn - Ba lô NRF24L01 x2)

Bóng bán dẫn darlington TIP120

Điện trở quang

Đèn LED 5mm x3

Nút bấm

Điện trở 100 ohm x3

Điện trở 10k ohm x3

Nhiều loại dây nhảy

Bước 1: Đấu dây các Mô-đun và Mạch NRF24L01

Đấu dây các Mô-đun và Mạch NRF24L01
Đấu dây các Mô-đun và Mạch NRF24L01
Đấu dây các Mô-đun và Mạch NRF24L01
Đấu dây các Mô-đun và Mạch NRF24L01
Đấu dây các Mô-đun và Mạch NRF24L01
Đấu dây các Mô-đun và Mạch NRF24L01

Trong dự án này, một Arduino sẽ hoạt động như một máy phát, gửi dữ liệu mức ánh sáng từ điện trở quang khi nhấn nút nhấn. Arduino khác sẽ đóng vai trò như một bộ thu, lấy dữ liệu đó và chuyển nó thành tín hiệu đến các đèn LED. Hình ảnh đầu tiên hiển thị sơ đồ máy phát và hình ảnh thứ hai hiển thị máy thu.

Lưu ý: trong các bức ảnh về dự án của tôi, bạn sẽ nhận thấy các bộ thu phát NRF24L01 được gắn vào một PCB khác. Đây là một mô-đun ba lô cho các bộ thu phát, hoạt động như một bộ điều chỉnh năng lượng. Ngoài việc giúp đi dây dễ dàng hơn, những chiếc ba lô này điều chỉnh nguồn điện đầu vào cho NRF24L01, cho phép sử dụng nguồn điện 5V. Tôi đã bỏ qua những chiếc ba lô này trong sơ đồ của mình vì mục đích rõ ràng.

(Nếu bạn quyết định sử dụng ba lô, vui lòng tham khảo liên kết này để biết sơ đồ vị trí các chốt liên quan đến kho NRF24L01).

Đính kèm bên dưới là bản sao PDF của mạch để dễ dàng thu phóng / xem chi tiết hơn.

Bước 2: Mã hóa máy phát

Bước cuối cùng là viết mã. Bạn sẽ cần cài đặt thư viện RadioHead hoặc một thư viện tương đương để sử dụng với các mô-đun NRF24L01.

Đối với dự án này, bộ phát và bộ thu Arduinos sử dụng mã khác nhau trên mỗi bộ. Đây là mã cho máy phát:

Tôi cũng đã đính kèm tệp.ino (NRF_Send) để tiện theo dõi.

#bao gồm

#bao gồm

RH_NRF24 nrf24; // Khởi tạo bộ thu phát là nrf24

nút int = 5; // Đặt giá trị chân cho nút và điện trở quang

int pResistor = A0; giá trị int = 0; // Giá trị của ánh sáng từ 0-1023

void setup ()

{Serial.begin (9600); pinMode (nút, INPUT); pinMode (pResistor, INPUT); if (! nrf24.init ()) // Cảnh báo người dùng nếu quá trình khởi tạo mô-đun không thành công Serial.println ("init fail"); // Giá trị mặc định sau init là 2,402 GHz (kênh 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel fail"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF thất bại"); }

void loop ()

{if (digitalRead (button)) {// Gửi tin nhắn nếu nút được nhấn value = analogRead (pResistor); // Đọc giá trị của photoresistor (0-1023) uint8_t data = {value}; // Đặt một mảng có tên "data " chứa giá trị light nrf24.send (data, sizeof (data)); // Gửi mảng tới máy chủ thu nrf24.waitPacketSent (); // Chờ cho đến khi gói tin được gửi đi Serial.println ("Light Value:" + String (value)); // In giá trị đèn vào màn hình nối tiếp}}

Bước 3: Mã hóa máy thu

Đối với người nhận, mã cũng sử dụng Thư viện RadioHead.

#bao gồm

#bao gồm

RH_NRF24 nrf24;

int LEDPin = 3;

giá trị int = 0; // Giá trị của ánh sáng từ 0-1023

void setup ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); if (! nrf24.init ()) Serial.println ("init thất bại"); // Giá trị mặc định sau init là 2,402 GHz (kênh 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel fail"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF thất bại"); }

void loop ()

{// Chờ tin nhắn uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // Lưu trữ thông báo đã nhận dưới dạng một mảng có tên "buf " uint8_t len = sizeof (buf); // Lưu trữ kích thước của buf là "len" while (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Nhận thư trong 200 mili giây hoặc cho đến khi nhận được toàn bộ thư {value = buf [0]; // Đặt giá trị cho chỉ mục đầu tiên của buf , là int từ photoresistor analogWrite (LEDPin, map (value, 0, 1023, 0, 255)); // Đặt chân PWM để xuất ra một giá trị được chia tỷ lệ từ 0-255 cho độ sáng của đèn LED Serial.println (String (value)); } analogWrite (LEDPin, 0); }

Bước 4: XONG

Thích chơi xung quanh với các mức độ ánh sáng khác nhau và xem các đèn LED phù hợp với chúng! Điện trở quang đôi khi có thể hơi khó và hoạt động tốt nhất trong phòng tối với nguồn sáng cục bộ (nhưng cũng có thể hoạt động bên ngoài với ánh nắng mặt trời).

Đề xuất: