使用 C 语言位运算操作,编写一个简单高效的单片机 OLED framebuffer 驱动

在之前做 CH32V003 系列项目时,总是会用到 0.96 寸 12864 OLED 屏幕,用来显示数据和进行用户交互操作。一开始是直接用了 CH32V003-GameConsole 项目中的 oled_min.c,不过那个是只用来显示一个位图,并且还不太能支持任意位置显示,因此就需要改造一番。

另外之前在做电流表项目时,也找了好多点阵字体,发现都是用了一个 DCfont 的结构体,如果能兼容这个格式,后续项目中使用不同字体时就可以很方便的替换了。

至于为什么要自己写这个库,是因为这个是在 CH32V003 上用的,16KB Flash + 2KB SRAM 的资源相当紧张,没办法使用 Arduino 中成熟的库,只好自己写一个,顺便学习一下。

字体及位图数据结构

DCfont 这个数据结构如下所示。

struct DCfont {
    uint8_t *data;
    uint8_t width;
    uint8_t height;
    uint8_t min, max;
};

刚好对于单色 XBMP 图像来说,在渲染时也差不多是需要相同的参数,刚好用同一个函数来同时兼容绘制 DCfont 和 XBMP 了。…

阅读全文 »

摸鱼小电脑能跑 MacOS 了,就是慢到怀疑人生

最近看到了 pico-mac-nano 项目,知道了 umac 这个模拟器,想着我的摸鱼小电脑终于可以跑 Mac OS 啦~

关于摸鱼小电脑可以看之前的分享《摸鱼小副屏,把它变成摸鱼小电脑~》。

之前已经尝试过用 qemu 运行 Mac OS 9,但是失败了,一直启动不起来,可能是系统资源不够,这次用 umac 模拟器来跑 System 7.0 总归应该没啥问题吧 🙈。

然后尝试了一下,果然还是可以的,能在香橙派 H616 上通过 umac 把 System 7.0 跑起来,但是速度相当相当慢,慢到怀疑人生。

有多慢,可以看看视频……

不过也算是完成一个小小目标了,记录分享一下过程,有想玩的朋友可以参考一下。

编译 umac 模拟器

umac 项目介绍

项目地址:https://github.com/evansm7/umac

项目介绍:

This is a minimalist Apple Macintosh 128K/512K emulator. It



阅读全文 »

更现代的嵌入式开发工具?面向多平台的全集成 RISC-V IDE – MounRiver Studio II 上手体验

最近一段时间都在用沁恒家的 MCU 开发一些小玩具,例如 CH32V003、CH585 等。之前开发的项目,工程和工具链都是使用的 Visual Studio Code + PlatformIO 插件来管理的,整体用起来也还算方便。

前段时间发现沁恒发布新版本的 MounrRiver Studio II框架换为了 Visual Studio Code,另外更重要的是,除了 Windows/Linux 系统外,还支持 macOS 操作系统 啦~这不得赶紧下载体验一番。我也在网上搜索了一下,本身 MCU 厂商提供 IDE 的就不多,基于 Visual Studio Code 开发并且集成全套 RISC-V 工具链就更少了,不得不说沁恒在开发者生态的建设上还是花了功夫的。

这次就拿之前开发过的基于 CH32V003 的 UVLED 紫外固化灯固件项目,来试试新 MounrRiver Studio II 好不好用~

PS. 为了打字方便 MounrRiver Studio …

阅读全文 »

玩 ESP32 和 Arduino 的同学一定不能错过这个在线仿真网站

玩 ESP32 和 Arduino 的时候,经常会碰到手边没有对应的板子或者元器件的情况,这个时候又想测试固件的话,就非常麻烦了。

这个时候在线仿真服务 Wokwi 就可以派上用场了。

我还是在之前找一些开源项目的时候接触到了 Wokwi 这个仿真服务,用了一下感觉还挺方便,特别是在想快速验证一个代码是否有效的时候。

Wokwi 相比我刚开始用的时候,支持了更多的平台,已经不再是只有 ESP32 相关的开发板了,还有 STM32、树莓派 Pico 之类的。现在似乎发展还挺好,搞了不少服务出来,支持 VS Code 和 CI 什么的。

另外如果不喜欢在线工具,也可以看看之前分享的电脑上模拟器《Arduino玩家必备,SimulIDE电路模拟器》,外设可能不如 Wokwi 丰富,但是也基本够用。

Wokwi 优势

