جدول المحتويات:
- اللوازم
- الخطوة الأولى: فهم النظام
- الخطوة 2: كتابة WebSocketServer
- الخطوة 3: إنشاء بروتوكول للأوامر التسلسلية
فيديو: LightMeUp! التحكم في شريط LED عبر الأنظمة الأساسية في الوقت الفعلي: 5 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:37
LightMeUp! هو نظام اخترعته للتحكم في شريط RGB LED في الوقت الفعلي ، مع الحفاظ على التكلفة المنخفضة والأداء العالي.
تمت كتابة الخادم في Node.js ومن ثم يمكن استخدامه عبر الأنظمة الأساسية.
في المثال الخاص بي ، أستخدم Raspberry Pi 3B للاستخدام طويل المدى ، ولكن جهاز الكمبيوتر الشخصي الذي يعمل بنظام Windows من أجل العرض التوضيحي وتصحيح الأخطاء.
يتم التحكم في شريط 4pin بواسطة لوحة من نوع Arduino Nano ، والتي تنفذ أوامر معطاة تسلسليًا لإرسال إشارات PWM إلى ثلاثة ترانزستورات تقوم بتحويل + 12VDC إلى دبوس اللون المقابل للشريط.
LightMeUp! يتحقق النظام أيضًا من درجة حرارته الخاصة ، بمجرد أن يزيد عن 60 درجة مئوية (140 درجة فهرنهايت) ، فإنه يقوم بتشغيل مروحتين للكمبيوتر بقدرة 12 فولت تيار مباشر مدمجة في الغلاف ، من أجل تبريد نفسه لتحسين عمر الدائرة.
ميزة أخرى لبرنامج LightMeUp! هو إلقاء الضوء على زجاجة بومباي-سافير جين ، ولكن هذا ليس محور هذا Instructable.
استمتع بالقراءة:)
اللوازم
- Arduino Nano (أو أي متحكم ATmega328 / عالي المستوى آخر)
- Raspberry Pi 3 Model B مع تثبيت Node.js (أو أي كمبيوتر آخر)
- 12V RGB 4-Pin LED قطاع
- امدادات الطاقة 12V 3A
- كبلات توصيل (ذكر - ذكر إذا كنت تستخدم اللوح ، بالطبع)
- اللوح (اختياري)
- 2 مراوح كمبيوتر تيار مستمر 12 فولت (اختياري)
- 3x TIP120 Darlington Transistor مع غرفة التبريد (4 إذا كنت تريد تضمين مراوح التبريد)
- 2 مؤشرات LED للحالة باللونين الأحمر والأخضر (اختياري)
- 6 ، 7K NTC المقاوم القائم على درجة الحرارة + 6 ، 7K المقاوم (اختياري)
- كابل بيانات USB-Mini إلى USB 2.0 (من أجل Raspberry Pi للتواصل مع Arduino)
- USB-Hub خارجي يعمل بالطاقة (اختياري ، لـ Raspberry Pi فقط)
الخطوة الأولى: فهم النظام
LightMeUp! يعتمد على دوائر إلكترونية بسيطة للغاية.
لدينا نوع من الكمبيوتر (في هذه الحالة Raspberry Pi) الذي يتصل بشكل متسلسل مع لوحة التحكم الدقيقة الخاصة بنا. تقوم هذه اللوحة بعد ذلك بتنفيذ أوامر تسلسلية محددة مثل "RGB (255 ، 255 ، 255)" والتي من شأنها تحويل شريط LED إلى الأبيض.
بمجرد حصولنا على القيم الثلاث الخاصة بنا للأحمر والأخضر والأزرق الضرورية لشريط LED رباعي الدبابيس ، نقوم بتنفيذ analogWrite (دبوس ، القيمة) من أجل تزويد ترانزستور TIP120 بإشارة PWM.
تسمح إشارة PWM هذه للترانزستور بتبديل دبوس اللون المقابل الذي يتصل به المجمع على الأرض ، إلى درجة معينة أو تشغيل / إيقاف تشغيل بالكامل. نعم ، الكثير من "to" s:)
من خلال مزج مخرجات الترانزستورات الثلاثة مع دبابيس ألوان شرائط LED ، يمكننا بشكل أساسي إنشاء أي لون نريده!
الآن مع هذا الفهم ، يمكننا مهاجمة التحدي الأكبر لهذا المشروع ، خادم الويب واتصاله التسلسلي بـ Arduino.
الخطوة 2: كتابة WebSocketServer
الآن ، يتعين علينا إنشاء نوع معين من خادم الويب ، والذي يسمح لنا بنقل البيانات ذهابًا وإيابًا دون التحديث مرة واحدة من أجل تحقيق التحكم في شريط LED في الوقت الفعلي.
يرجى ملاحظة ، أن الاتصال في الوقت الفعلي بالطبع مستحيل ، سيكون هناك دائمًا تأخير على الأقل بضع ميلي ثانية ، ولكن بالنسبة للعين البشرية ، يعد الأمر كبيرًا مثل الوقت الفعلي.
يمكن تحقيق ذلك بسهولة باستخدام مكتبة socket.io إذا كنت تستخدم Node.js كما فعلت أنا. ومع ذلك ، يمكنك دائمًا الالتزام بلغة البرمجة المفضلة لديك بالطبع.
سنتعامل مع اتصال websocket الذي يسمح لنا بنقل بيانات الإدخال مثل اللون الذي تريد ضبط شريط LED عليه ، أو بيانات الحالة مثل "LED ON" ثنائي الاتجاه دون تحديث.
ميزة أخرى مهمة جدًا يجب أن يتمتع بها الخادم ولكنها لا تحتاج إليها هي تسجيل الدخول البسيط. لقد أسست تسجيل الدخول الخاص بي من حقل بسيط لاسم المستخدم وكلمة المرور. يتم بعد ذلك نشر هذه الأجزاء من المعلومات في مسار / تسجيل الدخول للخادم ، والذي يقارن بعد ذلك اسم المستخدم بقائمة المستخدمين (ملف.txt) وكلمة المرور المقابلة له في شكله المشفر SHA256. أنت لا تريد أن يعبث جيرانك بشريط LED الخاص بك بينما تستمتع بمشروبك المفضل على مقعدك الأكثر راحة ، أليس كذلك؟
الآن يأتي قلب الخادم ، الاتصال التسلسلي.
يجب أن يكون الخادم الخاص بك قادرًا على الاتصال بشكل تسلسلي - في Node.js يمكن تحقيق ذلك عن طريق فتح منفذ باستخدام مكتبة "serialport". ولكن حدد أولاً اسم منفذ اردوينو على جهاز الكمبيوتر الذي يستضيف الخادم. اعتمادًا على نظام التشغيل الخاص بك ، سيكون للمنافذ أسماء مختلفة ، على سبيل المثال. في نظام التشغيل Windows ، يتم تسمية هذه المنافذ باسم منافذ "COMx" ، بينما يتم تسميتها في نظام التشغيل Linux "/ dev / ttyUSBx" ، حيث يمثل x رقم منفذ USB.
الخطوة 3: إنشاء بروتوكول للأوامر التسلسلية
في الصورة أعلاه ، ترى رمز Arduino IDE الفعلي المسؤول عن التحكم في RGB. الهدف من هذه الخطوة هو جعل الخادم المكتوب ذاتيًا ولوحة Arduino يتحدثان مع بعضهما البعض بنجاح.
بمجرد فتح المنفذ التسلسلي الخاص بك بنجاح ، يجب أن تكون قادرًا على إرسال أوامر إلى اللوحة التي تعتني برغباتك. على سبيل المثال ، إذا رسمنا إصبعًا فوق منتقي الألوان على صفحة ويب HTML ، فيجب إرسال رمز RGB إلى الخادم الذي يرسله بعد ذلك إلى Arduino حتى يقوم بمعالجة مجموعة القيم.
لقد استخدمت jscolor ، ولديهم تنفيذ رائع لعنصر انتقاء الألوان عالي الجودة ، والذي يمتلك حدثًا يسمى "onFineChange" والذي يتيح معالجة البيانات من منتقي الألوان بمجرد تغيير قيمها.
موصى به:
كيفية استخدام وحدة ساعة الوقت الفعلي (DS3231): 5 خطوات
كيفية استخدام وحدة ساعة الوقت الحقيقي (DS3231): DS3231 هي ساعة منخفضة التكلفة ودقيقة للغاية في الوقت الحقيقي (RTC) مع مذبذب بلوري مدمج معوض لدرجة الحرارة (TCXO) وكريستال. يشتمل الجهاز على مدخل للبطارية ويحافظ على عرض توقيت دقيق عندما تصل الطاقة الرئيسية إلى
رسم الرسم البياني في الوقت الفعلي على Android من Arduino من خلال HC-05: 3 خطوات
رسم رسم بياني في الوقت الفعلي على Android من Arduino من خلال HC-05: مرحبًا ، إليك برنامج تعليمي لكيفية رسم رسم بياني للقيم في الوقت الفعلي من وحدة تحكم دقيقة مثل Arduino إلى التطبيق. يستخدم وحدة Bluetooth مثل HC-05 للعمل كجهاز مراسلة لنقل واستقبال البيانات بين Ar
Postshirt: كشف الموقف الذي يمكن ارتداؤه في الوقت الفعلي: 9 خطوات
Postshirt: Realtime Wearable Posture Detection: Postshirt هو نظام لاكتشاف الوضع لاسلكيًا في الوقت الفعلي ينقل ويصنف بيانات مقياس التسارع من Adafruit Feather إلى تطبيق Android عبر Bluetooth. يمكن للنظام الكامل أن يكتشف في الوقت الفعلي ما إذا كان المستخدم لديه وضعية سيئة و c
برنامج MicroPython: تحديث بيانات مرض فيروس كورونا (COVID-19) في الوقت الفعلي: 10 خطوات (بالصور)
برنامج MicroPython: تحديث بيانات مرض فيروس كورونا (COVID-19) في الوقت الفعلي: في الأسابيع القليلة الماضية ، تجاوز عدد الحالات المؤكدة لمرض فيروس كورونا (COVID 19) في جميع أنحاء العالم 100000 حالة ، وقد أعلنت منظمة الصحة العالمية (WHO) تفشي الالتهاب الرئوي الفيروسي الجديد ليكون وباءً عالمياً. كنت جدا
إخطارات الأحداث في الوقت الفعلي باستخدام NodeMCU (Arduino) و Google Firebase و Laravel: 4 خطوات (بالصور)
إخطارات الأحداث في الوقت الفعلي باستخدام NodeMCU (Arduino) و Google Firebase و Laravel: هل أردت يومًا أن يتم إعلامك عندما يكون هناك إجراء على موقع الويب الخاص بك ولكن البريد الإلكتروني ليس مناسبًا؟ هل تريد سماع صوت أو جرس في كل مرة تقوم فيها بعملية بيع؟ أو هناك حاجة إلى اهتمامك الفوري بسبب ظهور