|
|
ESP8285这个芯片怎么接入App Inventor 2?我翻了MIT的源码和我们fun123的30多个扩展,把所有可行路径都摸了一遍。先说结论:不用开发新扩展,现有组件就能用。
ESP8285是什么?和ESP8266啥关系?
ESP8285是乐鑫(Espressif)出的WiFi芯片,本质上就是ESP8266的内置Flash版本。CPU一样(Tensilica L106 80/160MHz),WiFi一样(802.11 b/g/n),GPIO一样(17个),区别就一个:ESP8285把1MB Flash直接塞进芯片里了,省了外部SPI Flash。
这意味着ESP8266的代码在ESP8285上100%能跑,Arduino ESP8266 Core和ESP-IDF都直接兼容。
源码里有什么现成组件?
我扫了一遍 com.google.appinventor.components.runtime 和 cn.fun123 下的所有源码:
MIT官方内置组件:
- Web组件 — HTTP GET/POST,支持JSON解析
- BluetoothClient — 蓝牙SPP串口
- Serial — USB串口(基于Physicaloid库,代码里直接写了支持Arduino/ESP8266)
fun123自研扩展:
- ClientSocketAI2Ext — TCP Socket客户端,异步连接+后台数据监听
- FTPClient — FTP文件传输
关键发现:Serial.java是唯一提到ESP8266/ESP8285的运行时文件。但没有专门的IoT/ESP扩展组件。
方案1:HTTP API(最简单,零开发)
ESP8285上跑个HTTP Server,App Inventor用内置Web组件直接调。
ESP8285端(Arduino):
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
ESP8266WebServer server(80);
void setup() {
WiFi.begin("SSID", "PASSWORD");
server.on("/led", HTTP_GET, []() {
int state = server.arg("state").toInt();
digitalWrite(LED_PIN, state);
server.send(200, "text/plain", "OK");
});
server.begin();
}
App Inventor端:拉一个Web组件,Url填 http://192.168.1.xxx/led?state=1,调用 Web1.Get(),完事。
优点:零开发量,内置组件直接搞定
缺点:手机主动轮询,不能实时推送
方案2:TCP Socket(已有扩展,实时双向)
fun123已经有 ClientSocketAI2Ext 扩展,源码在 cn/fun123/ClientSocketAI2Ext/,支持:
- 异步TCP连接(AsynchUtil后台线程)
- 文本/二进制数据收发
- 后台持续监听+事件回调
ESP8285端跑TCP Server,App端用这个扩展直连。实时双向通信,零新开发。
缺点:ESP8285配网后才能知道IP,每次换网络要重新设置。
方案3:MQTT(生产环境最推荐)
通过MQTT Broker中转,ESP8285和App Inventor都连同一个Broker。
ESP8285端用PubSubClient库(Arduino标准库),App端用fun123已有的UrsPahoMqttClient组件或Web组件调MQTT的HTTP API。
优点:
- 不依赖直连IP,设备在哪个网都行
- 天然支持一对多(一个传感器多个手机看)
- 社区生态最成熟
这个方案做产品最靠谱。
方案4:蓝牙串口(备选)
ESP8285没有蓝牙,但UART可以接HC-05/HC-06蓝牙模块。App Inventor内置BluetoothClient组件直连。适用于不需要WiFi、近距离控制的场景。
四种方案对比
| 方案 | 开发量 | 实时性 | 易用性 | 推荐场景 | | HTTP API | 零 | 轮询 | 高 | 快速验证 | | TCP Socket | 零(已有扩展) | 实时 | 中 | 局域网控制 | | MQTT | 小量适配 | 实时 | 高 | 生产环境 | | 专用扩展 | 较大 | 实时 | 极高 | 长期投入 |
要不要开发专用ESP8285扩展?
建议做,但不急。 现有方案已经能覆盖大部分场景。专用扩展的价值在于:
1. 设备自动发现 — mDNS/SSDP,不用手动填IP
2. 一键配网 — SmartConfig,免去串口配网
3. GPIO积木化 — DigitalWrite/DigitalRead变成拖积木
4. OTA推送 — App端直接更新ESP8285固件
扩展设计方案:属性(DeviceIP/Port/Connected) + 方法(Connect/DigitalWrite/AnalogRead/ScanDevices) + 事件(DataReceived/PinChanged/DeviceFound)
建议路线
1. Phase 1(立即):Web组件 + HTTP Server验证场景
2. Phase 2(1-2天):ClientSocketAI2Ext做TCP双向通信Demo
3. Phase 3(1-2周):开发ESP8285专用扩展
更多教程和扩展下载:App Inventor 2 中文网
有问题?在评论区留言,我来解答。 |
|