相比于自己购买硬件、使用面包板搭建测试电路,Wokwi 还是有一定优势的,在原型验证阶段,可以省掉不少事情。

  • 成本门槛: 开发板、元器件、传感器、工具(万用表、示波器)的购买成本。
  • 时间等待: 采购、物流、焊接、组装耗费大量时间。
  • 物理限制: 场地、电源、设备携带不便;易损坏(短路、烧芯片)。
  • 试错成本高: 代码错误可能导致硬件损坏。
  • 协作困难: 团队成员/师生间共享和复现硬件环境复杂。
  • 快速迭代难: 想法验证需要反复搭建电路,效率低。

当然,作为一个服务网站,也要生存,在使用过程中,可能还是会时不时碰到需要付费才能获得更好体验的情况 🙈,例如创建私有工程、编译时间长等问题,都需要付费。

整体界面

Woki …

阅读全文 »

AI 干了一半活,做个 LCD 模拟辉光管时钟

这是一个为了一碗醋包了一盆饺子的故事。

之前为了测试 AI 写单片机代码能不能行,用 Manus 测试了一下,过程可以看这篇 《AI 编程在嵌入式开发中能用吗?体验 Manus 编写 ESP32 固件》,简单来说:能用。

这不为了让 AI 写出来的固件有用武之地,得把整个硬件开发完~

不过好在整个项目比较简单,而且单片机 ESP32-S3 直接用了现成的模块,PCB 几乎没有什么复杂的线路,就 LCD 的 PCB 有几个小一点的元件,主板 PCB 全都用了 2.54mm 的插件。

AI 生成数字图片

之前只介绍了固件是用 Manus 生成了,但是实际上,每个屏幕展示的模拟辉光管效果的数字图片,也是让 AI 生成的。

不过这次是让 ChatGPT 生成的,现在这些 AI 工具,简单是没有设计能力的工程师的福音,想要啥效果,吩咐 AI 就行了 😃。

提示词:

请生成辉光管效果的10个数字,包含数字 0 1 2 3



阅读全文 »

AI 编程在嵌入式开发中能用吗?体验 Manus 编写 ESP32 固件

前段时间买了个 0.96 寸 80x160 的 LCD 屏幕,想要做一个模拟辉光管的时钟。

这第一步就用上了 AI,用 ChatGPT 生成了辉光管效果数字的图片,然后按数字裁切成 0-9 十张图,生成对应的图片 RGB565 格式数据,测试了一下,效果还不错。

然后我就在想,那这个时钟的固件,是不是也可以用 AI 来生成呢?AI 现在已经验证了写一些前端项目相当高效,在嵌入式开发领域,是不是也可以有同样的能力,至少可以完成一个简单的项目?

刚好 Manus 开放注册了,我就拿它来尝试一下看看效果怎么样。

功能需求

为了防止项目失败,先把功能定义得简单一点,就是通过 ESP32 控制 6 个 LCD 来显示上面裁切生成的数字图片,并且需要提供 API 更新图片、AP 配置能力。

提示词

这里为了让生成的项目更可控,提示词中明确了工程框架为 PlatformIO,引脚使用宏定义等能力,

请使用 platformio + arduino 框架帮我写一个 esp32-s3 固件,实现以下功能:

  • 控制 6 个 st7735 驱动的 lcd 屏幕,分辨率为


阅读全文 »

拆了!那个众筹 500 万美元的 JetKVM,看看内部长什么样

之前已经开箱试用了 JetKVM,这次再给它拆解一下看看结构设计和 PCB 设计,以及用的芯片方案等。

外壳

JetKVM 小小的拿在手里挺有份量,就先来秤一下看看多少重。

整体重量

整体 138 克重,加上体积小,拿在手上感觉压手也挺合理 😃。

jetkvm-teardown-1

后盖

把后盖顶上两个螺丝拧下来,就可以将后盖拆下来了。

jetkvm-teardown-2

外壳重量

去掉 PCB,去掉屏幕,光外壳就有 112 克,纯金属外壳还是比较有质感的。

jetkvm-teardown-3

主板

把固定主板的两个螺丝柱拆掉,就可以将主板抽出来了。

屏幕排线是使用抽屉式 FPC 连接器安装的,把抽屉拉开就可以将排线分离了。

jetkvm-teardown-4

芯片方案

把主板拆出来之后就可以看到 PCB 上的各个芯片了。

PCB 顶面:

jetkvm-teardown-5

