• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 SOFT AP + Android не работает...

paladin

New member
Добрый вечер, уважаемые форумчани. Все мучаюсь вопросом подключение к смартфону на базе андроид 4.4.2 точки доступа (так называемый SOFTAP в доке), созданной на ESP8266 (sdk 1.3.0). На смартфоне точка видится, но подключится не получается, нажимаешь подключиться, и ничего не происходит... При этом с компа и с ipad все ок, даже передачу данных получается организовать... Кто-нибудь знает в чем может быть проблема??? ... Здесь пишут http://www.esp8266.com/viewtopic.php?f=6&t=3422&hilit=softap+arduino&start=10 про эту проблему, но результата у меня никого...
 

paladin

New member
попробуйте статический IP адрес прописать.
шифрование какое?
и, кстати, SOFTAP подняли как? AT командами, своей прошивкой и т.п.
Я пробовал и статический и DHCP... Разные варианты шифрования также пробовал... Последнее AUTH_OPEN и тоже никого эффекта. SOFTAP поднял на базе примера wifi-ap-tcp-client, полученного из темы http://esp8266.ru/forum/threads/anonsy-unofficial-development-kit-for-espressif-esp8266.32/ . Прошивку собираю в eclipse mars.
 

paladin

New member
ну тогда код в студию
Код:
void ICACHE_FLASH_ATTR dhcps_lease_test(void)
{
   struct dhcps_lease dhcp_lease;
   IP4_ADDR(&dhcp_lease.start_ip, 192, 168, 5, 100);
   IP4_ADDR(&dhcp_lease.end_ip, 192, 168, 5, 105);
   wifi_softap_set_dhcps_lease(&dhcp_lease) ;
}


void ICACHE_FLASH_ATTR user_init()
{
   LOCAL struct espconn esp_conn;
  LOCAL esp_tcp esptcp;


   uart_init(BIT_RATE_115200, BIT_RATE_115200);
   os_delay_us(100);

   #ifdef PLATFORM_DEBUG
   ets_uart_printf("ESP8266 platform starting...\r\n");
   #endif

   struct softap_config apConfig;
   struct ip_info ipinfo;
   char ssid[33];
   char password[33];
   char macaddress[17];
   char info[150];

   if(wifi_get_opmode() != SOFTAP_MODE)
   {
     #ifdef PLATFORM_DEBUG
     ets_uart_printf("ESP8266 not in SOFTAP mode, restarting in SOFTAP mode...\r\n");
     #endif
     wifi_set_opmode(SOFTAP_MODE);
     //after esp_iot_sdk_v0.9.2, need not to restart
     //system_restart();
   }

   wifi_get_macaddr(SOFTAP_IF, macaddr);
   wifi_softap_get_config(&apConfig);
   os_memset(apConfig.ssid, 0, sizeof(apConfig.ssid));
   os_sprintf(ssid, "%s", WIFI_APSSID);
   os_memcpy(apConfig.ssid, ssid, os_strlen(ssid));
   if (wifi_get_opmode() == SOFTAP_MODE)
   {
     #ifdef WIFI_APWPA
     os_memset(apConfig.password, 0, sizeof(apConfig.password));
     os_sprintf(password, "%s", WIFI_APPASSWORD);
     os_memcpy(apConfig.password, password, os_strlen(password));
     apConfig.authmode = AUTH_WPA_WPA2_PSK;
     #else
     apConfig.authmode = AUTH_OPEN;
     #endif
     apConfig.channel = 7;
     apConfig.max_connection = 255;
     apConfig.ssid_hidden = 0;
     wifi_softap_set_config(&apConfig);
   }

   #ifdef PLATFORM_DEBUG
   if (wifi_get_opmode() == SOFTAP_MODE)
   {
     wifi_softap_get_config(&apConfig);
     os_sprintf(macaddress, MACSTR, MAC2STR(macaddr));
     os_sprintf(info,"OPMODE: %u, SSID: %s, PASSWORD: %s, CHANNEL: %d, AUTHMODE: %d, MACADDRESS: %s\r\n",
           wifi_get_opmode(),
           apConfig.ssid,
           apConfig.password,
           apConfig.channel,
           apConfig.authmode,
           macaddress);
     ets_uart_printf(info);
   }
   #endif

   /*
   IP4_ADDR(&ipinfo.ip, 192, 168, 4, 1);
   IP4_ADDR(&ipinfo.gw, 192, 168, 4, 1);
   IP4_ADDR(&ipinfo.netmask, 255, 255, 255, 0);
   wifi_set_ip_info(SOFTAP_IF, &ipinfo);
   */

   wifi_softap_dhcps_stop();

   IP4_ADDR(&ipinfo.ip, 192, 168, 5, 1);
   IP4_ADDR(&ipinfo.gw, 192, 168, 5, 1);
   IP4_ADDR(&ipinfo.netmask, 255, 255, 255, 0);
   wifi_set_ip_info(SOFTAP_IF, &ipinfo);
   dhcps_lease_test();
   wifi_softap_dhcps_start();

   esp_conn.type = ESPCONN_TCP;
  esp_conn.state = ESPCONN_NONE;
  esp_conn.proto.tcp = &esptcp;
  esp_conn.proto.tcp->local_port = 5555;
   espconn_regist_connectcb(&esp_conn, at_tcpclient_connect_cb);
   espconn_accept(&esp_conn);

   WiFiCheckConnInit();

   #ifdef PLATFORM_DEBUG
   ets_uart_printf("ESP8266 platform started!\r\n");
   #endif
}
WiFiCheckConnInit() - инициализирую просто софтварный таймер с пустым колбэком
 
