
基于电子墨水显示屏的电子桌面日历,由TM4C123 Tiva(ARM)开发板控制,在Energia IDE中编程。 ![]() 硬件组件 德州仪器EK-TM4C123GXL TM4C Tiva LaunchPad × 1 200x200,1.54英寸电子墨水显示模块 × 1 SparkFun IOIO面包板支架 × 1 AA电池 × 3 SparkFun Kaplon磁带 × 1 4xAA电池座 × 1 USB-A到Micro-USB线 × 1 USB母端口 × 1 软件应用程序和在线服务 能源公司 德州仪器Energia Arduino IDE 手动工具和制造机器 热胶枪(通用) 手钻 想法 电子墨水显示器是特殊的,因为它们可以在没有任何电源的情况下保存数年。仅需要电源来改变显示器的内容。 ![]() 有关Elink显示屏的信息,没有电源 它们在阳光下具有良好的可读性,是静态,周期长,不变信息(如标签,海报,日历,电子书,身份证等)的最佳选择。 我手边有一个很酷的显示器,所以我决定制作一个桌面电子日历展品。 ![]() 展示 需要的东西 我从waveshare 买了这个。Arduino,Raspberry Pi和STM32都有示例代码。常规Arduinos(如Uno)的问题在于它只有2 kB RAM。由于显示需要缓冲全局变量,因此Uno变得不稳定。我有一个TI的TM4C123 Tiva板,可以像Energia IDE中的Arduino一样进行编程。好消息是它有32 kB RAM。稍微修改了wavehare提供的Arduino代码,就可以运行了。 ![]() 需要的东西 & \( Q2 t! i& m7 B% t* P+ X: u![]() 最终项目的力量 构建硬件 首先,在矩形塑料盒上制作切口和孔,用于电缆运行,隐藏Tiva板,将显示器放在前面。 ![]() 将显示器与Tiva连接 接下来,使用热胶将盒子放在Sparkfun面包板支架上,使其处于倾斜位置。然后3AA电池座,电源开关和USB母端口热胶粘在便携式车载电源选项上。 成品看起来像这样: ![]() ![]() ![]() 软件 Energia只是一个Arduino克隆IDE。几乎一切都是一样的。驱动显示器的主要代码是从Arduino的wavehare示例中借用的(该项目将与ArduinoMega一起使用)。我只是对SPI总线初始化做了一些调整,并制作了自己的日历功能。其余部分令人震惊。 ![]() 未来发展 任何开发板都存在一个问题(由于调试电路),难以降低电流消耗。如果使用裸微控制器,它很容易进入睡眠模式并节省电量。这不是这里的情况,这就是为什么我只在我需要更新显示器上的信息时才使用推动电源开关来为系统供电。理想的系统应该是全自动的,MCU应该定期从睡眠中唤醒(每月一次)并自动更新显示。 也许更多的选择,如: 用于时间的RTC时钟 室内天气信息(温度/湿度) 特别提醒信息 这些会让它变得更酷!无论如何,总有改进的余地。 其他应用理念 动态海报 哈利波特的世界就像报纸一样 智能名片 餐厅的信息表 换色车 外部资源 http://energia.nu/reference/spi/ http://energia.nu/pin-maps/guide_tm4c123launchpad/ http://www.waveshare.com/wiki/1.54inch_e-Paper_Module http://en.wikipedia.org/wiki/Electronic_paper#Electrophoretic Pin地图 ![]() 电子墨水显示屏和Tiva的连接 注意 显示驱动器需要在操作之间延迟,这是一个慢速的东西,因为显示器内部有物理墨水颗粒需要时间来安定下来。 该项目与Arduino兼容(芯片具有2+ kB RAM)。 原理图 ![]() 代码 #include <SPI.h>#include "EPD_drive.h" #include "EPD_drive_gpio.h" #include "Display_Lib.h" int SW1= 17; int SW2= 31; int month = 8; int year = 2017; WaveShare_EPD EPD = WaveShare_EPD(); void setup() { pinMode(CS,OUTPUT); // pin 12 pinMode(DC,OUTPUT); // pin 10 pinMode(RST,OUTPUT); // pin 09 pinMode(BUSY,INPUT); // pin 19 pinMode(SW1, INPUT_PULLUP); pinMode(SW2, INPUT_PULLUP); // MOSI/DIN is pin 8 // SCK/CLK is pin 11 // mySPI.beginTransaction(mySPISettings(2000000,MSBFIRST, mySPI_MODE0)); // Use this line if you are using arduino Mega SPI.begin(); SPI.setModule(0); // following 3 lines of code is required inTiva TM4C123, in Arduino Mega remove these SPI.setClockDivider(SPI_CLOCK_DIV4); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); EPD.Dis_Clear_full(); } void loop() { if (digitalRead(SW1)==0|digitalRead(SW2)==0) month=month+1; if (month>12) {month =1; year =year+1;} print_calendar(month,year); delay(2000); } |
这个屏多少钱?