查看: 468|回复: 8

[已解答] Blinker ESP32 内存不足 无法连接服务器

[复制链接]

该用户从未签到

发表于 2020-1-17 23:22 | 显示全部楼层 |阅读模式




基本信息
  • [x] 这个问题满足提问指南
  • [x] 我阅读了开发文档
  • [x] 我使用了最新的库及APP进行测试,但是问题仍然存在
  • [x] 我搜索过类似问题的解决方法但是仍然无法解决
  • [x] 有设备端的LOG信息
  • [] 有编译报错信息
  • [x] 我已填写基本信息
设备信息
  • 硬件: [Wemos D1 R32]
  • 接入方式: [WIFI]
  • package版本: [esp32-1.0.4]
  • blinker库版本: [arduino 0.3.1]
  • 开发环境: [Arduino]
  • 操作系统: [Windows]
IDE 中的设置
  • Module: [ESP32 Dev Module]
  • Flash Mode: [qio]
  • Flash Size: [4MB]
  • lwip Variant: [(不存在)]
  • Reset Method: [(不存在)]
  • Flash Frequency: [80Mhz]
  • CPU Frequency: [240MHz]
  • Upload Using: [SERIAL]
  • Upload Speed: [921600]手机信息及APP信息
  • (APP没有问题,暂时不填)

问题描述
Blinker 无法连接服务器,日志中提示似乎是内存不足。
难道是BluetoothSerial占用了太多内存?
如果是这样,使用带psRAM的ESP32模块可以解决问题吗?
代码

kittenblock中小学创客名师推荐的图形化编程软件

#include "BluetoothSerial.h"
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_LIGHT
#include <Blinker.h>
BluetoothSerial SerialBT;
bool connected;

uint8_t address[6]  = {0xc9, 0xa0, 0x20, 0x47, 0xbe, 0x89};
const uint8_t off[24] = {0x01, 0xfe, 0x00, 0x00, 0x51, 0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x07, 0x01, 0x03, 0x01, 0x02, 0x0e, 0x00};
const uint8_t on[24] = {0x01, 0xfe, 0x00, 0x00, 0x51, 0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x07, 0x01, 0x03, 0x01, 0x01, 0x0e, 0x00};
const uint8_t col[24] = {0x01, 0xfe, 0x00, 0x00, 0x51, 0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x07, 0x02, 0x03, 0x01, 0x01, 0x0e, 0x00};

void aligeniePowerState(const String & state)
{
  BLINKER_LOG("need set power state: ", state);

  if (state == BLINKER_CMD_ON) {
    SerialBT.write(on, 24);

    BlinkerAliGenie.powerState("on");
    BlinkerAliGenie.print();
  }
  else if (state == BLINKER_CMD_OFF) {
    SerialBT.write(off, 24);

    BlinkerAliGenie.powerState("off");
    BlinkerAliGenie.print();
  }
}

void setup() {
  Serial.begin(115200);
  Serial1.begin(115200, SERIAL_8N1, 33, 32);
  BLINKER_DEBUG.stream(Serial);
  SerialBT.begin("ESP32test", true);
  connected = SerialBT.connect(address);

  if (connected) {
    Serial.println("Connected Successfully!");
  };
  SerialBT.write(on, 24);
  SerialBT.flush();
  delay(100);
  SerialBT.write(off, 24);
  delay(300);
  if (SerialBT.available()) {
    SerialBT.flush();
    Serial.println("Link OK");
  } else {
    Serial.println("Link ERROR");
    delay(100000);
    ESP.restart();
  };
  Blinker.begin("(api key是正确的)", "bu~zhun~ceng~wang(2.4G)", "(wifi密码是正确的)");
  BlinkerAliGenie.attachPowerState(aligeniePowerState);
}

void loop() {
  Blinker.run();
}
LOG信息
[I][BluetoothSerial.cpp:510] _init_bt(): device name set
[I][BluetoothSerial.cpp:225] esp_spp_cb(): ESP_SPP_INIT_EVT
[I][BluetoothSerial.cpp:722] connect(): master : remoteAddress
[I][BluetoothSerial.cpp:290] esp_spp_cb(): ESP_SPP_DISCOVERY_COMP_EVT
[I][BluetoothSerial.cpp:292] esp_spp_cb(): ESP_SPP_DISCOVERY_COMP_EVT: spp connect to remote
[I][BluetoothSerial.cpp:314] esp_spp_cb(): ESP_SPP_CL_INIT_EVT
[I][BluetoothSerial.cpp:298] esp_spp_cb(): ESP_SPP_OPEN_EVT
Connected Successfully!
Link OK
[5666]
[5666]
__ __ __
/\ \ /\ \ __ /\ \ v0.3.1
\ \ \___ \ \ \ /\_\ ___\ \ \/'\ __ _ __
\ \ '__`\\ \ \ \/\ \ /' _ `\ \ , < /'__`\/\`'__\
\ \ \L\ \\ \ \_\ \ \/\ \/\ \ \ \\`\ /\ __/\ \ \./
\ \_,__/ \ \__\\ \_\ \_\ \_\ \_\ \_\ \____\\ \_\
\/___/ \/__/ \/_/\/_/\/_/\/_/\/_/\/____/ \/_/
To better use blinker with your IoT project!
Download latest blinker library here!
=> https://github.com/blinker-iot/blinker-library

