0,66" Display Shield am ESP32 D1 Mini und D1 Mini ESP8266 - AZ-Delivery

Introducción

Es posible que ya haya tenido experiencia con el D1 Mini NodeMCU ESP8266 o los DevKits ESP32. En este post quiero mostraros otra placa de desarrollo que parece que los dos habían parido. Esta es la placa de desarrollo ESP32 D1 Mini. Me gustaría compararlos un poco entre sí y probar si el 0.66 OLED Shield es compatible con ambos minis. Al final te mostraré un programa con el que puedes mostrar una conexión Bluetooth o WLAN existente en la pantalla, que se actualiza cuando se realizan cambios. Aquí vamos.

Lo que necesitamos

número Componente anotación
1 ESP32 D1 Mini NodeMCU
1 Mini nodo D1 MCU 8266
1 Protector de pantalla OLED de 0,66 "
PC con Arduino IDE y conexión a Internet
Soldador (para los cabezales de los pines)


Dos veces D1 Mini

En la siguiente imagen puede ver la comparación directa de las dos placas (vista desde abajo). He resaltado un poco la designación del pin del ESP32 para que muestre cómo debe entenderse la etiqueta:


También escribí las funciones de pin para ello. Las filas blancas de pines del ESP32 coinciden con los pines del ESP8266. Las interfaces SPI e I²C se implementan en los mismos pines en ambas placas, incluso si tienen un nombre diferente. La fuente de alimentación y el pin de reinicio también están en la misma posición. Por lo tanto, los protectores para el ESP32 deberían encajar tan bien como para la placa ESP8266. Siempre que usted mismo pueda definir los números GPIO para las bibliotecas asociadas si es necesario.

El escudo OLED I2C de 0.66 "


El protector de pantalla OLED de 0,66 "con interfaz I²C tiene una resolución de 64 x 48 píxeles. Funciona con el chip SSD1306 y puede hacer su trabajo a cuestas en el D1 Mini. Ahora está claro que los pines de la interfaz I²C están en la misma posición en ambas placas, debería funcionar igual allí.Podemos probar esto instalando la biblioteca U8G2 a través del administrador de bibliotecas.

ESP32 y ESP8266

Ahora tenemos que soldar los conectores de los pines a las placas. Si desea conectar otros componentes además de la pantalla, como sensores, botones o LED, debe usar encabezados hembra con patas largas (los denominados encabezados apilables). Entonces puede colocar la pantalla en el tablero y luego ambos en un tablero. A continuación, se asignan todos los pines del ESP8266. Aquí tenemos la primera ventaja del ESP32 D1 Mini, porque además de estos pines tiene otra fila de pines a cada lado.

IMPORTANTE: Para usar el ESP32 Mini en una placa de prueba, los encabezados solo pueden soldarse en las filas internas o externas. Los encabezados masculinos o femeninos se pueden soldar a la parte superior de la otra fila.

Adjunté los encabezados femeninos con patas largas al ESP8266 para conectar la pantalla y usarla en una placa de pruebas. En el ESP32, solo adjunté encabezados femeninos en la parte superior. Entonces solo puedo usar los pines de las filas internas (también I²C y SPI) para la pantalla. Sin embargo, aquí puede ver la ventaja de que también hay disponibles GPIO adicionales. Al igual que con el ESP8266, puede usar encabezados hembra con patas largas para las filas internas de pines. Todo depende completamente de cómo desee utilizar los componentes.

Nota: Al colocar la pantalla, asegúrese de que las designaciones de las clavijas estén en el lado correcto. Me orienté a los pines TX y RST.

Estas fuentes adicionales para el administrador de la placa deben ingresarse en la configuración predeterminada:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

y

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Ambos están separados por una coma. Si aún no lo ha hecho, debe instalar las bibliotecas apropiadas a través de Herramientas -> Tablero -> Administrador de tablero. Busque e instale ESP8266 y ESP32. Después de la instalación, seleccione D1 Mini debajo de las placas ESP8266 o el Módulo de desarrollo ESP32 debajo de ESP Arduino.

