ESP-JUMPSTART 1.1. INTRODUCCIÓN Construir firmware listo para la producción puede ser difícil. Implica múltiples preguntas y decisiones sobre las mejores formas de hacer las cosas. Implica la creación de aplicaciones telefónicas y la integración de agentes en la nube para realizar todas las funciones. ¿Qué pasaría si hubiera una referencia lista, un conjunto conocido de los mejores pasos, recopilados de la experiencia previa de otros, con la que pudieras comenzar? "ESP-Jumpstart" se centra en la creación de productos en ESP32. Es una forma rápida de comenzar su proceso de desarrollo de productos. "ESP-Jumpstart" construye un "Toma de Corriente Inteligente" completamente funcional y listo para implementar en una secuencia de pasos de tutorial incrementales. Cada paso aborda un flujo de trabajo de usuario o un flujo de trabajo de desarrollador. Cada paso es una aplicación construida con ESP-IDF, el marco de desarrollo de software de ESP32. Ilustración 1: Toma de Corriente Inteligente El firmware del Toma Corriente Inteligente de ESP-Jumpstart asume que el dispositivo tiene un botón de entrada y una salida GPIO. Implementa la siguiente funcionalidad comúnmente requerida. Permite al usuario final configurar su red Wi-Fi doméstica a través de aplicaciones telefónicas (iOS/Android). Encienda o apague la salida GPIO. Utilice un pulsador para alternar físicamente esta salida. Permitir el control remoto de esta salida a través de una nube. Implemente la actualización de firmware inalámbrica (OTA). Realiza el restablecimiento a la configuración de fábrica presionando prolongadamente el botón pulsador. Una vez que esté familiarizado con ESP-Jumpstart, la construcción de su firmware de producción es una cuestión de reemplazar el controlador de dispositivo de la toma de corriente, con su controlador de dispositivo (bombilla, lavadora, etc). Ilustración 2: Aplicabilidad Jumpstart Para usuarios de ESP8266, requerirá lo siguiente para comenzar: Un kit de desarrollo ESP8266: ESP8266-DevKit-C https://www.espressif.com/products/hardware/esp8266ex/overview/ disponible a través de su tienda más cercana. También puede usar cualquier otra placa de desarrollo ESP8266 si ya tiene una. ESP8266_RTOS_SDK es el marco de desarrollo de IoT de Espressif para ESP8266 (https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest). Todas las referencias a IDF, ESP-IDF deben asignarse a ESP8266_RTOS_SDK en el contexto de ESP8266. Las instrucciones para ESP32 y ESP8266 son comunes a menos que se especifique lo contrario. Para los inquietos, si está familiarizado con el hardware y/o los sistemas integrados de Espressif, y está buscando una referencia de producción sin los pasos incrementales, puede hacer lo siguiente: Utilice directamente la aplicación final en ESP-Jumpstart. Si no tiene una cuenta en la nube, configure la configuración de la nube de AWS IoT como se menciona en la sección AWS IoT. Cree el archivo de configuración de fabricación para las credenciales de nube únicas de su dispositivo, según las instrucciones proporcionadas en la sección Generación de datos de fábrica y flashéelo en la ubicación adecuada. Construya, flashee y arranque la imagen del firmware como lo hace habitualmente. Utilice las bibliotecas de aplicaciones de teléfono de referencia (iOS/Android) para crear aplicaciones de teléfono. O utilice la aplicación de referencia para probar cosas como se describe en la sección Aprovisionamiento unificado. Utilice los comandos descritos en la sección AWS IoT para control remoto Ahora que tiene este funcional, modifique para que funcione con su controlador 1.2. CONEXIÓN WI-FI #include <esp_wifi.h> #include <esp_event_loop.h> tcpip_adapter_init(); // Inicializamos la pila TCP/IP esp_event_loop_init(event_handler, NULL); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); esp_wifi_init(&cfg); esp_wifi_set_mode(WIFI_MODE_STA); wifi_config_t wifi_config = { .sta = { .ssid = EXAMPLE_ESP_WIFI_SSID, .password = EXAMPLE_ESP_WIFI_PASS, }, }; esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config); esp_wifi_start(); In the above code: Similarly, the Wi-Fi subsystem and its station interface is initialized with the calls to esp_wifi_init() and esp_wifi_set_mode() Finally, the hard-coded SSID and passphrase configuration of the target Wi-Fi network are configured and we start the station using a call to esp_wifi_start() Wi-Fi is a protocol that can generate asynchronous events like connectivity lost, connection established, DHCP Address received etc. The event loop collects events from the TCP/IP Stack and the Wi-Fi subsystem. The call to esp_event_loop_init() initialises the event loop. The event loop delivers these events to the callback that is registered through the first parameter. The asynchronous event handler that is registered with the event loop can be implemented as: