使用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记录在了ESP8266
的EEPROM
中,真正做到了断电后仍可重连。
保存当前网络配置
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);
}
如今屏幕不在的日子,捣鼓出来这样的运行顺序
- 判断是否可连接已存在网络配置
- 不存在则进行SmartConfig
- 连接上网络后保存配置
Day 6
黑白的墨水屏还没到,不能进行测试。
功能上增加EEPROM记录启动的次数和推送
Day 8 - 12
微雪更新了V2版本的屏幕,但是只适用于加载一个静态图像。
不断的尝试和找库文件,发现GxEPD2可以驱动,但是问题一堆,页面刷新后都说雪花。
更新中,未完待续……