إنشاء شبكة خاصة بك من الأجهزة محلية الصنع على أساس Arduino (الجزء 1)

مساء الخير يا هابرافشان! اليوم سأخبرك عن تكامل Arduino مع جهاز كمبيوتر على Windows والأجهزة الأخرى. لقد كان بالفعل في عام 2018 ، أخيراً وصلت لي لوحات Arduino من نماذج مختلفة.

لطالما رغبت في بناء منزل ذكي ، وقررت استخدام هذه المنصة الخاصة. لماذا؟ حسنًا ، أعرف C # جيدًا وقليلاً من C ++ ، ولكن كما تعلم ، تتم كتابة البرامج الثابتة لـ Arduino على الإيجابيات المتغيرة. بالإضافة إلى ذلك ، تحتوي المنصة على محول رقمي إلى تناظري ، مما يبسط العمل مع أجهزة الاستشعار التناظرية. بالإضافة إلى ذلك ، فإن المنصة مشهورة جدًا ولها قاعدة وحدات كبيرة.

مع كل حبي للمتحكمات الدقيقة ، أفضل حساب كل شيء على Windows ، وكل قوتي في تطبيقات .NET. كانت هذه مشكلتي. لم أتمكن ببساطة من فهم بيئة تطوير Arduino IDE. كان علي أن أعتاد عليه. ومع ذلك ، لا تزال مشاريع الإحماء البسيطة تعمل في الغالب على جهاز الكمبيوتر. الذين يهتمون بالموضوع ، أطلب قطع!

كانت تجربتي الأولى عبارة عن تبادل بسيط للمعلومات عبر USB (منفذ تسلسلي) ، أرسلت من خلاله حزمًا بأوامر بسيطة لتنفيذ إجراءات على وحدة التحكم الدقيقة. على سبيل المثال ، استخدمت نموذج Arduino UNO.



هذه هي واجهة البرنامج لنظام التشغيل Windows. "صرير" - إعطاء إشارة إلى دبوس (دبوس اردوينو) في رقم 10 من إشارة كهربائية ثابتة ، يتم تشغيلها بواسطة الجرس الذي قمت بتوصيله. "LED" - مصدر التيار المباشر إلى الطرف 13 ، والذي يتم توصيله افتراضيًا على وحدة التحكم بمصباح LED المدمج ، والذي يعمل على تصحيح الرسومات (البرامج الثابتة).



ومع ذلك ، كل هذه الوظائف تقع على وحدة التحكم بدقة.

ماذا يفعل البرنامج؟ يرسل فقط أرقام إلى المنفذ! يعني "0" تعطيل
LED ، "1" - قم بتشغيل LED ، "2" - قم بإيقاف تشغيل الجرس ، "3" - قم بتشغيل
الجرس. كل شيء يتم باستخدام العناصر الأساسية لنماذج Windows. إذا
المهتمين ، سعر تبادل البيانات هو 115200 بالباود. شكرا
لهذا ، يمكنني بسهولة عرض محتويات الرسائل من وحدة التحكم الدقيقة
Arduino IDE.



أعتقد أن الكثيرين يريدون الآن معرفة ما هو موجود في البرامج الثابتة لوحدة التحكم الدقيقة. نظرًا لأنه مضى وقت طويل نسبيًا ، لم يكن من السهل البحث عن رمز البرنامج الثابت Arduino ، ولكن لا يزال الملف موجودًا!

كود كامل
أكل شيء ، هذه نسخة قديمة من الملف ، بدون جرس ، فقط مع LED.

int i = 0; //       int led = 13; void setup() {  Serial.begin(115200);   //      pinMode(led, OUTPUT); //    13-      } void loop() {  i = i + 1; //         String stringOne = "Info from Arduino ";  stringOne +=i; //  Serial.println(stringOne); //     char incomingChar;  if (Serial.available() > 0)  {    //           incomingChar = Serial.read();   //        LED    switch (incomingChar)    {      case '1': digitalWrite(led, HIGH);        break;      case '0': digitalWrite(led, LOW);        break;    }  }  delay(300); } 


ومع ذلك ، هذا مجرد مثال. الشيء الوحيد - يجب أن يحتوي هذا النظام على محور - أي نقطة تقاطع جميع الأجهزة. وهذا يدمر على الفور اللامركزية الكاملة للنظام.

ومن هنا الاستنتاج - طريقة استخدام المحور مناسبة فقط لجمع المعلومات وإدارتها. هناك حاجة إلى لوحة وصل ، على سبيل المثال ، للوصول إلى الأجهزة على الإنترنت ، ولكن ليس كنقطة اتصال رئيسية بينهما.

