Skip to content

一个基于ESP32(IDF)和LVGL实现的多功能单词机

License

Notifications You must be signed in to change notification settings

SendToSouthEast/SIPI2

Repository files navigation

SIPI2

一个基于ESP32(IDF)和LVGL实现的多功能单词机

图片

注:以上图片为旧版硬件SIPI2.0

160x128 LCD SPI屏幕,SPI/SDMMC内存卡存储单词内容,30余个按键全键输入,9x9.5迷你大小,硬件软件全部开源。

作者比较忙,欢迎各位提交PR,有问题提issue。git上的issue硬件软件问题都能问,硬件在这里提供json(JLCEDA PCB文件)和gerber。另在立创广场开源硬件项目。

若你只是想复刻这个项目,你可以到release获取所有gerber和二进制文件。

2.1.3版本硬件已验证:

image-20230415004435432

项目核心

本项目采用MIT开源,欢迎各位积极贡献代码!!!!

欢迎各位积极贡献代码!!!!

欢迎各位积极贡献代码!!!!

欢迎各位积极贡献代码!!!!

欢迎各位积极贡献代码!!!!

功能说明

1.查询单词

2.蓝牙键盘,可以连接手机电脑(进行中)

可开发功能

1.基于LVGL的俄罗斯方块等游戏

2.基于ESP ADF pwm或ADC的音乐播放器

3.基于LVGL的文件浏览器,电子相册

……

mind

使用教程

image-20230304170025745

以2.1硬件为例。

一.烧录

板子上有ESP32的复位按键,BOOT按键和STC8的复位按键。

需要分别给ESP32和STC单片机烧录程序。

若你只是想复刻这个项目,你可以到release获取所有gerber和二进制文件。

Releases · SendToSouthEast/SIPI2 (github.com)

1.特制烧录器

本板子不集成串口转换芯片,但是你可以使用某些(自制)非规范的USB线,即DP DM分别是电脑TXD RXD的非规范的USB烧录器连接充电口进行烧录。只需将烧录插座的2.3行(ESP,USB)竖直连起来,就像这样 (A和B代表不同的短接帽)就可以对ESP32进行烧录。

OO
AB
AB
OO

同理,短接三四行就能对STC烧录。

OO
OO
AB
AB

2.普通烧录器

这四个位置的定义如下

GND GND
ESP_TXD ESP_RXD
USBDM USBDP
STC_TXD STC_RXD

3.注意事项

烧录教程不再写了,网上一查便是,说下注意事项

image-20230304172628911

图为你烧录STC单片机的注意事项。

当你第一次烧录STC单片机时,复位脚是IO状态,你需要先点击烧录然后再给单片机供电。(具体请查)

当你关闭了复位脚用做IO口,在你下一次烧录时,不需要断电,先点击烧录再按下复位即可。

建议每次烧录都关闭复位脚用做IO口。注意,它默认是打开的,而且不会保存状态。

二.使用

打开电源后点击充电芯片的按键,开始供电。

键盘上面的左边的两个按键 是确定键,右边是返回键。

在Dict界面点击确定查词,点击返回进入蓝牙键盘模式。

在Word界面都会返回Dict界面。

目前五向按键尚未投入使用。

按下ALT后进入数字、符号输入模式

按下UPPER进入大写输入模式,再次按下即可取消。

目前因为对HID协议的通信不熟悉,导致符号输入有点问题,(HID有很多两个按键共用一个HID码)望大佬赐教。(如何同时按下shift和按键?)

蓝牙模式下可用手机连接,按照提示配置输入后就可以使用了。

讯飞输入法效果如图

图片

硬件说明

2.1.3版本已验证

充电部分电路参考IP5306CK单片机电源板 - 嘉立创EDA开源硬件平台 (oshwhub.com)

充电模块提供3.3V电源。

STC8单片机扫描键盘并通过串口2发送给ESP32。

重要物料BOM

并未有任何推广,你如果能在淘宝或者哪里买到更便宜的当然更好

元件 说明 示例链接
XB7608AJ 锂电池保护芯片 https://item.szlcsc.com/2775921.html
IP5306CK 充电芯片(持续升压) 原装正品 IP5306_CK ESOP-8 2.1A充电2.4A放电 移动电源SOC芯片-淘宝网 (taobao.com)
STC8H1K28-LQFP32 键盘扫描芯片 STC8H1K28-36I-LQFP32 全新原装 STC8H1K28-淘宝网 (taobao.com)
ESP32-WROOM32 主控 用兼容新产品也可
1.77寸TFT液晶显示屏14PIN焊接式ST7735S 屏幕 1.77寸TFT液晶显示屏14PIN焊接SPI接口1.8寸显示屏14PIN串口SPI-淘宝网 (taobao.com)
160G轻力度无声硅胶开关 建议买40个 TS-E013 硅胶按钮665/4.3贴片无声A6按键硅胶车载汽车SW-PB轻触-淘宝网 (taobao.com)
五向开关 目前没有用可以不装,买之前对照一下原理图 FT-007贴片10105/7/9多功能多方向连接器五向开关 轻触复位按键-淘宝网 (taobao.com)

外观尺寸

外观尺寸为90(w)x95(h),以左下角为坐标原点,五个螺丝孔的坐标分别为(单位mm)

5,5 5,90
85,5 15,90
22,49 30,49

项目结构

仓库共有四个主文件夹(项目)

文件夹 说明 语言/IDE/平台
DICTprocess_py 将字典数据库处理为一个索引文件和一个数据文件的脚本 python
hardware_JLCEDA 硬件文件 嘉立创EDA
keyboard_STC8 键盘扫描程序,向主控串口发送数据 Keil STC8H1K
SIPI2_ESP32 主控(ESP32)程序 Vscode ESPIDF v4.4.2

