جدول المحتويات:
فيديو: مصباح لاسلكي بالطاقة الشمسية مع ذراع مغناطيسي مرن: 8 خطوات (بالصور)
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
تم إنشاء هذا المشروع من مصباح مكسور و nodeMCU. يمكن تعديل هذا المصباح الزخرفي في أي اتجاه وإرفاقه بمواد مغناطيسية أو وضعه على الطاولة. يمكن التحكم به في وضعين كالتالي:
- وضع التحكم اللاسلكي ، كرابط يوتيوب أدناه:
- وضع التحكم التفاعلي ، مثل رابط يوتيوب أدناه:
الخطوة 1: فاتورة المواد
قائمة B. O. M:
بالنسبة للوضع التفاعلي ، أستخدم MPU6050 للحصول على بيانات الدوران من NodeMCU للتحكم في لون المصباح.
صورة المواد لهذا المشروع:
الخطوة الثانية: الدائرة
هذه دائرة بسيطة للغاية ، مثل مخطط Fritzing أعلاه ، مع نوع أنود مشترك 1 RGB Led ، ثلاثة مقاومات تيار محدودة R100 و MPU6050.
يتم استخدام العاكس من أي مصابيح مكسورة ومتصلة بقاعدة nodeMCU بواسطة 2 براغي أو لصقها بغراء قوي.
أعمال التركيب:
التخطيطي أدناه:
الخطوة 3: قاعدة مغناطيسية - ذراع مرن
يمكن إعادة استخدام الذراع المرنة من صنابير المياه المرنة المكسورة. شئ مثل هذا:
مع بعض النصائح ، نحاول توصيلها بقاعدة المغناطيس الدائم في أسفل الذراع المرنة. في الأعلى ، قمنا بعمل ثقب للتوصيل بلوحة الدوائر وشاحن الطاقة الشمسية / البطارية لدينا. مع هذه القاعدة ، يمكننا وضع المصباح على السطح مثل الطاولة والأرضيات….؛ أو يمكن تركيبها على مواد مغناطيسية مثل العمود الفولاذي والهيكل الفولاذي.
الخطوة 4: الطاقة الشمسية - شاحن البطارية
لقد جاءت من مصباح شحن تالف. أضفت مفتاح تشغيل / إيقاف وإمداد أسلاك الطاقة إلى nodeMCU. كما أن لديها منفذ USB واحد وقابس واحد لشاحن البطارية.
الخطوة 5: ربط الكل معًا
ربط جميع الأجزاء: NodeMCU وعاكس ، خلايا شمسية وبطارية ، ذراع مرن معًا.
ينهي
وضع الشحن
الخطوة السادسة: برنامج التحكم التفاعلي
سيتم تغيير اللون عندما نضبط ذراعًا مرنًا أو ندير المصباح.
مصباح تفاعلي
#يشمل |
// MPU6050 عنوان الجهاز التابع |
const uint8_t MPU6050SlaveAddress = 0x68 ؛ |
// حدد دبابيس SDA و SCL لاتصالات I2C - دبوس افتراضي في WIRE LIBRARY: SCL - D1 & SDA - D2 على NODEMCU |
// const uint8_t SCL = D1 ؛ |
// const uint8_t SDA = D2 ؛ |
const int R = 14 ؛ |
const int G = 12 ؛ |
const int B = 13 ؛ |
// MPU6050 عدد قليل من عناوين تسجيل التكوين |
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 ، درجة الحرارة ، الدوران ، الدوران ، الدوران ؛ |
الإعداد باطل() { |
pinMode (R ، الإخراج) ؛ |
pinMode (G ، الإخراج) ؛ |
pinMode (B ، الإخراج) ؛ |
//Serial.begin (9600) ، |
Wire.begin (SDA ، SCL) ؛ |
MPU6050_Init () ، |
} |
حلقة فارغة() { |
uint16_t الفأس ، Ay ، Az ، T ، Gx ، Gy ، Gz ؛ |
uint16_t أحمر ، أخضر ، أزرق ؛ |
Read_RawValue (MPU6050SlaveAddress، MPU6050_REGISTER_ACCEL_XOUT_H) ، |
// خذ القيمة المطلقة |
الفأس = myAbs (AccelX) ؛ |
Ay = myAbs (AccelY) ؛ |
Az = myAbs (AccelZ) ؛ |
// مقياس في النطاق |
أحمر = خريطة (فأس ، 0 ، 16384 ، 0 ، 1023) ؛ |
أخضر = خريطة (Ay ، 0 ، 16384 ، 0 ، 1023) ؛ |
أزرق = خريطة (Az، 0، 16384، 0، 1023) ؛ |
// المسلسل طباعة للتحقق |
//Serial.print("Red: ") ؛ Serial.print (أحمر) ؛ |
//Serial.print("Green: ")؛ Serial.print (أخضر) ؛ |
//Serial.print("Blue: ") ؛ Serial.print (أزرق) ؛ |
// اكتب التناظرية إلى LED |
analogWrite (R ، أحمر) ؛ // ص |
analogWrite (G ، الأخضر) ؛ // ز |
analogWrite (ب ، أزرق) ؛ // ب |
تأخير (200) ؛ |
} |
باطل I2C_Write (uint8_t deviceAddress، uint8_t regAddress، uint8_t data) { |
Wire.beginTransmission (deviceAddress) ؛ |
Wire.write (regAddress) ؛ |
Wire.write (البيانات) ؛ |
Wire.endTransmission () ؛ |
} |
// اقرأ جميع السجلات الـ 14 |
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 ()) ؛ |
درجة الحرارة = (((int16_t) Wire.read () << 8) | Wire.read ()) ؛ |
GyroX = (((int16_t) Wire.read () << 8) | Wire.read ()) ؛ |
الدوران = (((int16_t) Wire.read () << 8) | Wire.read ()) ؛ |
GyroZ = (((int16_t) Wire.read () << 8) | Wire.read ()) ؛ |
} |
// تكوين MPU6050 |
MPU6050_Init باطل () { |
تأخير (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) ؛ // مجموعة +/- 250 درجة / ثانية مقياس كامل |
I2C_Write (MPU6050SlaveAddress ، MPU6050_REGISTER_ACCEL_CONFIG ، 0x00) ؛ // set +/- 2g full scale |
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) ؛ |
} |
// قيمه مطلقه |
تعويم myAbs (تطفو في) { |
return (in)> 0؟ (in):-(in)؛ |
} |
عرض برنامج RawINTERACTIVE LAMP المستضاف مع ❤ بواسطة GitHub
الخطوة 7: برنامج التحكم اللاسلكي وتطبيق ANDROID
طريقة أخرى ، يمكننا استخدام تطبيق Android للتحكم في RGB LED باستخدام Android في شبكة WiFi. ربط تطبيق Android: تطبيق RGB LED للتحكم NODEMCU
بالنسبة لبرنامج Arduino ، يمكنك الرجوع إلى:
microcontrollerkits.blogspot.com/2016/05/es…
بعد تحميل البرنامج إلى NodeMCU ، سيعطينا التشغيل الأول عنوان IP الخاص بـ NodeMCU على الطباعة التسلسلية. في حالتي ، هو: 192.164.1.39 في المنفذ 80.
الآن ، يمكننا التحكم في المصباح اللاسلكي باستخدام الكمبيوتر المحمول / الكمبيوتر اللوحي / الهاتف المحمول عن طريق إدخال العنوان أعلاه في Internet Explorer.
أو باستخدام تطبيق Android: