電子ペーパーと Blynk でリモートメモ帳
先日DFRobot様より提供いただいた電子ペーパーモジュールで Blynkでユビキタス(いまでも使われているのこの言葉?)に書き込めるメモ帳をこしらえてみました。動作は一番下に動画リンクしていますー
目次
構成
電子ペーパーモジュールをFirebeetle ESP32に載せてスマホアプリBlynkでテキストを書き込んで電子ペーパーに表示させます。
部品
- 電子ペーパーモジュール FireBeetle Covers-ePaper Black&White Display Module
オフィシャルショップは以下
スイッチサイエンスでもお取り寄せ購入できるようです。3,589円。
- FireBeetle ESP32 IoTマイコン
WiFi & BLE搭載マイコン。オフィシャルショップは以下。
国内ですと以下で手に入ります。
Blynk設定
スマホとFireBeetle ESP32 IoTマイコンボードはスマホアプリのBlynkを用いてWiFi通信させます。Blynkアプリのバージョンは2.27.1。
新規プロジェクトを作成します。HARDWRE MODELはESP32 Dev Boardを選択。CONNECTION TYPEはWiFiを選択。AUTH TOKENはArduinoコード生成時に使用します(メールで送信されます)。
Text Inputウィジェットを4つ配置します。それぞれ出力をヴァーチャルピンV1〜V4にしました。
電子ペーパーモジュール書き込み内容をBlynkアプリのText Inputウィジェットへ読み込む際のReadボタンも配置します(ヴァーチャルピンV0)。
上図のようにText Inputウィジェットを4つ、Read用ボタンを1つ配置しています。
Arduino IDEコード
FireBeetle ESP32 IoTマイコンのArduino用ファームウェアはFireBeetle-ESP32 Mainboardのバージョン0.0.7を使用します。
電子モジュール用ライブラリとして以下を使用します。字表示は中国語と英語のみサポート(2018年12月)。
-
DFRobot_ePaper Library
https://github.com/DFRobot/DFRobot_ePaper
- DFRobot_Display Library
https://github.com/DFRobot/DFRobot_Display
詳細は以下のブログも参照ください。
更にBlynk用ライブラリも使用します。バージョンは0.5.4。
https://github.com/blynkkk/blynk-library
[スケッチの例] -> [Blynk] -> [Boards_WiFi]-> [ESP32_WiFi]を参考にコード生成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
#define BLYNK_PRINT Serial #include <WiFi.h> #include <WiFiClient.h> #include <BlynkSimpleEsp32.h> #include<string.h> #include<cstring> #include "Arduino.h" #include "DFRobot_IL3895_SPI.h" DFRobot_IL3895_SPI epaper; #define EPAPER_CS D3 #define Font_CS D6 #define EPAPER_DC D8 #define EPAPER_BUSY D7 // You should get Auth Token in the Blynk App. char auth[] = "BlynkアプリのYourAuthTokenを入力"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "WiFiのSSID"; char pass[] = "パスワード"; String textIn1 = "none"; String textIn2 = "none"; String textIn3 = "none"; String textIn4 = "none"; int state = 0; //Text Inputデータ受信 BLYNK_WRITE(V1) { textIn1 = param.asStr(); Serial.println(textIn1); state = 1; } BLYNK_WRITE(V2) { textIn2 = param.asStr(); Serial.println(textIn2); state = 1; } BLYNK_WRITE(V3) { textIn3 = param.asStr(); Serial.println(textIn3); state = 1; } BLYNK_WRITE(V4) { textIn4 = param.asStr(); Serial.println(textIn4); state = 1; } //ReadボタンOnで記憶されたテキスト内容をBlynkアプリ側に表示 BLYNK_WRITE(V0) { Serial.println("Read Push!"); Blynk.virtualWrite(V1, textIn1); Blynk.virtualWrite(V2, textIn2); Blynk.virtualWrite(V3, textIn3); Blynk.virtualWrite(V4, textIn4); } void setup() { Serial.begin(115200); //Select the corresponding pins epaper.begin(EPAPER_CS, Font_CS, EPAPER_DC, EPAPER_BUSY); //Clear the screen and display white epaper.fillScreen(WHITE); epaper.flush(FULL); Blynk.begin(auth, ssid, pass); } void loop() { Blynk.run(); //Text Inputウィジェット書き込み時に電子ペーパモジュールに内容表示 if(state == 1){ epaper.fillScreen(WHITE); char* c1 = new char [textIn1.length()+1]; strcpy (c1, textIn1.c_str()); char* c2 = new char [textIn2.length()+1]; strcpy (c2, textIn2.c_str()); char* c3 = new char [textIn3.length()+1]; strcpy (c3, textIn3.c_str()); char* c4 = new char [textIn4.length()+1]; strcpy (c4, textIn4.c_str()); epaper.disString(0, 0,2, c1, BLACK); epaper.disString(0,33,1, c2,BLACK); epaper.disString(0,61,2, c3,BLACK); epaper.disString(0,94,1, c4,BLACK); epaper.flush(FULL); state = 0; } } |
動作
eペーパーとBlynkでリモートメモ帳#Blynk #DFRobot pic.twitter.com/TiDYe9TRnz
— HomeMadeGarbage (@H0meMadeGarbage) 2018年12月26日
Text Inputウィジェットに文字入力するたびに電子ペーパーモジュールに内容が表示されています。またReadボタンタップで書き込んだ内容がText Inputウィジェットに読み込まれます。
買い物リストとか付箋に書いといたりするんだけど、いざ買い物のときに付箋家に忘れたりスマホのメモだと家族と共有しにくいので、こんな感じでリモートで読み書きできるメモディスプレイは便利ですね。電子ペーパだと低消費電力ですし。