لذا ، ننتقل إلى الجزء الثاني من قصتنا حول دمج التحكم اللاسلكي nooLite في أنظمة التشغيل الآلي للمنزل. وفي هذا الجزء سنتحدث عن وحدة التحكم nooLite MT1132 ودمجها في نظام Arduino Mega Server الشهير. يعمل هذا على توسيع إمكانات AMS التي تم تطويرها بالفعل من خلال التحكم اللاسلكي في المصابيح والأجهزة الكهربائية في منزلك الذكي.عن الجزء الأول
في الجزء الأول من هذه السلسلة وصف مبادئ nooLite عمل مراقبة لاسلكية، وكيف يمكنك التحكم في المعدات من الرسومات إلى اردوينو. وفي الجزء الأول ، تم تقديم معلومات تفصيلية حول توصيل وحدة MT1132 وبرمجتها. وسوف تساعدنا كثيرًا الآن.لماذا؟لأن Arduino Mega Server هو Arduino. وكل ما هو مكتوب في المقالة السابقة ينطبق أيضًا على خادم Arduino Mega Server. لذلك ، قبل قراءة هذه المقالة ، يوصى بالتعرف على الجزء الأول من الدورة.بضع كلمات حول Arduino Mega Server
Arduino Mega Server هو نظام متعدد الوظائف مع العديد من الميزات الفريدة. يمكنك معرفة المزيد عن هذا على موقع المشروع. يصف بوضوح مع "صور" معالمه الرئيسية. باختصار ، هذا هو نظام التشغيل لوحدات تحكم Arduino. وتختلف إمكانات وحدة التحكم العارية عن إمكانات وحدة التحكم مع AMS على متن الطائرة بنفس الطريقة التي تختلف بها قدرات جهاز الكمبيوتر العاري عن إمكانات جهاز الكمبيوتر الذي يعمل بنظام التشغيل Windows أو Linux.هذه مقارنة رمزية ، لكنها تعطي فكرة جيدة عن ماهية Arduino Mega Server.التكامل
الآن دعونا نلقي نظرة على كيفية دمج وحدة التحكم MT1132 في النظام. جسديًا ، لا يختلف توصيل الوحدة النمطية عن الاتصال بـ Arduino Mega أو Arduino Due ، الموصوف في مقال سابق. لذلك ، أحيلك مرة أخرى إلى المقالة السابقة حتى لا أكرر نفس الشيء هنا.مع الأسلاك - الطاقة والأرض و RX لتلقي أوامر التحكم من Arduino والوحدة جاهزة للعمل. حقا ، nooLite MT1132 هو بطل سهولة توصيل المعدات إلى وحدة التحكم الدقيقة.يشبه جزء البرنامج أيضًا الجزء الموصوف في المقالة السابقة ويتزامن معه بنسبة 85٪. الاختلافات موجودة فقط في المتغيرات والوظائف الخاصة بـ AMS ، والتي سنفحصها بالتفصيل في هذه المقالة.نواة إدارة NooLite
نعني بنواة التحكم nooLite رمزًا يؤدي الوظائف الأساسية لتوليد الأوامر والتحكم في وحدة MT1132 (والتي بدورها ترسل الأوامر إلى الهواء).تم تصميم هذا الرمز ، وفقًا لإيديولوجية بنية وحدات AMS ، كوحدة منفصلة وهي وحدة منطقية منفصلة للنظام. يمكن تشغيل هذه الوحدة (إذا كنت بحاجة إلى التحكم nooLite) أو إيقاف تشغيلها (إذا كنت لا تحتاج إلى التحكم nooLite).
هذا مفيد لأنه يحفظ ذاكرة قيمة للمتحكم الدقيق ولا يستخدم هذه الوحدة لأولئك الذين لا يحتاجون إلى تحكم nooLite. يمكن إيقاف تشغيل الوحدة بشكل ديناميكي (في حين لا يتم حفظ الذاكرة) ، ويمكن إيقاف تشغيلها في مرحلة التجميع بمجرد التعليق على سطر من التعليمات البرمجية.
وفي هذه الحالة ، تظل كل الذاكرة التي تشغلها الوحدة خالية. تم تصميم النظام بحيث يتعرف تلقائيًا على الوحدة المترجمة أو لا ويعالج هذا الحدث بشكل صحيح.
من أجل راحة المستخدمين ، يتم عرض معلومات حول حالة جميع وحدات النظام في لوحة التحكم الرئيسية في رأس الموقع. وهناك يمكنك أن ترى وضعهم على الفور في الوقت الحالي. يعمل هذا في كل من إصدار Arduino Mega وإصدار Arduino Due.NooLite كود وحدة النواة
الآن ، دعونا نلقي نظرة على الكود الخاص بوحدة "noo" لنظام Arduino Mega Server. تلك الوظائف التي تمت مناقشتها في المقالة السابقة ، سأحذفها هنا. إذا لم تفهم شيئًا فجأة ، فارجع إلى المقالة السابقة وراجعه مرة أخرى.يتم تأطير رمز الوحدة النمطية في توجيهات التجميع الشرطي ، والتي يتم استخدامها لتمكين أو تعطيل رمز الوحدة النمطية من التجميع وفقًا لتعليماتك.#ifdef NOO_FEATURE
…
#endif
بعد ذلك ، يتم تعيين الاستنتاجات التي تتصل بها وحدة MT1132 (الإخراج التاسع عشر اختياري ، يعمل على تأكيد الإرسال الناجح للأمر بواسطة الوحدة)byte const PIN_TX = 18;
byte const PIN_RX = 19;
ويتم تعيين حروف القنوات (فقط لسهولة الاستخدام)byte const NOO_CHANNEL_1 = 0;
byte const NOO_CHANNEL_2 = 1;
حاليًا ، يتم استخدام قناتين فقط ، ولكن لا شيء يمنعك من إضافة بضعة أسطر من التعليمات البرمجية واستخدام جميع القنوات الـ 32.تتم تهيئة الوحدة النمطية بواسطة الوظيفةvoid nooInit() {
Serial1.begin(9600);
modulNoo = MODUL_ENABLE;
started("nooLite");
}
يتم فيه تهيئة Serial1 بتردد قياسي يبلغ 9600 ، ويتم تعيين الحالة "ENABLE" للوحدة النمطية ويتم عرض رسالة اختبار في Serial للتحكم في عملية التهيئة.يتم وصف الوظيفة "الرئيسية" التي تشكل الأوامر ووظائف "المجمع" التي تبسط الأوامر إلى الحد الأقصى بالتفصيل في المقالة السابقة. هذا هو جوهر عنصر التحكم nooLite. الآن يمكننا الوصول بحرية إلى أي وظائف تحكم من أي مكان في كود Arduino Mega Server. والتحكم في معدات nooLite بأي شكل من الأشكال.هذا هو رمز نواة التحكم الكامل لـ nooLite.كود نواة كامل/*
Modul nooLite
part of Arduino Mega Server project
*/
#ifdef NOO_FEATURE
byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)
byte const NOO_CHANNEL_1 = 0; // channel (address) 0...31 (MT1132)
byte const NOO_CHANNEL_2 = 1;
byte const NOO_CHANNEL_3 = 2;
byte const NOO_CHANNEL_4 = 3;
byte const NOO_CHANNEL_5 = 4;
void nooInit() {
Serial1.begin(9600);
modulNoo = MODUL_ENABLE;
started(«nooLite»);
}
void nooWork() {
}
void nooSendCommand(byte channel, byte command, byte data, byte format) {
byte buf[12];
for (byte i = 0; i < 12; i++) {
buf[i] = 0;
}
buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = data;
int checkSum = 0;
for (byte i = 0; i < 10; i++) {
checkSum += buf[i];
}
buf[10] = lowByte(checkSum);
buf[11] = 170;
for (byte i = 0; i < (12); i++) {
Serial1.write(buf[i]);
}
}
void nooBind (byte ch) {nooSendCommand(ch, 15, 0, 0);}
void nooUnbind (byte ch) {nooSendCommand(ch, 9, 0, 0);}
void nooOn (byte ch) {nooSendCommand(ch, 2, 0, 0);}
void nooOff (byte ch) {nooSendCommand(ch, 0, 0, 0);}
void nooTrigger(byte ch) {nooSendCommand(ch, 4, 0, 0);}
void nooCancel (byte ch) {nooSendCommand(ch, 10, 0, 0);}
void nooUp (byte ch) {nooSendCommand(ch, 3, 0, 0);}
void nooDown (byte ch) {nooSendCommand(ch, 1, 0, 0);}
void nooRevers (byte ch) {nooSendCommand(ch, 5, 0, 0);}
void nooValue (byte ch, byte v) {nooSendCommand(ch, 6, v, 1);}
#endif // NOO_FEATURE
واجهة ملزمة وفك الارتباط
نظرًا لأن خادم Arduino Mega Server يزودنا بواجهة فاخرة ، يمكننا استخدامه لجميع وظائف العمل مع الوحدة النمطية ونظام nooLite نفسه. لن نحتاج إلى القيام بأي شيء يدويًا ، فالتواصل مع جميع وظائف نظام nooLite سيحدث باستخدام عناصر واجهة قياسية مألوفة لك عند العمل مع المواقع على الإنترنت. ستكون هذه أزرارًا وقوائم منسدلة وما إلى ذلك.لنبدأ بالواجهة الكهربائية "الملزمة" و "غير المقيدة". كل شيء بسيط للغاية هنا: في القائمة المنسدلة ، حدد رقم القناة المطلوب ، ثم حدد نوع الإجراء - "Bind" أو "Unbind" وانقر فوق "Submit". فيما يلي تعليمات قصيرة حول ما يجب فعله بعد النقر فوق الزر "إرسال". بشكل عام ، كل شيء يتم ببساطة وبأناقة.
يمكنك "ربط" و "فك ارتباط" الكتل بأي كمية وعلى أي قنوات (يمكن أن يكون هناك العديد من كتل الطاقة على قناة واحدة وسيتم تشغيلها في نفس الوقت ، لأنها على نفس القناة).هنا تحتاج فقط إلى تذكر أنه في 0.14 يتم تنفيذ التحكم في التجميع على قناتين. إذا كانت قناتان غير كافيتين لك ، فيمكنك ، عن طريق القياس ، إضافة التحكم في أي عدد من القنوات التي تحتاجها (حتى 32).واجهة التحكم
لنلقِ نظرة الآن على كيفية تنظيم واجهة إدارة الجهاز nooLite في AMS. يوجد في قائمة النظام عنصر "إدارة nooLite". عند النقر عليها ، تفتح صفحة يمكنك من خلالها تشغيل وإيقاف تشغيل أجهزة nooLite لاسلكيًا. كما قلت ، في الإصدار 0.14 يتم تنظيم التحكم على قناتين. يطلق عليها "Block 1" و "Block 2" (بمعنى كتل الطاقة اللاسلكية الخافتة nooLite).
نضغط على "Block 1" ونرى زرًا لطيفًا - هذه هي واجهة التحكم في أول كتلة طاقة. يمكنك توصيل الإضاءة أو أي جهاز كهربائي (من الطاقة المقابلة) بهذه الوحدة و ... التحكم بشكل مريح ومريح في تشغيلها وإيقافها بالضغط على هذا الزر.واجهة Arduino Mega Server قابلة للتكيف ، مما يعني أنه يمكنك التحكم في تشغيل وإيقاف الأجهزة الكهربائية مباشرة من هاتفك الذكي - سيتم "طي" الواجهة وستكون الحفارة كبيرة وسهلة الضغط على الهاتف الذكي.
هذا ليس كل شيء. بالإضافة إلى تشغيل الأجهزة وإيقاف تشغيلها ببساطة ، يتيح لك نظام nooLite القيام بالعديد من الأشياء ، على سبيل المثال ، تعتيم (تغيير بسلاسة) سطوع المصابيح أو ضبط قوة الحمل المطلوبة. تم تصميم عنصر واجهة آخر لهذا - عنصر واجهة مستخدم لتعيين الطاقة والتعتيم.الطاقة والقطعة يعتم
على القناة الثانية هناك عنصران للواجهة - زر تشغيل وإيقاف وأداة ضبط الطاقة. باستخدام هذه الأداة ، يمكنك تعيين الطاقة ، مصنفة كنسبة مئوية من الحد الأقصى. هذا حل عالمي مناسب لمعظم الحالات.يمكنك أيضًا الاتصال بشكل جيد مع dimo wireless dimer (على سبيل المثال ، SU111-300) ثريا في غرفتك أو جهاز كهربائي يتطلب تعديل الطاقة (ضمن تصنيف الطاقة لوحدة الطاقة الخاصة بك) ويمكنك بسهولة تثبيت أي طاقة مطلوبة مباشرة من صفحة الويب.
إذا كنت بحاجة إلى تعديل الطاقة بطريقة مختلفة ، على سبيل المثال ، بدقة أكبر أو غير خطية ، فيمكنك تغيير الأداة القياسية عن طريق ضبط شفرة المصدر (والتي ، بالطبع ، يمكن الوصول إليها بالكامل).تُظهر الصورة اللحظة التي يتم فيها تعيين الطاقة على 20٪ من الحد الأقصى. في الوقت نفسه ، يمكنك تغيير القوة من الرسم إلى Arduino تلقائيًا. على سبيل المثال ، مع هذا النظام ، لا يستحق شيء تنظيم "ساعة المنبه الفجر" المألوف الآن ، عندما يزداد سطوع المصابيح ببطء ويوقظك "بشكل طبيعي" في الصباح. وبدون أسلاك! القوة والتحكم ، يكفي دمج dimer في مصباح أو ثريا.القطعة والزر يعملان بشكل مستقل. هذا يعني أنه يمكنك ضبط الطاقة التي تحتاجها (السطوع) وبعد إيقاف تشغيلها وتشغيلها مرة أخرى ، سيتم حفظ الطاقة المركبة ، وهو أمر مريح للغاية.وظائف أخرى
في وثيقة من "Nootehnika" واصفا جهاز التحكم أوامر nooLite، لا تزال هناك العديد من الفرق الأخرى، ومنها ما تكون موجودة في نواة بالفعل، وبعض - لا. إذا كنت بحاجة إلى أوامر أخرى ، فيمكنك إضافتها بنفسك ، نظرًا لأن هذا ليس صعبًا على الإطلاق ولدى النظام بالفعل العديد من الأمثلة.الخلاصة
لذا ، درسنا دمج وحدة التحكم nooLite MT1132 في خادم Arduino Mega ومبدأ تنظيم واجهة إدارة الأجهزة nooLite . بفضل قلب التحكم المدمج ، يمكنك بسهولة التحكم في أجهزة nooLite من AMS في منزلك الذكي.في هذا الموضوع ، انتهى المقال الثاني ، وفي المقالة الثالثة من السلسلة ، ستتعرف على المفهوم الرائع للغاية لنظام Arduino Mega Server “100 in 1” ، عندما تستبدلك وحدة تحكم واحدة مع AMS على متنها بالعديد من الأجهزة والأنظمة وتوفر لك التكلفة.وسيتم عرضها على مثال محطة لحام ، والتي سنصنعها حرفيًا من لا شيء - من جهاز لاسلكي nooLite dimer.ملاحظةArduino Mega Server هو نظام متعدد الاستخدامات ومرن يمكن دمجه مع أي شيء تقريبًا ، وبالتالي ، فإن الشركات المهتمة بتعميم تقنياتها وتوسيع قاعدة المستخدمين مدعوون للتعاون - يمكن أيضًا دمج معداتك بسهولة مع نظام Arduino Mega Server الشهير.يعد وجود الوحدة النمطية الخاصة بك (وموقع الويب) في خادم Arduino Mega Server فكرة جيدة جدًا.أول ، الثالث و الرابع جزء من دورة.إضافة . قناة Youtube مفتوحة وهنا فيديو ترويجي لخادم Arduino Mega ، والذي يوضح كيفية العمل مع نظام حقيقي.