news 2026/10/28 1:02:03

基于CH32V307的RISC-V开发板:ESP8266联网OLED时钟制作教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于CH32V307的RISC-V开发板:ESP8266联网OLED时钟制作教程

最近折腾了一块国产 RISC-V 内核的 CH32V307 赤菟板,配上一块十几块钱的 ESP8266 模块,再加上一块 0.96 寸 I2C OLED 屏,做了一个能自动联网校准时间的小时钟。做完之后回头一看,这个项目其实把串口通信、AT 指令、I2C 驱动、时间解析这类嵌入式基本功都串了一遍,对想接触 RISC-V 平台又不想一上来就啃晦涩手册的人来说,是个很好的落脚点。

先说这个项目能做什么:上电后 ESP8266 自动连 WiFi,从网络时间接口拿到当前时刻,解析出年月日时分秒,显示在 OLED 屏上。RTC 走秒用 MCU 内部定时器维持,每隔一段时间重新同步一次,这样不会因为本地时钟漂移而越走越偏。最直观的价值是:你不需要 RTC 电池、不需要外部晶振、不需要手动校准,只要给板子通电,时间就是对的。

如果你已经有了一点 STM32 或者 Arduino 的基础,大概半天到一天就能跑通;如果是纯零基础,建议先补一下 UART 收发和 GPIO 操作的概念,再来看这篇文章。下面我会从方案选型一直写到最后的问题排查,尽量把每一步为什么这么做也都说清楚。

1. 项目拆解与方案选型

1.1 核心需求梳理

拿到这个项目标题,先别急着连单片机,先把需求拆成几个独立的功能模块:

  • 主控:CH32V307 赤菟板,负责初始化外设、解析数据、驱动屏幕、维持走时
  • 联网模块:ESP8266,负责连接 WiFi,向时间服务器发起 HTTP 请求,把返回的数据透传给主控
  • 显示模块:0.96 寸 OLED,I2C 接口,显示日期和时间
  • 软件逻辑:串口收发、AT 指令状态机、时间字符串解析、定时刷新

拆开之后就清晰了,ESP8266 在这里扮演的其实是一个“网络透传工具”,所有智能都在主控这边。这种分工方式对刚上手的人特别友好,因为你不用去学 ESP8266 内部的 SDK 开发,只把它当一个“能联网的串口设备”用就行。

1.2 方案选型:为什么是 ESP8266 加 AT 指令

做 WiFi 时钟有几种常见路线。一种是用 ESP32 直接写完一切,屏幕接到 ESP32 上,但这就不需要 CH32V307 了,跟项目标题不符。另一种是用 ESP8266 跑 NonOS SDK 或者 Arduino 固件,自己写网络请求逻辑,但这样要么得装 Arduino 工具链,要么得研究 ESP8266 的 Lua/AT 固件,学习成本并不低。还有一种是本文采用的方案:ESP8266 刷官方 AT 固件,主控通过串口发 AT 指令来操作它。

我推荐 AT 方案的核心原因有三个。第一,AT 指令是模块出厂自带的“标准语言”,AT+CWMODE、AT+CWJAP、AT+CIPSTART这套指令在几乎所有 WiFi 模块上都是通用的,以后换模块也不用重写主控代码。第二,调试非常直观,你可以先把 ESP8266 单独接到电脑的 USB 转 TTL 上,用串口助手手动发指令验证每个步骤,确认没问题了再接回开发板。第三,它把复杂的 TCP/IP 协议栈全部封装在模块内部,主控这边只需要处理字符串匹配,对 MCU 的资源消耗很小。

当然 AT 方案也有缺点,比如收发效率不如裸 SDK 高,数据响应会有几十毫秒的延迟,但对于一个一分钟才同步一次的小时钟来说,这点延迟完全无所谓。所以关键不是选“最好”的方案,而是选“最合适当前需求”的方案。

1.3 硬件清单与引脚规划

