Mục lục:

ĐÈN KHÔNG DÂY MẶT TRỜI CÓ CÁNH TAY LINH HOẠT TỪ TỪ: 8 bước (có hình ảnh)
ĐÈN KHÔNG DÂY MẶT TRỜI CÓ CÁNH TAY LINH HOẠT TỪ TỪ: 8 bước (có hình ảnh)

Video: ĐÈN KHÔNG DÂY MẶT TRỜI CÓ CÁNH TAY LINH HOẠT TỪ TỪ: 8 bước (có hình ảnh)

Video: ĐÈN KHÔNG DÂY MẶT TRỜI CÓ CÁNH TAY LINH HOẠT TỪ TỪ: 8 bước (có hình ảnh)
Video: Pin mặt trời hoạt động như thế nào? - Hiểu rõ trong 5 phút 2024, Tháng bảy
Anonim
ĐÈN KHÔNG DÂY MẶT TRỜI CÓ CÁNH TAY LINH HOẠT TỪ TỪ
ĐÈN KHÔNG DÂY MẶT TRỜI CÓ CÁNH TAY LINH HOẠT TỪ TỪ
ĐÈN KHÔNG DÂY MẶT TRỜI CÓ CÁNH TAY LINH HOẠT TỪ TỪ
ĐÈN KHÔNG DÂY MẶT TRỜI CÓ CÁNH TAY LINH HOẠT TỪ TỪ

Dự án này được làm từ một chiếc đèn hỏng & nodeMCU. Đèn trang trí này có thể điều chỉnh theo mọi hướng & gắn trên vật liệu từ tính hoặc đặt trên bàn. Nó có thể được điều khiển ở hai chế độ như sau:

- Chế độ điều khiển không dây, như liên kết YouTube bên dưới:

- Chế độ điều khiển tương tác, như liên kết YouTube bên dưới:

Bước 1: HÓA ĐƠN VẬT LIỆU

Danh sách B. O. M:

Hình ảnh
Hình ảnh

Đối với chế độ tương tác, tôi sử dụng MPU6050 để lấy dữ liệu con quay hồi chuyển từ NodeMCU để điều khiển màu của đèn.

Hình ảnh tư liệu cho dự án này:

Hình ảnh
Hình ảnh

Bước 2: MẠCH

MẠCH
MẠCH

Đây là mạch rất đơn giản, như sơ đồ Fritzing ở trên, với loại cực dương chung 1 Led RGB, ba điện trở dòng giới hạn R100 & MPU6050.

Chóa phản xạ được sử dụng từ bất kỳ đèn hỏng nào và được kết nối với đế nodeMCU bằng 2 bu lông hoặc dán chúng bằng keo chắc chắn.

Công việc lắp ráp:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Sơ đồ bên dưới:

Hình ảnh
Hình ảnh

Bước 3: CƠ SỞ THUẬT NGỮ - ARM LINH HOẠT

CƠ SỞ THUẬT NGỮ - ARM LINH HOẠT
CƠ SỞ THUẬT NGỮ - ARM LINH HOẠT

Cánh tay mềm có thể được tái sử dụng từ vòi nước mềm bị hỏng. Một cái gì đó như thế:

Hình ảnh
Hình ảnh

Bằng một số mẹo, chúng tôi cố gắng kết nối chúng với đế nam châm vĩnh cửu ở dưới cùng của cánh tay linh hoạt. Trên cùng, chúng tôi đã tạo một lỗ khoan để kết nối với bảng mạch và bộ sạc pin / năng lượng mặt trời, với phần đế này, chúng tôi có thể đặt đèn trên các bề mặt như bàn, sàn nhà….; hoặc nó có thể được gắn trên các vật liệu từ tính như cột thép, kết cấu thép.

Bước 4: MẶT TRỜI - BỘ SẠC PIN

MẶT TRỜI - BỘ SẠC PIN
MẶT TRỜI - BỘ SẠC PIN

Nó đến từ một chiếc đèn sạc bị hỏng. Tôi đã thêm một công tắc bật / tắt và dây nguồn cung cấp cho nodeMCU. Nó cũng có một ổ cắm cổng USB và một đầu cắm để sạc pin.

Bước 5: KẾT NỐI TẤT CẢ CÙNG NHAU

KẾT NỐI TẤT CẢ CÙNG NHAU
KẾT NỐI TẤT CẢ CÙNG NHAU

Kết nối tất cả các bộ phận: NodeMCU & gương phản xạ, pin mặt trời & pin, cánh tay linh hoạt với nhau.

KẾT THÚC

Hình ảnh
Hình ảnh

CHẾ ĐỘ SẠC

Hình ảnh
Hình ảnh

Bước 6: CHƯƠNG TRÌNH ĐIỀU KHIỂN TƯƠNG TÁC

Màu sắc sẽ được thay đổi khi chúng ta điều chỉnh cánh tay linh hoạt hoặc xoay đèn.

ĐÈN TƯƠNG TÁC

#bao gồm
// Địa chỉ thiết bị MPU6050 Slave
const uint8_t MPU6050SlaveAddress = 0x68;
// Chọn chân SDA và SCL cho giao tiếp I2C - Chân mặc định trong WIRE LIBRARY: SCL - D1 & SDA - D2 trên NODEMCU
// const uint8_t SCL = D1;
// const uint8_t SDA = D2;
const int R = 14;
const int G = 12;
const int B = 13;
// MPU6050 vài địa chỉ đăng ký cấu hình
const uint8_t MPU6050_REGISTER_SMPLRT_DIV = 0x19;
const uint8_t MPU6050_REGISTER_USER_CTRL = 0x6A;
const uint8_t MPU6050_REGISTER_PWR_MGMT_1 = 0x6B;
const uint8_t MPU6050_REGISTER_PWR_MGMT_2 = 0x6C;
const uint8_t MPU6050_REGISTER_CONFIG = 0x1A;
const uint8_t MPU6050_REGISTER_GYRO_CONFIG = 0x1B;
const uint8_t MPU6050_REGISTER_ACCEL_CONFIG = 0x1C;
const uint8_t MPU6050_REGISTER_FIFO_EN = 0x23;
const uint8_t MPU6050_REGISTER_INT_ENABLE = 0x38;
const uint8_t MPU6050_REGISTER_ACCEL_XOUT_H = 0x3B;
const uint8_t MPU6050_REGISTER_SIGNAL_PATH_RESET = 0x68;
int16_t AccelX, AccelY, AccelZ, Nhiệt độ, GyroX, GyroY, GyroZ;
void setup () {
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
//Serial.begin(9600);
Wire.begin (SDA, SCL);
MPU6050_Init ();
}
void loop () {
uint16_t Ax, Ay, Az, T, Gx, Gy, Gz;
uint16_t Red, Green, Blue;
Read_RawValue (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
// Lấy giá trị tuyệt đối
Ax = myAbs (AccelX);
Ay = myAbs (AccelY);
Az = myAbs (AccelZ);
// Chia tỷ lệ trong phạm vi
Red = bản đồ (Ax, 0, 16384, 0, 1023);
Green = bản đồ (Ay, 0, 16384, 0, 1023);
Blue = bản đồ (Az, 0, 16384, 0, 1023);
// In nối tiếp để kiểm tra
//Serial.print("Red: "); Serial.print (Màu đỏ);
//Serial.print("Green: "); Serial.print (Màu xanh lá cây);
//Serial.print("Blue: "); Serial.print (Xanh lam);
// Ghi analog sang LED
analogWrite (R, Đỏ); // NS
analogWrite (G, Xanh lục); // NS
analogWrite (B, Xanh lam); // NS
chậm trễ (200);
}
void I2C_Write (uint8_t deviceAddress, uint8_t regAddress, uint8_t data) {
Wire.beginTransmission (deviceAddress);
Wire.write (regAddress);
Wire.write (dữ liệu);
Wire.endTransmission ();
}
// Đọc tất cả 14 thanh ghi
void Read_RawValue (uint8_t deviceAddress, uint8_t regAddress) {
Wire.beginTransmission (deviceAddress);
Wire.write (regAddress);
Wire.endTransmission ();
Wire.requestFrom (deviceAddress, (uint8_t) 14);
AccelX = (((int16_t) Wire.read () << 8) | Wire.read ());
AccelY = (((int16_t) Wire.read () << 8) | Wire.read ());
AccelZ = (((int16_t) Wire.read () << 8) | Wire.read ());
Nhiệt độ = (((int16_t) Wire.read () << 8) | Wire.read ());
GyroX = (((int16_t) Wire.read () << 8) | Wire.read ());
GyroY = (((int16_t) Wire.read () << 8) | Wire.read ());
GyroZ = (((int16_t) Wire.read () << 8) | Wire.read ());
}
// Định cấu hình MPU6050
void MPU6050_Init () {
chậm trễ (150);
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_SMPLRT_DIV, 0x07);
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_1, 0x01);
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_2, 0x00);
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_CONFIG, 0x00);
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_GYRO_CONFIG, 0x00); // đặt +/- 250 độ / giây đầy đủ thang đo
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00); // đặt +/- 2g toàn quy mô
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_FIFO_EN, 0x00);
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_INT_ENABLE, 0x01);
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_SIGNAL_PATH_RESET, 0x00);
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_USER_CTRL, 0x00);
}
// Giá trị tuyệt đối
float myAbs (float in) {
return (in)> 0? (in):-(in);
}

xem raw CHƯƠNG TRÌNH ĐÈN TÁC ĐỘNG ĐƯỢC lưu trữ với ❤ bởi GitHub

Bước 7: CHƯƠNG TRÌNH ĐIỀU KHIỂN KHÔNG DÂY VÀ ỨNG DỤNG ANDROID

CHƯƠNG TRÌNH ĐIỀU KHIỂN KHÔNG DÂY VÀ ỨNG DỤNG ANDROID
CHƯƠNG TRÌNH ĐIỀU KHIỂN KHÔNG DÂY VÀ ỨNG DỤNG ANDROID

Một cách khác, chúng ta có thể sử dụng Ứng dụng Android để điều khiển đèn LED RGB với Android trong Mạng WiFi. Liên kết ứng dụng Android: Ứng dụng LED RGB điều khiển NODEMCU

Đối với chương trình Arduino, bạn có thể tham khảo:

microcontrollerkits.blogspot.com/2016/05/es…

Sau khi tải chương trình lên NodeMCU, lần chạy đầu tiên sẽ cung cấp cho chúng ta địa chỉ IP của NodeMCU trên bản in nối tiếp. Trong trường hợp của tôi, đó là: 192.164.1.39 tại cổng 80.

Hình ảnh
Hình ảnh

Giờ đây, chúng ta có thể điều khiển đèn không dây bằng máy tính xách tay / máy tính bảng / điện thoại di động bằng cách nhập địa chỉ ở trên vào Internet explorer.

Hình ảnh
Hình ảnh

Hoặc sử dụng ứng dụng Android:

Hình ảnh
Hình ảnh

Bước 8: MỘT SỐ HÌNH ẢNH

Đề xuất: