20 - ESP32 en Arduino IDE

Volver al curso

Vamos a hacer unos cuantos programas en la ESP32 usando Arduino IDE. La programación es casi igual, pero ahora tenemos conectividad Wi-Fi y Bluetooth. ¡Habrá que aprovechar!

Más potencia, más posibilidades

Atrás quedan los 16 MHz del Arduino. Ahora tenemos dos núcleos a 240 MHz. Entra aquí para ver todas las posibilidades: https://randomnerdtutorials.com/projects-esp32/

Cuidado con los problemas de alimentación

Usaremos un regulador de voltaje de 5 a 3.3 V. Su potencia es muy limitada. También influye la longitud y el diámetro del cable escogido.

Atento al monitor serie. Te ayudará a detectar reinicios recurrentes por culpa del "Brownout detector triggered":

Si se apaga, podrás detectarlo usando Serial.println();

20.1 - Entradas y salidas digitales

Empezamos por algo fácil: https://randomnerdtutorials.com/esp32-digital-inputs-outputs-arduino/

20.1b - Teclado de membrana matriz 4x4

Adapta el siguiente código para la ESP32: https://randomnerdtutorials.com/arduino-membrane-keypad-tutorial/. Deberás encontrar 8 GPIOs libres:

20.2 - Interrupciones (sensor PIR)

https://randomnerdtutorials.com/esp32-pir-motion-sensor-interrupts-timers/

PIR significa “Passive Infrared”. Los pines son alimentación (5V), salida digital, y GND. El de alimentación se distingue porque tiene un diodo al lado.

20.3 - Deep sleep

Heeeey… consumir microamperios en vez de miliamperios… eso no lo hace Arduino! https://randomnerdtutorials.com/esp32-deep-sleep-arduino-ide-wake-up-sources/

Configura:

Pruébalos, muéstramelos, y al acabar, envíame el código.

Información oficial de Espressif. In deep sleep mode, CPUs, most of the RAM, and all the digital peripherals which are clocked from APB_CLK are powered off. The only parts of the chip which can still be powered on are:

20.4 - Algo con Wi-Fi

Puedes hacer cualquiera de estos tres:

20.4b - Algo con ethernet

Vamos a usar el chip ethernet W5500 para conectarnos a la red por DHCP (IP dinámica). Harás dos pruebas:

  1. Cliente NTP que obtenga la fecha y hora y la muestre por serial: https://github.com/PuceBaboon/ESP32_W5500_NTP_CLIENT
  2. Modifica el programa del punto anterior y adáptalo para que funcione sobre ethernet: https://randomnerdtutorials.com/esp32-web-server-arduino-ide/

20.5 - Display OLED

Haz un controlador de temperatura o algo similar con el display OLED siguiendo este tutorial:

https://randomnerdtutorials.com/esp32-ssd1306-oled-display-arduino-ide/

20.5b - Display OLED con medición de temperatura

Muestra una medición de temperatura (y si procede, de humedad) en el display.

Dos opciones: DHT11 / DHT22 o bien el sensor de temperatura integrado (es posible que no funcione).

¡Haz que quede bonito! Pone distintos tamaños de fuente y scroll. Piensa que en el futuro te podrían pagar por hacerlo.

Prototipo de Marcos
Prototipo de Marcos

20.5c - Medición de temperatura con deep sleep

Modifica el programa anterior para funcionar sin display. Ahora introduce el modo deep sleep. Haz que la ESP32 duerma y sólo mida la temperatura cada 10 segundos (timer wake up) o bien cuando se toque un touch pin (touch wake up).

Cargador de baterías conectado a regulador de voltaje 3.3V alimentando ESP32.
Cargador de baterías conectado a regulador de voltaje 3.3V alimentando ESP32.

Monta la batería y el cargador de baterías Lolin D1 1.3. Ojo: la toma de 3.3V parece que no funciona.

El sensor interno no es fiable porque soporta el calor producido por el procesador. Además no está disponible en muchas placas.

20.6 y 20.7

Dos programas más a elegir en la lista de Random Nerd Tutorials o KYO4. ¿Te he dicho alguna vez que he gastado mucho dinero en equipos LoRa y LoRaWAN? Quizá deberíamos aprovecharlos.

¿Sabías que “Random Nerd Tutorials” se hace aquí al lado, en Porto? Saber electrónica + saber inglés = éxito.

20.8 y 20.9 LoRaWAN y TTN

Suelda la antena y una tira de pines con la ayuda de unos alicates y mucho cuidado. Este módulo no tiene la separación típica de 0.1”.

Introducción y cableado en la página de Rui Santos: https://randomnerdtutorials.com/esp32-lora-rfm95-transceiver-arduino-ide/

Créate una cuenta en https://console.thethingsnetwork.org y crea una aplicación guiándote por estas páginas:

Tienes dos modos de activación: OTAA y ABP.


Volver al curso