نمایشگر های E-paper نوع خاصی از نمایشگر های مونو کالر ( مدل های جدید به صورت مالتی کالر می باشند )هستند که فاقد نور پس زمینه می باشند . می توان گفت E-paper ها در واقع کاغذ های الکترونیکی هستند که می توان آن ها را بار ها پاک کرد و تصاویر مختلف را بر روی آن ها نمایش داد . از زمان ساخت اولین نمایشگر های E-paper تا به امروز تکنولوژی های مختلفی برای ساخت این نمایشگر ها پدید آمده . اما به طور کلی ساختار این تکنولوژی های مشابه است و تمامی آن ها بر اساس واحد هایی در قالب کپسول های بسیار کوچکی می باشند که با اعمال یک اختلاف پتانسیل تغییر رنگ می دهند (در برخی از انواع E-paper ها از ذرات رنگی حساس به بار الکتریکی استفاده می شود اما در کل تکنولوژی ساخت این نمایشگر ها چندین مدل است ). یکی از مهمترین مزیت این نمایشگر ها جریان مصرفی بسیار پایی آن ها است به طوریکه مدل 4.3 اینچی تنها 5 میلی آمپر جریان مصرف خواهد کرد و نیز یکی دیگر از مزیت های این نمایشگر ها ماندگاری تصاویر بر روی آن هاست . به طوریکه پس از قطع تغذیه تصویر نمایشگر پاک نمی شود لذا تنها در لحظه رفرش کردن نمایشگر مصرف خواهد داشت . کاربرد های زیادی برای این نمایشگر ها وجود دارد از قفسه های یک فروشگاه تا تبلت هایی برای خواندن کتاب . در این آموزش به راه اندازی E paper مدل 4.3 اینچی Waveshare خواهیم پرداخت . این نمایشگر دارای یک MCU قوی با قابلیت های بالا است که از رابط ارتباطی UART پشتیبانی می کند . این نمایشگر از توابع رسم خط ، داره و… پشتیبانی می کند . حتی فونت هایی نیز دارد که دیگر نیازی به استفاد از فونت نخواهید داشت .
پین های خروجی نمایشگر :
سیم های خروجی این نمایشگر به صورت زیر می باشد
1- سیم قرمز تغذیه 5 ولت نمایشگر است .
2- سیم مشکی GND زمین ماژول می باشد .
3- سیم سفید RX در ارتباط UART است همچنین سیم سبز TX می باشد .
4-سیم آبی نیز برای ریست کردن نمایشگر می باشد .
راه اندازی نمایشگر E-paper با آدرونیو :
برای راه اندازی این نمایشگر باید از ارتباط UART استفاده کنید . می توانید از این لینک فرمان های کنترلی این نمایشگر را ببینید . در کد های زیر برای راه اندازی نمایشگر از کتابخانه epd.h استفاده شده است که می توانید آن را از لینک زیر دانلود کنید .
https://github.com/soonuse/epd-library-arduino/archive/master.zip
کد های آردوینو :
/********************************************************************************************************* * * File : Arduino-epd * Hardware Environment: * Build Environment : Arduino * Version : V1.6.1 * By : WaveShare * * (c) Copyright 2005-2015, WaveShare * http://www.waveshare.net * http://www.waveshare.com * All Rights Reserved * *********************************************************************************************************/ #include <epd.h> const int led = 13; //user led /******************************************************************************* * Function Name : void base_draw(void) * Description : * Input : None * Output : None * Return : None *******************************************************************************/ void base_draw(void) { int i, j; /* draw pixel */ epd_clear(); for (j = 0; j < 600; j += 50) { for (i = 0; i < 800; i += 50) { epd_draw_pixel(i, j); epd_draw_pixel(i, j + 1); epd_draw_pixel(i + 1, j); epd_draw_pixel(i + 1, j + 1); } } epd_udpate(); delay(3000); /* draw line */ epd_clear(); for (i = 0; i < 800; i += 100) { epd_draw_line(0, 0, i, 599); epd_draw_line(799, 0, i, 599); } epd_udpate(); delay(3000); /* fill rect */ epd_clear(); epd_set_color(BLACK, WHITE); epd_fill_rect(10, 10, 100, 100); epd_set_color(DARK_GRAY, WHITE); epd_fill_rect(110, 10, 200, 100); epd_set_color(GRAY, WHITE); epd_fill_rect(210, 10, 300, 100); epd_udpate(); delay(3000); /* draw circle */ epd_set_color(BLACK, WHITE); epd_clear(); for (i = 0; i < 300; i += 40) { epd_draw_circle(399, 299, i); } epd_udpate(); delay(3000); /* fill circle */ epd_clear(); for (j = 0; j < 6; j++) { for (i = 0; i < 8; i++) { epd_fill_circle(50 + i * 100, 50 + j * 100, 50); } } epd_udpate(); delay(3000); /* draw triangle */ epd_clear(); for (i = 1; i < 5; i++) { epd_draw_triangle(399, 249 - i * 50, 349 - i * 50, 349 + i * 50, 449 + i * 50, 349 + i * 50); } epd_udpate(); delay(3000); } void draw_text_demo(void) { char buff[] = {'G', 'B', 'K', '3', '2', ':', ' ', 0xc4, 0xe3, 0xba, 0xc3, 0xca, 0xc0, 0xbd, 0xe7, 0}; epd_set_color(BLACK, WHITE); epd_clear(); epd_set_ch_font(GBK32); epd_set_en_font(ASCII32); epd_disp_string(buff, 0, 50); epd_disp_string("ASCII32: Hello, World!", 0, 300); epd_set_ch_font(GBK48); epd_set_en_font(ASCII48); buff[3] = '4'; buff[4] = '8'; epd_disp_string(buff, 0, 100); epd_disp_string("ASCII48: Hello, World!", 0, 350); epd_set_ch_font(GBK64); epd_set_en_font(ASCII64); buff[3] = '6'; buff[4] = '4'; epd_disp_string(buff, 0, 160); epd_disp_string("ASCII64: Hello, World!", 0, 450); epd_udpate(); delay(3000); } void draw_bitmap_demo(void) { epd_clear(); epd_disp_bitmap("PIC4.BMP", 0, 0); epd_udpate(); delay(5000); epd_clear(); epd_disp_bitmap("PIC2.BMP", 0, 100); epd_disp_bitmap("PIC3.BMP", 400, 100); epd_udpate(); delay(5000); epd_clear(); epd_disp_bitmap("PIC7.BMP", 0, 0); epd_udpate(); } void setup(void) { /* user led init */ pinMode(led, OUTPUT); digitalWrite(led, LOW); epd_init(); epd_wakeup(); epd_set_memory(MEM_NAND); } void loop(void) { char flag = 0; base_draw(); /* Draw text demo */ draw_text_demo(); /* Draw bitmap */ draw_bitmap_demo(); epd_enter_stopmode(); while (1) { if(flag) { flag = 0; digitalWrite(led, LOW); } else { flag = 1; digitalWrite(led, HIGH); } delay(500); } }
برای اتصال E-paper به آردوینو پس از اتصال تغذیه پین های RX و TX نمایشگر را به ترتیب به TX و RX آردوینو متصل کنید .