清泛IT社区

标题: 扒了一下源码,ESP8285接入App Inventor有4种玩法,第3种最香 [打印本页]

作者: App Inventor 2     时间: 昨天 22:46
标题: 扒了一下源码,ESP8285接入App Inventor有4种玩法,第3种最香
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 中文网
有问题?在评论区留言,我来解答。




欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3