آموزش آردوینو برد ESP8266 برد ویموس Wemos نمایشگر LCD

پروژه چشم مصنوعی نمایش انیمیشن چشم انسان در LCD های TFT

نوشته شده توسط CiferTech

در این آموزش قصد راه‌اندازی نوعی lcd TFT با درایور St7789 را داریم که در نتیجه آن قادر خواهیم یک انیمیشن جالب را نمایش دهیم که شبیه سازی عملکرد چشم انسان است البته در مسیر اجرا به شما آموزش خواهم داد چگونه نوع انیمیشن چشم را تغییر دهیم. در این پروژه برای راه‌اندازی نمیشگر TFT از برد Wemos با تراشه ESP8266 استفاده خواهیم کرد، نمایشگر استفاده شده از نوع TFT با ابعاد ۲۴۰*۲۴۰ که بدلیل تمام رنگ بودن، به زیبایی پروژه کمک زیادی می‌کند. برای راه‌اندازی و نمایش موارد گرافیکی از کتابخانه TFT-eSPI استفاده خواهیم کرد که البته تغییراتی نیز در کتابخانه ایجاد خواهیم کرد تا برای استفاده برای یرد ESP8266 مناسب باشد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

نمایش انیمیشن چشم انسان در LCD های TFT+ st7789 + wemos

 


نمایشگر LCD 240×۲۴۰ TFT


در پروژه چشم انسان از ال سی دی TFT که مخفف “Thin Film Transistor” است استفاده میکنیم. صفحه نمایش TFT LCD رنگی، دارای ترانزیستورهایی است که از فیلمهای نازک سیلیکون آمورف روی شیشه رسوب کرده اند. این به عنوان یک شیر کنترل برای ایجاد ولتاژ مناسب بر روی کریستال های مایع برای زیر پیکسل های جداگانه عمل می کند. به همین دلیل صفحه نمایش TFT LCD را نمایشگر Active Matrix نیز می نامند. این صفحه نمایش ۱٫۵۴ اینچی دارای ۲۴۰×۲۴۰ پیکسل، ۱۶ بیتی تمام رنگ است و یک نمایشگر IPS است، بنابراین رنگ تا ۸۰ درجه از محور در هر جهت عالی به نظر می رسد. این LCD از درایور ST7789 استفاده می‌کند.

نمایش انیمیشن چشم انسان در LCD های TFT+ st7789 + wemos

 


 برد Wemos ویموس


برد Wemos یکی از پرطرافدار ترین برد هایی است که در زمینه iot مورد استفاده قرار میگیرد، یکی از مزیت های این برد نسبت به برد هایی مانند Node MCU اندازه کوچک آن می باشد تراشه وای فای مورد استفاده در این برد ESP8266 می باشد. از دیگر مزیت های این برد وجود شیلد های مختلفی برای این برد می باشد، که انجام هر پروژه ای را برای کاربر بسیار آسان و لذت بخش می کند، شیلد هایی از جمله شیلد باتری، multi sensor ، DHT22 ، رله ، oled تعداد بسیار زیادی شیلد برای این برد توسعه داده شده که در نتیجه تجربه خوبی از iot برای شما به جا خواهد گذاشت.

 


مقاومت وابسته به نور یا LDR


مخفف Light Dependent Resistor یا Photoresistor است که یک قطعه الکترونیکی منفعل یا پسیو است، در واقع یک مقاومت است که مقدار مقاومتی آن وابسته به شدت نور متفاوت است. LDR یک مقاومتی است که از یک نیمه هادی با مقاومت بالا ساخته شده است که فوتون ها را جذب می کند و بر اساس کمیت و فرکانس فوتون های جذب شده، مواد نیمه هادی به الکترون های مقید انرژی کافی می دهد تا  هدایت شوند. الکترون های آزاد حاصل الکتریسیته بوجود آمده را هدایت می کنند و در نتیجه مقاومت در برابر نور را کاهش می دهند. در کل تعداد این الکترون ها به فرکانس فوتون ها موجود وابسته است. میزان مقاومت LDR در تاریکی بسیار زیاد است، که تقریبا تا ۱MΩنیز خواهد رسید، اما وقتی نوری روی LDR بیفتد، مقاومت به چند KΩ کاهش می یابدالبته این مقدار وابسته به مدل مقومت نوری نیز بستگی دارد.