实际用到的硬件如下,我直接列出了我验证过的型号和注意事项:

  • CH32V307 赤菟板一块(板载 WCH-Link 调试器,用 USB 线和电脑连接即可烧录)
  • ESP8266-01S 模块一个(板上集成陶瓷天线,引脚间距是 2.54mm,方便插面包板)
  • 0.96 寸 OLED 显示屏,SSD1306 主控,I2C 接口,4 个引脚(VCC、GND、SCL、SDA)
  • 若干杜邦线、面包板
  • AMS1117-3.3 稳压模块或者一个能稳定输出 3.3V 的电源(给 ESP8266 独立供电用)

引脚规划上,我刻意避开了板载调试串口。赤菟板的 USB 转串口芯片一般接在 UART1(PA9/PA10),如果我把 ESP8266 也接到这里,就会和 PC 的日志输出冲突。所以最终选择:

功能主控引脚外设引脚
ESP8266 TX -> CH32V307 RXPA3(UART2_RX)ESP8266 TXD
ESP8266 RX <- CH32V307 TXPA2(UART2_TX)ESP8266 RXD
OLED SCLPB6OLED SCL
OLED SDAPB7OLED SDA
ESP8266 供电外接 3.3VVCC、CH_PD
电源地GNDGND

这里有一个非常关键的点:ESP8266 峰值电流可以到 300mA 以上,瞬间启动电流更大,如果直接用赤菟板上的 3.3V 引脚给它供电,经常会把板载 LDO 拉垮,导致 MCU 复位。我用一块 AMS1117-3.3 单独从开发板 5V 取电给 ESP8266,然后两边共地,这个问题就再没出现过。

2. 准备工作:ESP8266 固件检查与烧录

2.1 AT 固件版本确认

市面上买到的 ESP8266 模块,很多出厂就烧好了 AT 固件,但版本新旧差别很大。老版本固件在处理 TCP 传输、DNS 解析、返回码格式上和新版本有不少差异,建议统一刷成乐鑫官方发布的新版 AT 固件。

我先说怎么查版本:用 USB 转 TTL 连接 ESP8266,上位机用任意串口助手,波特率 115200,发AT+GMR,返回内容里会有 AT 版本号和 SDK 版本号。如果模块没有任何响应,大概率是固件缺失、波特率不对或者供电出问题,先排查硬件。

关于 NonOS SDK 和 RTOS SDK 的区别,简单说两句。老牌 ESP8266 默认的 AT 固件是基于 NonOS SDK 的,结构比较简单,官方文档也一直维护着;后来乐鑫在 RTOS SDK 上出了新 AT 固件,功能更多,但有些指令行为有差异。如果你买的是新出厂的模块,一般刷的是 2.x 版本 AT 固件,文档兼容性最好。

2.2 烧录硬件连接

烧录 ESP8266 需要把模块的 GPIO0 拉低,让它进入 UART 下载模式。具体接法:

  • USB 转 TTL 的 TXD 接 ESP8266 的 RXD
  • USB 转 TTL 的 RXD 接 ESP8266 的 TXD
  • GPIO0 接 GND(或按住模块上的 FLASH 键不放)
  • CH_PD/EN 接 3.3V
  • VCC 接 3.3V,GND 接 GND

注意,进入下载模式的时序是有讲究的:先保持 GPIO0 为低电平,再给模块上电,这样模块内部的 ROM Bootloader 才会进入串口下载模式。如果模块已经上电运行了,再拉低 GPIO0 是没有用的,必须断电重新上电。

烧录工具我用的是 esptool.py,跨平台,命令也清晰。Windows 下还可以用 ESPFlashDownloadTool 图形工具,两者选一个顺手就行。

2.3 从官方包刷写 AT 固件

先从乐鑫官网下载对应 Flash 容量的 AT 固件包,比如 1MB Flash 的ESP8266_AT_1M版本。解压后会看到多个 bin 文件,包括boot.bin、user1.bin、esp_init_data_default.bin等,它们烧录的起始地址官方文档里写得很清楚,不能随便乱放。

用 esptool.py 刷写时,命令大概长这样:

esptool.py --port COM3 --baud 115200 write_flash \ 0x00000 boot.bin \ 0x01000 user1.bin \ 0xfc000 esp_init_data_default.bin