Последнее редактирование модератором:

Victor

Administrator
Команда форума
@paladin, попробуйте обойтись без [inline]dhcp_lease[/inline], там DHCP сервер и так глючный.
вообще и от [inline]esp_conn[/inline] лучше отказаться - еспконн это просто жесть у китайцев (только для первых проб подойдет)
Для отладки вашего случая используйте события [inline]wifi_set_event_handler_cb[/inline] (в документации отличный пример)
Проверяйте результат при вызове каждой функции типа [inline]if(!wifi_softap_set_config(&apConfig)) console_printf("Error AP wifi_softap_set_config()\n");[/inline]
А ваш глюк, возможно, из-за использования переменной [inline]info[/inline] - сам на него попадал. Это зарезервированное имя.
Посмотрите исходники pvvx - там есть чему поучиться
 

paladin

New member
@paladin, попробуйте обойтись без [inline]dhcp_lease[/inline], там DHCP сервер и так глючный.
вообще и от [inline]esp_conn[/inline] лучше отказаться - еспконн это просто жесть у китайцев (только для первых проб подойдет)
Для отладки вашего случая используйте события [inline]wifi_set_event_handler_cb[/inline] (в документации отличный пример)
Проверяйте результат при вызове каждой функции типа [inline]if(!wifi_softap_set_config(&apConfig)) console_printf("Error AP wifi_softap_set_config()\n");[/inline]
А ваш глюк, возможно, из-за использования переменной [inline]info[/inline] - сам на него попадал. Это зарезервированное имя.
Посмотрите исходники pvvx - там есть чему поучиться
Спасибо большое за помощь. Буду пробовать. Отпишусь в теме тогда как чего... Странно что для ipad и пк это прекрасно работает... А вообще это возможно на esp8266 поднять точку доступа и подключиться к ней андроидом? Вы так пробовали?
 

pvvx

Активный участник сообщества
А ваш глюк, возможно, из-за использования переменной [inline]info[/inline] - сам на него попадал. Это зарезервированное имя.
Имя [inline]info[/inline] используется в SDK (структура с данными IP и MAC для ST и AP) и объявлено в их библиотеках. При использовании локальный переменной с именем [inline]info [/inline]работа ведется по законам траслятора (C++).

А вообще это возможно на esp8266 поднять точку доступа и подключиться к ней андроидом? Вы так пробовали?
Да - всё работает.
Screenshot_2015-09-16-21-37-09.png
 
Последнее редактирование:

Tomahawk

New member
Что-то не так делаете или используете кривой инструмент для реализации(попробуйте режим STATIONAP использовать, возможно в нём он лучше поддерживается).
 

vasiliy_v

