/**************************************************************************************************
 * @brief		Set mode for ESP8266
 * @param[in]	mode 	Mode for the esp8266
 * @return 		true if success
**************************************************************************************************/
bool esp8266_wifi::esp8266_mode(uint8_t mode)
{

	esp8266_reset();

	delay_ms(10000);

	esp8266_flushin();

	delay_ms(2000);
	esp8266_send((int8_t *)"ATE0\r\n",strlen("ATE0\r\n"));

	esp8266_flushin();
	delay_ms(3000);

    if(!esp8266_sendCheckReply((int8_t *)"AT+CWMODE=1\r\n",(int8_t *) "OK"))
	{
		printf("AT+CWMODE=1 error\n");
		return false;
	}

    delay_ms(2000);

    return true;
}
//=======================================================================
 boolean VirtuinoEsp8266_WebServer::initLocalWifiServer(String wifiNetworkName,String wifiNetworkPassword,int port,int mode=2){
      if (DEBUG) Serial.println(END_LINE+serverInitString);
      if ((mode<2)|| (mode>3)) mode=2; 
      esp8266_reset(); 
      delay(2000);
      esp8266_info();
      delay(1000);
      esp8266_baud(9600);
      delay(1000);
     
      if (esp8266_mode(mode)){     // configure as access point
         delay(1000);
         if (esp8266_printIP()){                       // get ip address  
           esp8266_softAccessPoint(wifiNetworkName,wifiNetworkPassword);
            if (esp8266_multiple(1)){                      // configure for multiple connections    
              if (esp8266_serverPort(port)){                  // turn on server on port 80  
                if (DEBUG) Serial.println(END_LINE+serverReadyString);
                return true;
              }
            
            }
         }
      }
      if (DEBUG) Serial.println(END_LINE+serverNotConnectedString);
      return false;
  }