ساخت چشم انسان با ال سی دی TFT رنگی - دیجی اسپارک

 


توضیح تکمیلی چشم انسان


در این پروژه با استفاده از برد ESP8266 نمایشگر ST7789 را با هدف نمایش انیمیشن مورد نظر راه‌اندازی خواهیم کرد و ههمچنین قادر خواهیم بود نوع انیمیشن چشم را تغییر دهیم و در ادامه اب اضافه کرد یک مقاومت نوری به مدار نوع انیمیشن را طبیعی تر خواهیم کرد به این صورت که با مقاومت نوری میزان نور محیط اندازه گیری می‌شود و در ادامه نسبت به این مقدار مردمک چشم در مدت زمان مشخص با توجه به تغییرات نوری تغییر خواهد کرد. از این پروژه میتوان برای مواردی که نیاز به شخصی سازی ربات است بهره برد.

 


وسایل مورد نیاز


برد Nodemcu برپایه ESP8266

نمایشگر TFT 240×۲۴۰

برد wemos

مقاومت وابسته به نور LDR

نمایش انیمیشن چشم انسان در LCD های TFT+ st7789 + wemos

 


نصب و راه‌اندازی کتابخانه چشم انسان


در این پروژه برای راه‌اندازی نمایشگر از کتابخانه TFT-eSPI استفاده می‌کنیم، البته در ادامه برای امکان اتصال نمایشگر به برد ESP8266 باید تغییراتی در کتابخانه با جایگزین کردن یکی از فایل ها در پوشه اصلی کنیم. در این مرحله مطابق مراحل زیر برای نصب اولیه کتابخانه پیش بروید. ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مرجع سنسور های TFT-eSPI می کنیم. مراحل زیر را دنبال کنید:

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه TFT-eSPI را جستجو کنید.
  3. کتابخانه را نصب کنید.

نصب کتابخانه TFT در آردوینو - دیجی اسپارک

 

در ادامه برای تنظیم صفحه نمایش، باید User_Setup.h را در داخل کتابخانه اصلاح کنیم.

  • به مسیر نصب کتابخانه بروید در مسیر Documents/Arduino/libraries.
  • فایل User_Setup.h از این لینک دانلود و جایگزین فایل موجود همنام با این فایل کنید.

ویرایش فایل کتابخانه LCD TFT در آردوینو - دیجی اسپارک

 


اتصالات و راه‌اندازی


در این پروژه از یک TFT LCD یا پرتوکل ارتباطی SPI استفاده کردیم که از پین های D0, D1,D5 ,D7 در برد Wemos استفاده خواهد کرد، همچنین از یک مقاومت وابسته به نور استفاده خواهیم کرد که مقادیر این مقاومت توسط پین آنالوگ به دیجیتال A0 اندازه‌گیری می‌شود. اتصالات را مطابق جدول و شماتیک زیر برقرار کنید.

اتصالات ماژول ال سی دی TFT به برد ویموس Wemos - دیجی اسپارک

 

  • شماتیک اتصالات نمایشگر TFT lcd و برد Wemos

ٍُ TFT+ st7789 + wemos

تا به این مرحله توانستیم انیمیشن چشم را در نمایشگر به تصویر بکشیم، حالا یک قدوم جلوتر می‌رویم و با استفاده از یک مقاومت نوری و مردمک چشم را با توجه به شرایط نوری محیطی کنترل کنیم تا در شرایط مختلف مردمک چشم تغییر حالات دهد، یعنی در زمان که نور کم باشد مردمک چشم باز شده و در شرایطی که نور زیادی تشخیص داده شود مردمک کوچک تر خواهد شد. در این مدار اضافه شده از دو نوع مقاومت استفاده کردیم که یک نوع مقاومت معمولی است و دیگری یک مقاومت وابسته به نور یا LDR که به پایه A0 در برد Wemos متصل خواهد شد.

اتصال سنسور LDR به برد ESP8266 - دیجی اسپارک

 

در این بخش به کد های این پروژه رسیدیم که دارای چند بخش مختلف است، در واقع از چندین برگه مختلف برای فانکشن های مختلف تعریف شده که که تنها صفحه اول را در این قسمت مشاهده می کنید. کد کامل را از صفحه گیت هاب من در این لینک دانلود کنید.

//اضافه کردن کتابخانه ها
#include <SPI.h>
#include <TFT_eSPI.h>
TFT_eSPI tft;           // برای استفاده از دو عدد صفحه نمایش

// بافر برای رندر کردن هر پیکسل
#define BUFFER_SIZE 1024 // 128 به ۱۰۲۴ 

#ifdef USE_DMA
  #define BUFFERS 2      
#else
  #define BUFFERS 1     
#endif

uint16_t pbuffer[BUFFERS][BUFFER_SIZE]; // رندر کردن پیکسل
bool     dmaBuf   = 0;                  // DMA بافر

// This struct is populated in config.h
typedef struct {        
  int8_t  select;      
  int8_t  wink;         
  uint8_t rotation;     
  int16_t xposition;   
} eyeInfo_t;

#include "config.h"   

extern void user_setup(void); 
extern void user_loop(void);

#define SCREEN_X_START 0
#define SCREEN_X_END   SCREEN_WIDTH   // عرض چشم ها
#define SCREEN_Y_START 0
#define SCREEN_Y_END   SCREEN_HEIGHT  // ارتفاع نمایشی چشم

// مقادیری برای کنترل پلک زدن
#define NOBLINK 0       
#define ENBLINK 1      
#define DEBLINK 2       
typedef struct {
  uint8_t  state;      
  uint32_t duration;    
  uint32_t startTime;  
} eyeBlink;

struct {                
  int16_t   tft_cs;    
  eyeBlink  blink;      
  int16_t   xposition; 
} eye[NUM_EYES];

uint32_t startTime;  


void setup(void) {
  Serial.begin(115200);
  
  Serial.println("Starting");

#if defined(DISPLAY_BACKLIGHT) && (DISPLAY_BACKLIGHT >= 0)
  
  Serial.println("Backlight turned off");
  pinMode(DISPLAY_BACKLIGHT, OUTPUT);
  digitalWrite(DISPLAY_BACKLIGHT, LOW);
#endif

  
  user_setup();

 
  initEyes();

  
  Serial.println("Initialising displays");
  tft.init();

#ifdef USE_DMA
  tft.initDMA();
#endif

  
  digitalWrite(eye[0].tft_cs, HIGH);
  if (NUM_EYES > 1) digitalWrite(eye[1].tft_cs, HIGH);

  for (uint8_t e = 0; e < NUM_EYES; e++) {
    digitalWrite(eye[e].tft_cs, LOW);
    tft.setRotation(eyeInfo[e].rotation);
    tft.fillScreen(TFT_BLACK);
    digitalWrite(eye[e].tft_cs, HIGH);
  }

#if defined(DISPLAY_BACKLIGHT) && (DISPLAY_BACKLIGHT >= 0)
  Serial.println("Backlight now on!");
  analogWrite(DISPLAY_BACKLIGHT, BACKLIGHT_MAX);
#endif

  startTime = millis(); 
}


void loop() {
  updateEye();
}

نمایش انیمیشن چشم انسان در LCD های TFT+ st7789 + wemos

 


جمع بندی


در این آموزش به کمک برد ESP8266 اقدام به رندر کردن و نمایش یک انیمیشن در نمایشگر ST7789 کردیم، در مواردی که از این نوع از پروژه در اینترنت وجود همواره باری رندر تصاویر از برد های قوی مانند Teency استفاده می‌شود که من با تغییراتی که در کتابخانه و کد دادم، موفق به اجرای این پروژه در این تراشه محبوب یعنی ESP8266 شدم، از این پروژه می‌توان برای ظاهر ربات های انسان نما استفاده کرد، این پروژه قابلیت های مختلفی برای کنترل حرکت چشم در اختیار ما خواهد گذاشت که در صورت استقبال از این آموزش این موارد نیز آموزش داده خواهد شد.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۶ دیدگاه