New member
Вот такой код. Все равно не работает

Код:
void user_init(void)
{
    // Configure the UART
    struct softap_config apConfig;
    char ssid[33];
        char password[33];
        char macaddress[17];
        char info[150];
    //PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_U0CTS);//CONFIG MTCK PIN FUNC TO U0CTS
//    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_U0RTS);//CONFIG MTDO PIN FUNC TO U0RTS
//    SET_PERI_REG_MASK(0x3ff00028 , BIT2);//SWAP PIN : U0TXD<==>U0RTS(MTDO) , U0RXD<==>U0CTS(MTCK)
    uart_init(BIT_RATE_115200, BIT_RATE_115200);
    ets_uart_printf(system_get_sdk_version());

    os_memset(apConfig.ssid, 0, sizeof(apConfig.ssid));
    os_sprintf(ssid, "%s", WIFI_APSSID);
        os_memcpy(apConfig.ssid, ssid, os_strlen(ssid));


        wifi_set_opmode(STATIONAP_MODE); //Set softAP + station mode

        apConfig.authmode = AUTH_OPEN;
            apConfig.channel = 7;
                    apConfig.max_connection = 255;
                    apConfig.ssid_hidden = 0;
                    wifi_softap_set_config(&apConfig);


        struct ip_info ipinfo;
        wifi_station_dhcpc_stop();
        wifi_softap_dhcps_stop();

        IP4_ADDR(&ipinfo.ip, 192, 168, 3, 200);
        IP4_ADDR(&ipinfo.gw, 192, 168, 3, 1);
        IP4_ADDR(&ipinfo.netmask, 255, 255, 255, 0);
        wifi_set_ip_info(STATION_IF, &ipinfo);
        IP4_ADDR(&ipinfo.ip, 192, 168, 0, 1);
        IP4_ADDR(&ipinfo.gw, 192, 168, 0, 1);
        IP4_ADDR(&ipinfo.netmask, 255, 255, 255, 0);
        wifi_set_ip_info(SOFTAP_IF, &ipinfo);
        wifi_get_macaddr(SOFTAP_IF, macaddr);
        wifi_softap_dhcps_start();

        if (wifi_get_opmode() == STATIONAP_MODE)
            {
                wifi_softap_get_config(&apConfig);
                os_sprintf(macaddress, MACSTR, MAC2STR(macaddr));
                os_sprintf(info,"OPMODE: %u, SSID: %s, PASSWORD: %s, CHANNEL: %d, AUTHMODE: %d, MACADDRESS: %s\r\n",
                            wifi_get_opmode(),
                            apConfig.ssid,
                            apConfig.password,
                            apConfig.channel,
                            apConfig.authmode,
                            macaddress);
                ets_uart_printf(info);
            }


        wifi_set_event_handler_cb(wifi_handle_event_cb);
}
 
У

Удалённый пользователь 3279

Guest
Столкнулся с такой же проблемой! Arduino IDE 1.6.6 сборка GitHub - esp8266/Arduino: ESP8266 core for Arduino версии 2.1.0 stable. С Android устройствами не работает даже стандартный пример WiFiAccessPoint, хотя iPhone подключается к softAP без проблем. Решение, предложенное тут Android + softap + GET request (no response) · Issue [HASHTAG]#515[/HASHTAG] · esp8266/Arduino · GitHub не помогает. Заметил странную особенность - при попытке подключения Android устройство показывает заметное падение уровня сигнала! Неужели никто не использует андроид-телефоны?
 

pet

Member
я только андроидом и пользуюсь! всё работает! а вот с компа подключается, но данные не вывозит почему-то!


ещё спросит хотел! я правильно понимаю то что mDNS в режиме точки доступа не работает ?
подскажите кто знает.
 
Последнее редактирование:
У

Удалённый пользователь 3279

Guest
я только андроидом и пользуюсь! всё работает! а вот с компа подключается, но данные не вывозит почему-то!


ещё спросит хотел! я правильно понимаю то что mDNS в режиме точки доступа не работает ?
подскажите кто знает.
не работает, для этого в примерах есть скетч с dns-сервером для режима AP
 
  • Like
Реакции: pet
Сверху Снизу