
专业版
基于ESP32 蓝牙/wifi的天气和时间小键盘
1.3k
0
0
2
简介
wifi连接阿里云服务器更新时间;连接心知天气获取天气和生活指数。 蓝牙可连接PC、手机。 外壳采用亚克力层叠。 偶尔当小键盘方便输入数字;大部分时间作为一个时钟摆件。
简介:wifi连接阿里云服务器更新时间;连接心知天气获取天气和生活指数。 蓝牙可连接PC、手机。 外壳采用亚克力层叠。 偶尔当小键盘方便输入数字;大部分时间作为一个时钟摆件。开源协议
:GPL 3.0
创建时间:2024-01-11 16:11:24更新时间:2024-03-29 09:31:51
描述
利用之前项目剩下的ESP32-WROOM-32D做一个简单的蓝牙小键盘。
只需要一点点动手能力:)
[过程]
-
- 键盘配列:在www.keyboard-layout-editor.com制作keyboard layout。
- 定位板:然后将keyboard layout拷入builder.swillkb.com进行定位板制作,这里可以直接出整个键盘的叠层文件。因为是DIY要加屏幕之类,所以只利用它出一个定位板的DXF。
- 原理图:懒,按键没用阵列,正好IO口数量也够直连(旋钮的按下忽略,因为没打算做菜单)。
- PCBA布局:将定位板的DXF导入layout进行布局。
- 亚克力层叠:将PCBA转为STEP文件后导入Solidworks, 键盘为三明治结构,需要画5个层叠:顶层,顶层下,框架,定位板,底板,挡板。打样的时候<框架>可以多打一些,整体做厚点,这样放在桌面当时钟/天气看比较稳(小键盘利用率实在不高)。通过4个2mm内六角螺丝固定。实际DIY用的黑色28mm长的。
- 代码: Arduino框架。没用RTOS,直接轮询。编译&烧录环境:VSCODE Platformio。主要用了以下库:
- 用于控制背光灯
- Wifi库
- 屏幕显示
- 解析天气Json文本
- 蓝牙库
- 轻量化蓝牙库。重要!否则留给HTTP的heap不够,无法正常使用HTTP。注意要在蓝牙库头文件
BleKeyboard.h中定义USE_NIMBLE。已在代码中注释如下:屏幕左边为年月日时间。右上角为Wifi、蓝牙、电量/充电指示、下面为天气、天气符号和温度。生活提示为滚动状态,可以和下面的符号温度交换下。代码比较粗糙,使劲喷;-)
- 等打板时准备其他物料:
轴座:凯华热插拔轴座
轴体:凯华知夏轴 (比较喜欢这个声音和颜色)+ 厂润卫星轴
电池:中顺芯402764便携仪器仪表聚合物锂电池3.7V 1000mAh + DF57插头线
键帽:五星电竞的PBT磨砂透光 灰黑21键numpad键帽
旋帽:韩度铝合金机械键盘旋钮帽球
显示屏:中景园2.08寸OLED显示屏25664 sh1122 白色SPI接口模块[排针默认不焊接] 需要自己调整下2.54排针长度
RGB灯:WS2812B灯珠贴片(随便找个)
[组装和配网]
-
-
- 先焊接好PCBA(RGB贴片、轴座)
- 将轴体和定位板和PCBA组装起来,特别小心卫星轴的部分不要断裂,因为亚克力比较脆,局部小的断裂没关系。
- 大概摆放各个亚克力叠层,顺序依次为顶层、顶层下、框架*n、定位板、框架*n、底板;挡板插在底板和顶层下之间。修剪屏幕的引脚长度和调整使用的<框架>叠层数量。插上屏幕,屏幕尽量贴近顶层&顶层下。离屏幕插座远的一端可以用泡绵固定住屏幕。
- 锁上4个2mm内六角螺丝。
- 上电,第一次联网需要手机下载Esptouch连入同一个wifi进行配网。之后上电可以自动连。
-
[待优化]
-
-
- 没做低功耗。1000mAh的电池WIFI+蓝牙全开差不多只能撑五六个小时。主要还是插着USB当时钟。
- 连天气API处的城市string改为“ip"可自动连当前所在城市。
-
String url_weather = "https://api.seniverse.com/v3/weather/now.json";
String url_life = "https://api.seniverse.com/v3/life/suggestion.json";
String city = "Jiangsu Suzhou"; //可以改为"ip"以自动获取当前城市
-
-
- 旋钮上下转得快会有错误响应,可以优化下。
- 修改按键为阵列,可以组合然后代码中增加菜单,可以调RGB颜色,显示内容等。
- USB开口在上方会有光漏到屏幕,可以修改PCBA和框架从侧边出USB和开关。
-
设计图

BOM


添加到专辑
0
0
分享
侵权投诉
评论