如果用的是图形版 ESPFlashDownloadTool,就在地址栏里分别填上0x00000、0x01000、0xFC000,然后勾选对应文件,把 SPI MODE 设为 DIO,频率 40MHz,Flash Size 选和模块实际容量一致的选项,点 START 开始烧录。

这里多发几句感慨:很多人第一次用 esptool.py 都会遇到A fatal esptool.py error occurred: Failed to connect to ESP8266: Timed out waiting for packet header这个报错。我第一次也卡了很久。这个报错的本质是主机在等待 ESP8266 的 ROM Bootloader 回包,但一直没有收到。主要原因就三类:

  1. 模块压根没有进入下载模式,GPIO0 没有被拉低
  2. TX/RX 接反了,比如把 CH340 的 TXD 接到了 ESP8266 的 TXD
  3. 供电不稳,模块一上电就复位,Bootloader 起不来

排查时先把波特率降到 9600 或者 57600 再试,有时候高速率下信号质量差也会触发超时。还有一个很容易忽视的坑:发 AT 指令时用的串口助手可能还占着串口,烧录程序打不开端口。关掉所有占用串口的软件再烧,成功率会高很多。

2.4 烧录完成后的自检步骤

烧完之后,把 GPIO0 恢复到悬空或者拉高状态,重新上电,在串口助手里应该能看到几秒钟后模块打印出ready。然后发AT,模块回应OK,发AT+GMR能看到版本信息,发AT+CWLAP能扫描到附近的 WiFi 热点。这几条指令都通了,就说明模块工作正常,可以接回开发板了。

如果上电后连ready都没有,先检查 CH_PD 有没有接到 3.3V。我见过不少模块,VCC 和 GND 都接对了,但 CH_PD 悬空,模块完全不工作。ESPRESSIF 原厂模块内部有上拉,但很多第三方模块没有,所以接线时宁可多接一根线,也别偷懒。

3. CH32V307 工程搭建与 OLED 显示

3.1 MounRiver Studio 快速建工程

CH32V307 的官方 IDE 是 MounRiver Studio,基于 Eclipse 魔改而来,界面和 STM32CubeIDE 那套非常像。新建工程时选择芯片型号 CH32V307VCT6,IDE 会生成一个模板工程,包含main.c、ch32v30x_conf.h、启动文件和链接脚本。

工程里默认的SystemInit已经帮我们把时钟配置到 144MHz,外部晶振的频率也是自动识别的。模板里还有一个Delay_Ms和Delay_Us,底层是用 SysTick 实现的,可以直接拿来用。这个项目里我额外需要初始化 GPIO、USART2、软件 I2C 对应的引脚,以及 UART1 的打印输出。

有一点和 STM32 不同的是,CH32V307 的外设时钟使能函数、中断处理函数名这些都要以ch32v30x_开头,好在库函数的参数结构和标准外设库几乎一致,有相关经验的人上手非常快。

3.2 SSD1306 驱动的两种实现方式

OLED 的驱动芯片是 SSD1306,0.96 寸,分辨率 128x64,I2C 地址默认是0x3C。驱动它的核心就两步:初始化显示屏内部寄存器,然后把显存字节通过 I2C 灌进去。

CH32V307 有硬件 I2C 外设,理论上可以用I2C_InitTypeDef配置。但我实际测试发现,芯片手册上硬件 I2C 的引脚复用配置、超时处理、错误状态恢复这些环节,对新手不太友好,很容易卡在总线忙上。我最终用了软件模拟 I2C,GPIO 直接操作,时序自己控制,代码反而更清晰。对于 OLED 这种几百 Kbps 就够用的设备,软件模拟完全没压力,而且 GPIO 引脚可以随便选,不用查复用表。

软件 I2C 的核心逻辑就是写字节时,在 SCL 高电平期间改变 SDA,读应答时在 SCL 高低沿采样 SDA。我常用的初始化序列很简单:

