使用ESP8266做一个小心意儿

Day 1

醒的好早,突然想到了做Arduino的点子,上班前就下单了两套微雪电子的e-Paper ESP8266 Driver Board


一套搭配2.13英寸的红黑白电子墨水屏,另一套为1.54英寸的黄黑白电子墨水屏。

为什么选微雪的呢,主要是在网上搜电子墨水屏似乎都是他们家的产品,在酷安网也看到有人分享用树莓派做这个的教程了,也想尝试下Arduino这个新平台,更想给小同学做我自己动手做的新的小玩意儿。

Day 2

也就是周二的下午,下班时分收到货了。
第一时间上了官方的demo,写入了一张图片,那刷新速度,慢到像是在看电影一样,接近半分钟,先看下1.54inch的152x152分辨率的表现

其实在电子墨水屏上,这分辨率还是不错的,比LCD点阵的要舒服很多。
放大看下每个像素点,有点像蜂巢

只是刷新时间太长,去翻资料发现竟然要27秒,且不支持全局刷新

型号 颜色 分辨率 刷新(s) 局部
1.54inch e-Paper 黑、白 200×200 2
1.54inch e-Paper (B) 红、黑、白 200×200 8 ×
1.54inch e-Paper (C) 黄、黑、白 152×152 27 ×
2.13inch e-Paper 黑、白 250×122 2
2.13inch e-Paper (B) 红、黑、白 212×104 15 ×
2.13inch e-Paper (C) 黄、黑、白 212×104 15 ×
2.13inch e-Paper (D) 黑、白 212×104 2
并且这个demo真的只是上传图片,由于ESP8266内存太小,根本带不动彩色墨水屏,因此图片是存储在芯片里,然后再加载,并不是动态添加刷新动,有些小失望。

Day 3

与客服斗智斗勇,终于同意为我更换成对应尺寸动黑白点子屏了,就是冲着2秒动刷新率,这才符合用来刷新显示的要求。
在没有屏幕时候,只能进行一些代码的测试和学习了,比如利用自己的消息接口,实现了当设备连接上Wi-Fi后,自动推送当前IP地址到手机上,

void sendMsg(String s) {
  WiFiClient client;
  blinkled();
  delay(1000);
  if (client.connect(host, 80)) {
    Serial.println("Connected and Sending request");
    String postRequest = (String)("GET ") + url + s + " HTTP/1.1\r\n" +
                         "Content-Type: text/html;charset=utf-8\r\n" +
                         "Host: " + host + "\r\n" +
                         "Connection: close\r\n\r\n";
    Serial.println(postRequest);
    client.print(postRequest);
  } else {
    sendMsg(s);
  }
}

需要注意的是,同样由于RAM小的原因,ESP8266带不动https的通信,因此只用走80端口。
另外,还测试了 deepSleep深度睡眠,20A的电流,新到的2000mAh的电池使用几个月没问题的 LOL

今天还在我们的W.K.软件上加入了SmartConfig的代码,实现了手机为ESP8266配置连接上Wi-Fi网络,不得不感叹这个聪明的设计。

Day 4

卖家收到了寄去的屏幕,预计后天下班时分才能收到将要寄来黑白屏幕。
今天需要记录的是,成功的将Wi-Fi的ssid与pwd记录在了ESP8266EEPROM中,真正做到了断电后仍可重连。
保存当前网络配置

void saveConfig()
{
  EEPROM.begin(512);
  strcpy(conf.ssid, WiFi.SSID().c_str());
  strcpy(conf.pass, WiFi.psk().c_str());
  EEPROM.put(1, conf);
  EEPROM.commit();
}

载入已保存的网络配置

void loadConfig()
{
  EEPROM.begin(512);
  EEPROM.get(1, conf);
}

如今屏幕不在的日子,捣鼓出来这样的运行顺序

  1. 判断是否可连接已存在网络配置
  2. 不存在则进行SmartConfig
  3. 连接上网络后保存配置

Day 6

黑白的墨水屏还没到,不能进行测试。
功能上增加EEPROM记录启动的次数和推送

Day 8 - 12

微雪更新了V2版本的屏幕,但是只适用于加载一个静态图像。
不断的尝试和找库文件,发现GxEPD2可以驱动,但是问题一堆,页面刷新后都说雪花。

更新中,未完待续……