Tabla de contenido:

Cómo usar Bluetooth (BLE) con ESP32: 3 pasos
Cómo usar Bluetooth (BLE) con ESP32: 3 pasos

Video: Cómo usar Bluetooth (BLE) con ESP32: 3 pasos

Video: Cómo usar Bluetooth (BLE) con ESP32: 3 pasos
Video: 🟢Conectar ESP32 con Bluetooth 2024, Junio
Anonim

#####NOTA#####

El método que se muestra en este Instructables es antiguo y está desactualizado. Mire este video para conocer el método más reciente.

###############

Si bien el ESP32 cuenta con una extensa lista de funciones (Wikipedia), la característica más importante que llama la atención es el bluetooth v4.2 incorporado con soporte BLE. Pero esa afirmación puede ser engañosa, mientras que el hardware está ahí, falta el soporte de software para usar Bluetooth. (Está en desarrollo)

Para aquellos que no saben qué es BLE, significa Bluetooth Low Energy. Es un protocolo bluetooth que aumenta considerablemente el consumo de energía en comparación con el Bluetooth "clásico".

En este Instructables, le mostraré cómo puede usar los recursos limitados (de software) a su disposición para enviar datos desde una placa ESP32 a su teléfono a través de BLE.

Algunas exenciones de responsabilidad …

Algunas cosas importantes que debo mencionar antes de continuar con esta guía.

Nota 1: Cuando digo que la compatibilidad con Bluetooth aún no está disponible, me refiero al entorno de desarrollo de arduino.

Es posible que el soporte esté disponible en el SDK oficial, así como en el IDF, pero no he encontrado ninguna instrucción competente para ellos.

Nota 2: El método que estoy usando es en gran medida una solución alternativa y no cómo se supone que funciona idealmente BLE. Los soportes de la biblioteca para crear servicios en BLE no están aquí para el entorno arduino.

Lo único que puede hacer de manera confiable es crear una baliza que anuncie su nombre. Un comentario de YouTube lo expresó con mucha elegancia: "LOL, un hack brutal. ¿Pero qué puedes hacer?"

Nota 3: el único tipo de datos que puede enviar es una cadena.

Es muy posible que decida codificar y decodificar otros tipos de datos hacia y desde cadenas, pero eso está más allá del alcance de esta guía.

Paso 1: la compilación de ejemplo

Image
Image
La compilación de ejemplo
La compilación de ejemplo
La compilación de ejemplo
La compilación de ejemplo
La compilación de ejemplo
La compilación de ejemplo

Si solo está aquí para la explicación, puede omitir este paso, pero seguirlo puede brindarle un poco más de claridad.

Primero voy a crear un proyecto de ejemplo y luego intentaré explicar cómo funciona y cómo se puede replicar la comunicación Bluetooth. Construiremos un sensor de temperatura portátil que envía una transmisión en vivo a su teléfono inteligente. La compilación puede ejecutarse durante días con una sola li-po y demuestra fácilmente los beneficios de BLE.

Puede utilizar el módulo como posavasos para aislar sus bebidas y recibir una notificación tan pronto como su bebida alcance la temperatura óptima. Porque sería una farsa si tuvieras que beber un té con un grado superior a los 40.

El único hardware que necesita es una placa ESP32 y un sensor de temperatura digital. Mi placa admite batería externa, por lo que estoy usando un li-po de 3.7v que recuperé de un dispositivo antiguo para hacer que este proyecto sea portátil.

Hardware

Las conexiones para el sensor de temperatura son sencillas. El cable rojo se conecta a 3.3v, el negro se conecta a tierra (gnd), el amarillo se conecta a GPIO 2 que en mi placa está marcado como D9. Conecte una resistencia de 4.7k ohmios entre el cable rojo y amarillo. No estoy usando la resistencia, en su lugar estoy usando un terminal enchufable de 3 pines que vino con mi sensor. Tiene una resistencia pull up incorporada.

El li-po realmente debería estar conectado usando un conector JST, pero no podía molestarme en comprar uno, así que simplemente calcé algunos cables de puente (hembra a hembra) en el conector y soldé otro par a los terminales de la batería. Esto lo convierte en una conexión confiable y un interruptor de alimentación improvisado.

Ahora, como cerramiento del proyecto, estoy usando un disco de poliestireno que se ha recortado de una hoja más grande. Esto lo convierte en un gran aislante. Otro disco mucho más pequeño está atascado en la parte superior pero un poco hacia un lado. Esto es para envolver la longitud adicional de los cables para que no cuelguen por todos lados. Después de un uso generoso de su pegamento y un pequeño orificio para la sonda del sensor, está listo para continuar con el software.

Software

Si aún no tiene el IDE de arduino instalado, vaya a este enlace para descargarlo. El software arduino por defecto no viene con las definiciones de placa para las diversas placas ESP32. Para que vayan a este enlace y descarguen los archivos en un zip. Debe descomprimirlos en esta ubicación:

C: / Usuarios // Documentos / Arduino / hardware / espserrif / ESP32

¿Dónde está su nombre de usuario en su PC? Asegúrese de que los distintos archivos estén disponibles en la carpeta ESP32 y no en otra carpeta.