红色:RV1106 主控 SoC

RV1106 是瑞芯微 Rockchip 面向边缘 AI 和摄像应用的 SoC,ARM Cortex‑A7 内核,主频 1.2 GHz,并集成 RISC‑V 辅助 MCU 核用于快速唤醒及 AI 模型加载。…

阅读全文 »

众筹了 500 万美元的 IP KVM 有多强?JetKVM 开箱试用

之前就在 X 上看到了这款 IP KVM JetKVM 在 KickStarter 众筹,没想到支持者已经到了 40000 多人,众筹总金额超过了 500 万美元,看样子 HomeLab 爱好者们对于 IP KVM 的需求挺旺盛的。

最近我也搞来了一台 JetKVM,开箱试用一下看看是不是真的那么强,能让这么多爱好者下手购买了这款 IP KVM。

开箱

包装

JetKVM 的包装还是相当简洁的,正面就是本体照片加上 slogan “Control any computer remotely”。

另外包装上还特别说明了是开源的 IP KVM,这点应该会很吸引开发者用户,想搞点什么定制,直接自己上手改就可以了。

jetkvm-unboxing-2

包装内的东西也比较简洁,一个主体 + 配件包 + 说明书就是全部了。

jetkvm-unboxing-3

主体

整个 JetKVM 主体相当小巧,尺寸只有 43mm 32mm 60mm,大约就是一个 AirPods 充电盒的大小。

全金属外壳,拿在手里沉淀淀的,配合阳极氧化工艺,质感相当不错。

正面是一整块 …

阅读全文 »

还记得那个信用卡大小的纯 PCB 键盘吗,这回有固件了~

之前分享了一个纯 PCB 实现的键盘 《一个开源纯 PCB 键盘项目,只有信用卡大小》,不过原作者分享的 PCB 中存在不少问题,包括 MCU GND Pad 未连接、天线设计可能不合理等,以及作者一直没有完成可工作的固件,因此一直也没能让它真正跑起来。

不过最近在 GitHub 上找到另外一个开源实现,设计还是参考了原作者,但是新方案更换了 MCU 为 CH585,并且是实际打板验证过了的纯 PCB 键盘,也已经有一个可运行的固件可供使用。

项目地址: https://github.com/openwch/ch585

CH585 介绍

官方产品介绍: https://www.wch.cn/products/CH585.html

CH585 是集成 BLE 无线通讯和高速 USB 及 NFC 的 RISC-V MCU 微控制器。片上集成了 2Mbps 低功耗蓝牙 BLE 通讯模块、USB 全速控制器及收发器、USB 高速控制器及收发器(480Mbps)、NFC 近场通信无线接口、段式 LCD 驱动模块、LED 点阵屏接口、2 个 SPI、4 …

阅读全文 »

电流15uA续航1年?CH32V003低功耗应用尝试

在几周前,我尝试了用 CH32V003 这颗几毛钱的 MCU 来驱动电子墨水屏(文章见 《7毛钱的 MCU CH32V003 驱动 1.54 寸电子墨水屏》),主要是为了想试试低功耗应用的开发。

之前一直玩的 ESP32,总体来说功耗还是比较大,在查了 CH32V003 的手册之后,看到它的待机模式电流可以到小于 10uA,就准备试试看。

PS. 这篇主要是从一个新手的角度去了解了一下低功耗应用开发,以及记录在功耗优化中踩的坑,如有不足或差错,还请指点。

应用设计功能目标

之前已经完成了墨水屏的驱动,大概设计了一些这个设备的功能目标:

  • 每 10 分钟更新一次屏幕,显示与标记时间的间隔
  • 如果没有按住功能键,唤醒时只更新屏幕
  • 续航可以到达半年以上

另外这里用了 RTC 芯片作为时钟,查了数据手册,功耗 0.1uA 以内,就不用额外考虑了 🙈。

最近一直在用的 MCU 是 CH32V003,比较熟悉,主控还是选它了。

CH32V003 的低功耗模式

CH32V003 官网:https://www.wch.cn/products/CH32V003.html

根据 CH32V003 的数据手册,它提供了两种低功耗模式:

  • 睡眠模式
  • 待机模式

这里因为应用本身在大部分时间里,MCU 都不需要工作,也不需要刷新屏幕,为了达到最长续航时间,就选用待机模式了。

ch32v003-low-power-dev-2

待机模式电流

在数据手册里可以看到,3.3V …

阅读全文 »