其中字典处理的数据库来自skywind3000/ECDICT

keyboard_STC8的库文件为STC官方STC8库文件

│  .gitignore    // Git 版本控制忽略文件配置
│  LICENSE       // 代码许可证
│  README.md     // 项目说明文档
│
├─DICTprocess_py 	// Python 字典处理程序
│      ecdict.csv   // 英汉词典数据文件(来源见下)
│      main.py      // 主程序文件
│
├─hardware_JLCEDA 	// JLCEDA 硬件设计文件
│      PCB.json     // PCB 文件
│      sheet.json   // 原理图文件
│
├─keyboard_STC8    // STC8 键盘控制器程序
│  │  1.uvproj     // Keil uVision 项目文件
│  │  config.h     // 配置文件
│  │  delay.c      // 延时库稳健
│  │  delay.h      // 延时库头文件
│  │  GPIO.c       // GPIO 库文件
│  │  GPIO.h       // GPIO 库头文件
│  │  mian.c       // 主程序文件
│  │  STARTUP.A51  // Keil ASM 文件
│  │  STC8xxxx.H   // STC8 头文件
│  │  UART.C       // 串口库文件
│  │  UART.h       // 串口库头文件
│
├─README          // 项目说明文档
│      1.jpg      // 图片文件
│
└─SIPI2_ESP32     // ESP32 控制程序
				  //见下
				  
SIPI2_ESP32目录结构如下

│  .cproject
│  .project
│  CMakeLists.txt
│  dependencies.lock
│  partitions.csv			// 分区表文件
│  sdkconfig				// 记录ESP-IDF SDK配置选项的文件
│  sdkconfig.old
│
├─.vscode
│      c_cpp_properties.json
│      settings.json
│
├─components
│  ├─lvgl					// LittlevGL图形库组件
│  │
│  ├─lvgl_esp32_drivers     // LittlevGL在ESP32上的驱动组件
│  │
│  ├─lv_fs_if				// ESP和LVGL文件系统接口组件
│  │
│  └─sdcard_init			// SD卡初始化驱动程序组件(自编)
│          CMakeLists.txt
│          Kconfig			// 配置选项文件
│          sdcard_init.c	// SD卡初始化驱动程序的源代码文件
│          sdcard_init.h
│
└─main
	│  character.txt				// 存储字库字符的文本文件
	│  CMakeLists.txt
	│  config.h						// 配置选项头文件
	│  donotuse.txt
	│  init.c						// 初始化
	│  init.h
	│  Kconfig.projbuild
	│  main.c						// 主程序
	│  main.h
	│  simhei.c						// 简体中文黑体字体
	│
	├─scenes                        // 场景代码
	│  dictScene.c                  // 字典场景的源文件
	│  HIDScene.c                   // HID场景的源文件
	│  scenes.h                     // 场景代码的头文件
	│  wordScene.c                  // 单词场景的源文件
	│
	└─srcs							// 功能代码
    	├─blueHID					// 蓝牙HID功能代码
    	│      ble_hidd.c
 	   	│      ble_hidd.h
 	   	│      esp_hidd_prf_api.c
 	   	│      esp_hidd_prf_api.h
 	   	│      hidd_le_prf_int.h
  	  	│      hid_dev.c
  	  	│      hid_dev.h
	  	│      hid_device_le_prf.c
	    │
    	└─englishDict              // 英语词典代码
        englishDict.c              // 英语词典查词算法
        englishDict.h

其中,lvgl_esp32_drivers的st7735的屏幕驱动程序有修改,为兼容此屏幕。

sdcard_init是我写的component,引脚配置和模式选择在menuconfig中。之所以做成组件是因为lv_fs_if需要调用它来初始化文件系统。

本项目由去年写的代码第二次重构(第一次重构由arduino转到IDF,第二次模块化去耦),一些函数的实现没有动,若不规范欢迎大家指出改正!

TODO

1.蓝牙键盘有点问题,目前因为对HID协议的通信不熟悉,导致符号输入有点问题,(HID有很多两个按键共用一个HID码)望大佬赐教。(如何同时按下shift和按键?

(SIPI2_ESP32\main\srcs\blueHID\ble_hidd.c)不能正确运行。

image-20230305000332729

2.将五向开关利用起来

3.可能会做单词语音播放(还未开工)

4.你想做什么功能欢迎提交称为贡献者

开源许可

本项目采用MIT开源协议。同时也希望其它esp32项目多开源。

但是,请勿将我的项目搬运上传码云等平台。

鸣谢

skywind3000/ECDICT: Free English to Chinese Dictionary Database (github.com)

lvgl/lvgl: Embedded graphics library to create beautiful UIs for any MCU, MPU and display type. It's boosted by a professional yet affordable drag and drop UI editor, called SquareLine Studio. (github.com)

lvgl/lvgl_esp32_drivers: Drivers for ESP32 to be used with LVGL (github.com)

lvgl/lv_fs_if: LVGL interfaces to various file systems (PC, FatFS) (github.com)

espressif/esp-idf: Espressif IoT Development Framework. Official development framework for Espressif SoCs. (github.com)

FreeRTOS/FreeRTOS: 'Classic' FreeRTOS distribution. Started as Git clone of FreeRTOS SourceForge SVN repo. Submodules the kernel. (github.com)

fatfs

感谢ahzvenol (灵弦) (github.com) 的帮助

感谢同学lsy帮我在notfound界面画的loli和给我起的外号(,)

能不能不要再叫我「但是loli」了喂!!

赞助作者

想喝一杯奶茶……可以吗

……家境贫寒……无电子词典可买……徒手搓之……

image-20230304180453814

image-20230304180616397

About

一个基于ESP32(IDF)和LVGL实现的多功能单词机

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages