ESP32 制作儿童认表训练器
userHead Zoologist 2020-10-09 16:15:01
projectImage

为了帮助儿子认识钟表,我特地设计了这样的一个装置。上电之后会通过语音播报出一个随机时间。用户通过装置上的两个旋转编码器来分别设定时针和分针到达指定之间的位置即为通过。

硬件清单
1x
ESP32
2x
EC11 旋转编码器
1x
圆屏 LCD
1x
SYN6288 模块
1x
喇叭
projectImage

卖家没有提供 Arduino 的库,因此只能从 C51 例子中修改。最终成功将其 porting 到 < span class="colour" style="color:rgb(51, 51, 51)">Adafriut GFX 上。< /span> < span class="colour" style="color:rgb(51, 51, 51)">遇到的第二个问题是如何驱动旋转编码器,< /span>入手的是 ALPS EC11 系列的:

projectImage

为了让它工作,自己做了电路板电阻配合,单独的驱动电路图如下:

projectImage

软件方面使用了 ai-esp32-rotary-encoder 库。< span class="size">< /span> * 3、描述项目硬件、软件部分涉及到的关键点 硬件电路图下: < span class="size">

projectImage

< /span> PCB 设计如下:

projectImage

2 和 LCD 通过 SPI 接口进行通讯;我已经编写好了 GC9A01的 Adafruit_GFX 库,声明 Arduino_GC9A01 tft = Arduino_GC9A01(GC9A01_DC\, GC9A01_RST\,GC9A01_CS ) 后即可使用; ESP32 和旋转编码器通过 GPIO 通讯,但是 ESP32 上不是任何的 GPIO 都能选择成为和旋转编码器连接的引脚,某些连接之后会导致无法启动,我是通过实验来确定能否使用的。每个旋转编码器除了电源和地之外还有两根线用于处理旋转数据,一根用于按键信息;在引用对应的库之后,通过下面 2 个函数即可开始使用旋转编码器: AiEsp32RotaryEncoder rotaryEncoder1 = AiEsp32RotaryEncoder(ROTARY_ENCODER1_A_PIN\, ROTARY_ENCODER1_B_PIN\, ROTARY_ENCODER1_BUTTON_PIN\, -1);AiEsp32RotaryEncoder rotaryEncoder2 = AiEsp32RotaryEncoder(ROTARY_ENCODER2_A_PIN\, ROTARY_ENCODER2_B_PIN\, ROTARY_ENCODER2_BUTTON_PIN\, -1); ESP32 通过串口和 SYN6288 通讯。


参考文献 

1. http://www.lab-z.com/gc9a01tft/ESP32 GC9A01 测试代码 

2. https://www.lab-z.com/gc9a01gfx/ GC9A01 Porting 到 Adafriut GFX< span class="size">< /span>< br> < br>


关于作者

Zoologist 来自 Arduino 中文社区,爱好使用 Arduino 制作各种有趣的东西。

联系我们
联系邮箱:makercarnival@hotmail.com
官方微信公众号:创客嘉年华
官方微博:上海创客嘉年华
© Copyright Zhiwei Robotics Corp. All Rights Reserved
code 上海创客嘉年华