Es posible que primero tenga que instalar los controladores de las placas para que puedan ser reconocidos en su sistema operativo. Puede encontrar la instalación de Windows para el CP2104 utilizado en el ESP32 D1 Mini aquí. Para el D1 Mini ESP8266, necesita el controlador de Windows para el chip CH340. Puedes encontrarlo aquí. Si todo funciona, debería ver un puerto COM en Herramientas -> Puerto. Puede que tenga que seleccionar esto por separado nuevamente.

Prueba de pantalla

Si ha instalado la biblioteca U8G2, consulte los ejemplos a continuación full_buffer el boceto "HelloWorld". Cuando lo abre, debe comentar en la línea correspondiente a la pantalla:

U8G2_SSD1306_64X48_ER_F_HW_I2C u8g2 (U8G2_R0, / * reiniciar = * / U8X8_PIN_NONE);

Si la pantalla está en la placa, está configurada en el IDE de Arduino y el puerto está seleccionado, luego cargue el programa de ejemplo en el ESP. ¡Entonces probablemente obtendrá un Hola mundo truncado! reconocer cuando todo salió bien.

Dado que esta pantalla es un poco más pequeña, se debe elegir una fuente más pequeña o escribimos la segunda palabra en la segunda línea:

vacío lazo (vacío) {
u8g2.clearBuffer (); // borrar la memoria interna
u8g2.setFont (u8g2_font_ncenB08_tr); // elige una fuente adecuada
u8g2.drawStr (0.10, "Hola"); // escribe algo en la memoria interna
u8g2.drawStr (0.30, "¡Mundo!"); // escribe algo en la memoria interna
u8g2.sendBuffer (); // transferir la memoria interna a la pantalla
retraso (1000);
}

Luego puse la pantalla en el otro ESP, seleccioné la placa apropiada y cargué el mismo programa allí nuevamente. los funcionó perfectamente:


Por lo tanto, el protector de pantalla es compatible con ambos D1 Mini. Sin una placa de pruebas, ahora puedo conectar otros componentes al ESP32, ya que todavía hay pines libres en ambos lados.

similitudes y diferencias

Desde fuera, ya hemos visto las diferencias. El ESP32 D1 Mini tiene más pines que también se nombran de manera diferente. Por tanto, es un poco más ancho. En la placa ESP32, sin embargo, los pines están dispuestos de tal manera que las interfaces y la fuente de alimentación están en las mismas posiciones que en el ESP8266. Los escudos deberían adaptarse a ambas variantes.

Pero siempre depende de los valores internos. La CPU Tensilica L106-32Bit del SoC ESP8266MOD-F12 funciona con un máximo de 160MHz en un núcleo de procesador. Se incluye un chip WiFi que admite las especificaciones B, G y N. También se incluyen 4 MB de memoria flash. El ESP32-WROOM-32, por otro lado, funciona con dos núcleos de CPU hasta un máximo de 240MHz.

El segundo núcleo, sin embargo, es responsable de WiFi y, por lo tanto, solo debe usarse de forma limitada para aplicaciones multiprocesador. Al menos si usa la conexión de red. Además del chip WiFi b / g / n ligeramente más rápido, también hay un módulo Bluetooth 4.2 que admite BLE y modo normal. No medí el consumo de energía.

El ESP32 tiene sus ventajas. Sobre todo, su diseño compacto, que es incluso más pequeño que el de los otros DevKits, pero tiene las mismas propiedades:

(de izquierda a derecha: ESP32 Devit C V4, ESP32 NodeMCU, ESP32 D1 Mini NodeMCU)

Muchos detalles sobre el D1 Mini ESP8266 también se pueden encontrar en el Manual o en gratis Libro electronico. Puede encontrar información sobre el ESP32 D1 Mini NodeMCU en el Página de la tienda AZ-Delivery.

Finalmente, un ejemplo práctico

