Agosto de 2019.
¿También desea crear proyectos innovadores de IoT que usen el chip ESP32, o módulos basados en ESP32, de la popular empresa espressif? Bueno, lo hice y todavía lo hago. Y espero que tú también lo hagas.
El objetivo de este kit de inicio bien documentado es acelerar el desarrollo de sus proyectos IoT para hardware ESP32 utilizando el marco ESP-IDF de Espressif e inspirarse qué tipo de aplicaciones puede construir para ESP32 utilizando varios módulos de hardware.
¿Estás listo para descubrir cómo puedes comenzar rápidamente?
mkdir ~/esp
cd ~/esp
git clone -b v3.2.2 --recursive https://github.com/espressif/esp-idf.git esp-idf
Esta parte contiene información básica sobre algunos tableros de desarrollo ESP32 que he usado inicialmente:
Un adaptador solo puede programarse (fácilmente) un tablero de ESP32.
Esta parte documenta algunos productos y cómo configurarlos.
Las baterías recargables a menudo se usan en proyectos IoT.
Esta parte es un cargador de batería popular, un descargador de baterías hecho a sí mismo y detalles sobre baterías populares como las baterías de león y las baterías Lifepo4. También contiene algunas especificaciones sobre las baterías profesionales de litio-tionil-cloruro de lisoci2 no recargables para su uso en condiciones duras.
Alguna documentación sobre MOSFET de potencia del canal N que a menudo se usan en combinación con un tablero de desarrollo ESP32.
Documentación sobre el módulo TP4056.
Alguna documentación sobre reguladores de voltaje LDO que forman parte de una junta de desarrollo ESP32.
El kit de inicio incluye varios proyectos de trabajo que puede ejecutar instantáneamente, en lugar de fragmentos que debe pegar usted mismo, lo que no es fácil para un principiante.
Estos proyectos:
Dé información sobre cómo usar el marco oficial ESP-IDF de manera eficiente.
Incluya una tonelada de mejores prácticas de codificación y prácticas de configuración.
Demuestre cómo usar los nuevos componentes ESP-IDF de este kit de inicio, como tiras LED RGB y sensores de meta.
El proyecto especial esp32_mjd_components :
Destacemos algunos proyectos que demuestran cómo usar el marco Core ESP-IDF.
esp32_button_basics Cómo interactuar con los botones (conmutadores).esp32_deep_sleep_wakeup_basics demuestra cómo usar un interruptor o un sensor de puertas/ventanas magnéticas para despertar un ESP32 del sueño profundo.esp32_http_client demuestra los conceptos básicos de usar el componente ESP-IDF estándar "ESP32_HTTP_Client".esp32_gpio_basics Cómo interactuar con los pines GPIO de la placa de desarrollo.esp32_gpio_scanner Cómo escanear todos los pines GPIO y descubrir su función de E/S.esp32_i2c_scanner Cómo escanear todos los dispositivos de esclavos en los pines I2C e identificar su dirección de esclavos I2C. Esto es útil cuando se trabaja con nuevos dispositivos de esclavos I2C.esp32_ledc_pwm_basics Cómo usar el controlador ESP-IDF estándar (un controlador LED controlador usando PWM).esp32_nvs_basics Cómo usar el controlador estándar ESP-IDF NVS (almacenamiento no volátil) con una partición NVS personalizada.esp32_rmt_basics Cómo usar el controlador RMT ESP-IDF estándar.esp32_spiffs_basics Cómo usar el controlador estándar del sistema de archivos SPIFS ESP-IDF.esp32_sw180_tilt_sensor Cómo interactuar con este sensor de inclinación (no se necesitan componentes adicionales).esp32_timer_basics Cómo usar el controlador de temporizador ESP-IDF estándar.esp32_uart_basics Cómo usar el controlador estándar de ESP-IDF UART.esp32_uart_do_output Cómo usar el controlador estándar ESP-IDF UART.esp32_udp_client demuestra los conceptos básicos de implementar un cliente UDP utilizando el marco ESP-IDF.Destacemos algunos proyectos que demuestran cómo usar los componentes adicionales del kit de inicio MJD ESP32.
esp32_ads1115_adc_using_lib Demonstrates the basics of using the MJD ESP-IDF component "mjd_ads1115" for the ESP32 and the popular breakout boards of the TI ADS1115 Ultra-Small, Low-Power, I2C-Compatible, 860-SPS, 16-Bit ADCs With Internal Reference, Oscillator, and Programmable Comparator using the I2C Autobús.esp32_am2320_temperature_sensor_using_lib Cómo leer datos del sensor METEO AM2320 AOSONG.esp32_bh1750fvi_lightsensor_using_lib Cómo leer datos del sensor de intensidad de luz BH1750.esp32_bme280_sensor_using_lib Cómo leer los datos del sensor METEO BOSCH BME280.esp32_bmp280_sensor_using_lib Cómo leer los datos del sensor METEO BOSCH BMP280.esp32_dht11_temperature_sensor_using_lib Cómo leer datos del sensor de temperatura AOSONG DHT11.esp32_dht22_temperature_sensor_using_lib Cómo leer datos del sensor de temperatura AOSONG DHT22/AM2302.esp32_door_sensor_reed_switch demuestra cómo usar un sensor de ventana/puerta magnética que se basa en un interruptor de láminas.esp32_ds3231_clock_using_lib Cómo obtener/establecer datos de la placa DS3231 ZS042 RTC REAL TIEMPLE.esp32_hcsr501_pir_sensor_using_lib Cómo leer datos del sensor infrarrojo humano HC-SR501 PIR.esp32_huzzah32_battery_voltage_using_lib Cómo usar características específicas de la placa de desarrollo Adafruit Huzah32. Ejemplo: lea el nivel de voltaje de la batería.esp32_jsnsr04t_using_lib Este proyecto demuestra todas las características del módulo de sensor ultrasónico impermeable JSN-SR04T-2.0 en combinación con una placa de desarrollo ESP32. Dobla las mediciones en el registro de depuración.esp32_jsnsr04t_oled_mosfet_using_lib Este proyecto demuestra todas las características del módulo de sensor ultrasónico impermeable JSN-SR04T-2.0 en combinación en combinación con una placa de desarrollo ESP32, un módulo de pantalla OLED, un MOSFET de potencia para encender el sensor (para ahorrar el consumo de energía durante el sueño profundo) y un ciclo de sueño profundo.esp32_ky032_obstacle_sensor_using_lib Cómo leer datos del sensor de evitación de obstáculos infrarrojos KY-032.esp32_ledrgb_using_lib Cómo controlar las tiras LED RGB (como los productos Adafruit Neopixels y BTF-Lightning).esp32_linked_list_basics Cómo usar el componente de la lista vinculada.esp32_lorabee_using_lib Cómo interactuar con la placa Breakout Sodaq Lorabee (Microchip RN2843 Lora Transceptor). Este proyecto demuestra los comandos básicos para configurar el dispositivo y leer/escribir el NVM.esp32_lorabee_rx_using_lib Cómo interactuar con el tablero de ruptura de Sodaq lorabee (transceptor de microchip rn2843 lora). Este proyecto demuestra la funcionalidad de recibir Lora Rx. Nota: Utiliza Lora P2P y no Lorawan.esp32_lorabee_tx_using_lib Cómo interactuar con el tablero de ruptura de Sodaq lorabee (transceptor de microchip rn2843 lora). Este proyecto demuestra la funcionalidad de transmisión Lora TX. Nota: Utiliza Lora P2P y no Lorawan.esp32_lorabee_using_pc_usbuart Este proyecto demuestra cómo emitir comandos básicos en el módulo Lorabee usando una PC de Windows y una placa USB-UART (como un FTDI). Esta es una manera fácil de familiarizarse con las características de la placa Lorabee / Microchip RN2843A.esp32_mlx90393_using_lib Cómo obtener datos de campo magnético utilizando el sensor de campo magnético Melexis MLX90393.esp32_neom8n_gps_using_lib Cómo obtener datos GPS del módulo GPS UBLOX NEO-M8N.esp32_scd30_sensor_settings_using_lib Este proyecto para el módulo sensor Sensirion SCD30 CO2 y RH/T se utiliza para verificar que el sensor funcione correctamente, para mostrar todas las configuraciones ** del sensor y para ejecutar los diversos modos de calibración.esp32_scd30_sensor_readings_using_lib Este proyecto para el módulo sensor Sensirion SCD30 CO2 y RH/T lee continuamente la medición de CO2, las medidas relacionadas y derivadas y el índice de calidad del aire.esp32_sht3x_sensor_using_lib Este proyecto demuestra los componentes MJD_SHT3X. El componente MJD_SHT3X para el sensor de humedad y temperatura digital Sensirion Sht3x se usa configurar el dispositivo y recolectar sus métricas de salida (temperatura CF, humedad relativa % y alos del punto de rocío C F.esp32_ssd1306_oled_using_lib Este proyecto para las populares pantallas OLED 128x32 y 128x64 basadas en el controlador OLED SSD1306 IC demuestra el componente MJD_SSD1306 para mostrar texto en una pantalla OLED.esp32_tmp36_sensor_ads1115_adc_using_lib Este proyecto demuestra los componentes MJD_ADS1115 y MJD_TMP36. El componente MJD_ADS1115 para el convertor analógico a digital TI ADS1115 se usa para leer la salida de voltaje del sensor de temperatura analógica. El componente MJD_TMP36 para el sensor TMP36 se usa para convertir la lectura de voltaje crudo del ADC a la temperatura ambiente en grados Celsius de manera transparente.esp32_wifi_device_scanner Cómo escanear todos los canales WiFi y descubrir los dispositivos.esp32_wifi_ssid_cloner Cómo clonar los puntos de acceso existentes.esp32_wifi_ssid_scanner Cómo escanear todos los canales WiFi y descubrir los puntos de acceso.esp32_wifi_ssid_spammer Cómo crear puntos de acceso adicionales en el área.esp32_wifi_stress_test Esta aplicación ejecuta una prueba de estrés para la placa de desarrollo ESP32 en el rol como estación wifi. El propósito es verificar la estabilidad del controlador de software WiFi ESP32 de una versión específica del marco ESP-IDF; Para verificar su operación correcta con los productos de punto de acceso WiFi de varios proveedores.Noté que muchos patrones de codificación volvieron una y otra vez en los primeros proyectos que desarrollé para el ESP32.
Entonces, después de un tiempo, comencé a poner esos patrones de codificación en bibliotecas separadas. El ESP-IDF es un marco extensible, por lo que estas bibliotecas se implementan como nuevos componentes ESP-IDF que se pueden inyectar fácilmente en cualquier proyecto basado en ESP-IDF.
Todos los componentes ESP-IDF MJD están centralizados en el proyecto esp32_mjd_components .
Los componentes se pueden dividir aproximadamente en 3 grupos:
Relacionado con la programación en el lenguaje C (que tiene sus propias peculiaridades como todos los demás lenguajes de programación). Ejemplo: listas vinculadas.
Relacionado con el entorno ESP32 y los detalles de los sistemas integrados. Ejemplos: un componente WiFi fácil. Hacen que esas características ESP-IDF sean más fáciles de usar.
Relacionado con las redes. Algunos ejemplos: interfaz con un servidor MQTT y algunas funciones DNS. El componente abstrae la complejidad y hace que sea más fácil de usar.
Relacionado con los periféricos que cede al chip ESP32 o al módulo ESP32. Algunos ejemplos: tablero de Lora, LED RGB, sensores de temperatura, tableros GPS, relojes RTC, sensores PIR y sensores de obstáculos. El componente abstrae la complejidad del periférico.
Esta es la lista de nuevos componentes:
mjd El componente base que contiene funciones de propósito general.mjd_ads1115 para el TI ADS1115 Analog-to-Digital-Convertor 16 bits.mjd_am2320 para el sensor METEO AM2320 AOSONG.mjd_bh1750fvi para el sensor de intensidad de luz BH1750.mjd_bme280 para el sensor METEO BOSCH BME280.mjd_bmp280 para el sensor METEO BOSCH BMP280.mjd_dht11 para el sensor de temperatura AOSONG DHT11.mjd_dht22 para el sensor de temperatura AOSONG DHT11/AM2302.mjd_ds3231 para la placa de reloj en tiempo real DS3231 ZS042 RTC.mjd_hcsr501 para el sensor infrarrojo humano HC-SR501 PIR.mjd_huzzah32 para la placa de desarrollo AdaFruit HuzzaH32 (lea el nivel de voltaje de la batería).mjd_jsnsr04t para el módulo de sensor ultrasónico impermeable JSN-SR04T-2.0.mjd_ky032 para el sensor de evitación de obstáculos infrarrojos KY-032.mjd_ledrgb para controlar varias tiras LED RGB (chips WorldSemi WS28XX, como la línea de productos Adafruit Neopixels).mjd_list que implementa las listas vinculadas como se usan en el núcleo Linux.mjd_log para facilitar el registro en la aplicación.mjd_lorabee para interactuar con la placa Sodaq Lorabee Microchip RN2483A (contiene un microchip RN2843 868MHz Lora Chip).mjd_mlx90393 para el sensor de campo magnético Melexis MLX90393 (eje XYZ y métricas de temperatura).mjd_mqtt para interactuar con un servidor MQTT (como cliente MQTT).mjd_nanopb para trabajar con Google Protocol Buffers. Incluye los archivos C comunes de la biblioteca Nanopb v0.3.9.2. También declara las directivas de compilación específicas de NANOPB en todo el proyecto (-D) en Makefile.ProjBuildmjd_net para facilitar varias características de red (obtener la dirección IP, DNS resuelve los nombres de host, etc.).mjd_neom8n para el módulo GPS U-BLOX NEO-M8N.mjd_scd30 para el módulo sensor Sensirion SCD30 CO2 y Rh/T.mjd_sht3x para el sensor de temperatura y humedad digital Sensirion Sht3x.mjd_ssd1306 para las populares pantallas OLED 128x32 y 128x64 que se basan en el IC del controlador OLED SSD1306.mjd_tmp36 para el sensor de temperatura analógica TMP36 de dispositivos analógicos. Para usarse junto con un ADC.mjd_wifi para facilitar, como una estación wifi, una conexión a un punto de acceso wifi.Categamos estos componentes con más detalle:
Este componente admite varios paquetes LED RGB. Viene con la documentación esencial, como hojas de datos, esquemas e instrucciones sobre cómo conectarlas a su placa de desarrollo y, finalmente, una fuente de alimentación adicional.
Estos componentes vienen con la documentación esencial, como hojas de datos, esquemas e instrucciones sobre cómo conectarlos a su placa de desarrollo.
Procedimiento:
git clone https://github.com/pantaluna/esp32-mjd-starter-kit.gitcd en el directorio del proyecto en el que desea explorar ./projects .make menuconfig para modificar la configuración del proyecto que desea ejecutar (por ejemplo, GPIO PIN#, credenciales WiFi, ...).make flash monitor para construir y cargar el ejemplo en su placa de desarrollo y monitorear la ejecución a través del terminal de serie. El marco ESP-IDF (y su documentación) es muy poderoso y extenso.
Me resultó difícil comenzar rápidamente. Solo soy un desarrollador de pila completa (backend/frontend) experimentado sin mucha experiencia en el desarrollo de soluciones de IoT utilizando sistemas integrados.
Más específicamente, podría entender todas las características del marco ESP-IDF, pero tuve dificultades para pegar todo juntos, y desarrollar rápidamente proyectos reales para soluciones reales utilizando periféricos específicos como sensores, tableros de Lora, tableros de GPS y tiras LED. Por ejemplo, quería comenzar con proyectos que controlan varios sensores en una red y analizar los datos en un servidor central, y luego pasar a proyectos más complejos.
En segundo lugar, fue difícil encontrar una buena documentación (hojas de datos, diagramas, fotos del cableado) de los diversos dispositivos periféricos, como los sensores de MeteO, las placas GPS, los RGB LED, etc. y cómo usar estos dispositivos en combinación con una placa de desarrollo basada en ESP32.
Así que desarrollé con el tiempo estos componentes adicionales, una buena documentación y muchos proyectos de trabajo dirigidos a un conjunto completo de periféricos que generalmente se usan en proyectos IoT.
Ahora es un buen momento para devolver algo a la comunidad ESP32 y lanzar todo lo que aprendí hasta ahora como código abierto, para que todos puedan beneficiarse de este trabajo.
Tiene 2 opciones para comenzar a desarrollar para el chip ESP32:
Es importante saber que ambos marcos son estables y utilizables, pero todavía están bajo un desarrollo significativo por el espressif, y las nuevas versiones importantes salen regularmente; Espero que esto continúe al menos hasta 2018q4.
Después de experimentar con ambos marcos, decidí ir con el marco ESP-IDF, más específicamente V3.1 y más alto. Siempre trato de lanzar bibliotecas que sean compatibles con la última versión estable.
El kit de inicio ESP32 te hace comenzar rápidamente. Si necesita funciones adicionales de un componente existente, o desea proponer un nuevo componente, envíe un problema.
Todos los componentes MJD están centralizados en el proyecto mjd_components .
El kit no está diseñado para implementar todas las características concebibles de cualquier proyecto ESP32. Si una nueva característica es muy específica para su proyecto, el mejor enfoque es hacer su propio paquete de componentes ESP-IDF con la funcionalidad que desea. Puede usar estos componentes como base; No olvide mencionar que obtuvo los componentes de este kit de inicio.
¿Qué significa "MJD"? Es CodeWord sin sentido y se usa en el lenguaje C para hacer que los identificadores sean únicos. Este enfoque asegura que pueda usar estos nuevos componentes ESP-IDF en cualquier otro proyecto C.
¿Por qué se almacenan todos los proyectos y componentes en un repositorio de GitHub (en oposición a tener un repositorio de GitHub para cada proyecto y cada componente)? Creo que esto hace que el kit de inicio sea más fácil de usar para principiantes. En el futuro, el kit podría configurarse utilizando submódulos Git.
Revise GitHub.
Libere componentes adicionales para sensores de gas, sensores de partículas de polvo, un componente de bucle de corriente de 4-20 mA, pantallas TFT y matrices LED RGB.
Lanze proyectos adicionales para demostrar actualizaciones de OTA (actualice el firmware de forma remota).
Para lanzar una plataforma IoT al público para que pueda administrar los dispositivos en el campo y analizar los datos entrantes.
Para hacer un nuevo sitio web para la documentación técnica de este kit.