بوابة المعلومات الأمنية. التحكم بالاردوينو عن طريق الكمبيوتر

13.05.2019
  • درس تعليمي
  • وضع الاسترداد

هذه المقالة مخصصة للمبتدئين. سنصف هنا كيفية إرسال الأوامر من تطبيق ويب باستخدام طلبات ajax إلى برنامج phyton النصي، والذي سينقلها عبر المنفذ التسلسلي مباشرة إلى اردوينو الخاص بنا.
لقد اشتريت لنفسك Arduino، وجربت بعض الأمثلة، ولعبت بالرسومات. لكن هذا لا يكفيك، فأنت تريد إدارة وإدارة كل هذا الخير عبر الإنترنت. أسهل طريقة هي شراء لوحة اسم بمنفذ Ethernet وتوصيله بـ Arduino (أو شراء لوحة مزودة بشبكة Ethernet مدمجة بالفعل). ولكنها أيضًا تكلف أكثر وتحتاج إلى تحسين إدارتها.

للعمل سنحتاج:
- خادم HTTP
- مترجم بايثون
- اردوينو

سأصف هنا مكان الحصول على الأول والثاني وكيفية تكوين صداقات بينهما

الآن بالترتيب. أستخدم Apache كخادم HTTP. تثبيته ليس بالأمر الصعب. إذا كنت مبتدئًا تمامًا وتستخدم Windows، فيمكنك الحصول على حزمة Denwer من الموقع الرسمي، وهي تتضمن Apache.
يمكن أيضًا تنزيل Python (استخدمت الإصدار 3.3) من الموقع الرسمي وتثبيته. نحن الآن بحاجة إلى تكوين صداقات بين Apache و python. أسهل طريقة هي تشغيل بايثون كـ CGI. للقيام بذلك، افتح ملف httpd.conf في مجلد conf في المكان الذي قمت بتثبيت Apache فيه (إذا قمت بتثبيت denwer، فسيكون المسار كما يلي: [حرف محرك الأقراص الظاهري]:\usr\local\bin\Apache )

نحن نبحث عن الخط

AddHandler cgi-script .cgi

نضيف .py في النهاية بمسافة ونتأكد من عدم وجود علامة # في بداية السطر. حفظ وإعادة تشغيل الخادم.
الآن، لاختبار الصداقة الوثيقة بين pythone وApache، يمكنك إنشاء ملف اختبار ووضعه في المجلد الرئيسي لديك.
#!/Python33/python.exe طباعة ("الحالة: 200 موافق\n\n") طباعة (" مرحبا بالعالم")
يرجى ملاحظة أنه في السطر الأول نعرض مكان تواجد مترجم اللغة الخاص بنا. على سبيل المثال، لدي في C:/Python33/python.exe. أعتقد أنك سوف معرفة ذلك. قم بتسميته كما تريد وقم بالوصول إليه من خلال المتصفح، على سبيل المثال، مثل هذا: localhost/my_first_test_phyton_file.py. إذا رأيت "مرحبا بالعالم"، فكل شيء على ما يرام.

رمز البرنامج النصي للتحكم الرئيسي في JavaScript بسيط للغاية:
// المنفذ الذي يتصل به Arduino var serialPort = "COM5"; // وظيفة التحكم مباشرة var Arduino = function(command, callback)( $.get("c.py",( c:command, p:serialPort ), callback); )

الشيء الوحيد الذي يجب تغييره هنا، كما خمنت، هو المنفذ الذي يتصل به اردوينو الخاص بك. يمكنك دائمًا مشاهدته في Windows باستخدام إدارة الأجهزة. سنقوم بنقله إلى برنامج python النصي الخاص بنا حتى يعرف المنفذ التسلسلي الذي سيتم إرسال البيانات المستلمة إليه.
الآن، إذا قمنا باستدعاء وظيفتنا، على سبيل المثال: Arduino(123)، فسيقوم البرنامج النصي بإنشاء طلب Ajax مثل c.py?c=123&p=COM5 وإرساله إلى برنامج python النصي c.py. دعونا نلقي نظرة على ما هو:
#!/Python33/python.exe import serial import cgi print ("الحالة: 200 موافق\n") req = cgi.FieldStorage(); ser = serial.Serial(req["p"].value, 9600, timeout=1) ser.write(bytes(req["c"].value,"latin")) ser. Close() print ("ok" ")
في الواقع، فإنه ببساطة يأخذ قيمة المعلمة "c"، ويمررها إلى المنفذ التسلسلي "p" ويكتب "ok". رخيص و مبهج.

بالنسبة لأولئك الذين لا يريدون العطاء فحسب، بل أيضًا التلقي، سنكتب المزيد من التعليمات البرمجية

دعونا نحسن جزء عملائنا قليلاً.
// وظيفة التحكم مباشرة var Arduino = function(sp, errorCallback) ( this.serialPort = sp; this.errorCallback = errorCallback || function())( console.log("Error"); ) this.send = function(data ، رد الاتصال)( var callback = callback; var self = this; data["p"] = this.serialPort; data["s"] = Math.round(Math.random()*1000); // فقط في حالة ، بحيث لا يقوم المتصفح بتخزين $.ajax(( url:"c.py", data:data, Success:function(data)( if($.trim(data) == "error")( self.errorCallback (); ) else ( if(typeof callback == "function") callback(data); ) ) ) //send this.set = function(command, callback)( this.send(( c:command, r:0 ) ، رد الاتصال)؛ ) // أرسل وانتظر الرد this.get = function(command, callback)( this.send(( c:command, r:1 // العلامة المسؤولة عن وضع "انتظار الاستجابة") ، أتصل مرة أخرى)؛ ) )
الآن، بما أننا حولنا Arduino إلى فصل دراسي، فإن أبسط استدعاء سيكون كالتالي:
var myArduino = new Arduino("COM5"); myArduino.set(113); // قم بإضاءة مؤشر LED الموجود على الدبوس 13 myArduino.get(36,function(data)(console.log(data))); // انظر إلى حالة الدبوس 6. واعرضه في وحدة التحكم
وبالطبع تحتاج إلى تغيير جزء الخادم قليلاً:
#!/Python33/python.exe import serial import cgi print ("الحالة: 200 موافق\n") req = cgi.FieldStorage(); حاول: ser = serial.Serial(req["p"].value, 9600, timeout=1) باستثناء: print("error")exit() ser.write(bytes(req["c"].value," latin))) if int(req["r"].value) == 1: res = ""; بينما ليس الدقة: res = ser.readline() print(res.decode("UTF-8")) else: print ("ok") ser. Close()
لم يتغير شيء تقريبًا هنا، باستثناء أنه عندما يتلقى الخادم المعلمة r=1 في الطلب، فإنه يتوقع استجابة من Arduino.
وقمنا بإضافة فحص لمعرفة ما إذا كان البرنامج النصي الخاص بنا قادرًا على فتح المنفذ التسلسلي. إذا لم يكن الأمر كذلك، فسيتم إرجاع الكلمة الأساسية "خطأ"


