ESP8285这个芯片怎么接入App Inventor 2?我翻了MIT的源码和我们fun123的30多个扩展,把所有可行路径都摸了一遍。先说结论:不用开发新扩展,现有组件就能用。
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官方内置组件:
fun123自研扩展:
关键发现:Serial.java是唯一提到ESP8266/ESP8285的运行时文件。但没有专门的IoT/ESP扩展组件。
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(),完事。
优点:零开发量,内置组件直接搞定
缺点:手机主动轮询,不能实时推送
fun123已经有 ClientSocketAI2Ext 扩展,源码在 cn/fun123/ClientSocketAI2Ext/,支持:
ESP8285端跑TCP Server,App端用这个扩展直连。实时双向通信,零新开发。
缺点:ESP8285配网后才能知道IP,每次换网络要重新设置。
通过MQTT Broker中转,ESP8285和App Inventor都连同一个Broker。
ESP8285端用PubSubClient库(Arduino标准库),App端用fun123已有的UrsPahoMqttClient组件或Web组件调MQTT的HTTP API。
优点:
这个方案做产品最靠谱。
ESP8285没有蓝牙,但UART可以接HC-05/HC-06蓝牙模块。App Inventor内置BluetoothClient组件直连。适用于不需要WiFi、近距离控制的场景。
方案 | 开发量 | 实时性 | 易用性 | 推荐场景 |
|---|---|---|---|---|
HTTP API | 零 | 轮询 | 高 | 快速验证 |
TCP Socket | 零(已有扩展) | 实时 | 中 | 局域网控制 |
MQTT | 小量适配 | 实时 | 高 | 生产环境 |
专用扩展 | 较大 | 实时 | 极高 | 长期投入 |
建议做,但不急。 现有方案已经能覆盖大部分场景。专用扩展的价值在于:
扩展设计方案:属性(DeviceIP/Port/Connected) + 方法(Connect/DigitalWrite/AnalogRead/ScanDevices) + 事件(DataReceived/PinChanged/DeviceFound)
💡 觉得有帮助就点个赞吧~
💬 有问题欢迎在评论区交流。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。