这两天一直在折腾小智AI的开发板。前天在网上买了一套小智AI的散件,想着自己动手组装练练手。

  • 成功刷机

里面包括了 ESP32OLED 屏语音模块喇叭面包板跳线啥的。到手后鼓捣了几个小时,勉强拼好了,程序也烧进去了,OLED 正常显示。

搭好了的效果

结果插拔喇叭接口的时候,可能接口设计太差,几下就给搞坏了,喇叭直接没声音了,换也换不了

本来想着联系商家换个零件,结果刚好刷闲逛的时候又看到有卖小智AI整机的——成品,一个才 68,两个一共 110

算下来比我买散件组装的都便宜,就动了心思直接下单了两个(打算留一个、卖一个)。

但买完又有点后悔,毕竟加起来差不多花了 170 元 了。虽然有点积蓄,但第一次一下子花过这么多搞硬件也受不了,功能稳不稳定还不知道。

反复算了下账:

  • 散件那套成本 61 元,喇叭坏了还可以退
  • 成品下单两个,110 元,退货不包邮
  • 手头还有个 ESP8266 开发板(10 元入手),想着能不能把它拿来烧录测试一下小智AI的功能,省一个也不错

理论上,如果:

  • 成品留一个用,另一个能在闲鱼卖到 65 元
  • 散件那套退掉;

那我最后就只花了不到 50 元

于是计划是:

先别急着退,把 ESP8266 拿出来试试看能不能跑 OLED 显示。虽然 ESP8266ESP32 还是有差距,但先测个简单的功能看看能不能通。

测试内容设定很简单:

  • GPIO4(D2)GPIO5(D1)OLED,用 Wire.begin(4, 5) 初始化
  • 然后让 OLED 在屏幕正中循环倒计时显示 60 秒

中间遇到几个小坑:

  • Adafruit_GFX.h 没有安装,装一下库就好了
  • D2D1 编译报错,直接用 GPIO 编号就行
  • Wire.begin(4, 5) 后面漏了分号,编译失败
  • 烧录成功了,但 OLED 没有显示内容,估计是初始化顺序或者 I2C 地址的问题

最后多试了几次,成功在屏幕上显示倒计时和文字。

虽然是个很简单的测试,但感觉还是挺有意思的,起码手头的这些零件也不是白买的。


  • 经过了几次调试成功在屏幕上显示内容

下面是两个功能的完整示例,使用 ESP8266 + OLED屏(SSD1306),语言是 Arduino:


1. 屏幕输出 HELLO WORLD

#include <Wire.h>                    // I2C通信库
#include <Adafruit_GFX.h> // 基础图形库
#include <Adafruit_SSD1306.h> // SSD1306 OLED 屏幕驱动库 #define SCREEN_WIDTH 128 // OLED 宽度
#define SCREEN_HEIGHT 64 // OLED 高度
#define OLED_RESET -1 // 没有用到RESET引脚 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); void setup() {
Wire.begin(4, 5); // ESP8266的 D2 = GPIO4 (SDA), D1 = GPIO5 (SCL)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // 默认 I2C 地址 0x3C display.clearDisplay(); // 清空屏幕
display.setTextSize(2); // 字体大小(1~3)
display.setTextColor(SSD1306_WHITE); // 白色字体
display.setCursor(10, 20); // 设置文字位置
display.print("HELLO WORLD"); // 输出文字
display.display(); // 显示到屏幕上
} void loop() {
// 什么都不做
}

2. 屏幕倒计时 60 秒

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); int countdown = 60; // 倒计时起点 void setup() {
Wire.begin(4, 5); // D2 = GPIO4, D1 = GPIO5
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(3); // 大号字体
display.setTextColor(SSD1306_WHITE);
} void loop() {
if (countdown >= 0) {
display.clearDisplay(); // 每次都清空再写
display.setCursor(40, 20); // 居中位置大约是 (40,20)
display.print(countdown); // 显示数字
display.display(); // 推送到屏幕
countdown--;
delay(1000); // 等待 1 秒
}
}

结语:

不过说起来,我老早之前在尝试搭建一个像这样的智能AI了,比如这个

AI-Interactive-LLM-VTuber:https://github.com/toke648/AI-Interactive-LLM-VTuber

以及这个

基于自然语言的AI自动化终端:

也已经有人先做出来了(不行去贡献代码,别自己搞得了......)

因此看到有实际的产品被先创造出来,说实在的,有些不甘心。但是既然已经出来了那也不得不继续学习跟进,精进技术,争取更早的实现AI的全面集成化

小智AI的Github:https://github.com/78/xiaozhi-esp32

(浅看了下代码)

说起来这个东西支持集成各种第三方工具,非常适合用于集成开发出各种大型的AI产品

多模态模型+语言交互+长短记忆+情感检测(就差个视觉,已经完全算是一个小型大脑了)

可以预料到将会成为未来AI的基础外设,个人感觉非常有发展前景

除此以外也有很多设想:

  • 实时对话蓝牙耳机
  • AI智能AR眼睛(里面有一个内置的小型操作系统,能够操作实现各种任务)
  • 令AI能够自动操作系统终端,并能够打开第三方程序交互
  • 一个中央化集成的AI系统,能够适配各种环境,自动装载AI,能够同时控制多台设备及其他子AI
  • 认知系统架构
  • 自适应强化学习
  • 以及以上的所有集合

总之,路还很长,边走边看吧