#define OLED_ADDR 0x3C void OLED_WriteCmd(uint8_t cmd) { I2C_Start(); I2C_SendByte(OLED_ADDR << 1 | 0); // 写方向 I2C_SendByte(0x00); // Co=0, D/C#=0,命令 I2C_SendByte(cmd); I2C_Stop(); } void OLED_Init(void) { // 以下为常用 SSD1306 初始化命令序列 OLED_WriteCmd(0xAE); // 关闭显示 OLED_WriteCmd(0x20); OLED_WriteCmd(0x10); // 页寻址模式 OLED_WriteCmd(0xB0); // 起始页 OLED_WriteCmd(0xC8); // 扫描方向 OLED_WriteCmd(0x00); OLED_WriteCmd(0x10); // 列地址 OLED_WriteCmd(0x40); // 起始行 OLED_WriteCmd(0x81); OLED_WriteCmd(0x7F); // 对比度 OLED_WriteCmd(0xA1); // 段重映射 OLED_WriteCmd(0xA6); // 正常显示 OLED_WriteCmd(0xA8); OLED_WriteCmd(0x3F); // 多路比 OLED_WriteCmd(0xD3); OLED_WriteCmd(0x00); // 显示偏移 OLED_WriteCmd(0xD5); OLED_WriteCmd(0x80); // 时钟分频 OLED_WriteCmd(0xD9); OLED_WriteCmd(0xF1); // 预充电 OLED_WriteCmd(0xDA); OLED_WriteCmd(0x12); // COM 配置 OLED_WriteCmd(0xDB); OLED_WriteCmd(0x40); // VCOMH 电平 OLED_WriteCmd(0x8D); OLED_WriteCmd(0x14); // 电荷泵开启 OLED_WriteCmd(0xAF); // 打开显示 }

如果你遇到 OLED 上电黑屏,先检查地址是0x3C还是0x3D,很多屏背面有一个 A0 焊盘,默认焊接 0x3C;如果改了地址,代码也要跟着改。另外,VCC 和 GND 接反会烧屏幕,上电前务必用万用表确认。

3.3 显示布局与刷新策略

128x64 的小屏,一行 8x16 的字体能放 8 个字符,一行 6x8 的字体能放 21 个字符。我的布局是:第一行用 6x8 字体显示完整日期,比如2025-01-05,第二行空一行,第三行用 8x16 大字体显示HH:MM:SS,最后一行用 6x8 显示网络状态或者同步剩余秒数。

刷新不要整个屏幕全刷,OLED 刷整屏要传 1024 字节显存,频繁全刷浪费 MCU 资源。我的做法是:每秒只更新时间字符串,用OLED_ShowString把新的时间写到固定的显存区域;如果秒数没变就完全不刷新。整屏只有开机和首次连网成功时才刷一次。

字库可以直接用网上开源的 6x8 和 8x16 ASCII 取模数据,拷进工程定义一个const uint8_t数组就行,这部分没有必要自己取模。

4. ESP8266 联网与时间获取逻辑

4.1 完整的 AT 指令交互流程

ESP8266 在 AT 固件下工作主要有三步:设置 WiFi 模式、连接热点、建立 TCP 连接。我整理成一张实操指令表:

指令作用期望返回
AT测试模块通信OK
AT+CWMODE=1设置为 Station 模式OK
AT+CWJAP="SSID","密码"连接 WiFi 热点WIFI CONNECTED
AT+CIPSTART="TCP","quan.suning.com",80建立 TCP 连接CONNECT OK
AT+CIPSEND=长度准备发送 HTTP 请求>
发送 HTTP GET 数据请求时间接口SEND OK,随后返回+IPD数据
AT+CIPCLOSE关闭连接CLOSED

这里有个细节:AT+CWJAP是不保存 WiFi 密码到 Flash 的,拔电重连还要重新发。如果不想每次上电都发,可以用AT+CWJAP_DEF,它会把配置存进 Flash。我测试常用AT+CWJAP,因为调试时改 WiFi 更快,产品化再换成_DEF版本。