الآن دعونا نلقي نظرة على رسم تخطيطي لاردوينو الذي يقبل ويعالج كل هذا:
#يشمل سيرفو مايسيرفو؛ إعداد باطلة () (Serial.begin (9600)؛) سلسلة getParam ()) (سلسلة إعادة؛ بينما (Serial.available ()) (re.concat (Serial.read () -48)؛) العودة إعادة؛) int getPin (String p)( return p.substring(0,2).toInt(); ) int getVal(String p)( return p.substring(2,6).toInt(); ) // الحلقة الرئيسية حلقة باطلة( ) (بينما (Serial.available()) ( char أمر = (char)Serial.read(); String param = getParam(); int pin = getPin(param); int p; التبديل (الأمر) (الحالة "0" : // الكتابة الرقمية pinMode (pin، OUTPUT)؛ حالة "1": // الكتابة الرقمية pinMode (pin، HIGH)؛ "3": // قراءة رقمية pinMode(pin,INPUT); استراحة; الحالة "4": ( // قراءة تناظرية int aPin = A0; : aPin = A2؛ حالة 3: aPin = A5؛ ) استراحة؛ الحالة "5": // الكتابة التناظرية pinMode(pin,OUTPUT); ع = getVal(param); AnalogWrite(pin, p); استراحة؛ ) ) )
عبر المنفذ التسلسلي سنرسل أوامر مثل: 1234567 حيث:
- رقم الفريق
- الرقم السري
- بيانات الدبوس، إذا لزم الأمر.
على سبيل المثال:
113 - سيتم تثبيت الدبوس 13 على الإخراج وينقل الحالة العالية من خلاله (أي تشغيله).
013 - سيتم ضبط الدبوس 13 على الإخراج ونقل الحالة المنخفضة عبره (أي إيقاف تشغيله).
209100 - سيتم تعيين الدبوس 9 للتحكم في محرك المؤازرة ونقل القيمة 100 إليه عبر تعديل PWM.
310 - سيتم تعيين الدبوس 10 لإدخال وقراءة البيانات العالية/المنخفضة منه والعودة كـ 1 أو 0 وفقًا لذلك.
يمكنك بسهولة إضافة الأوامر الخاصة بك إلى كتلة حالة التبديل.
الآن دعونا نضيف القليل من الجمال إلى الجزء الأمامي لدينا ونحصل، على سبيل المثال، على هذا

بعد ذلك، أضفت القليل من سحر واجهة المستخدم. لكنني لن أصف ذلك؛ يمكن لأي شخص مهتم أن يأخذه من الأرشيف مع المشروع.
بالنسبة لجزء الويب، استخدمت Bootstrap (فقط بسبب ملاءمته و"مطاطه") وjQuery (لـ ajax).
الآن دعونا نرى كيف يعمل.
تحتاج أولاً إلى الإشارة إلى المنفذ الذي يعمل عليه جهازك وعدد الدبابيس الموجودة به. ثم اختر أي دبوس لديك ما هو موجود عليه، ثم تابع التحكم.

تشمل عيوب هذا الأسلوب سرعة تبادل البيانات البطيئة نسبيًا. لمعرفة حالة الزر، على سبيل المثال، تحتاج إلى إرسال الطلبات، ولكن لا يمكن القيام بذلك كثيرًا، حيث قد نواجه منفذًا تسلسليًا مشغولًا. سيعمل بشكل أسرع على مآخذ الويب، لكن هذا موضوع أكثر تقدمًا قليلاً، وسأغطيه لاحقًا إذا أردت.
تم فحص كل شيء تحت نظام التشغيل Windows 8 x64. ربما تكون هناك بعض الميزات لتنفيذ كل هذا للأنظمة الأخرى، وسأكون سعيدًا لسماع ذلك في التعليقات.
الآن حول المكان الذي يمكن أن يكون فيه كل هذا مفيدًا: على سبيل المثال، يمكنك إنشاء موقف مظاهرة؛ السيطرة على موقف الكاميرا. قم بتوصيل مستشعر درجة الحرارة والأجهزة الأخرى ومراقبة بعض العمليات عن بعد، وما إلى ذلك.

الأرشيف مع المشروع
للتشغيل على جهاز iPad في وضع ملء الشاشة، استخدمت برنامج oneUrl المجاني

لم أقم بإدخاله في المحاور المواضيعية فقط بسبب نقص الكارما.
هذا هو مقالي الأول. سأكون سعيدًا بالإجابة على الأسئلة.

محدث: بناءً على طلب العمال، قمت أيضًا باختبار هذه الطريقة على نظام التشغيل MacOS. لم تكن هناك مشاكل خاصة. على نظام Mac، عادةً ما يتم تثبيت لغة python افتراضيًا؛ والشيء الوحيد الذي عليك فعله هو جعله صديقًا لـ Apache. السطر الأول في c.py سيكون
#!/usr/bin/python
أيضًا، قد لا يكون ملحق pyserial مثبتًا لديك؛ ويمكن تثبيته بأمر بسيط في وحدة التحكم:
easy_install -U pyserial
بعد ذلك، يرجى ملاحظة أن إصدار python المثبت مسبقًا عادةً ما يكون قديمًا جدًا وقد لا يعمل الخط
ser.write(بايت(req["c"].value،"latin"))
لقد استبدلته ب
ser.write(بايت(req["c"].value.decode("latin")))
كل شيء يعمل.
لا تنس إلقاء نظرة على المنفذ الذي سيتصل به جهازك. من الملائم مشاهدته، على سبيل المثال، من خلال برنامج Arduino نفسه. أدوات القائمة->المنفذ التسلسلي. على سبيل المثال، بدا الأمر كما يلي: /dev/cu.usbmodemfd141
أتمنى للجميع تجارب ناجحة.

العلامات:

  • اردوينو
  • بيثون
  • ديي أو تفعل ذلك بنفسك
  • المنزل الذكي
