Cómo empezar con el ESP32
ESP32 es el nuevo chip inalámbrico más novedoso que ofrece radios Bluetooth y Bluetooth de baja energía, con procesadores de doble núcleo de 32 bits y periféricos empaquetados. Hemos recibido algunos desarrolladores de muestra de revisión, Adafruit y Seeed Studio los han estado haciendo disponibles durante un tiempo, y AI-Thinker, la compañía que produce los módulos ESP8266 más populares, lanzará la producción a gran escala el 1 de octubre. Esto significa que algunos de ustedes tienen el nuevo calor en sus manos ahora, y el resto de ustedes no tendrá que esperar más que unas pocas semanas más.
Como dijimos en nuestra revisión de primera mano del nuevo chip, muchas cosas están en un estado fluido en el lado del software, pero el proceso básico de escribir, compilar y grabar código en el chip permanecerá estable. ¡Es hora de comenzar con algunos tutoriales!
Descripción general
El módulo ESP32 viene cargado con una imagen ROM con un conjunto de comandos AT, al igual que lo hizo el ESP8266. Si desea desperdiciar el 95% del potencial de este chip usándolo como un módem de serie a WiFi glorificado, ¡está listo! Pero todos quieren profundizar, ¿no es así? ¡Así es!
El conjunto de herramientas para programar el ESP32 en C es bastante simple. Necesitará la biblioteca de software Espressif (esp-idf),
compilador cruzado y herramientas de construcción específicas para el chip (xtensa-esp32-*)
y la utilidad para disparar el archivo binario resultante al dispositivo. Lo guiaré para que piense en eso y luego compilaremos y arrancaremos la aplicación de demostración Espressif, y luego todo funcionará.
Montar la Ilche
Su primera parada es Espressif IoT Development Framework (
esp-idf
) GitHub. Recomendamos encarecidamente clonar el repositorio en su computadora local porque se actualiza con frecuencia y querrá mantenerlo actualizado. Aquí está el comando que funcionó en mi máquina Linux.
git clone --recursive https://github.com/espressif/esp-idf.git
Nota la recursive
una opción que extrae todos los submódulos de los que depende el marco: en este caso, algunas bibliotecas de blobs binarios en components/esp32/lib
y components/bt/lib
así como el esptool.py
un programa que realmente encenderá el chip por nosotros.
Si simplemente descarga el archivo zip de GitHub, se perderán estas piezas esenciales. Debido a los submódulos, también deberá realizar dos pasos para mantener todo actualizado. git pull
trabaja para el más alto nivel, y git submodule update --recursive
actualiza todos los submódulos.
Ahora ve a buscar la cadena de herramientas del compilador cruzado. Hay instrucciones para su sistema operativo particular dentro docs
. Para Linux, MacOS y Windows, la forma más rápida de comenzar es descargar el blob binario desde la ubicación que se indica en el archivo de configuración. Esto es especialmente cierto en Windows, donde la gente amable de Espressif ha empaquetado previamente todas las herramientas de línea de comandos que necesitará. Descargue el archivo zip de la herramienta, descomprímalo y ya casi está allí.
Variables ambientales, parte I
La computadora necesita saber dónde almacenó las combinaciones, y no importa qué sistema operativo use, debe informarlo. (Es 2016: ¿no puede mi sistema operativo simplemente encontrar y ejecutar los programas solicitados?) En Linux y Mac, export PATH=$PATH:/path/to/esp/xtensa-esp32-elf/bin
trabajará donde /path/to/esp
está en todas partes donde ha descomprimido el material digital de compilación cruzada. En Windows, puede establecer la ruta de forma permanente escribiendo export IDF_PATH="C:/path/to/esp-idf
en un archivo llamado C:/msys32/etc/profile.d/esp-path
o escribiendo el mismo comando de exportación cada vez que ejecuta C:msys32msys2_shell.cmd
.
Codificación, Rayo, ¡Hola Mundo!
En este punto, debe tener todas las herramientas juntas. Es hora de revisar la aplicación de la plantilla: git clone https://github.com/espressif/esp-idf-template
. Ahora solo abre una terminal, cd
en el directorio de la aplicación y escriba make
. No pasa nada.
Variables ambientales, parte II
Correcto, más caminos. El archivo MAKE en la aplicación de muestra necesita saber dónde está el marco del archivo MAKE principal (en esp-idf
) es encontrado. La documentación con la aplicación de plantilla sugiere definir una variable ambiental: export IDF_PATH=/path/to/esp-idf
. Esto es lo mismo en todos los sistemas en este momento. Es posible que desee escribir un script de shell o un archivo por lotes para hacer esto por usted e incluirlo en su proyecto.
Menuconfig
Una de las características realmente agradables del IDF es la configuración basada en menús. Las opciones del menú cambiaron a medida que revisamos el chip ESP32 a medida que se realizaron más funciones, y estamos seguros de que seguirá cambiando. Sin embargo, aquí puede controlar muchas de las configuraciones específicas de su plataforma: qué puerto TTY o COM usa, qué velocidad en baudios, qué velocidad le gustaría ejecutar en los núcleos del ESP32, etc. Preste atención a la "configuración de Flash serial" y mire al menos la "configuración del componente".
Debido a que este es un objetivo en movimiento, realmente no podemos darle muchos consejos que seguirán siendo válidos en una semana o dos. Solo querrá revisar cada entrada del menú y asegurarse de que coincida con su sistema. Los resultados de esta configuración, cuando presione la opción "Guardar", se guardarán en sdkconfig
expediente. Puede copiar esto entre proyectos si no desea volver a pasar por los menús.
Una cosa más
Ahora estás casi de pie. Si inicia la demostración ahora, no podrá conectarse a su red WiFi sin sus certificados. Abre el main/main.c
, busque los campos "SSID" y "contraseña" e ingrese los detalles de su red doméstica. Dado que esto es solo una prueba de la cadena de herramientas, es opcional, pero es bueno saber que el ESP32 puede estar en línea.
Rayo el chip
Con la configuración finalizada, está listo para conectar el puerto serie e iniciar el programa. Para poner el chip en el modo de cargador, debe mantener el modo de encendido activado,
GPIO0
, conectado a tierra al soltar el pin de habilitación, EN
. Si hace esto con una aplicación final en ejecución, verá escrito "esperando descarga". Cierre su programa de terminal, escriba make flash
, y luego vuelva a abrir la aplicación final y debería ver mucha información de depuración mientras intenta conectarse a su WiFi.
Ahora estás en el ciclo de la codificación, el flasheo y la depuración. Ciertamente, la aplicación de demostración no es realmente hacer nada. La cuestión es que, si ha llegado hasta aquí, puede compilar, disparar y ejecutar código en el dispositivo. ¡Y aquí está el primer paso!
Resumen
Ponerse en marcha es "fácil". Clonar el repositorio con el esp-idf
bibliotecas, descargue y descomprima la cadena de herramientas binarias y clone el programa de plantilla. Debe definir dos variables circundantes: una para la ruta a los archivos binarios de la herramienta y otra para la ubicación de las bibliotecas. Kuri make menuconfig
y make flash
dentro de la aplicación de la plantilla, y debes ir a las carreras.
Si está en un sistema Linux, aquí hay una configuración que hace todo lo mencionado en este tutorial. Cree una carpeta donde le gustaría instalar todo, copie este archivo allí, escriba . getESP32.sh
y míralo irse. Si ha instalado cosas antes, saca la última versión de todo de GitHub y redefine las variables circundantes por usted. Incluso si no quiere usarlo o tiene un diseño extraño, leerlo es una lista de verificación útil para asegurarse de tener todo resuelto. Avísame si no te funciona y lo solucionaremos.
Tenga en cuenta que, aunque esto parezca mucho trabajo, es todo un arreglo único. Para su próximo programa, simplemente copie la carpeta de demostración, ingrese main/main.c
y codificar. Dependiendo de cómo configure las cosas, es posible que deba configurar esas dos variables circundantes nuevamente (¡hacer un archivo de script / pegar!) Pero aquí está.
En cuanto al código, es más que un poco de magia negra que un microcontrolador de doble núcleo juegue junto con un sistema operativo en tiempo real. Si nunca lo ha hecho, ingresar al ESP32 será una experiencia de aprendizaje. Cubriremos FreeRTOS y algunas de sus convenciones de programación cuando se apliquen al ESP32 la próxima vez. Estén atentos y háganos saber en los comentarios si está probando esto o si desea ver algo más.
Mike Massen dice:
Gracias por el artículo, es bueno ver que se mueve rápido ...
Mucha gente ha comenzado a manejar un ensamblador para esto y ¿su enlace de compilador lo permite dentro de C, es decir, al menos podría escribir el encabezado con una C mínima significativa y escribir el código real todo en un ensamblador?
En este caso, el "modelo de programación" del chip es esencial, es decir, espacios de memoria utilizables, controladores / acumuladores de trabajo de la CPU,
puertos io, configuración del controlador dma, temporizadores, también cualquier canal de comunicación entre procesadores como su doble núcleo o si es completamente
compartido ya dentro de una necesidad mínima de "hilo", graciasSprite_tm dice:
Sí, maneja tanto reuniones en línea como independientes; p.ej. Siempre uso 'asm ("pause.n 1")' como un punto de interrupción decodificado improvisado. También tenemos un documento en línea que eventualmente contendrá todas las configuraciones y registros completos de todos los dispositivos laterales (antes WiFi y BT). El canal de comunicación en el hardware es básicamente que toda la memoria es accesible desde ambas CPU, aumentada por interrupciones entre CPU. FreeRTOS se ha actualizado para usar esto, y básicamente la programación de múltiples CPU es lo mismo que la programación en FreeRTOS para múltiples subprocesos; solo los subprocesos en sí pueden ejecutarse en diferentes CPU.
RW dice:
“El módulo ESP32 viene cargado con una imagen ROM con un conjunto de comandos AT, al igual que lo hizo el ESP8266. Si desea desperdiciar el 95% del potencial de este chip usándolo como un glorioso módem de serie a WiFi, ¡está listo! "
Puede que quiera hacer eso ... pero soy un tipo que piensa "¡Genial, tarjeta wifi para un piloto de palma!"
zeroflow dice:
Para esto, también puede tomar el ESP8266 más económico: use comandos AT para uso en serie o use el modo SDIO https://la-tecnologia.com/2015/12/09/raspberry-pi-wifi-through-sdio/
Naumy987 dice:
Estoy usando un módulo wifi por primera vez. Tengo el módulo y conectaré los pines RX, TX, VCC (3.3V), GND a través del cable ATEN y lo conectaré directamente a mi computadora para enviar comandos AT y usar WIFI. Como dijiste, “El módulo ESP32 viene precargado con una imagen ROM con un conjunto de comandos AT, tal como lo hizo ESP8266”, ¿puedo comenzar directamente enviando comandos AT?
Volumen dice:
¿Dónde puedo conseguir uno con una tabla de escape como base? Adafruit $ 15 .. agotado.
nemo dice:
Supongo que después de 1-2 meses por $ 7 en ebay / aliexpress con envío gratis desde China
M Lange (@errorad) dice:
Me muestra como "En stock"
Elliot Williams dice:
No tanto "dónde" como "cuándo". Y después de unas semanas es la mejor suposición.
Jeff dice:
Parece que estos chicos están enviando ahora. El gráfico dice pedido anticipado, pero su feed de tubos de Twitter dice envío https://www.gravitechthai.com/product_detail.php?d=1470
Volumen dice:
PD Gracias por el artículo 🙂
Tucson Tom dice:
Bela. Lo recordaré cuando aparezca mi hardware.
Squonk42 dice:
Cómo para comenzar con el ESP32, paso # 1: encuentre uno.
Espero que no dure tanto como el Pi Zero 😉
Timon dice:
El módulo 3212 ya está en AliExpress: https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20161004130001&SearchText=esp-32
Alastair DSilva dice:
Los pedí hace un mes, aún no se han enviado, dicen "el software no está listo"
siluxmedia dice:
Esperaré las explosiones a través de usb y desarrollador. Seguro que llegarán a mi casa antes que el PCB que tendré que encargar para utilizarlos. Saber que puedes comprarlo por 4,30 € está muy bien, gracias 🙂
Ian dice:
Aunque era un precio ridículo (no los $ 15, sino el envío a Australia), pedí uno de los adafruit, que acababa de regresar en stock. Tuve el mismo problema con el de alex: dijeron que estaba en stock, luego enviaron un correo electrónico extraño sobre el software que no estaba listo, luego me enviaron algo diciendo que se envió, pero ninguna de las cosas de seguimiento funciona ...
Así que puede que me haya costado 10 veces más de lo que debería, pero al menos sé que vendrá uno.
La razón por la que quiero tanto es ver si solucionaron el problema de la ventana ACK en el 8266, que parecía ser un cuello de botella real para hacer muchos paquetes pequeños rápidamente. Dicen que tienen el documento, pero yo gané "Creo Lo estoy probando y todavía no he encontrado a nadie que haya publicado una prueba. Fue la mayor decepción que tuve con el 8266 ..Morgan salvaje dice:
¡Realmente genial! Espero el soporte de Arduino IDE 🙂
Ian dice:
Odio el IDE ardunio en sí (es inútil a menos que esté haciendo un programa de una sola página) pero estoy de acuerdo en que las bibliotecas serían útiles, aunque (en papel) el esp32 parece tan útil que probablemente valga la pena el esfuerzo de usarlo directamente.
Si desea escribir cualquier tipo de programa que realmente haga cosas, use el eclipse, porque funciona con arduio, 8266 y esp32.Morgan salvaje dice:
Utilizo muchas placas Arduino y chips ESP8266. Este IDE no es perfecto en absoluto, pero es muy bueno cambiar entre estas plataformas. También es la forma más rápida. 🙂
Ian dice:
Encuentro un eclipse MUCHO más rápido porque también puede cambiar entre placas y es un entorno de desarrollo adecuado ... Puedo escribir algo y compilarlo / enviarlo a arduio o 8266, a menudo sin cambiar el código fuente ... Simplemente no puedes escribir Cualquier cosa compleja en el arduino ide, está realmente diseñada para programas simples de una página, no algo que haya sido diseñado y difundido adecuadamente a través de muchas clases reutilizables.
Intentar escribir algo más que un simple programa con el ide ardunio sería realmente doloroso y difícil de depurar.
AdamJP dice:
No esperes más ... https://github.com/espressif/arduino-esp32
Chris Garrett dice:
No puedo esperar a MicroPython en estos 🙂
Ian dice:
Y mi adafructo llegó hoy aquí (Aus). ¿Y lo creerías? La * $$ # @% $ ^ gente increíble de adafruit ha agrandado el tablero UNO más ancho que el tablero nodemcu, por lo que NO ENCAJA ahora en un tablero estándar ...
Movers inteligentes, aunque estoy de acuerdo (dado el ancho de esp32), puede tomar un poco de trabajo hacerlo un poco más estrecho ...Elliot Williams dice:
OTOH, es lo suficientemente ancho como para abarcar dos placas de prueba una al lado de la otra. Al menos eso es lo que hago.
Ian dice:
si yo hago lo mismo, solo molestarse! Significa que ocupa más escritorio 🙁
Gandul dice:
Para quienes viven fuera de los Estados Unidos, el envío es bastante caro si se solicita a adaFruit por tan poco precio.
ESP 32 está disponible para reservar en BanggoodIan dice:
sí, pero ¿por qué la fruta es tan cara, en realidad LLEGÓ? donde ninguna de las otras que pedí en ningún lugar se ve ni siquiera cerca de aquí ...
Ritesh Prajapati dice:
Hola,
Tengo una placa de desarrollo ESP32 Demo V2 y quiero comenzar a desarrollar cosas ESP32 al respecto.
También planeamos usar un chip ESP32 en uno de nuestros productos.
Entonces, este ESP-idf es solo un RTOS SDK que necesito usar para comenzar el desarrollo en este chip. ¿Es eso correcto?
Además, ¿hay algún manual de API de usuario para este SDK?
Saludos,
Ritesh PrajapatiColin dice:
https://www.olimex.com ›Productos› Internet de las cosas
Mohamed dice:
Hola
El enlace https://github.com/espressif/esp-idf/blob/master/docs/windows-setup.rst parece no responder.
¿Hay algún enlace actualizado para ello?Gracias
gustavovelascoh dice:
Aquí está la búsqueda que está buscando: https://github.com/espressif/esp-idf/blob/master/docs/get-started/windows-setup.rst
Parece que algunos caminos han cambiado en el rap github.
Fll dice:
Me equivoco
toolchain-20170918 / msys32 / usr / lib / gcc / i686-pc-msys / 6.3.0 / cc1.exe: Error al cargar bibliotecas compartidas: msys-isl-15.dll: No se puede abrir el archivo de objeto compartido: no es un archivo o carpeta
¿Dónde puedo encontrar el archivo?Mike Massen dice:
Mmm, supongo que ya hiciste una búsqueda básica en el disco con comodines,
luego verifique el Origen, es decir, la Fuente de cualquier cosa que pueda estar tan cerca del
fuente de la información que obtuvo ... Por cierto: una simple búsqueda en Google encuentra esto: -
https://github.com/Alexpux/MSYS2-packages/issues/521
Puhl dice:
Gracias por este artículo !! Necesito algunos cambios en python2 y reiniciar, luego funciona bien.
BILAL MALIK dice:
un curso completo de esp32 con guía paso a paso 90% de descuento a través de este enlace
https://www.udemy.com/iot-esp32-arduino-ide-practical-projects/?couponCode=PAKMICROAleksejs Ivanovs (@AleksejsIvanovs) dice:
Los enlaces a documentos están inactivos, por ejemplo https://github.com/espressif/esp-idf/blob/master/docs/linux-setup.rst
Prashant Dabholkar dice:
Puede seguir las instrucciones en https://docs.espressif.com/projects/esp-idf/en/stable/get-started/linux-setup.html