TCP 连接建立后,HTTP 请求内容需要自己构造。我用的时间接口是苏宁的http://quan.suning.com/getSysTime.do,它返回的 JSON 格式简洁,无需复杂解析。完整请求如下:

GET /getSysTime.do HTTP/1.1 Host: quan.suning.com Connection: close

注意末尾的两个\r\n,HTTP 头结束必须靠空行,少一个服务器就会一直等请求头,超时才返回。

4.2 串口收发框架与 +IPD 解析

主控和 ESP8266 之间的数据是异步的,不能简单发完指令就死等应答,否则数据一多就会丢。我的做法是:串口 2 接收中断把每个字节丢进环形缓冲区,主循环里写一个字符串匹配函数,不断从缓冲队列尾部找+IPD,关键字。找到之后按+IPD,<长度>:的格式解析出数据长度,然后把后面的字节全部取出来,放到一个独立数组里,再用 JSON 解析逻辑提取时间。

这里说一个最常见的坑:ESP8266 在 AT 模式下返回的 TCP 数据不保证一次全到,一个 HTTP 响应可能被拆成多个+IPD分段推送。如果你的代码只处理第一个+IPD,大概率会漏掉一半数据。我的处理方案是状态机:

// 伪代码逻辑 enum { WAIT_HEAD, WAIT_DATA, WAIT_DONE } state; if (strstr(bleedBuf, "+IPD,")) { parse_len = 0; sscanf(bleedBuf, "+IPD,%d:", &parse_len); state = WAIT_DATA; } if (state == WAIT_DATA) { // 持续收集 byteCount 个字节 // 收集完成后,将数据交给时间解析函数 state = WAIT_DONE; }

简单说就是:主循环每次只看有没有新数据,有就喂给解析状态机,收满指定长度才认为这一帧完成。用这种方式,即使响应被拆成三段甚至五段,也能完整拼接。

4.3 时间解析:从 JSON 到本地时钟

时间接口返回的内容长这样:

{"sysTime":"2025-01-05 14:30:25","sysTime2":"20250105143025"}

我要解析的是sysTime2里的yyyyMMddHHmmss字符串。用 C 库的sscanf一行就能拆出来:

int year, month, day, hour, minute, second; sscanf(strTime, "%4d%2d%2d%2d%2d%2d", &year, &month, &day, &hour, &minute, &second);

拿到这些字段后,我需要把它们换算成一个持续的秒计数,这样主控才能在后续每秒中断里自行走时。一种直观做法是使用“相对基准”:记录这次同步得到的year/month/day/hour/min/sec,同时把syncTick清零,之后每个定时器中断让second++,满 60 进 1,满 24 回到 0。日期进位复杂一点,得判断大小月和闰年,但逻辑也不难。

我没有用 CH32V307 内部的 RTC 模块,主要是赤菟板上默认没有焊接 32.768kHz 晶振,而 RTC 依赖低速外部时钟才精准。要是用内部低速时钟,精度只够跑分钟级,那还不如用 SysTick 自己维护一个秒计数来得直观。如果你后续想要断电保持时间,再单独接一个带后备电池的 RTC 芯片也来得及。

每次同步时,把本地缓存的时间字符串更新一遍。同步间隔我设成 60 秒,太频繁对 WiFi 和服务器都不友好,太久了本地漂移会明显。

4.4 为什么不直接走 NTP

很多人看到“网络时钟”第一反应是用 NTP 协议。确实,NTP 服务器返回的是一个 32 位的 Unix 时间戳,换算也容易。但问题在于 AT 指令模式下,ESP8266 发 UDP 包要自己构造 48 字节的 NTP 请求头,里面全是二进制数据,用串口发二进制在 AT 指令的文本交互模式下很容易出错。HTTP 接口虽然多了一些头开销,但响应是纯文本,解析起来轻松得多,教学和调试的成本都低很多。换个时间接口,只需要改一下请求路径和解析规则,整体流程完全不用动。

5. 系统联调与常见问题排查

5.1 联调的顺序很重要

不要一上来就把所有模块接齐了再上电,这样出了问题根本不知道是 OLED 不亮还是 WiFi 没连上。我的调试顺序是:

