这两天一直在折腾小智AI的开发板。前天在网上买了一套小智AI的散件,想着自己动手组装练练手。
- 成功刷机
里面包括了 ESP32
、OLED 屏
、语音模块
、喇叭
、面包板
、跳线
啥的。到手后鼓捣了几个小时,勉强拼好了,程序也烧进去了,OLED
正常显示。
→ 搭好了的效果
结果插拔喇叭接口的时候,可能接口设计太差,几下就给搞坏了,喇叭直接没声音了,换也换不了。
本来想着联系商家换个零件,结果刚好刷闲逛的时候又看到有卖小智AI整机的——成品,一个才 68,两个一共 110。
算下来比我买散件组装的都便宜,就动了心思直接下单了两个(打算留一个、卖一个)。
但买完又有点后悔,毕竟加起来差不多花了 170 元 了。虽然有点积蓄,但第一次一下子花过这么多搞硬件也受不了,功能稳不稳定还不知道。
反复算了下账:
- 散件那套成本 61 元,喇叭坏了还可以退
- 成品下单两个,110 元,退货不包邮
- 手头还有个
ESP8266
开发板(10 元入手),想着能不能把它拿来烧录测试一下小智AI的功能,省一个也不错
理论上,如果:
- 成品留一个用,另一个能在闲鱼卖到 65 元;
- 散件那套退掉;
那我最后就只花了不到 50 元。
于是计划是:
先别急着退,把 ESP8266
拿出来试试看能不能跑 OLED
显示。虽然 ESP8266
和 ESP32
还是有差距,但先测个简单的功能看看能不能通。
测试内容设定很简单:
- 用
GPIO4(D2)
和GPIO5(D1)
接OLED
,用Wire.begin(4, 5)
初始化 - 然后让
OLED
在屏幕正中循环倒计时显示60 秒
中间遇到几个小坑:
Adafruit_GFX.h
没有安装,装一下库就好了D2
、D1
编译报错,直接用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
- 认知系统架构
- 自适应强化学习
- 以及以上的所有集合
总之,路还很长,边走边看吧