清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.76

Aia StoreApp上架指南 .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

AppInventor2离线版中文教育版接入DeepSeek VIP会员 享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档AI2拓展IoT专题

查看: 11|回复: 0
打印 上一主题 下一主题

[AI2教程] 扒了一下源码,ESP8285接入App Inventor有4种玩法,第3种最香

  • TA的每日心情
    开心
    昨天 06:35
  • 签到天数: 820 天

    [LV.10]以坛为家III

    1163

    主题

    1944

    帖子

    5万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    55090

    AI2中文网VIP弹球达人接水果达人撸猫达人

    跳转到指定楼层
    楼主
    发表于 昨天 22:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    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 中文网
    有问题?在评论区留言,我来解答。
    App Inventor 2 中文网 - MIT同步更新的中文本土化平台!v2.76 支持Android 15 & iOS 更新日志
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2026 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2026-05-28 02:03 , Processed in 0.021098 second(s), 32 queries .