لنفترض أنه يمكننا توصيل جميع الأجهزة باستخدام I2C أو باستخدام بروتوكولنا الخاص. ولكن كيف تسقط البيانات في المحور؟ وبشكل عام ، ما الذي سيكون بمثابة مركز؟ الخيار 3:

  • لوحة وصل من جهاز التوجيه.
  • محور من لوحة اردوينو أخرى.
  • محور من التوت بي.

دعونا نفكر في كل شيء بدوره. لذا ، جهاز التوجيه. بادئ ذي بدء ، هناك حاجة إلى جهاز التوجيه ليس فقط ، ولكن مع Linux على متن الطائرة ومنفذ USB لتوصيل أي لوحة Arduino من النظام. أي لأن الشبكة ستتكون من عدد كبير من الأجهزة و "دردشة" عامة ، حيث ترسل جميع الأجهزة رسائل حول حالتها. من أجهزة التوجيه ، على سبيل المثال ، "Linksys E2100L 802.11b / g / n" مناسب.



كما ترى ، يحتوي هذا الموجه على موصل USB ، وتظهر الخصائص أن كل شيء يدور على Linux. أنا شخصياً لم أستخدمها ، ولكن وفقًا للخصائص التي تناسبها. وهذا ليس إعلانًا.

في حالة جهاز التوجيه ، يمكنك إسقاط البيانات على منفذ تسلسلي ، تمامًا مثل نظام التشغيل Windows ، وعلى Linux يمكنك تشغيل برنامج نصي - معالج الرسائل (عذرًا ، إذا لم يتم استدعاء شيء بهذه الطريقة ، فأنا لست على دراية بنظام Linux).

النظر في الخيار 2. لوحة اردوينو أخرى. لم تعد نماذج Nano و Mini و Micro مناسبة هنا. تحتاج إلى نموذج اردوينو ، إما UNO أو MEGA. ولكن فقط لا تقم بتوصيل اللوحة بالشبكة. كخيار ، استخدم Arduino UNO WI-FI ، أو ما هو أكثر موثوقية Arduino Yun أو Tian. مشاكل هذا الأخير هي تنزيل وسعر طويل نسبيًا ، وتبعا للوظائف تبدو وكأنها نفس جهاز التوجيه ، لأنها تعمل على Linux.

من الأفضل استخدام ما يسمى بـ Ethernet Shield. هذه لوحة توسيع لـ Arduino ، والتي يتم ارتداؤها في الأعلى وتسمح لك برفع خادم WEB بسيط على جهازك باستخدام نصوص PHP بسيطة لمعالجة المعلومات من الأجهزة الأخرى على الشبكة.



تم تجهيز بعض موديلات لوحة التوسعة هذه بفتحة لبطاقة ذاكرة micro-sd ، مما يسمح بتسجيل الدخول المحلي بالإضافة إلى جهاز التحكم عن بعد.

الخيار 3. تقريبا نفس الخيار السابق وأقل من كل ما يعجبني. باستخدام جهاز كمبيوتر صغير Raspberry Pi. إنه جهاز كمبيوتر. وافق على تعليق جهاز كمبيوتر كامل لهذه المهمة ، وإن كان جهازًا ضعيفًا جدًا - إهدارًا إضافيًا للموارد. النقد والحوسبة. أنا شخصياً سأستخدم Raspberry Pi فقط كخادم مراقبة فيديو أو كبرنامج جاهز لإدارة منزل ذكي مثل الرائد DoMo وما شابه. يمكنك أيضًا نقلها إلى مهام مثل برامج الروبوت في برامج المراسلة والخوارزميات المعقدة للتحكم في المناخ المحلي ، أو في الحالة الأكثر احتمالًا ، يمكنك وضع الذكاء الاصطناعي هناك.



كما ترى ، يحتوي Raspberry Pi 3 على:

  • 4 منافذ USB
  • 1 منفذ إيثرنت ؛
  • 1 منفذ HDMI
  • واي فاي
  • واجهة DSI لتوصيل شاشة Raspberry Pi بشاشة لمس ؛
  • فتحة لبطاقات micro-sd.

وغير ذلك الكثير. ولكن على الرغم من جميع المزايا ، فإن Raspberry Pi غير مناسب كمحور.

الخلاصة: Arduino UNO + Ethernet Shield أكثر ملاءمة كمحور لي شخصيًا. من بين جميع الخيارات التي تم النظر فيها ، يعد هذا أرخص وأسهل في التنفيذ.



في هذا التكوين ، لا تعتمد إمكانية تشغيل النظام على لوحة الوصل. وحتى في حالة تعطل لوحة الوصل ، فلن يؤثر ذلك على أداء الشبكة نفسها. ستفقد الشبكة الوصول إلى الإنترنت فقط.

أعتقد أنه يمكن إكمال الجزء الأول في هذا الشأن. اراك قريبا!

Source: https://habr.com/ru/post/ar414225/


All Articles