• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
Сверху Снизу