Dependiendo de cuál de las miniplacas estemos usando, también tenemos la opción de usar Bluetooth además de la conexión wifi. Digamos que tenemos un proyecto planeado para el que necesitamos una de las pequeñas placas de desarrollo. Tenemos ambos disponibles y queremos usar Display Shield sin importar qué placa elijamos. La pantalla debe mostrar si hay una conexión WiFi o Bluetooth. Esto debería estar representado por dos iconos.

Si una de las conexiones se interrumpe o se restablece, la imagen correspondiente debe mostrarse o no. Al establecer la conexión WiFi, el logotipo debe estar animado. Dado que el ESP8266 no tiene Bluetooth a bordo, debemos asegurarnos de que se muestre en la pantalla.

Escribí un pequeño programa para esto. Diferencia entre ESP32 y ESP8266. También se pueden utilizar las tablas más grandes. Entonces no se limita a los minis. Sin embargo, las placas AVR (Arduino Uno, Nano, Mega, etc.) están excluidas porque no hay suficiente memoria y no hay WiFi ni Bluetooth.

La secuencia del programa prevé la inicialización de Wifi, Bluetooth (si ESP32) y la pantalla. Creé varias imágenes como iconos y las convertí a XBM. Si desea crear sus propias imágenes, puede hacerlo con la función de exportación del programa de gráficos gratuito GIMP. yo tengo este sitio web usé y exporté mis PNG creados a XBM. Para el logotipo de wifi, creé tres imágenes que declaré en el boceto de Arduino como una matriz de matrices de mapas de bits.

Esto me permite caminar sobre él con un bucle. Esto permite la animación con un código fuente más corto. Para el logotipo de bluetooth, creé dos matrices de mapas de bits independientes. Una vez con el logo y una vez con la nota "no BT" si no hay Bluetooth a bordo.

Si el módulo de desarrollo ESP32 está seleccionado en el menú "Herramientas" del IDE de Arduino, encontrará el punto en los ejemplos. BluetoothSerial. El ejemplo SerialToSerialBT sirve como plantilla de código fuente para intercambiar datos entre PC y ESP32. Puede instalar la aplicación "Serial Bluetooth Terminal" en su teléfono inteligente. Luego podemos enviar mensajes de chat entre el teléfono inteligente y la PC.

Todavía tenemos que agregar una forma de reconocer si el socio Bluetooth está conectado o no al ejemplo. Tengo una solución para esto este sitio web que he integrado en el ejemplo de BluetoothSerial. Se implementa una función de devolución de llamada para este propósito:

vacío llamar de vuelta (esp_spp_cb_event_t evento, esp_spp_cb_param_t * param) {
  Si(evento == ESP_SPP_SRV_OPEN_EVT) {
Serial.println ("Cliente conectado");
  }
 
  Si(evento == ESP_SPP_CLOSE_EVT) {
Serial.println ("Cliente desconectado");
  }
}

el en preparar() se inicializa:

SerialBT.register_callback (devolución de llamada);

Esto entonces funciona como una rutina de servicio de interrupción (ISR). Como debería haber muy poco código de programa allí, solo cambiaré una variable allí. Todos los comandos relacionados se llevan a cabo en el exterior.

Para la presentación en la pantalla, utilicé los ejemplos de la biblioteca U8G2 como fuentes. También hay ejemplos para la conexión WiFi.

Puede descargar el boceto terminado aquí: Descarga el programa terminado

Cambié la conexión wifi para que la inicialización no funcione en preparar()pero en el lazo () se lleva a cabo. Se debe distinguir allí si el programa se inició por primera vez y se inicializó Wifi. O si la conexión WiFi ya existía y se debe realizar una reconexión. La inicialización y animación del logotipo en la pantalla no se bloquea.

Mostramos dos logotipos. Si se establece o rompe una de las conexiones, solo se debe cambiar la parte de la pantalla. Hay un ejemplo de cómo updateDisplayArea()Función. Pero no funcionó en mi caso. Posiblemente porque utilizo mapas de bits en lugar de texto y figuras geométricas. Así que tuve que expandir el código fuente. Puede parecer un poco confuso. Cada vez que muestre uno de los logotipos, debe preguntar si el otro tiene que ser mostrado.

