في المراجعين الأولين ( 1 ، 2 ) ، قدمنا لكم التكوين والسمات الرئيسية لمجموعة المختبر الرقمي NR05 من سلسلة الأبجدية من إلكترونيات عامل .
قلنا مرارًا وتكرارًا أن إمكانيات التوظيف لا تقتصر على تلك التجارب والمشاريع التي تتضمن دليل التدريب. إمكانيات المجموعة أوسع بكثير!دعونا نفكر في كيفية تنفيذ التحكم في الأجهزة التنفيذية من هاتفك الذكي أو جهازك اللوحي باستخدام المختبر الرقمي.سيتم تنفيذ الاتصال بين الهاتف الذكي ووحدة Arduino المثبتة على لوحة التوسع باستخدام تقنية Bluetooth. بالطبع ، سيحد هذا من القدرة على التحكم لاسلكيًا في مسافة حوالي 10 أمتار ، ولكن في المنزل ، غالبًا ما تكون هناك حاجة إلى المزيد. استنادًا إلى هذه التقنية ، يمكنك التحكم في الروبوتات البسيطة أو أجهزة التشغيل الآلي للمنزل بنجاح ، وسيعمل هاتفك أو هاتفك الذكي كلوحة تحكم عالمية مجانية يمكن إعادة برمجتها بسهولة لحل المهمة على أفضل وجه.على الإنترنت ، يمكنك العثور على العديد من المشاريع التي تسمح لك بتوصيل Arduino بهاتف عبر Bluetooth ، وستساعد هذه المشاريع بالتأكيد على إتقان مبدأ مثل هذا الاتصال ، ولكن عيبها الرئيسي هو عدم القدرة على تكييف وظائف برنامج التحكم ومظهره مع الاحتياجات الخاصة للمستخدم.سوف نتبع مسار أكثر تعقيدًا ، ولكن أكثر عالمية - سنكتب برامج للهاتف ولأردوينو بمفردنا. سيساعدك ذلك على فهم مبدأ كتابة هذه التطبيقات واستخدامها في تطويرك.أولاً ، دعنا نشرح على أي مبدأ يستند الاتصال الذي سنستخدمه. كما تعلم ، عندما تكون وحدة Arduino متصلة بجهاز كمبيوتر ، يتم تكوين منفذ تسلسلي افتراضي - منفذ COM - على الكمبيوتر. يتم استخدامه لتحميل الرسومات إلى Arduino ، وكذلك لتبادل المعلومات بين جهاز الكمبيوتر ووحدة التحكم الدقيقة Arduino. أيضًا على لوحة Arduino هناك نوعان من الاتصالات مع الدبابيس D1 و D0 و RX و TX المعينين - على التوالي ، الإرسال (الاستلام) والاستقبال (الإرسال) للواجهة UART القياسية.بعد توصيل محول Bluetooth-UART بجهات الاتصال هذه (تبين أن وحدة HC-05 تحت تصرفنا ، لم يتم تضمينها في المجموعة) نحصل على قناة اتصال أجهزة بين الجهاز المتصل عبر البلوتوث بالمحول و Arduino.وبالتالي ، من خلال كتابة المعلومات من جهاز إلى المنفذ التسلسلي وقراءتها من جهاز آخر (يمكن القيام بذلك في اتجاهين) ، يمكننا تنظيم تبادل المعلومات بين الأجهزة. ستكون سرعة هذا التبادل بين Arduino وهاتف ذكي في حالة استخدام وحدة HC-05 بالباود 57600.للتوضيح ، نستخدم RGB LED ومحرك سيرفو ، وكلاهما يتم التحكم فيهما بواسطة إشارات PWM.فيما يلي مخطط اتصال مكونات المشروع:
للتحكم في العناصر التنفيذية ، سننقل من الهاتف الذكي حرفًا معينًا يحدد العنصر الذي يقصد الأمر ، ورقمًا يتوافق مع معلمة الأمر. يمكن أن تكون المعلمة شكلًا يحدد ما إذا كان يجب تشغيل أي مشغل أو إيقاف تشغيله ، أو شكل يحدد معلمة PWM.نعطي نص البرنامج لاردوينو. يستقبل البرنامج البيانات من محول Bluetooth ، ويفك تشفيرها ويقوم بتنفيذ الإجراءات اللازمة: تشغيل LED أو إيقاف تشغيله ، وضبط سطوعه أو زاوية دوران رمح المؤازرة.تم تجهيز النص بعدد كاف من التعليقات لفهم منطق البرنامج:المفسد// LCD-
#include <Servo.h>
#include <LiquidCrystal.h>
// 5
// get_key
#define NUM_KEYS 5
int adcKeyVal[NUM_KEYS] = {30, 150, 360, 535, 760};
// LCD-
LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);
//
Servo servo;
int btValue; // BT-
char command; // , COM-
void setup() {
// COM- bluetooth, , -
Serial.begin(57600);
Serial.flush();
Serial.setTimeout(4);
// LCD (16 , 2 )
lcd.begin(16, 2);
lcd.clear();
lcd.print(«Master Kit-READY»);
delay(2000);
lcd.clear();
// 3-
servo.attach(3);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(9, LOW);
}
void loop() {
int key = get_key(); // ,
// , COM-
//
if (key > 0){
Serial.print(key);
delay(500);
}
// , bluetooth,
if (Serial.available() > 0) {
// ()
command = Serial.read();
// ( )
btValue = Serial.parseInt();
// LCD , bluetooth
lcd.setCursor(0,0);
lcd.print(command);
lcd.print(' ');
lcd.print(btValue);
lcd.print(" ");
delay(10);
switch (command) {
case 'P': // P,
pinSwitch(btValue);
break;
case 'S': // S — c 1 ( )
pwm5(btValue);
break;
case 'M': // — 2 ( )
servo3(btValue);
break;
}
}
}
//
void pinSwitch(int Pin){
digitalWrite(Pin, !digitalRead(Pin));
}
// 5 ( )
void pwm5(int pwmValue){
analogWrite(5, pwmValue);
}
// 3
void servo3(int angleValue){
int angle = map(angleValue, 0, 180, 5, 180);
servo.write(angle);
}
//
int get_key()
{
int input = analogRead(A6);
int k;
for(k = 0; k < NUM_KEYS; k++)
if(input < adcKeyVal[k])
return k + 1;
return 0;
}
الآن ، لنأخذ برنامجًا لهاتف ذكي ، والذي يجب أن ينقل أمرًا بمعلمة. سنستخدم إمكانات مشروع MIT App Inventor لهذا الغرض.مخترع MIT للتطبيق هو بيئة برمجة تم تطويرها في معهد ماساتشوستس للتكنولوجيا (MIT). يتم استخدامه لتطوير تطبيقات للأجهزة المحمولة (الهواتف الذكية وأجهزة الكمبيوتر اللوحية) التي تعمل على نظام التشغيل Android.هذه ليست لغة برمجة بالمعنى المقبول بشكل عام ؛ عند استخدامها ، لا تحتاج إلى كتابة رمز نصي في شكل خطوط. يتم تشكيل البرنامج على شكل كتل معروضة على الشاشة ، والتي يتم سحبها وتكديسها ببساطة مثل الألغاز. إذا كانت الكتل تتناسب معًا وفقًا لمنطق البرنامج ، فإنها "تلتصق ببعضها البعض" ، إذا لم تكن مناسبة ، فلا يمكن توصيلها. في البداية ، تم تطوير طريقة البرمجة هذه لتعليم الطلاب ، لذلك من السهل جدًا التعلم. بالطبع ، كما هو الحال في كل لغة ، فإنه يحتوي على خفاياه وحيله الخاصة ، ولكن الموقع يحتوي على معلومات وأمثلة كافية لإتقان اللغة. تتوفر العديد من البرامج على الموقع في المجال العام.لاستخدام بيئة برمجة App Inventor ، المتوفرة على ai2.appinventor.mit.edu ، يجب أن يكون لديك حساب Google يتم من خلاله إجراء التفويض على موقع المشروع على الويب. يتم إنشاء البرنامج في أي متصفح. يجب أن يكون الكمبيوتر الذي يشغل هذا المتصفح متصلاً بالإنترنت باستمرار. يجب أن يحتوي الهاتف الذكي أو الجهاز اللوحي الذي سيتم تثبيت البرنامج الذي تم إنشاؤه باستخدام App Inventor على إصدار نظام تشغيل Android 4.0 على الأقل.في المتصفح ، تقوم بإنشاء التصميم (المظهر) ومنطق البرنامج في شكل كتل ، في نفس المكان الذي يتم فيه تجميع المشروع النهائي في ملف قابل للتنفيذ مع ملحق apk. يمكن تنزيل هذا الملف وتشغيله على جهاز محمول بعدة طرق. ولعل أكثر هذه الطرق ملاءمة هو تثبيت تطبيق MIT AI2 Companion على الجهاز المحمول (وهو موجود في سوق Play). ينشئ App Inventor رمز QR يحتوي على رابط للتطبيق الذي أنشأته ، ويقوم AI2 Companion بقراءته وتثبيته (أو تحديثه). يمكنك حتى رسم وتحميل الرمز الخاص بك لبدء تشغيل التطبيق الخاص بك. وبالتالي ، يتيح لك App Inventor إنشاء تطبيقات وظيفية بالكامل وبديهية لنظام Android. على الرغم من أن رمزهم ليس هو الأمثل ، ولكن الراحة ،إن بساطة وسرعة إنشاء مثل هذه التطبيقات في كثير من الحالات تسدد هذا العيب تمامًا.يتم تحميل التطبيق الذي يعمل في مشروعنا إلى معرض MIT AI2 Appiventor تحت اسم BToothHC05.يسمح لك التطبيق بالعثور على جهاز Bluetooth ، والاتصال به ، ويولد أوامر مع معلمات ويرسلها إلى الجهاز المتصل ، ويقرأ البيانات من الجهاز ويعرض عدد الزر الذي تم الضغط عليه على لوحة التوسيع.يبدو تصميم الشاشة وفقًا للصورة التالية:
هناك عناصر (مربعات خضراء ترمز إلى الصور المدرجة) لا تحمل وظائف ، ولكنها تعمل كفواصل لتحسين المظهر.إذا انتقلت إلى موقع الويب AppInventor وكنت في بيئة البرمجة في وضع "المصمم" ، فعندما تنقر بزر الماوس الأيمن على عنصر التصميم المقابل ، سترى خصائصه على اليمين. بعد التبديل إلى وضع "الكتل" ، يمكنك رؤية جميع الكتل في التطبيق الجاري تطويره.في الواقع ، جميع الكتل تقريبًا هي معالجات الأحداث: الضغط على زر على الشاشة التي تعمل باللمس ، وتحريك شريط التمرير ، وتحريك جهاز ضبط الوقت ، وإمالة الهاتف (نعم ، يمكن استخدام جميع مستشعرات الأجهزة المحمولة تقريبًا في App Inventor!).النظر في الغرض الوظيفي لكل كتلة.
في هذه الكتلة ، عند النقر فوق زر شاشة الاتصال / قطع الاتصال (حدث Button4Connect.Click) ، يتم فصل جهاز Bluetooth (الاتصال بـ BluetoothClient1.Disconnect) إذا كان متصلاً بالفعل (BluetoothClient1.IsConnected) ، يتغير النص الموجود على الزر إلى "غير متصل" ويتغير لونه إلى الرمادي ، أو استدعاء قائمة الأجهزة الممكنة للاتصال (ListPicker1.Open) إذا لم يكن هناك اتصال. كما ترون ، الكتلة قابلة للقراءة من وجهة نظر حتى مبرمج مبتدئ!
في هذه الكتل الثلاث (من الأعلى إلى الأسفل):- قم بتعيين متغير عام (ستراه جميع الكتل) switch1 لتبديل أوضاع التشغيل: المنزلق أو الميل ؛- عند استدعاء قائمة الأجهزة ListPicker1 للاتصال ، نريد عرض عناوينها وأسمائها ؛- عند اختيار جهاز من قائمة ListPicker1 ، اتصل به ، وقم بتغيير لون الزر وقم بعرض نص متصل باسم الجهاز. يتكون اسم الجهاز من تسلسل أحرف طويل ؛ 8 أحرف مأخوذة من الثامن عشر.
ترسل الكتل الثلاث الموضحة أعلاه الأحرف "P5" و "P9" و "P6" من خلال الاتصال الذي تم إنشاؤه ، والتي يجب تشغيل أو إيقاف تشغيل اللون الأحمر أو الأخضر أو الأزرق لمصباح LED ، على التوالي.
عند تحريك شريط التمرير Slider1 ، الذي يتحكم في سطوع اللون الأحمر لمصباح LED ، يرسل هذا المربع الرمز "S" والأرقام المقابلة لموضع شريط التمرير.
عندما يتم تبديل Slider2 ، الذي يتحكم في المؤازرة ، إذا كان الوضع المقابل قيد التشغيل (switch1 = 0) ، فإننا نرسل الحرف M وموضع المنزلق.
إذا تم تشغيل وضع التشغيل من مستشعر الإمالة ، ترسل الوحدة M وزاوية إمالة + 90 درجة للتحكم في محرك سيرفو.
تقوم هذه الوحدة بتبديل أوضاع تشغيل الماكينة من شريط التمرير أو مستشعر الإمالة ، وبالتالي تقوم بتغيير النص الموجود على الزر (Text) ولونه (BackgroundColor).
يتم تشغيل هاتين الكتل بواسطة حدث مؤقت. تقوم الكتلة الأولى (Clock1) كل 0.1 ثانية (يتم تعيين هذا الفاصل الزمني في خصائص عداد الساعة 1) بالتحقق من البيانات المتعلقة بما إذا كان الزر الموجود على لوحة التوسيع قد تم الضغط عليه. إذا تم الضغط على الزر ، فسيتم عرض معلومات حول رقم الزر المضغوط على شاشة الهاتف الذكي خلال ثانية واحدة (الكتلة الثانية - الساعة 2).سنلقي نظرة الآن على الفيديو حول كيفية حدوث LED والتحكم المؤازر من الهاتف الذكي وفقًا لبرامجنا.بنفس الطريقة ، يمكن التحكم في عدد كبير بما فيه الكفاية من المحركات المتصلة بـ Arduino. هذا لا يتطلب أي عمل ضخم للمبرمج عند استخدام AppInventor ، وبرمجة Arduino بسيطة وواضحة للغاية. يمكنك بسهولة إضافة أو إزالة كتل البرامج غير الضرورية والحصول على الوظائف التي تحتاجها.كما ترى من هذه المواد ، تسمح لك لوحة التمدد من مجموعة المختبر الرقمي باستخدام وحدات Arduino الإضافية بشكل ملائم وبصري.التطبيق.البدء في بيئة برمجة MIT AppInventor.كما كتبنا بالفعل ، للعمل في مشروع AppInventor تحتاج إلى حساب Google. إذا كان لديك هاتف ذكي على Android ، فمن المحتمل أن يكون لديك بالفعل مثل هذا الحساب. إذا لم يكن الأمر كذلك ، فيمكنك الحصول عليه بالانتقال إلى Google عبر الرابط التالي .بعد ذلك ، انتقل إلى موقع AppInventor على الويب وانقر على الرابط إنشاء تطبيقات! ، الموجود في الركن الأيمن العلوي من الصفحة الرئيسية لموقع الويب ، وانتقل إلى موقع بيئة البرمجة.كمثال توضيحي ، يوجد أدناه رابط إلى مقطع فيديو قصير يوضح إنشاء برنامج بسيط يعرض النص عند النقر فوق زر تم تكوينه على شاشة اللمس في الهاتف الذكي.