5/21记录 —— ESP32小智ai的更多相关文章

  1. WinForm-简单21点纸牌小游戏

    纸牌游戏有很多种玩法,C#代码写的纸牌游戏,网上也能找到不少,从中也能学习到不少知识,自己动手也写一个,算是记录下学习过程吧. 纸牌21点的玩法也比较简单,就是看谁手中的所有牌相加是21点,或是离21 ...

  2. 物联网 软硬件系统 树莓派 单片机 esp32 小程序 网页 开发 欢迎相互交流学习~

    物联网软硬件开发 知识分享 多年学生项目开发经验 物联网 软硬件系统 树莓派 单片机 esp32 小程序 网页 开发 欢迎相互交流学习~ http://39.105.218.125:9000/

  3. MySQL 表记录查询小练习

    表记录查询小练习 查看岗位是teacher的员工姓名.年龄 查看岗位是teacher且年龄大于26岁的员工姓名.年龄 查看岗位是teacher且薪资在12000-16000范围内的员工姓名.年龄.薪资 ...

  4. 小智的糖果(Candy) 51nod 提高组试题

    luogu AC通道! (官方数据) 题目描述 小智家里来了很多的朋友,总共有N个人,站成一排,分别编号为0到N-1,小智要给他们分糖果.但 是有的朋友有一些特殊的要求,有的人要求他左右的两个人(左边 ...

  5. 小智的旅行(Bridge)51nod 提高组试题

    luogu AC传送门(官方数据) 题目描述 小智最喜欢旅行了,这次,小智来到了一个岛屿众多的地方,有N座岛屿,编号为0到N-1,岛屿之间 由一些桥连接,可以从桥的任意一端到另一端,由于岛屿可能比较大 ...

  6. Python 21 Django 实用小案例1

    实用案例 验证码与验证   KindEditor      组合搜索的实现 单例模式      beautifulsoup4 验证码与验证 需要安装Pillow模块 pip stall pillow ...

  7. 关于GitHub上传没有记录(小绿块不显示的问题)

    最近开始使用上github来上传保存自己在学习中所写过的代码,打算将自己每天的成果能有个保存,然后就利用上GitHub这么一个利器. 听说GitHub的那个绿块是用来记录每天的上传记录的,结果我将代码 ...

  8. 记录微信小程序里自带 时间格式 工具

    微信小程序里面自己给了一个时间工具,是用来记录log日志,感觉可以记录下来,所以拿来自己用,以此记录: 直接传入 日期对象 进入 formatTime //得到下面格式的时间格式2017/07/22 ...

  9. 小程序 AI/AR 能力

    一.关于 VisionKit 1.定义 VisionKit 为小程序提供了开发 AR 功能的能力,包含了 AR 在内的视觉算法. 2.版本 提供了 V1 和 V2 两个版本,区别如下: V1平面接口, ...

  10. [小细节,大BUG]记录一些小问题引起的大BUG(长期更新....)

    [小细节,大BUG] 6.问题描述:当从Plist文件加载数据,放入到tableView中展示时,有时有数据,有时又没有数据.这是为什么呢?相信很多大牛都想到了:我们一般将加载的数据,转换成模型,放入 ...

随机推荐

  1. Django实战:基于Django和openpyxl实现Excel导入导出功能

    一.openpyxl 介绍 openpyxl 是一个用于读取和写入 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库.使用场景包括: 数据分析:从 Excel 文 ...

  2. DeepSeek-R1详解

    咱把这张 DeepSeek-R1 的架构图拆成几块唠,保证小白也能听懂!就当是带着大家"逛" 模型从训练到能用的 "流水线工厂",每个模块是干啥的.数据咋流动, ...

  3. Hillstone 防火墙技术——StoneOS防火墙配置管理和说明

    简介:防火墙可以在三种模式下进行操作:路由/NAT模式和透明模式以及混合模式(路由/nat和透明模式的结合,也即是三层管理和二层管理): 路由/NAT 模式部署灵活,并且支持防火墙和路由器两种设备的功 ...

  4. OAuth2.0系列之使用JWT令牌实践教程(八)

    @ 目录 1.文章前言介绍 2.例子实验验证 3.功能简单测试 OAuth2.0系列博客: OAuth2.0系列之基本概念和运作流程(一) OAuth2.0系列之授权码模式实践教程(二) OAuth2 ...

  5. 把我的“Java 生产力”外包给一个叫 Claude 的助手

    作者:张工,某不知名互联网公司"背锅侠"兼"需求翻译机" 年龄:31,发量:与 JVM 堆内存成反比 今日心情:不想写 CRUD,但产品经理说"就一个 ...

  6. redis哨兵集群详解

    哨兵机制介绍 哨兵模式的优点 监控master库,当master库宕机后会自动进行选主切换; 切换过程是应用透明的,因此应用程序无法感知; 自动处理故障节点; 高可用原理 当主节点出现故障时,由 Re ...

  7. UBuntu 无法运行 Ganache 解决方案

    问题描述 直接在 UBuntu 上执行 ganache-2.5.4-linux-x86_64.AppImage 程序可能因为权限问题而无法运行 解决办法 可以将 ganache-2.5.4-linux ...

  8. Hive 整合 HBase

    为何 Hive 要整合 HBase HBase 不支持标准 SQL 语句,而且 HBase 做统计分析也不支持 Join 表操作,而这些功能是 Hive 所具备的,所以在实际的生产环境中将二者整合并让 ...

  9. Azkaban 任务调度(三)

    单一 job 任务调度 创建 job 描述文件 [root@node-01 jobs]# vim first.job #first.job type=command command=echo 'thi ...

  10. 2025最新关键领域软件研发的知识管理:Gitee Wiki 的范式重塑

    Gitee Wiki:关键领域软件研发的知识管理革命者 在数字经济的全球竞争中,关键领域软件研发能力已成为国家科技实力的重要体现.随着信创产业的快速发展,国产基础软件.工业软件等关键领域面临前所未有的 ...