No olvides introducir tus datos De Wi-Fi en la parte superior del código fuente antes de compilar y cargar el boceto.

Descargue el programa en el ESP32 D1 Mini y, a continuación, abra el Monitor serie. Si no ha introducido ningún dato Wi-Fi correcto, el programa intentará permanentemente establecer la conexión. Sin embargo, la conexión Bluetooth no está bloqueada. Así que podemos conectar el BT al dispositivo "ESP32test" en el teléfono inteligente. A continuación, abrimos el terminal Bluetooth serie y nos conectamos al ESP32.


En el PC en el monitor serie, debemos obtener una pista para la conexión exitosa y el OLED debe mostrar el logotipo de Bluetooth.


Si nos desconectamos, el logotipo debería desaparecer de nuevo. Ahora podemos intercambiar mensajes de texto. Escriba algo en el PC en la entrada del monitor serie o en la entrada de texto del terminal Bluetooth serie. El ESP32 seguirá intentando establecer la conexión Wifi. Si ha introducido los datos de Wi-Fi correctos, el logotipo de Wifi se mostrará de forma permanente.


Si carga el mismo programa en el ESP8266, la nota "no BT" debe mostrarse permanentemente en el lado derecho de la pantalla. El reemplazo a través de Bluetooth no es posible debido a la falta de módulo Bluetooth.


Por supuesto, puede adaptar los módulos Wifi y Bluetooth que faltan externamente. Sin embargo, sólo me refiero a las variantes a bordo. Sólo me conecté a la red Wi-Fi, pero no he intercambiado más datos. Echa un vistazo a los ejemplos de Wifi.

Ahora puede ver y actualizar el estado de la conexión Wifi y Bluetooth en la pantalla. Es posible intercambiar datos del sensor con otros dispositivos a través de las dos conexiones. Donde el OLED le muestra si tiene o no la conexión correcta.

Si tienes otros escudos para el D1 Mini ESP8266, también deberías poder usarlos en el ESP32 D1 Mini. Aseegurese que la asignación del pin es correcta si no es los pines fijos para la interfaz SPI o I2C.


Diviértete haciendo manualidades.

Andreas Wolter

para AZ-Delivery Blog

 

DisplaysEsp-32Esp-8266Projekte für anfänger

4 comentarios

Peter von Deparade

Peter von Deparade

Befasse mich erst seit kurzem mit dem Arduino aus Interesse und finde diesen Beitrag sehr hilfreich für die nächsten Experimente. Super

Nils Sappok

Nils Sappok

Da ich noch sehr neu an der Sache bin, die Bauteile von letztem Jahr jedoch schon staub sammeln, vielen Dank für diesen Blog!
An das OLED hatte ich mich noch nicht getraut.
Ich habe es erst mal mit dem LCD versucht, da ein CO2-Sensor für meine Frau und meine Tochter als Lehrer sinnvoll ist:
https://www.instructables.com/Corona-Beginners-Arduino-CO2-Measuring-and-Ampel-D/

Ich weiß, dass ich noch so gut wie keine Ahnung habe, aber es hat sehr viel Spass gemacht und auch definitiv Lust auf mehr!
Das CO2-Messgerät mit einem OLED wäre natürlich noch viel cooler und dann noch mit Web-Server-Historie….
Es gibt soooo viele coole Sachen und Möglichkeiten….
….und Ihr macht’s möglich!

Viele Grüße aus Heidelberg,
weiter so und bleibt gesund,
Nils

Claus Kühnel

Claus Kühnel

Toller Beitrag mit grundlegenden Funktionen, die angepasst wieder in eigene Programme übernommen werden können.

Peter Stauffert

Peter Stauffert

Das Battery Shield für D1 Mini funktioniert auch problemlos mit dem ESP32 D1 Mini, damit kann man einen ESP32 D1 Mini auch mit einem LiPo betreiben. Da bei dem Battery Shield auch alle Pins durchgeschleift werden, kann man es auch zwischen den ESP32 D1 Mini und das OLED Display stecken

Deja un comentario

Todos los comentarios son moderados antes de ser publicados