Beispiel #3
0
void esp8266_serial_init(esp8266_serial_t **serial, HardwareSerial *hw_serial, uint32_t baud_rate)
{
    if (!serial || !hw_serial)
        return;

    esp8266_serial_t *self = (esp8266_serial_t *)calloc(1,sizeof(esp8266_serial_t));
    if (!self) {
        *serial = NULL;
        return;
    }

    esp8266_reset();

    self->hw_serial = hw_serial;
    hw_serial->begin(baud_rate);
    *serial = self;
}
Beispiel #4
0
kaa_error_t kaa_client_state_process(kaa_client_t *kaa_client)
{
    KAA_RETURN_IF_NIL(kaa_client, KAA_ERR_BADPARAM);

    kaa_error_t error_code = KAA_ERR_NONE;
    esp8266_error_t esp8266_error;
    switch (kaa_client->connection_state) {
    case KAA_CLIENT_ESP8266_STATE_UNINITED:
        esp8266_error = esp8266_init(kaa_client->controler);
        if (esp8266_error == ESP8266_ERR_NONE) {
            kaa_client->connection_state = KAA_CLIENT_ESP8266_STATE_INIT_OK;
            KAA_LOG_INFO(kaa_client->kaa_context->logger, KAA_ERR_NONE, "ESP8266 initialized successfully");
        } else {
            KAA_LOG_ERROR(kaa_client->kaa_context->logger, KAA_ERR_NONE, "ESP8266 initialization failed: %d", esp8266_error);
            esp8266_reset();
        }
        break;
    case KAA_CLIENT_ESP8266_STATE_INIT_OK:
        ledOn();
        esp8266_error = esp8266_connect_wifi(kaa_client->controler,
                kaa_client->wifi_ssid, kaa_client->wifi_pswd);
        if (esp8266_error == ESP8266_ERR_NONE) {
            kaa_client->connection_state = KAA_CLIENT_WIFI_STATE_CONNECTED;
            KAA_LOG_INFO(kaa_client->kaa_context->logger, KAA_ERR_NONE, "ESP8266 WiFi to %s network connected",
                                                                                        kaa_client->wifi_ssid);
        } else {
            KAA_LOG_ERROR(kaa_client->kaa_context->logger, KAA_ERR_NONE, "ESP8266 connect to WiFi %s failed: %d",
                                                                                kaa_client->wifi_ssid, esp8266_error);
            kaa_client->connection_state = KAA_CLIENT_WIFI_STATE_UNCONNECTED;
        }
        ledOff();
        break;
    case KAA_CLIENT_WIFI_STATE_CONNECTED:
        break;
    default:
        kaa_client->connection_state = KAA_CLIENT_ESP8266_STATE_UNINITED;
        break;
    }

    return error_code;
}
//========================================================================================
boolean VirtuinoEsp8266_WebServer::wifiInternetConnect(String wifiNetworkName,String wifiNetworkPassword, int port=80){
    if (DEBUG) Serial.println(END_LINE+serverInitString);
    esp8266_reset(); 
    delay(2000);
    esp8266_info();
    delay(1000);
    esp8266_baud(9600);
    delay(1000);
    esp8266_mode(1);     // configure as client
    if (esp8266_connect(wifiNetworkName,wifiNetworkPassword)){
         delay(2000);
         esp8266_printIP();                       // get ip address
         delay(1000);
         esp8266_multiple(1);                      // configure for multiple connections
         delay(1000);
         esp8266_serverPort(port);                  // turn on server on port 80  
        if (DEBUG) Serial.println(END_LINE+serverReadyString);
        return true;
    }
    else {
      if (DEBUG) Serial.println(END_LINE+serverNotConnectedString);
      return false;
    }
}
Beispiel #6
0
void esp8266_init(Esp8266 *esp){

	GPIO_InitTypeDef gpio;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

	GPIO_StructInit(&gpio);
	gpio.GPIO_Pin = GPIO_Pin_8;
	gpio.GPIO_Mode = GPIO_Mode_IPD;
	gpio.GPIO_Speed = GPIO_Speed_2MHz;
	GPIO_Init(GPIOA, &gpio);

	AT_init(&(esp->at));
	AT_add_compare_callback(&(esp->at),"OK\r\n",esp8266_ok_response_callback,esp);      //0
	AT_add_compare_callback(&(esp->at),"ERROR\r\n",esp8266_error_response_callback,esp);//1
	AT_add_compare_callback(&(esp->at),"FAIL\r\n",esp8266_fail_response_callback,esp);  //2

	AT_add_compare_callback(&(esp->at),"0,CONNECT\r\n",esp8266_start_0_connect,esp);		//3
	AT_add_compare_callback(&(esp->at),"1,CONNECT\r\n",esp8266_start_1_connect,esp);		//4
	AT_add_compare_callback(&(esp->at),"2,CONNECT\r\n",esp8266_start_2_connect,esp);		//5
	AT_add_compare_callback(&(esp->at),"3,CONNECT\r\n",esp8266_start_3_connect,esp);		//6
	AT_add_compare_callback(&(esp->at),"4,CONNECT\r\n",esp8266_start_4_connect,esp);		//7
	AT_add_compare_callback(&(esp->at),"0,CLOSED",esp8266_end_0_connect,esp);			//8
	AT_add_compare_callback(&(esp->at),"1,CLOSED",esp8266_end_1_connect,esp);			//9
	AT_add_compare_callback(&(esp->at),"2,CLOSED",esp8266_end_2_connect,esp);			//10
	AT_add_compare_callback(&(esp->at),"3,CLOSED",esp8266_end_3_connect,esp);			//11
	AT_add_compare_callback(&(esp->at),"4,CLOSED",esp8266_end_4_connect,esp);			//12

	AT_add_compare_callback(&(esp->at),"SEND OK\r\n",esp8266_end_send_data,esp);		//13
	AT_add_compare_callback(&(esp->at),"> ",esp8266_start_send_data,esp);				//14
	AT_add_compare_callback(&(esp->at),"+IPD,",esp8266_start_recive_data_header,esp);	//15
	AT_add_compare_callback(&(esp->at),":",esp8266_end_recive_data_header,esp);			//16

	AT_add_compare_callback(&(esp->at),"busy p...\r\n",esp8266_busy_p,esp);             //17
	AT_add_compare_callback(&(esp->at),"ready\r\n",esp8266_ready,esp);                  //18

	esp8266_disable_callback(esp,CALLBACK_OK_INDEX);
	esp8266_disable_callback(esp,CALLBACK_ERROR_INDEX);
	esp8266_disable_callback(esp,CALLBACK_FAIL_INDEX);

	esp8266_disable_callback(esp,CALLBACK_END_0_CONNECT_INDEX);
	esp8266_disable_callback(esp,CALLBACK_END_1_CONNECT_INDEX);
	esp8266_disable_callback(esp,CALLBACK_END_2_CONNECT_INDEX);
	esp8266_disable_callback(esp,CALLBACK_END_3_CONNECT_INDEX);
	esp8266_disable_callback(esp,CALLBACK_END_4_CONNECT_INDEX);
	esp8266_disable_callback(esp,CALLBACK_SEND_OK_INDEX);
	esp8266_disable_callback(esp,CALLBACK_TERMINAL_START_SEND_INDEX);
	esp8266_disable_callback(esp,CALLBACK_END_DATA_HEADER_INDEX);

	esp->connects[0].id = 0;
	esp->connects[1].id = 1;
	esp->connects[2].id = 2;
	esp->connects[3].id = 3;
	esp->connects[4].id = 4;
	memset(esp->response_buffer,0,RESPONSE_BUFFER_LENGTH);
	memset(esp->resive_header_buffer,0,RESIVE_HEADER_BUFFER_LENGTH);
	esp->response_index = 0;
	esp->resive_heade_index = 0;
	esp->sended_command = NULL;
	esp->recive_connect = NULL;
	esp->is_resive_header = 0;
	esp->is_resive_data = 0;
	esp->closing_connect=NULL;
	esp->is_ready = 0;
	GPIOA->BSRR = GPIO_Pin_8;
	esp8266_reset(esp);
}