درع LCD ذكي لاردوينو

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


قطة لجذب الانتباه

بدأت مشاكل داون اند اوت


لذا ، كنت بحاجة إلى واجهة مستخدم حوار ، علاوة على ذلك ، بسرعة. (كانت القطة تجذب الانتباه ، وقد لوحظت - تعمل.) كما لو كان عن قصد ، اقترح جميع الشركات المصنعة رسم حقول الإدخال وأشرطة التقدم يدويًا ، ومعالجات أزرار البرمجة ، وبكلمة واحدة ، القيام بكل ما لم أرغب في فعله. من المثير للدهشة ، لماذا لا توفر مكتبة عالية المستوى تهتم بهذه المخاوف؟ ربما في 80 ٪ من الحالات ، تنخفض جميع المهام إلى تسلسل بسيط:
  1. عرض نموذج مع حقول الإدخال.
  2. انتظر حتى يقوم المستخدم بتحرير حقل Foo.
  3. احصل على القيمة الجديدة لحقل Foo.
  4. افعل شيئًا بالمقابل.

لكن عدم وجود مكتبة لم يكن العقبة الوحيدة. كانت احتياطيات ROM النادرة من Arduino Uno (والوضع نفسه مع Leonardo و Ethernet و Pro) كافية في أحسن الأحوال لتخزين صورة واحدة بدقة 128 × 128 بكسل. ولم يتبق مكان للرمز.
بعد أن مشيت في واجهة واسعة من خلال متاجر Aliexpress و DX والمتاجر المماثلة ، وجدت في النهاية ، بلغة مطوري الشبكات ، دروعًا " غبية رقيقة" أو "شديدة السُمك" . السابق لا يحل المشكلة ، لكنه رخيص. هذا الأخير يشبه نظام الصواريخ المضادة للطائرات ، وسيكون عليك دفع مبلغ لا بأس به لهذا التكرار. إذا تمكنت من وضع شفاه نيكانور إيفانوفيتش على أنف إيفان كوزميتش ... بعد بعض التردد ، قررت أن سد هذه الفجوة التسويقية المزعجة.

ماذا يجب أن نبني درعا


قمت بنشر اللوحة ، وطلبت العينات القليلة الأولى للتجارب ، وجربتها.

أخذت الفكرة تتشكل تدريجياً. لذلك ، يجب أن يكون الحل سهل الاستخدام ورخيصًا دائمًا (أي أدناه):
  • يجب أن يكون الدرع على متن الطائرة متحكمًا بهامش من الذاكرة لبضع شاشات على الأقل.
  • لضمان عدم وجود مشاكل في الذاكرة ، يمكنك إضافة فتحة microSD.
  • أيضًا ، على الدرع مباشرةً ، تحتاج إلى وضع بعض الأزرار.
  • يجب أن يقوم المتحكم الدقيق بـ "العمل الأسود" ، مع عرض حقول النموذج ومعالجة ضغطات الأزرار بطريقة تجعل من الممكن فقط من خلال توفير الطاقة للدرع المُخيط ، التنقل عبر النماذج وتحرير حقول الإدخال ووضع طائر في خانة الاختيار وما إلى ذلك.
  • Arduino : I2C, SPI UART. Arduino; (, ).
  • Arduino GPIO, .
  • , , « Vim, !», , , GTK Glade .




العنصر الأساسي للدرع هو وحدة العرض. يعتمد كل من السعر والخصائص التقنية للمنتج إلى أقصى حد عليه. عند البحث عن وحدة مناسبة ، كنت أرغب في تناول السمك وركوب الخيل: من ناحية ، انتقلت من معيار التوافر ، من ناحية أخرى ، يجب أن تكون تكلفة الوحدة ضئيلة. بشكل أساسي ، تتعارض هذه المعايير مع بعضها البعض: تقدم المتاجر مثل Terraelectronics ، التي لديها مكاتب في جميع أنحاء البلاد ، مجموعة معينة من عروض الألوان للنماذج الشائعة ، ولكن أسعارها كانت من 2000 روبل وما فوق ؛ من ناحية أخرى ، كان هناك العديد من الخيارات الجيدة على نفس Aliexpress ، ولكن جميعها كانت لها نفس العيب: كان هناك فجوة بينها وبين المستخدمين المؤسفين ، حيث توفي أكثر من ألف صندوق من الورق المقوى ، وكان من السهل التنبؤ بسلوكها ،مثل سلوك أسعار النفط أو الطقس.الجميع ، بالطبع ، فهموا ما كان عليه. لذا كانت فكرتي ما زالت مجرد فكرة.
كما يحدث في كثير من الأحيان ، تبين أن ثرثرة المطبخ ليلا على كوب من الشاي قاتلة. شارك أحد الأصدقاء في تمرير كيفية تغيير شاشة مكسورة على هاتف HTC الخاص به. اتضح أن شاشات الهواتف الذكية ، التي تتمتع بخصائص أفضل بلا شك من المنتجات في كتالوجات Terraelectronics ، تكلف أرخص مرتين إلى ثلاث مرات! كان هذا وحي. بعد ذلك ، تم العثور على شاشة بسرعة كافية ، والتي يمكن شراؤها في روسيا في كل خطوة تقريبًا مقابل سنت واحد ؛ تم تثبيته على هواتف Nokia 2600/2650/3100/3200/5100/5140/6100/6220/6610/7210/7250. (كما اتضح لاحقًا ، فقد اكتشفت أمريكا ، حيث يتم استخدام هذه الشاشة في العديد من الدروع لـ Arduino.) دقتها - 128 × 128 بكسل - كافية لعرض نموذج بثلاثة أو أربعة حقول إدخال.


المزجج أفضل من التبجح


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

ميزان الحرارة

#include <intelcd.h>
#include <OneWire.h>
#include <DallasTemperature.h>
 
//     2 Arduino   1-Wire
#define ONE_WIRE_BUS 2
 
/*************************************************************
*     ,                      * 
*      :                      *
*************************************************************/
//  ,   . 
#define FORM_TERMO 0
//  ,    
#define FIELD_TERMO 0
 
 
//   oneWire     oneWire
OneWire oneWire(ONE_WIRE_BUS); 
//   sensor    
DallasTemperature sensor(&oneWire);
//   lcd   LCD 
InteLCD lcd;
 
void setup(void)
{
    lcd.init(); 
    sensor.begin(); 
}
 
void loop(void)
{
    //   
    sensor.requestTemperatures();
 
    //     
    lcd.update(FORM_TERMO, FIELD_TERMO, sensor.getTempCByIndex(0));
    delay(1000);
}


مضاعفات

#include <InteLCD.h>
#include <Servo.h>
 
#define FORM_SERVO 0
#define FIELD_SERVO 0
 
InteLCD lcd; //   lcd   LCD 
Servo myservo; //   servo   
void lcdEvent(void); //    

void setup(void)
{
    myservo.attach(9); // ,    9 
    lcd.init(); //  lcd
}
 
void loop(void)
{
}
 
void lcdEvent(void)
{
    switch (lcd.event.code) {
        case InteLCD::FIELD_UPDATED:
		//    0  1
		if (lcd.event.formid == FORM_SERVO && lcd.event.fieldid == FIELD_SERVO) 
               {
    	            //      
        	    //      
            	    myservo.write(lcd.event.arg[0]); 
 
    	            //       
        	    delay(15); 
	    	}
 
            break;
    }
}


فى النهاية


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

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


All Articles