[5701] Connecting to bu~zhun~ceng~wang(2.4G)
[D][WiFiGeneric.cpp:337] _eventCallback(): Event: 0 - WIFI_READY
[D][WiFiGeneric.cpp:337] _eventCallback(): Event: 2 - STA_START
[5780] ESP32_MQTT initialized...
[5780]
===========================================================
================== Blinker Timer loaded! ==================
Warning!EEPROM address 1536-2431 is used for Blinker Timer!
============= DON'T USE THESE EEPROM ADDRESS! =============
===========================================================

[I][EEPROM.cpp:117] begin(): Expanding EEPROM from 64 to 4096
[D][WiFiGeneric.cpp:337] _eventCallback(): Event: 4 - STA_CONNECTED
[D][WiFiGeneric.cpp:337] _eventCallback(): Event: 7 - STA_GOT_IP
[D][WiFiGeneric.cpp:381] _eventCallback(): STA IP: 10.10.10.208, MASK: 255.255.255.0, GW: 10.10.10.1
[8555] WiFi Connected.
[8555] IP Address:
[8555] 10.10.10.208
[W][HTTPClient.cpp:247] beginInternal(): unexpected protocol: https, expected http
[D][HTTPClient.cpp:276] beginInternal(): host: iotdev.clz.me port: 443 url: /api/v1/user/device/diy/auth?authKey=8f10cf06422e&aliType=light
[I][ssl_client.cpp:156] start_ssl_client(): WARNING: Use certificates for a more secure communication!
[E][ssl_client.cpp:33] _handle_error(): [start_ssl_client():199]: (-10368) X509 - Allocation of memory failed
[E][WiFiClientSecure.cpp:132] connect(): start_ssl_client: -10368
[D][HTTPClient.cpp:1018] connect(): failed connect to iotdev.clz.me:443
[W][HTTPClient.cpp:1318] returnError(): error(-1): connection refused
[10820] [HTTP] GET... failed, error: connection refused
[W][HTTPClient.cpp:1318] returnError(): error(-4): not connected

[D][HTTPClient.cpp:383] disconnect(): tcp is closed

[10835] ERROR: Maybe you have put in the wrong AuthKey!
[10840] ERROR: Or maybe your request is too frequently!
[10845] ERROR: Or maybe your network is disconnected

编译信息
(编译时一切正常)

  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-1-18 01:25 | 显示全部楼层
    ESP32外接个蓝牙模块???这什么骚操作?
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-1-18 01:27 | 显示全部楼层
    1.看文档 https://diandeng.tech/doc/getting-start-esp32-ble
    2.使用文档中的链接下载最新的blinker lib
    3.esp32自带蓝牙,不需要外接蓝牙模块,lib中提供的示例

    该用户从未签到

     楼主| 发表于 2020-1-18 21:40 | 显示全部楼层
    那个..你理解错了

    BluetoothSerial不是串口蓝牙模块!
    BluetoothSerial不是串口蓝牙模块!
    BluetoothSerial不是串口蓝牙模块!

    BluetoothSerial是ESP32自带的一个库,用途是和手机或者其它ESP32通过蓝牙SPP协议(蓝牙串口协议)通信
    在这个项目中我打算使用这个库连接一个第三方的吸顶灯
    那个吸顶灯只能通过蓝牙连接手机,并且经过我的抓包分析,这个灯使用SPP协议
    并且我抓到了手机和吸顶灯的通信数据(就是代码中的on,off,col数组)
    所以我打算使用Blinker将ESP32通过WiFi联网,接收天猫精灵的控制数据,然后通过蓝牙发送开关灯信号给吸顶灯。
    不是 手机通过蓝牙连接ESP32!

    该用户从未签到

     楼主| 发表于 2020-1-18 23:38 | 显示全部楼层
    coloz 发表于 2020-1-18 01:25
    ESP32外接个蓝牙模块???这什么骚操作?

    那个..你搞错了
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-1-19 00:46 | 显示全部楼层

    抱歉,是我搞错了。esp32 arduino sdk的固件都会非常大,目前基本无解,只有等官方优化,或者尝试使用freertos sdk

    该用户从未签到

     楼主| 发表于 2020-1-19 22:34 | 显示全部楼层
    coloz 发表于 2020-1-19 00:46
    抱歉,是我搞错了。esp32 arduino sdk的固件都会非常大,目前基本无解,只有等官方优化,或者尝试使用fre ...

    如果自带520KB的内存不够,外接psRAM可以解决吗?
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-1-21 12:16 | 显示全部楼层
    a2302004040 发表于 2020-1-19 22:34
    如果自带520KB的内存不够,外接psRAM可以解决吗?

    不清楚,这个只有看看esp datasheet

    该用户从未签到

    发表于 2020-2-3 11:33 | 显示全部楼层
    既然数组是只读的,就把数组放入flash里面就好啊,在数组加上PROGMEM如:
    char table[]PROGMEM={};
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    天猫精灵接入语音提示找不到该设备?
    天猫精灵接入语音提示找不
    今天又刷了一遍代码,天猫精灵提示 没有找到你要操作的设备! 怎么回事啊??? 折腾
    引入库的问题,不知道怎么叙述 看图吧
    引入库的问题,不知道怎么
    最左边的是主文件 也就是启动的文件 后边三个是引入的 在后边这个文件再引入库就报错
    blinker电源插座
    blinker电源插座
    这台blinker电源插座有blinker控制和手动控制两种工作方式. 1.blinker控制:滑条用于设
    blinker灯、环境传感器套件意见收集
    blinker灯、环境传感器套
    计划春节后推出blinker氛围灯和环境检测套件。 本帖收集相关建议,如若采纳,发红包(
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表