المسلسل ، UART و Android ، كاتصال مع ميكروكنترولر

صورة

مواضيعنا:


Android 4.1.1 tablet "DNS AirTab M101w" والأجهزة التالية:
1. Tiva C سلسلة TM4C123G LaunchPad
2. Stellaris LaunchPad EK-LM4F120XL المجلس
3. اردوينو ميجا 2560 المجلس
4. مجلس MSP430 LaunchPad ، M430G2553

والآن ، بالترتيب ، سنقوم بتوصيل جميع هذه اللوحات عبر USB OTG بالكمبيوتر اللوحي ونحاول إنشاء اتصال معهم دون اللجوء إلى الوصول إلى الجذر.

الموضوع 1. Tiva C Series TM4C123G LaunchPad


تحتوي اللوحة على موصل "DEBUG" micro-USB ، ومصباح RGB ، وسوف نلعب معهم.
تم تحميل المخطط التالي باستخدام Energia IDE:
char data = ' '; //    boolean rs, gs, bs = false; //   void setup() { //  pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT); Serial.begin(9600); // Serial    9600 } void loop() { if (Serial.available()){ //    data = Serial.read(); //  switch (data){ //  case '1': rs = !rs; break; case '2': gs = !gs; break; case '3': bs = !bs; break; } //  digitalWrite(RED_LED, rs); digitalWrite(GREEN_LED, gs); digitalWrite(BLUE_LED, bs); //    Serial.print("RGB="); Serial.print(rs); Serial.print(gs); Serial.println(bs); } } 


في حالتي ، عند الاتصال بالكمبيوتر اللوحي ، يظهر ملف tty1-1: 1.0 في الدليل / dev / usb /. دعونا نحاول تسجيل ما يلي في المحاكي الطرفي:
 $ echo 2 > /dev/tty1-1:1.0 $ read s < /dev/tty1-1:1.0 $ echo $s RGB=010 


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

بعد أن لعبت قليلاً مع الألوان ، وأرسل أرقامًا مختلفة إلى منفذ COM المزعوم ، بدأت في البحث عن حل Android عالمي. هناك الكثير على Google Play لـ "Serial UART" ، وتعمل معظم التطبيقات كما هو متوقع مع لعبة من Texas Instruments. لكن محاولاتي لإيجاد سلسلة رسائل متوافقة مع Open Source لم تنتهي بأي شيء تقريبًا. ل Arduino لقد وجدت مكتبة رائعة ، ولكن المزيد عن ذلك أدناه ...

الموضوع 2: لوحة Stellaris LaunchPad EK-LM4F120XL


كما أفهمها ، هذه هي النسخة السابقة من أول موضوع اختبار لدينا وتتصرف بنفس الطريقة تمامًا مع android. لكن Energia 0101E0010 الحالي ، عند محاولة ملء الرسم ، لا يرى هذا المنتدى (Windows 8).
 No ICDI device with USB VID:PID 1cbe:00fd found! Failed! 


لذلك ، قمت فقط بتشغيل إخراج المسار الثنائي النهائي إلى وحدة التحكم وقمت بتحميله يدويًا باستخدام LM Flash Programmer.

الموضوع 3: مجلس اردوينو ميجا 2560


دعنا نغير الرسم قليلاً وسنومض فقط بمصباح واحد.
ملء مع اردوينو بيئة تطوير متكاملة
 #define LED 13 char data = ' '; boolean ls = false; void setup() { pinMode(LED, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available()){ data = Serial.read(); switch (data){ case '1': ls = !ls; break; } digitalWrite(LED, ls); Serial.print("LED="); Serial.println(ls); } } 


نتصل بالكمبيوتر اللوحي ، ومرة ​​أخرى نرى ملف tty1-1: 1.0 في الدليل / dev / usb / ، نكرر التجربة:
 $ echo 1 > /dev/tty1-1:1.0 

ثم أجد أن يومض المصباح مرتين مع فترة تبلغ حوالي 100 مللي ثانية وينطفئ. حسنًا ، أجرب ما يلي:
 $ read s < /dev/tty1-1:1.0 

ثم تجمدت المحطة تحسبا ... حسنا ، Ctrl + C
 $ echo $s 

ومن المنطقي أنه لا يوجد شيء في الإخراج.

ولكن هذا كان مجرد مقدمة ، وهناك مشروع واحد رائع مكتبة Physicaloid . أولاً ، افتح المكتبة كمشروع أندرويد عادي في Eclipse. الآن قم بإنشاء مشروع جديد وفي خصائصه في العنصر android ، انقر فوق مكتبة Add ... وحدد Physicaloid Library. الآن ، للضغط على الزر لإرسال السلسلة "1" إلى اردوينو:
 public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: mPhysicaloid = new Physicaloid(this); if(mPhysicaloid.open()) { byte[] buf = "1".getBytes(); mPhysicaloid.write(buf, buf.length); mPhysicaloid.close(); } break; } 

لا أعتقد أنني بحاجة إلى معرفة كيفية قراءة البيانات المستلمة ، لأن كل شيء موجود في وثائق المكتبة.

الموضوع 4: لوحة MSP430 LaunchPad ، M430G2553.


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

النتيجة:


أود الحصول على مكتبة من هذا القبيل للعمل مع لوحات Tiva C Series. جدد نفسك بينما المهارة ليست كافية.

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


All Articles