arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示

目录

前言


相关arduino 全部分类:
https://blog.csdn.net/freewebsys/category_8799254.html

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/104592387

未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,关于arduino 使用SPI 驱动墨水屏


使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示,最好的了。

在线下零售有重要的地位呢。可以获得商品的价格信息,调整商品价格。
方便盘点,货品管理。数据化之后会产生很大价值呢。但是网上的资料比较少。
自己也不是研究电子的,使用Arduino 做开发吧。这边使用ESP8266 研究。
可以直接连接 WIFI 做数据更新。价格联动,也是超级方便呢。

这个是墨水屏显示器。
http://www.e-paper-display.cn/products_detail/productId=290.html

2,使用ESP8266接线


在网络上面搜索了半天,没有人给给方案,还是参考 GITHub 上面的项目找到的。
https://github.com/ZinggJM/GxEPD

这个哥们估计是专门做的,还写了支持好多设备的:

ESP8266, ESP32 , STM32 systems, Arduino Due e.g. have enough free RAM for full graphics buffer.

我这边使用的是ESP8266 的小开发板子。和DESPI-C02 ,GDEW029T5 这两个设备。
接线图如下:标准的 SPI 接线。从源代码中看到的。

// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V

// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V

// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7

// mapping suggestion for AVR, UNO, NANO etc.
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11

给了 ESP32 和 ESP8266 的接线方法 arduino 也一样。

arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示
依赖 Adafruit-GFX 库,否则报错:

/arduino/libraries/GxEPD/src/GxEPD.h:19:26: fatal error: Adafruit_GFX.h: No such file or directory
"SPI.h" 对应多个库
 #include <Adafruit_GFX.h>

然后下载库:特别重要。两个都要下载。
arduino/libraries 下载代码:

 git clone https://github.com/ZinggJM/GxEPD.git
 git clone https://github.com/adafruit/Adafruit-GFX-Library.git

然后 ESP8266 代码:

// GxEPD_Example : test example for e-Paper displays from Waveshare and from Dalian Good Display Inc.
//
// Created by Jean-Marc Zingg based on demo code from Good Display,
// available on http://www.e-paper-display.com/download_list/downloadcategoryid=34&isMode=false.html
//
// The e-paper displays are available from:
//
// https://www.aliexpress.com/store/product/Wholesale-1-54inch-E-Ink-display-module-with-embedded-controller-200x200-Communicate-via-SPI-interface-Supports/216233_32824535312.html
//
// http://www.buy-lcd.com/index.php?route=product/product&path=2897_8363&product_id=35120
// or https://www.aliexpress.com/store/product/E001-1-54-inch-partial-refresh-Small-size-dot-matrix-e-paper-display/600281_32815089163.html
//

// Supporting Arduino Forum Topics:
// Waveshare e-paper displays with SPI: http://forum.arduino.cc/index.php?topic=487007.0
// Good Dispay ePaper for Arduino : https://forum.arduino.cc/index.php?topic=436411.0

// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V

// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V

// include library, include base class, make path known
#include <GxEPD.h>

#include <GxGDEW029T5/BitmapExamples.h>      // 2.9" b/w IL0373
#include <GxGDEW029T5/GxGDEW029T5.h>      // 2.9" b/w IL0373

// FreeFonts from Adafruit_GFX
#include <Fonts/FreeMonoBold9pt7b.h>
#include <Fonts/FreeMonoBold12pt7b.h>
#include <Fonts/FreeMonoBold18pt7b.h>
#include <Fonts/FreeMonoBold24pt7b.h>


#include <GxIO/GxIO_SPI/GxIO_SPI.h>
#include <GxIO/GxIO.h>

#if defined(ESP8266)

// for SPI pin definitions see e.g.:
// C:\Users\xxx\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\variants\generic\common.h

GxIO_Class io(SPI, /*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2); // arbitrary selection of D3(=0), D4(=2), selected for default of GxEPD_Class
GxEPD_Class display(io, /*RST=D4*/ 2, /*BUSY=D2*/ 4); // default selection of D4(=2), D2(=4)
// Heltec E-Paper 1.54" b/w without RST, BUSY
//GxEPD_Class display(io, /*RST=D4*/ -1, /*BUSY=D2*/ -1); // no RST, no BUSY
// Waveshare e-Paper ESP8266 Driver Board
//GxIO_Class io(SPI, 15, 4, 5); 
//GxEPD_Class display(io, 5, 16); 

#elif defined(ESP32)

// for SPI pin definitions see e.g.:
// C:\Users\xxx\Documents\Arduino\hardware\espressif\esp32\variants\lolin32\pins_arduino.h

GxIO_Class io(SPI, /*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16); // arbitrary selection of 17, 16
GxEPD_Class display(io, /*RST=*/ 16, /*BUSY=*/ 4); // arbitrary selection of (16), 4

#endif


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

  display.init(115200); // enable diagnostic output on Serial
  
  Serial.println("setup done");
}

void loop()
{
  showBitmapExample();
  delay(2000);
 
  display.drawCornerTest();
  delay(2000);
  display.drawPaged(showFontCallback);
  
  delay(10000);
}


#if defined(_GxGDEW029T5_H_)
void showBitmapExample()
{
  display.drawExampleBitmap(BitmapExample1, sizeof(BitmapExample1));
  delay(5000);
  display.drawExampleBitmap(BitmapExample2, sizeof(BitmapExample2));
  delay(5000);
  display.drawExampleBitmap(BitmapExample3, sizeof(BitmapExample3));
  delay(5000);
  display.fillScreen(GxEPD_WHITE);
  display.drawExampleBitmap(BitmapExample1, 0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, GxEPD_BLACK);
  display.update();
  delay(5000);
  //  showBoat();
}
#endif

void showFont(const char name[], const GFXfont* f)
{
  display.fillScreen(GxEPD_WHITE);
  display.setTextColor(GxEPD_BLACK);
  display.setFont(f);
  display.setCursor(0, 0);
  display.println();
  display.println(name);
  display.println(" !\"#$%&'()*+,-./");
  display.println("0123456789:;<=>?");
  display.println("@ABCDEFGHIJKLMNO");
  display.println("PQRSTUVWXYZ[\\]^_");
#if defined(HAS_RED_COLOR)
  display.setTextColor(GxEPD_RED);
#endif
  display.println("`abcdefghijklmno");
  display.println("pqrstuvwxyz{|}~ ");
  display.update();
  delay(5000);
}

//show font text
void showFontCallback()
{
  const char* name = "FreeMonoBold9pt7b";
  const GFXfont* f = &FreeMonoBold9pt7b;
  display.fillScreen(GxEPD_WHITE);
  display.setTextColor(GxEPD_BLACK);
  display.setFont(f);
  display.setCursor(0, 0);
  display.println();
  display.println(name);
  display.println(" !\"#$%&'()*+,-./");
  display.println("0123456789:;<=>?");
  display.println("@ABCDEFGHIJKLMNO");
  display.println("PQRSTUVWXYZ[\\]^_");
#if defined(HAS_RED_COLOR)
  display.setTextColor(GxEPD_RED);
#endif
  display.println("`abcdefghijklmno");
  display.println("pqrstuvwxyz{|}~ ");
}

void drawCornerTest()
{
  display.drawCornerTest();
  delay(5000);
  uint8_t rotation = display.getRotation();
  for (uint16_t r = 0; r < 4; r++)
  {
    display.setRotation(r);
    display.fillScreen(GxEPD_WHITE);
    display.fillRect(0, 0, 8, 8, GxEPD_BLACK);
    display.fillRect(display.width() - 18, 0, 16, 16, GxEPD_BLACK);
    display.fillRect(display.width() - 25, display.height() - 25, 24, 24, GxEPD_BLACK);
    display.fillRect(0, display.height() - 33, 32, 32, GxEPD_BLACK);
    display.update();
    delay(5000);
  }
  display.setRotation(rotation); // restore
}

需要注意 图片文件在:

#include <GxGDEW029T5/BitmapExamples.h> // 2.9" b/w IL0373
#include <GxGDEW029T5/GxGDEW029T5.h> // 2.9" b/w IL0373

这里里面都是 Bitmap 的数据格式。之支持这样的图片展示到墨水屏上面。
还支持直接展示文字。和字体。

arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示
arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示
arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示
arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示

同时是墨水屏嘛,关闭了电源也是可以使用的。

3,总结


arduino 现在已经非常的成熟了,是一个非常成熟的解决方案了。
这次终于把墨水屏展示完成了,从同事那里借来的墨水屏显示器,自己调试下。
这个还是超级贵的。一套下来快小100 了。不过自己打算买一个 LILyGO的 墨水屏。

https://item.taobao.com/item.htm?id=592727637336

快到货了下次准备研究这个,价格便宜,就是稍微小了点。2.4寸的。而且还带 ESP32 主板。
超级实惠呢。不是卖货的!不管售后服务,坏了别找我。

arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/104592387

博主地址是:https://blog.csdn.net/freewebsys
arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示

arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示arduino(2):使用ESP8266,连接 good display 2.9 寸墨水屏 GDEW029T5 上,然后使用DESPI-C02驱动,通过SPI总线通讯,显示Demo画面,作为电子价演示 freewebsys 博客专家 发布了639 篇原创文章 · 获赞 260 · 访问量 211万+ 他的留言板 关注
上一篇:day04 Django:ORM: 修改表字段 对数据(表记录)的sql语句操作:查询api,模糊查询 图书管理系统


下一篇:3. Longest Substring Without Repeating Characters