اضف اشارة

تتناول المقالة كيفية إرسال أوامر Arduino للتحكم عن بعد في الأجهزة الطرفية.

أبسط مثال هو: التحكم في محرك التيار المستمر. أنا متأكد من أن الكثيرين سوف يهتمون بهذا المثال، لأن هذا هو الأساس لأتمتة منزلك الذكي. يمكنك استخدام المواد أدناه للتحكم في الستائر أو الستائر الدوارة، والتي تستخدم أيضًا محركات التيار المستمر، ولكن بقوة أعلى. لتنفيذ المشروع، ستحتاج إلى Arduino وبعض المهارات في العمل مع Node.js وJavaScript.

الأجهزة والبرامج التي ستحتاج إليها

بالإضافة إلى Arduino Uno ولوحة الدائرة، ستحتاج إلى:

  • محرك DC، بجهد اسمي يبلغ حوالي 5 فولت، لتشغيله مباشرة من الاردوينو. حتى المحركات من الألعاب يمكن استخدامها: سيارات الأطفال، إلخ.
  • في هذا المشروع سوف نقوم بتدوير عمود المحرك في اتجاهين. إذا استخدمنا الترانزستور، فإن الدوران سيكون في اتجاه واحد فقط. لتنفيذ الدوران في اتجاهين، نستخدم سائق المحرك.

القائمة الكاملة للمكونات المطلوبة للمشروع:

  • لوحة اردوينو أونو R3؛
  • سائق المحرك L293D.
  • محرك بتيار مستمر 5 فولت ؛
  • لوحة الدوائر والموصلات.

بالإضافة إلى ذلك، سوف تحتاج إلى Node.js. فيه نقوم بتنفيذ واجهة المستخدم. تحميل Node.js

توصيل المعدات

نحن بحاجة إلى توصيل المحرك والسائق بشكل صحيح. قم أولاً بتثبيت برنامج التشغيل L293D على لوحة الدائرة. نوصي بتثبيت برنامج التشغيل في منتصف لوحة الدائرة، كما هو موضح في الشكل أدناه. يبدأ السائق عند المسار 3 وينتهي عند المسار 10. الآن قم بتوصيل المسارين 8 و9 إلى Arduino 5V. دبوس 5 هو دبوس GND على اردوينو. هناك 3 جهات اتصال متبقية تعمل كمدخل و 2 كمخرج.

الدائرة التي تعمل من أجل الإخراج بسيطة: نقوم بتوصيل جهتي اتصال للإخراج بجهات اتصال محرك التيار المستمر. منافذ الإخراج هي 3 و 6. أول دبوس يتم توصيله هو الدبوس 1. ما يسمى بـ Enable pin. هذا هو جهة الاتصال التي نستخدمها لتشغيل/إيقاف المحرك وتغيير سرعة دورانه. قم بتوصيل هذا الدبوس بالدبوس 6 على Arduino. في النهاية، نريد توصيل الأطراف 2 و 7 من L293D إلى الأطراف 4 و 5 في Arduino. سيتم استخدام جهات الاتصال هذه لتغيير اتجاه حركة دوار محرك التيار المستمر. يظهر مخطط الاتصال الكامل في الشكل أدناه:

التحقق من مخطط الاتصال

قبل تنفيذ جهاز التحكم عن بعد، تحتاج إلى التأكد من أن الدائرة الكهربائية مع برنامج التشغيل L293D تم رسمها وتوصيلها بشكل صحيح. للتحقق، سنقوم بتنفيذ رسم تخطيطي بسيط، بفضله سوف يتسارع المحرك ويدور دون توقف. للقيام بذلك نستخدم الرسم التالي:

// تهيئة جهات اتصال المحرك

إنت موتوربينبلوس = 4؛

int motorPinMinus = 5;

int motorPinEnable = 6;

Serial.begin(9600);

// قم بتعريف متغير لتخزين قيم السرعة

كثافة المحرك_سرعة؛

setMotor(true, motor_speed);

// وظيفة التحكم في المحركات

مجموعة باطلة للمحرك (تقدم منطقي، سرعة المحرك int)

أساس هذا الرسم هو وظيفة setMotor. سوف نستخدم هذه الوظيفة نفسها في بقية مشروعنا. دعونا ننظر إليها بمزيد من التفصيل:

// وظيفة التحكم في المحرك

محرك باطلة (منطقي للأمام، سرعة المحرك int)(

الكتابة الرقمية (motorPinPlus، إلى الأمام)؛

digitalWrite(motorPinMinus, !forward);

AnalogWrite(motorPinEnable, motor_speed);

هناك نوعان من المدخلات المعنية: الاتجاه والسرعة. الخطوة الأولى هي تنفيذ عمليتين للكتابة الرقمية () لتعيين اتجاه دوران دوار المحرك. يتلقى أحد الأطراف الموجودة على شريحة L293D إشارة 5 فولت والثاني - 0 فولت. نستخدم بعد ذلك الأمر AnalogWrite() لتغيير سرعة الجزء الدوار للمحرك باستخدام تعديل عرض النبض (PWM). مع هذه الوظيفة يمكنك تغيير اتجاه دوران المحرك. على سبيل المثال، للتسريع نستخدم:

// قم بتدوير دوار المحرك في اتجاه معين

لـ (سرعة المحرك = 0؛ سرعة المحرك

setMotor(true, motor_speed);

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

ضع كل شيء معا

في هذه المرحلة، قمنا بالفعل بتنفيذ التحكم بمحرك DC عبر Arduino. الآن دعونا نجمع كل شيء معًا ونطور واجهة ويب لمشروعنا.

أولاً، نحتاج إلى تعديل مخطط Arduino حتى يتمكن من استقبال البيانات من المضيف. بعد ذلك، نستخدم Node.js لتوفير واجهة مستخدم جميلة. إذا لم يسبق لك العمل مع تطبيقات الويب، فلا تقلق، فالدليل يغطي كل خطوة بالتفصيل.

لنبدأ برسم اردوينو. هذا هو المخطط الذي نستخدمه في هذا الجزء:

// المكتبات

#يشمل

// إنشاء aREST

aREST بقية = aREST();

// تهيئة دبابيس المحرك

إنت موتوربينبلوس = 4؛

int motorPinMinus = 5;

int motorPinEnable = 6;

الإعداد باطل (باطل)

// ابدأ تبادل البيانات عبر بروتوكول الاتصال التسلسلي وأعلن عن دبابيس المحرك

pinMode(motorPinPlus, OUTPUT);

pinMode(motorPinMinus, OUTPUT);

pinMode(motorPinEnable, OUTPUT);

Serial.begin(115200);

// أعط اسمًا ومعرفًا لجهازنا

Rest.set_id("001");

Rest.set_name("motor_control");

// التعامل مع مكالمات REST

Rest.handle(Serial);

عندما تدرس الرسم، ستلاحظ أنه مختلف عن الرسم السابق. وهو يحتوي على نفس الكتلة لتهيئة جهات الاتصال الحركية، ولكن يوجد أيضًا REST لتلقي الأوامر. على سبيل المثال، لتعيين سرعة معينة للمحرك، نقوم بتنفيذ طلب من الكمبيوتر مثل:

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

تتكون الكتلة الأخيرة من تطوير واجهة ويب للتحكم عن بعد في سرعة المحرك. لهذا سوف نستخدم Node.js، والذي يسمح لك بتطوير التطبيقات التي تعمل على جانب الخادم في Javascript. لا يتعلق هذا البرنامج التعليمي بـ Node.js أو Javascript، ولكن يجب تغطية النقاط الرئيسية. وبطبيعة الحال، يتم تضمين جميع الملفات على جيثب.

نحتاج إلى إنشاء ثلاثة ملفات: ملف Node.js الرئيسي، والواجهة نفسها، وجزء من Javascript للتعامل مع النقرات في واجهة المستخدم الخاصة بنا. لنبدأ بملف Node.js. يبدأ الكود بتحميل وتكوين وحدة Express، وهي إطار عمل لإنشاء خادم بسهولة باستخدام Node.js:

var Express = require("express");

var app = Express();

// قم بتعريف المنفذ

منفذ فار = 3000؛

// عرض المحرك

app.set("عرض المحرك", "اليشم");

// قم بإعداد مجلد عام

app.use(express.static(__dirname + "/public"));

// واجهه المستخدم

app.get("/"، الوظيفة(req, res)(

res.render("dashboard");

بعد ذلك، نقوم باستيراد وحدة Node-aREST، التي توفر الاتصال بين الخادم الخاص بنا ولوحة Arduino:

var Rest = require("arest")(app);

في هذا الملف يجب علينا أيضًا تحديد المنفذ التسلسلي الذي تتصل به لوحة Arduino:

Rest.addDevice("serial"،/dev/tty.usbmodem1a12121"،115200)؛

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

دعونا نلقي نظرة على ملف الواجهة الموجود في Dashboard.jade. Jade هي لغة تعمل بشكل أساسي على تبسيط كتابة علامات HTML. يحتوي Jade على وصف للواجهة، والتي تتم معالجتها بعد ذلك باستخدام Node.js & Express. يوجد أدناه ملف Jade لمشروعنا. يقوم بإنشاء زرين (للاتجاهات) ومنزلق واحد (لتغيير سرعة المحرك):

h1 التحكم في المحركات

Button.btn.btn-block.btn-lg.btn-primary#1 للأمام

Button.btn.btn-block.btn-lg.btn-danger#2 عكسي

الإدخال (النوع = "النطاق"، الحد الأدنى = "0"، الحد الأقصى = "255"، القيمة = "0"، المعرف = "سرعة المحرك")

في النهاية نحتاج إلى إضافة جافا سكريبت للتعامل مع نقرات المستخدم على الأزرار وشريط التمرير. هذا هو رمز زر "الأمام":

$("#1").انقر(وظيفة() (

$.get("/motor_control/digital/4/1"، وظيفة () (

$.get("/motor_control/digital/5/0");

كما نرى، تم ضبط الدبوس 4 على HIGH والدبوس 5 على LOW. تعمل الأزرار الأخرى عكس ذلك تمامًا. أي أنه عند الضغط عليهما، سيتحرك المحرك في الاتجاه المعاكس.

من أجل ضبط سرعة المحرك، نكتشف متى يقوم المستخدم بتحرير شريط التمرير. يتم تنفيذ ذلك باستخدام mouseup ():

$("#motorspeed").mouseup(function())(

// احصل على قيمة السرعة

السرعة = $("#motorspeed").val();

// أرسل الأمر

$.get("/motor_control/analog/6/" + speed);

الآن يمكننا الانتقال إلى اختبار مشروع التحكم بالمحركات عن بعد عبر الموقع الإلكتروني. لا تنس أنه يمكن العثور على كافة التعليمات البرمجية المصدرية للبرامج على GitHub. أولاً، قم بتحميل رسم Remote_motor إلى Arduino الخاص بك. بعد ذلك، تأكد من أنك قمت بتحميل كافة ملفات الواجهة وتكوين المنفذ التسلسلي الخاص بك في ملف app.js الرئيسي.

انتقل إلى هذا المجلد من خلال المحطة واكتب ما يلي:

Sudo npm تثبيت Express Jade Arest

بعد ذلك قم بتشغيل التطبيق باستخدام:

بعد ذلك، يمكنك الانتقال إلى المتصفح الخاص بك وكتابة ما يلي في شريط العناوين:

http://localhost:3000

ونتيجة لذلك، ستظهر الواجهة التالية:

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

مزيد من الاتجاهات لتطوير المشروع

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

اترك تعليقاتك وأسئلتك وشارك تجاربك الشخصية أدناه. غالبًا ما تولد الأفكار والمشاريع الجديدة في المناقشات!

سنتعلم في هذا الدرس كيفية عمل نظام بسيط لفتح القفل باستخدام المفتاح الإلكتروني (العلامة).

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

سنحتاج في هذا البرنامج التعليمي إلى:

لتنفيذ المشروع نحتاج إلى تثبيت المكتبات:

2) أنت الآن بحاجة إلى توصيل صفارة، والتي ستصدر إشارة إذا كان المفتاح يعمل وفتح القفل، وإشارة ثانية عند إغلاق القفل.

نقوم بتوصيل الجرس بالتسلسل التالي:

اردوينو صفارة
5 فولت VCC
أرض أرض
دبوس 5 آيو

3) سيتم استخدام محرك سيرفو كآلية لفتح القفل. يمكن تحديد أي محرك سيرفو، اعتمادًا على الحجم الذي تحتاجه والقوة التي يولدها محرك السيرفو. يحتوي السيرفو على 3 جهات اتصال:

يمكنك أن ترى بشكل أكثر وضوحًا كيفية ربط جميع الوحدات في الصورة أدناه:

الآن، إذا كان كل شيء متصلا، يمكنك المتابعة إلى البرمجة.

رسم:

#يشمل #يشمل #يشمل // مكتبة "RFID". #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); uidDec طويل غير موقع، uidDecTemp؛ // لتخزين رقم العلامة بالتنسيق العشري مضاعفات المؤازرة؛ إعداد الفراغ () (Serial.begin(9600); Serial.println("في انتظار البطاقة..."); SPI.begin(); // تهيئة SPI / Init SPI bus.mfrc522.PCD_Init(); // التهيئة MFRC522 / Init MFRC522 البطاقة. ( return; ) // حدد علامة if (! mfrc522.PICC_ReadCardSerial()) ( return; ) uidDec = 0; // إخراج الرقم التسلسلي للعلامة لـ (byte i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

دعونا نلقي نظرة على الرسم بمزيد من التفصيل:

من أجل معرفة UID الخاص بالبطاقة (العلامة)، تحتاج إلى كتابة هذا المخطط في اردوينو، وتجميع الدائرة الموضحة أعلاه، وفتح وحدة التحكم (مراقبة المنفذ التسلسلي). عندما تلمس علامة RFID، ستعرض وحدة التحكم رقمًا

يجب إدخال UID الناتج في السطر التالي:

إذا (uidDec == 3763966293) // قارن معرف العلامة الفريد، إذا كان مساويا للمعرف المحدد، ثم يفتح محرك المؤازرة الصمام.

كل بطاقة لها معرف فريد ولا يتكرر. وبالتالي، عند تقديم البطاقة التي قمت بتعيين معرفها في البرنامج، سيقوم النظام بفتح الوصول باستخدام محرك سيرفو.

فيديو:

هل فكرت يومًا في التحكم في أي أجهزة إلكترونية باستخدام هاتفك الذكي؟ أوافق، سيكون من الرائع التحكم في الروبوت أو أي جهاز آخر من هاتفك الذكي. نقدم درسًا بسيطًا للمبتدئين والدمى حول كيفية التحكم في الهاتف الذكي باستخدام Arduino عبر البلوتوث. إذا كنت ترغب بعد هذا الدرس في التعرف على Arduino بشكل أفضل، فيمكنك العثور على كتب عنه.

الأجهزة

الوحدة - وحدة بلوتوث HC 05/06
المجلس - اردوينو
الصمام الثنائي الباعث للضوء (LED)
المقاوم - 220Ω
جهاز أندرويد

برمجة

اردوينو بيئة تطوير متكاملة
Android Studio (في الواقع ليس ضروريًا، لأنك ستجد تطبيق Android أدناه)

الخطوة 2. كيف يعمل

عادةً ما نقوم بهذه الخطوة في النهاية، ولكن لكي تفهم ما يتعين علينا تحقيقه، انظر إلى النتيجة في هذه الخطوة المتوسطة. لقد نشرنا أيضًا مقطع فيديو تعليميًا خطوة بخطوة أدناه.

الخطوة 3. نبدأ في تجميع الدائرة

الدائرة الموجودة في برنامجنا التعليمي بسيطة جدًا وصغيرة جدًا لدرجة أننا نحتاج فقط إلى إجراء بعض التوصيلات:

دبابيس اردوينو ___________ دبابيس وحدة البلوتوث
RX (دبوس 0) _________________________________________ TX
تكساس (دبوس 1) _________________________________________ آر إكس
5V____________VCC
GND__________GND

قم بتوصيل السالب من LED إلى GND على Arduino، والموجب للطرف 13 من خلال مقاومة 220 أوم - 1 كيلو أوم. بشكل عام، في الشكل أدناه، كل شيء واضح تماما.

لا تقم بتوصيل مخرجات RX إلى RX و TX إلى TX Bluetooth بمخرجات Arduino، فلن تتلقى أي بيانات، هنا TX تعني إرسال، و RX تعني استقبال.

نحتاج الآن إلى كتابة برنامج وتحميله على Arduino الخاص بنا. إذا كنت لا تعرف كيفية القيام بذلك بعد، قم بتنزيل الكتب. الكود أدناه هو بالضبط ما نحتاج إلى تحميله في Arduino.

/* Bluetooh Basic: LED ON OFF * Coder - Mayoogh Girish * الموقع الإلكتروني - http://bit.do/Avishkar * تنزيل التطبيق: https://github.com/Mayoogh/Arduino-Bluetooth-Basic * يتيح لك هذا البرنامج للتحكم في مؤشر LED الموجود على السن 13 من Arduino باستخدام وحدة بلوتوث */ char data = 0; // متغير لتخزين البيانات المستلمة void setup () (Serial.begin (9600)؛ // يضبط الباود لنقل البيانات التسلسلية pinMode (13، OUTPUT)؛ // يعين الدبوس الرقمي 13 كدبوس الإخراج) حلقة باطلة () ( if(Serial.available() > 0) // أرسل البيانات فقط عندما تتلقى البيانات: ( data = Serial.read(); // اقرأ البيانات الواردة وقم بتخزينها في بيانات متغيرة Serial.print(data); // طباعة القيمة داخل البيانات في الشاشة التسلسلية Serial.print("\n"); // سطر جديد if(data == "1") // يتحقق مما إذا كانت قيمة البيانات تساوي 1 digitalWrite(13, HIGH); هو 1 ثم يتم تشغيل LED else if(data == "0") // يتحقق مما إذا كانت قيمة البيانات تساوي 0 digitalWrite(13, LOW); // إذا كانت القيمة 0 فسيتم إيقاف تشغيل LED))

الخطوة 5. كيف تتم العملية

تعمل وحدة HC 05/06 عبر قناة اتصال تسلسلية. يرسل تطبيق Android البيانات بشكل تسلسلي إلى وحدة Bluetooth عند الضغط على مفتاح معين. يستقبل Bluetooth على الطرف الآخر البيانات ويرسلها إلى Arduino عبر اتصال TX الخاص بوحدة Bluetooth (اتصال Arduino RX).

يتحقق الكود الذي تم تحميله في Arduino من البيانات المستلمة ويقارنها. إذا تم استلام "1"، يتم تشغيل مؤشر LED وينطفئ عند استلام "0". افتح شاشة المنفذ التسلسلي ولاحظ البيانات المستلمة.

الخطوة 6. تطبيق لأجهزة أندرويد

في هذا البرنامج التعليمي لن نتطرق إلى إنشاء تطبيقات لأجهزة Android. يمكنك تنزيل التطبيق على جيثب.

كيفية استخدام التطبيق؟

بعد أن قمنا بالاتصال عبر البلوتوث، نحتاج إلى تنزيل وتثبيت تطبيق يستخدم الهاتف الذكي :) سيتحكم في مؤشر LED الخاص بنا عن بعد. يمكنك تنزيل التطبيق مجانًا على Amazon.com. نقوم بتوصيل الهاتف الذكي بوحدة Bluetooth HC 05/06:

  1. قم بتشغيل وحدة HC 05/0
  2. أبحث عن جهاز
  3. نقوم بالاتصال بـ HC 05/06 عن طريق إدخال كلمة المرور الافتراضية "1234" أو "0000" (أربعة أصفار).

بعد ذلك نقوم بتثبيت التطبيق على هاتفنا الذكي. لنفتحه. حدد جهازًا - حدد وحدة Bluetooth من القائمة (HC 05/06). بعد الاتصال الناجح، اضغط على زر التشغيل لتشغيل مصباح LED وزر إيقاف التشغيل لإيقاف تشغيل مصباح LED. ثم يمكنك النقر فوق الزر "قطع الاتصال" لقطع الاتصال بوحدة Bluetooth.

كان هذا دليلاً للدمى والمبتدئين حول كيفية توصيل وحدة Bluetooth مع Arduino. يمكن تحسين هذا المشروع والارتقاء به إلى مستوى أعلى، على سبيل المثال، لأتمتة المنزل من خلال التحكم في الهاتف الذكي، والروبوت الذي يتم التحكم فيه، وغير ذلك الكثير.

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

ما هو المنزل الذكي"

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


نظام المنزل الذكي Arduino عبارة عن مجموعة من المعدات للتحكم في تشغيل الأجهزة المختلفة باستخدام هاتف محمول يعتمد على نظام التشغيل Android

في أي نظام للمنزل الذكي يمكن تمييز المكونات التالية:


تنقسم أنظمة المنزل الذكي الحديثة إلى عدة أنواع:

  1. مجهزة بجهاز التحكم الخاص بها.
  2. استخدام معالج كمبيوتر المستخدم (الجهاز اللوحي، الهاتف الذكي) بهذه الصفة.
  3. معالجة المعلومات باستخدام خادم بعيد مملوك لشركة التطوير (الخدمة السحابية).

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

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

التعرف على الاردوينو

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

تحتوي مجموعة Arduino Uno على المكونات الضرورية لتنفيذ الأجهزة الموضحة في الكتاب المرفق

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

يجب أن يعلم المستخدمون المحتملون أنه منذ عام 2008 كانت هناك شركتان تنتجان منتجات تحت العلامة التجارية Arduino. الأول، الذي بدأ هذا الاتجاه، لديه موقع رسمي على www.arduino.cc؛ والثاني، الذي تم تشكيله حديثًا - على www.arduino.org. ما تم تطويره قبل التقسيم يتم تقديمه بشكل متماثل على كلا الموقعين، ولكن نطاق المنتجات الجديدة مختلف بالفعل.

يأخذ برنامج أنظمة المنزل الذكي Arduino شكل غلاف البرنامج (يُسمى IDE) حيث يمكنك كتابة البرامج وتجميعها. توزع مجانا. البرامج مكتوبة بلغة C++.

تختلف أيضًا إصدارات برنامج Arduino IDE المعروضة على هذه المواقع اختلافًا كبيرًا، على الرغم من أنها تحمل نفس الاسم ليس فقط، ولكن أيضًا أرقام الإصدارات. ولهذا السبب، من السهل جدًا الخلط بينهم. الفرق هو أن كل برنامج يدعم مكتباته ولوحاته الخاصة.

تتكون "أجهزة" النظام من لوحة بها وحدة تحكم دقيقة (لوحة المعالج) وبطاقات توسعة مثبتة عليها، والتي تسمى عادة الدروع. يتيح لك توصيل الدرع بلوحة المعالج إضافة مكونات جديدة إلى المنزل الذكي. يمكن أن يكون النظام المجمع مستقلاً تمامًا أو يعمل جنبًا إلى جنب مع جهاز كمبيوتر عبر واجهة سلكية أو لاسلكية قياسية.


يمكنك تثبيت ملحقات خاصة (دروع) على لوحة المعالج، مما يزيد من وظائف النظام

مميزات نظام الاردوينو

يجذب مجمع الأجهزة والبرامج هذا المستخدم بالمزايا التالية:

  • إمكانية التشغيل المستقل بسبب وجود وحدة التحكم الخاصة به؛
  • فرص كبيرة لتخصيص تشغيل النظام (يقوم المستخدم بنفسه بكتابة برنامج يمكن أن يحتوي على سيناريوهات بأي تعقيد)؛
  • بساطة عملية تحميل البرنامج في وحدة التحكم: لا يلزم وجود مبرمج لهذا الغرض، يكفي أن يكون لديك كابل USB (يحتوي المتحكم الدقيق على برنامج Bootloader الثابت)؛
  • تكلفة معقولة للمكونات بسبب عدم وجود حقوق احتكار من شركة مصنعة أو أخرى (الهندسة المعمارية مفتوحة).

إذا بدأ Bootloader في التعطل، أو لم يكن هناك وحدة تحكم دقيقة تم شراؤها، فإن المستخدم لديه الفرصة لفلاشه بشكل مستقل. يوفر غلاف برنامج IDE الدعم لعدد من المبرمجين الأكثر سهولة وشعبية لهذا الغرض. بالإضافة إلى ذلك، تحتوي جميع لوحات معالجات Arduino تقريبًا على رأس يسمح بالبرمجة داخل الدائرة.

يتضمن برنامج Arduino IDE المعروض على موقع arduino.cc القدرة على إنشاء منصات برامج وأجهزة مخصصة، في حين أن إصدار البرنامج الموجود على arduino.org لا يحتوي على مثل هذه الوظيفة.

ما هي الحلول التي يقدمها اردوينو؟

نظرًا لأن العديد من الشركات تعمل في إنتاج أجهزة الاستشعار والأجهزة المتوافقة مع Arduino، فإن نطاق هذه المنتجات واسع جدًا. إليك ما يتم استخدامه في أغلب الأحيان:


يتم تضمين بعض هذه الأجهزة في مجموعة Arduino Start الأساسية، والتي يطلق عليها بعض الشركات المصنعة اسم StarterKit.


تشتمل مجموعة Arduino المبدئية على لوحة معالج والعديد من الأجهزة شائعة الاستخدام.

الجزء التنفيذي يحتوي على مجموعة ضخمة من الأجهزة منها على سبيل المثال:

  • محركات كهربائية؛
  • المرحلات والمفاتيح المختلفة.
  • المخفتات (تسمح لك بتغيير شدة الإضاءة بسلاسة) ؛
  • غلق الباب
  • الصمامات والصمامات ثلاثية الاتجاه مع محركات مؤازرة.

إذا كنت تخطط لتوصيل الإضاءة عبر مرحل Arduino، فمن الأفضل استخدام مصابيح LED كمصابيح. تحترق المصابيح المتوهجة بسرعة عند توصيلها عبر هذه المرحلات.

الفيديو: البدء باستخدام Arduino - التحكم في LED عبر واجهة الويب

إنشاء مشروع على الاردوينو

سنعرض عملية إنشاء وإعداد "المنزل الذكي" الخاص بـ Arduino باستخدام مثال النظام الذي سيتضمن الوظائف التالية:

  • مراقبة درجة الحرارة الخارجية والداخلية؛
  • تتبع حالة النافذة (مفتوحة/مغلقة)؛
  • مراقبة الظروف الجوية (صافية/ممطرة)؛
  • توليد إشارة صوتية عند تشغيل مستشعر الحركة في حالة تنشيط وظيفة التنبيه.

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

الاختصارات المستخدمة:

  1. "GND" - التأريض.
  2. "VCC" - مصدر الطاقة.
  3. "PIR" - مستشعر الحركة.

المكونات اللازمة لصنع نظام المنزل الذكي

بالنسبة لنظام المنزل الذكي Arduino ستحتاج إلى ما يلي:

  • لوحة المعالجات الدقيقة اردوينو.
  • وحدة إيثرنت ENC28J60؛
  • اثنين من أجهزة استشعار درجة الحرارة العلامة التجارية DS18B20؛
  • ميكروفون؛
  • جهاز استشعار المطر والثلج.
  • مستشعر الحركة؛
  • مفتاح القصب
  • تناوب؛
  • المقاوم بمقاومة 4.7 كيلو أوم.
  • كابل ثنائي ملفوف؛
  • كابل إيثرنت.

جميع المكونات تكلف حوالي 90 دولارًا.


لإنتاج نظام يحتوي على الوظائف التي نحتاجها، سنحتاج إلى مجموعة من الأجهزة تكلف حوالي 90 دولارًا

تجميع "المنزل الذكي": تعليمات خطوة بخطوة

هذا هو الترتيب الذي يجب أن تتصرف به.

توصيل المحركات وأجهزة الاستشعار

نقوم بتوصيل جميع المكونات وفقًا للمخطط.


يتم تجميع النظام بشكل أساسي من خلال توصيل المحركات بجهات الاتصال المقابلة للوحة المعالج

تطوير كود البرنامج

يكتب المستخدم البرنامج بأكمله في غلاف Arduino IDE، حيث تم تجهيز الأخير بمحرر نصوص ومدير مشروع ومترجم ومعالج أولي وأدوات لتحميل كود البرنامج إلى المعالج الدقيق للوحة Arduino. تم تطوير إصدارات IDE لأنظمة التشغيل Mac OS X وWindows وLinux. لغة البرمجة هي C++ مع بعض التبسيطات. عادةً ما تسمى برامج المستخدم الخاصة بـ Arduino بالرسومات التخطيطية أو الرسومات التخطيطية؛ ويقوم برنامج IDE بحفظها في ملفات ذات الامتداد ".ino".

يتم إنشاء الدالة main()، الإلزامية في لغة C++، تلقائيًا بواسطة غلاف IDE، مع تحديد عدد من الإجراءات القياسية فيها. يجب على المستخدم كتابة الدالتين setup() (التي يتم تنفيذها مرة واحدة أثناء بدء التشغيل) وloop() (التي يتم تنفيذها في حلقة لا نهاية لها). كلتا الوظيفتين مطلوبتان لاردوينو.

ليست هناك حاجة لإدراج ملفات رأس المكتبات القياسية في البرنامج - يقوم IDE بذلك تلقائيًا. لا ينطبق هذا على مكتبات المستخدمين - يجب تحديدها.

تتم إضافة المكتبات إلى مدير مشروع IDE بطريقة غير معتادة إلى حد ما. كمصادر مكتوبة بلغة C++، تتم إضافتها إلى مجلد خاص في دليل العمل الخاص بقشرة IDE. بعد ذلك، ستظهر أسماء هذه المكتبات في قائمة IDE المقابلة. سيتم تضمين تلك التي يحددها المستخدم في قائمة التجميع.

يوفر IDE الحد الأدنى من الإعدادات، ولا توجد إمكانية لتخصيص المترجم على الإطلاق. وبالتالي، يتم حماية المبرمج المبتدئ من الأخطاء.

فيما يلي مثال على أبسط برنامج يجعل مؤشر LED المتصل بالطرف 13 من اللوحة يومض كل ثانيتين:

الإعداد الفارغ () (pinMode (13، OUTPUT)؛ // تعيين منفذ Arduino 13 كمخرج)

حلقة باطلة () (digitalWrite (13، HIGH)؛ // قم بتشغيل الدبوس 13، معلمة استدعاء الوظيفة digitalWrite HIGH - علامة على مستوى منطقي عالٍ

تأخير (1000)؛ // حلقة تأخير لمدة 1000 مللي ثانية - ثانية واحدة

الكتابة الرقمية (13، LOW)؛ // قم بإيقاف تشغيل الدبوس 13، واستدعاء المعلمة LOW - علامة على مستوى منطقي منخفض

تأخير (1000)؛ // تأخير الحلقة لمدة ثانية واحدة)

ومع ذلك، في الوقت الحالي، لا يواجه المستخدم دائمًا الحاجة إلى كتابة برنامج شخصيًا: يتم نشر العديد من المكتبات والرسومات الجاهزة على الإنترنت (انظر هنا: http://arduino.ru/Reference). يوجد برنامج جاهز للنظام المذكور في هذا المثال. يجب تنزيله وتفكيكه واستيراده إلى IDE. ويرد نص البرنامج مع تعليقات توضح مبدأ عمله.


تعمل جميع برامج الاردوينو على نفس المبدأ: يرسل المستخدم طلبًا إلى المعالج، ويقوم بتحميل الكود اللازم على شاشة الكمبيوتر أو الهاتف الذكي

عندما يضغط المستخدم على زر "تحديث" في المتصفح أو التطبيق المثبت على الهاتف الذكي، يرسل متحكم Arduino البيانات إلى هذا العميل. من كل صفحة من الصفحات، المعينة كـ "/tempin"، "/tempout"، "/rain"، "/window"، "/alarm"، يتم استلام رمز البرنامج، الذي يتم عرضه على الشاشة.

تثبيت تطبيق العميل على الهاتف الذكي (لنظام التشغيل Android)

لتلقي البيانات من نظام المنزل الذكي عبر الإنترنت، يمكنك تنزيل تطبيق جاهز.

إليك ما يتعين على مالك الأداة فعله:


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

من خلال تفعيل أيقونة "الإعدادات"، يمكنك تعديل عنوان IP الخاص بك.

تكوين متصفحك للعمل مع المنزل الذكي

في شريط العناوين في متصفحك، أدخل XXX.XXX.XXX.XXX/all، حيث "XXX.XXX.XXX.XXX" هو عنوان IP الخاص بك. بعد ذلك، سيكون من الممكن تلقي البيانات من النظام وإدارتها.

يتيح لك رمز البرنامج المعروض هنا تشغيل وإطفاء الضوء من خلال المتصفح، في حين لا يتم تنفيذ هذه الوظيفة في تطبيق الهاتف الذكي الذي يعمل بنظام Android.

العمل مع جهاز التوجيه


إنشاء حساب على noip.com

هذه الخطوة اختيارية، ولكنها مطلوبة إذا كنت تريد تعيين اسم مجال للعنوان. للقيام بذلك، تحتاج إلى التسجيل في الموقع https://www.noip.com/، انتقل إلى قسم "إضافة مضيف" وأدخل عنوان IP الخاص بالنظام.


بعد التسجيل في موقع noip.com، يمكنك الوصول إلى النظام ليس فقط عن طريق عنوان IP، ولكن أيضًا عن طريق اسم النطاق الكامل

تم الانتهاء من إنشاء المشروع، يمكنك التحقق من وظائف النظام.

فيديو: منزل ذكي باستخدام الاردوينو

مميزات بعض أجهزة الاردوينو

نظرًا لحقيقة أن المكونات المتوافقة مع Arduino يتم إنتاجها من قبل العديد من شركات الطرف الثالث، والتي لا تتحكم Arduino نفسها في جودة منتجاتها، فمن المرجح أن يشتري المستخدم مكونًا لا يعمل بشكل صحيح تمامًا.

وقد تطور وضع مماثل في مجال تطوير الكمبيوتر الشخصي. في وقت واحد، جعلت IBM بنية أجهزة الكمبيوتر الخاصة بها مفتوحة، ونتيجة لذلك بدأت العديد من الشركات في إنتاج أجهزة كمبيوتر متوافقة مع IBM والمكونات الفردية. ونتيجة لذلك، انتشرت "المعدات الشخصية" من هذا النوع على نطاق واسع في جميع أنحاء العالم، إلا أن جودة المكونات ودرجة توافقها في كثير من الحالات لم تكن على أعلى مستوى. اتبعت شركة أبل التكتيكات المعاكسة. لقد حدت من عدد المطورين الذين لديهم إمكانية الوصول إلى البنية، ونفذت نفس السياسة في مجال تطوير البرمجيات. نتيجة لذلك، أصبحت أجهزة كمبيوتر Apple أقل شيوعا وأكثر تكلفة، لكن جودتها متفوقة على الأجهزة المتوافقة مع IBM التي تعمل بنظام Windows.

لاحظ المستخدمون ما يلي بخصوص بعض مكونات أنظمة الأردوينو:

  1. يعطي مستشعر درجة الحرارة DHT11، المزود بالمجموعة الأساسية (StarterKit)، خطأً كبيرًا يتراوح بين 2-3 درجات. يوصى باستخدام مستشعر درجة الحرارة DHT22 في الداخل، والذي يعطي قراءات أكثر دقة، وللتركيب الخارجي - DHT21، القادر على العمل في درجات حرارة تحت الصفر ومحمي من التلف الميكانيكي.
  2. في بعض لوحات المعالجات الدقيقة من Arduino، عندما تكون المرحلات المتصلة بها قصيرة، يفشل منفذ COM. ولهذا السبب، لا يمكن تحميل المخطط على وحدة التحكم الدقيقة: بمجرد بدء التحميل، تتم إعادة تشغيل المعالج. في الوقت نفسه، ينقر التتابع، ويتم إيقاف تشغيل منفذ COM وتتوقف عملية تحميل المخطط.
  3. أحيانًا يقدم مستشعر النافذة/الباب مفاجآت على شكل إنذارات كاذبة. مع أخذ ذلك في الاعتبار، يتم كتابة الرسم بحيث يقوم النظام بتنفيذ الإجراء المطلوب فقط عند تلقي عدة إشارات متتالية.
  4. لإعداد التحكم في العملية باستخدام التصفيق، يطلب بعض المستخدمين، بسبب قلة الخبرة، كاشف الصوت مع تعديل العتبة يدويًا بدلاً من الميكروفون. هذا المكون غير مناسب لمثل هذه الأغراض، نظرًا لأن نطاقه قصير جدًا: يجب عليك التصفيق على مسافة لا تزيد عن 10 سم من الكاشف. بالإضافة إلى ذلك، ينقل هذا المستشعر الإشارات في نبضات قصيرة المدة، لذلك إذا كان هناك رسم كبير، تستغرق معالجته وقتًا طويلاً نسبيًا، فلن يكون لدى المتحكم الدقيق الوقت الكافي لتسجيلها.
  5. يجب أن يستخدم جهاز إنذار الحريق كاشف دخان بدلاً من كاشف الحريق. يسجل الأخير لهبًا لا يزيد عن 30 سم من نفسه.
  6. في حالة حدوث خلل في وحدة التحكم الدقيقة أو حدوث خطأ في الكود، فمن الأفضل استخدام المرحلات المغلقة عادة مع المفاتيح اليدوية المتصلة على التوالي.

لتجنب شراء مكونات منخفضة الجودة، يوصي المستخدمون ذوو الخبرة أولاً بدراسة المراجعات المنشورة على الإنترنت حولها. يمكن شراء أجهزة استشعار غير مكلفة في عدة أنواع لتختبر بنفسك أيها يعمل بشكل أفضل.

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