Ahora, si inicia el software arduino y va a herramientas-> tableros, debería ver varios tableros ESP32 cuando se desplaza hacia abajo.

La mayoría de los sensores de temperatura digitales utilizan el protocolo OneWire para comunicarse con los microcontroladores, por lo que necesitamos obtener la biblioteca. Vaya a sketch-> incluir biblioteca-> administrar bibliotecas y busque onewire e instale la biblioteca que tiene demasiados autores. No necesita el concentrador onewire. Ignoralo.

Ahora puede descargar y abrir el código adjunto a este paso (temperature-example.ino).

Si está utilizando un sensor diferente al mío, tendrá que cambiar el código en consecuencia. Reemplace el código debajo de getTemp (). Simplemente devuelva la temperatura final en forma de

Regreso;

¿Dónde está el flotador que contiene la temperatura?

Conecte la placa, seleccione la placa y el puerto correctos de debajo de las herramientas y presione cargar.

Si el código se niega a cargar, desconecte el sensor y conecte el GPIO 0 a tierra. Restaure las conexiones después de la carga.

Tu ESP debería estar gritando la temperatura de tu café al mundo, pero necesitas a alguien que pueda entenderlo.

La aplicación de Android

Lo siento, usuarios de iPhone (… no realmente).

Descarga el apk desde aquí e instálalo. Cuando inicie la aplicación, será recibido con una interfaz muy simple.

Si recibe un mensaje de error que dice 'publicidad no compatible', haga clic en Aceptar e ignórelo, pero si recibe un mensaje que dice 'BLE no es compatible', entonces su teléfono no tiene Bluetooth 4.0 o superior y no podría funcionar la aplicación.

Asegúrese de que el Bluetooth de su teléfono esté encendido y haga clic en "Iniciar escaneo", siempre que el esp esté dentro del rango y encendido, debería recibir algún valor de temperatura.

Posibles errores:

  • -1000:: Esto significa que su dispositivo no pudo encontrar el ESP. asegúrese de que Bluetooth esté activado e intente reiniciar el ESP.
  • SNA:: Esto significa que su teléfono está recibiendo datos del ESP pero el ESP en sí no pudo encontrar un sensor de temperatura en el GPIO 2. Asegúrese de que las conexiones sean seguras, vea si está usando una resistencia del valor correcto. Verifique con los esquemas de su placa que está conectado al GPIO 2 y no a un pin marcado como D2.

Paso 2: la explicación

La forma en que BLE funciona normalmente es que un dispositivo anuncia su nombre como una baliza, este nombre puede ser visto por cualquier persona y se usa para identificar el dispositivo. Luego, el dispositivo puede crear varios servicios que son vistos por otros cuando se conectan a él. Estos servicios pueden tener diferentes flujos de datos.

Por ej. Un dispositivo llamado "Estación meteorológica" puede recibir mantenimiento debajo de él, como "Temperatura", "Humedad" y "Viento". Cuando otro dispositivo BLE como su teléfono inteligente busca dispositivos, verá la estación meteorológica y cuando se conecte a ella, podrá recibir los flujos de datos correspondientes a los diferentes servicios.

Las bibliotecas (para el ESP32) que están actualmente disponibles para nosotros nos permiten crear una baliza que otros pueden descubrir, pero eso es todo. No podemos crear servicios ni ningún dispositivo puede conectarse a él.

Entonces, la forma en que envío datos sin crear servicios es mediante el empleo de una técnica similar al protocolo WiFi llamado Beacon Stuffing. Esto significa que incluyo datos que se enviarán dentro del nombre de la baliza. Esto me permite anunciar datos sin necesidad de que otros dispositivos se conecten a la baliza.

ble.begin (beaconMsg); // beaconMsg es el nombre anunciado

Estamos usando la biblioteca SimpleBLE para crear una baliza con su nombre en el formato de ESP. Donde "ESP" siempre permanece sin cambios al comienzo del nombre y se reemplaza con los últimos datos devueltos por la función getValue () cada 100 milisegundos.

float getValue () {return sensorValue;}

La aplicación de Android busca nombres de dispositivos BLE que comiencen con "ESP", una vez encontrados, divide el nombre y solo muestra los datos del final.

La comunicación es unidireccional, la aplicación no devuelve nada.

Paso 3: Conclusión

Al final del día, este método no reemplaza una biblioteca BLE implementada correctamente, pero podría ser suficiente para superar algunos proyectos hasta que el soporte BLE completo llegue a Arduino. Esperamos que este Instructables te haya sido de ayuda.

Un GRAN agradecimiento a DFRobot.com por enviarme estos productos:

  • Tablero de escarabajo de fuego ESP32
  • Escudo de expansión de escarabajo de fuego
  • Sensor de temperatura DS18B20

Recientemente encontré esta biblioteca. El Léame afirma que puede conectarse a otros dispositivos BLE para recibir datos (no puede anunciarse). No lo he probado, pero puedes comprobarlo si estás interesado.

Puedes ver el video del proyecto en: YouTube

Recomendado: