【请在报名阶段填写 ↓】 1、自我/团队介绍 我是来自 Arduino 中文社区的 Arduino 爱好者,经常使用 Arduino 制作各种好玩的东西。 2、简要介绍项目 为了帮助儿子认识钟表,我特地设计了这样的一个装置。 【请在竞赛阶段填写 ↓】 1、描述项目详情 上电之后会通过语音播报出一个随机时间。用户通过装置上的两个旋转编码器来分别设定时针和分针到达指定之间的位置即为通过。 2、描述项目所面临的挑战及所解决的问题 遇到的第一个问题是:如何驱动选中的表型的液晶屏,它使用 GC9A01芯片驱动,SPI 接口。 卖家没有提供 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系列的: 为了让它工作,自己做了电路板电阻配合,单独的驱动电路图如下: 软件方面使用了ai-esp32-rotary-encoder 库。< span class="size">< /span> * 3、描述项目硬件、软件部分涉及到的关键点 硬件电路图下: < span class="size">< /span> PCB 设计如下: ESP32 和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 通讯,这个语音模块我在之前的 USB 键盘计算器项目中有介绍,有兴趣的可以直接查看 * 4、项目材料清单展示
元件 数量介绍
ESP321主控制板
EC11旋转编码器2用于输入。除了旋转,还有按键功能
圆屏LCD1用于显示表面
SYN6288 模块1输出语音信息
喇叭1发声 5、项目图片上传 5.1、PCB上印制大赛logo图片,若无视为放弃参赛 5.2、项目其它图片 6、演示您的项目并录制成视频上传 6.1、视频上传大赛官网 * 9、参考文献
|