第一步,只接 OLED,跑一个简单的显示程序,确认屏幕能点亮、字符能正常显示。用华夫饼类比的话,先证明“显示器”是好的。

第二步,只接 ESP8266 到 USB 转 TTL,用串口助手手动确认模块能连 WiFi、能返回时间 JSON。这一步确认“网络数据源”是好的。

第三步,把 ESP8266 的 TX/RX 改接到 CH32V307 的 PA3/PA2,主控只做一个“透传执行器”,把我手动在串口助手里执行的 AT 指令序列原封不动地自动跑一遍。看到麻利地返回CONNECT OK和+IPD数据,这一步才算过。

第四步,再加入时间解析和 OLED 刷新,完整体联调。

这个顺序让我把变量控制在最小,每次只引入一个新模块,排障效率极高。

5.2 常见问题速查表

我把实际踩过的坑整理成一张表,遇到问题可以直接对号入座。

现象可能原因排查与解决
CH32V307 一给 ESP8266 上电就复位ESP8266 瞬时电流过大,拉垮板载 3.3V用独立 3.3V 稳压模块供电,共地连接
OLED 上电无任何显示地址错了,或者 I2C 引脚接反确认 SCL/SDA 顺序,检查地址 0x3C/0x3D
串口助手发 AT 无响应波特率不对,或模块没进 UART 唤醒状态确认 115200,检查 CH_PD 是否接 3.3V
AT+CWJAP返回FAIL密码错误、信号太弱、热点只支持 5G确认 2.4G 热点,密码不含特殊转义字符
AT+CIPSTART返回DNS FAIL模块无法解析域名改用 IP 地址直连,或检查路由器 DNS
单片机收不到 +IPD 数据串口接收中断没配置好,或波特率不一致检查 UART2 波特率 115200,中断优先级
时间显示乱码JSON 解析越界、字符串数组长度不够在解析前先给数组末尾补\0,用strstr定位
时间走一会就快/慢几分钟本地秒计数没用定时器中段,或定时器频率不对用 SysTick 每 1ms 中断累加,精准维护秒变量
ESP8266 连接上但 GET 请求无响应请求头少了空行确保 GET 数据末尾有\r\n\r\n

5.3 几个我踩过的坑

单独拎出来说一下最容易浪费时间的三个问题。第一个是 ESP8266 的 GPIO0 时序,我之前烧录失败卡了一个小时,后来用示波器看才发现 GPIO0 在上电瞬间波形不对,换成“先接地,再上电”的顺序立刻就好。第二个是 ESP8266 的透传模式,我第一次想用AT+CIPMODE=1简化收数据,结果发现退出透传的+++指令要满足“前后各 200ms 静默”的条件,在实际代码里反而增加复杂度,干脆老老实实解析+IPD帧。第三个是 CH32V307 的串口中断里最好不要直接做耗时操作,我一开始在中断里做字符串拼接,结果不断丢字节,后来把所有解析全部挪到主循环,只在中断里塞环形缓冲区,问题立刻解决。

还有一个小技巧:如果调试时不知道 ESP8266 到底收没收到请求,可以先把 ESP8266 接回 USB 转 TTL,用串口助手的“定时发送”功能把 AT 指令一条一条发,观察每一步的返回。等手动操作完全通顺了,再让单片机自动跑,这样能大大减少联调时的挫败感。

5.4 供电与共地的细节

这个项目最容易忽略的就是供电。ESP8266-01S 发射瞬间电流可以冲到 300mA 以上,而 USB 串口模块和开发板上的 3.3V 稳压器一般是按给 MCU 供电设计的,带不动这么大的动态负载。我的做法是单独用一个 AMS1117-3.3 从 5V 取电,给 ESP8266 的 VCC 和 CH_PD 供电,同时 AMS1117 的 GND 和开发板的 GND 连在一起。这样一来,ESP8266 和 CH32V307 有一致的地电平,串口通信才稳定。如果模块的地和主控的地不是同一参考点,串口信号就会出现乱码,这是一个容易被忽略但非常致命的问题。

5.5 时间同步失败时的兜底策略

项目做到最后,我加了一个很务实的兜底逻辑:如果某次 HTTP 请求超时或者返回的数据解析失败,不要一直死等,而是跳过本次同步,继续用本地维护的秒计数走时。只有当连续多次同步失败时,才在 OLED 最后一行显示NET ERR提示。这样一来,即使路由器重启、WiFi 密码变更导致断网,小时钟也只是一个“走得不太准的时钟”,而不是“死机的时钟”。

这个思路后面还可以扩展:把时间接口换成worldtimeapi.org或者阿里云的 NTP,甚至再接一个物理按键手动校准,都能在现有框架上轻松加上去。

最后说几句我的实际体会

做完这个项目之后,我最大的感受是:嵌入式入门最难的不是某个芯片有多复杂,而是把“网络”“协议”“外设驱动”这些小知识点串成一条完整链路的能力。这个 WiFi 小时钟恰好把每一个环节都踩了一遍,而且每个环节的坑都足够典型,值得记下来分享。如果你也想学 CH32V307,但是觉得官方手册太厚、裸机例程太散,从这个小项目入手会是一个很好的选择。

再补一个实用的扩展方向:既然 CH32V307 已经联网了,下一步可以加一个 MQTT 协议,让这块板子把时间和传感器数据上报到服务器;或者加一个 BME280 温湿度传感器,变成天气站。硬件成本都不高,但能玩出的花样确实不少。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 1:02:03

工控人必知:字节与16进制实战解析,从报文到浮点数

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/28 0:56:40

Chatbot联网搜索技术演进:从RAG检索到Agent工具调用

1. 从搜索框到 Agent&#xff1a;Chatbot 联网搜索的技术演进拆解1.1 一个搜索框背后的三个时代Chatbot 的联网搜索&#xff0c;这几年走的路径其实非常清晰&#xff1a;从“搜索框里的关键词”&#xff0c;到“能理解你说了什么的AI”&#xff0c;再到“能替你跑完整条路径的 …

作者头像 李华
网站建设 2026/10/28 0:52:27

大模型考试通关指南:零基础考生的考点精讲与应试策略

1. 这不是“AI速成班”&#xff0c;而是一份给考试人的大模型通关地图“大模型技术与应用&#xff1a;零基础考点精讲”——看到这个标题&#xff0c;我第一反应不是点开视频&#xff0c;而是翻出去年三套真题卷子&#xff0c;在草稿纸上画了个三层结构图&#xff1a;最底下是“…

作者头像 李华
网站建设 2026/10/28 0:52:10

语义分割技术演进:从FCN到Transformer的十年突破

1. 语义分割技术十年演进全景图&#xff08;2015-2025&#xff09;2014年全卷积网络&#xff08;FCN&#xff09;的诞生&#xff0c;彻底改变了计算机视觉领域对图像理解的范式。作为像素级分类任务的代表&#xff0c;语义分割在过去十年经历了从传统方法到深度学习&#xff0c…

作者头像 李华
网站建设 2026/10/28 0:34:25

类脑计算、量子纠错与端到端大模型:算力架构变革的技术日报解读

最近几个月的固定习惯&#xff0c;是每天早上花二十分钟&#xff0c;把前一天的全球科技新闻按主题捋一遍。这个动作看起来简单&#xff0c;但坚持下来之后&#xff0c;我对行业热点的判断速度快了很多。9月28日的这一波新闻里&#xff0c;AI硬件、量子计算、自动驾驶、开源生态…

作者头像 李华
网站建设 2026/10/28 0:11:22

AI Agent与Harness Engineering的架构设计与实战

1. 项目概述&#xff1a;AI Agent与Harness Engineering的范式革新当OpenAI的ChatGPT掀起全球AI浪潮时&#xff0c;行业关注的焦点已从单一模型能力转向更复杂的AI Agent系统构建。Harness Engineering&#xff08;驾驭工程&#xff09;正是在这种背景下诞生的新型工程范式&…

作者头像 李华