Das zehnte Türchen

Hoy vuelve a haber un microcontrolador y es el ESP32. También en un paquete de tres. El ESP32 es el hermano mayor del ESP8266. Tiene una CPU de doble núcleo y 520 kByte de RAM. Tiene muchos más pines de E / S que pueden asumir casi cualquier función.
 
Por supuesto, como su hermano pequeño, el ESP32 tiene una implementación WLAN completa. Otro punto a destacar del ESP32 es su capacidad Bluetooth (Classic y BLE). En el proyecto de hoy queremos ver cómo puede comunicarse con el ESP32 desde un teléfono inteligente a través de Bluetooth.

Además del módulo ESP32 con flash de 4Mbyte, la placa de conexión DevKit C tiene un convertidor CP2102 serial a USB. Un regulador de voltaje de 3.3V alimenta la MCU. Al igual que con el ESP8266, el voltaje en las entradas no debe exceder el voltaje de suministro.


Para que podamos probar el resultado de nuestra comunicación Bluetooth, también necesitamos un LED, una resistencia en serie de 220 Ohm y un sensor que suministre una tensión de salida analógica. Por ejemplo un resistencia fotosensible.


Para el Smartphone necesitamos una aplicación que implemente un terminal Bluetooth en serie. Por ejemplo, “Serial Bluetooth Terminal”, que se puede encontrar de forma gratuita en Playstore para Android. También hay varias aplicaciones similares para Apple, pero no pude probarlas debido a la falta de Hardware adecuado.


El ánodo del diodo emisor de luz está conectado a la conexión de 3.3V de la placa a través de la resistencia en serie de 220 Ohm. Conectamos el cátodo directamente a la conexión GPIO14. Para la resistencia sensible a la luz, creamos un divisor de voltaje con una resistencia de 10 kOhm entre 3.3 V y GND. Alimentamos la tensión parcial a la entrada analógica GPIO35. El voltaje disminuirá al aumentar el brillo, ya que el valor de resistencia de la resistencia fotosensible disminuirá.

El programa está esperando datos de Bluetooth. Si un mensaje comienza con B, la duración de la pausa para parpadear se espera en ms. Si un mensaje comienza con R, el valor medido de la entrada analógica se envía a través de Bluetooth.

Antes de subir el boceto al Arduino IDE, tenemos que instalar el soporte para placas ESP32, si aún no lo ha hecho. En el Arduino IDE vamos a Preferences a través del menú File o simplemente con "Ctrl +;".

En el formulario, hacemos clic en el símbolo a la derecha del campo de entrada debajo del elemento "Additional board administrator URLs". Aquí ahora podemos ingresar la URL del administrador de la placa ESP32:

https://dl.espressif.com/dl/package_esp32_index.json


Una vez guardados los ajustes preestablecidos, llamamos al administrador de la placa a través del menú Tools-> Board: -> Board manager. Ingresamos “esp32” como término de búsqueda. Obtenemos la siguiente entrada, que instalamos.

  

Ahora podemos seleccionar una placa en el menú Tools-> Board: -> ESP32 Arduino menu. Usamos el ESP32 Dev Module. 

  

Cuando se instala el paquete ESP32, tenemos todo lo que necesitamos porque la biblioteca "BluetoothSerial" está incluida en el paquete ESP32. Entonces podemos compilar el boceto inmediatamente.

Download sketch


#include "BluetoothSerial.h" //Serielles Bluetooth-Interface
#define LED 14 //GPIO für die LED
#define SENSOR 35 //GPIO für den Analogeingang //Eine Instanz für das Bluetooth Interface anlegen
BluetoothSerial SerialBT; uint32_t last; //Zeitstempel für das Blinken
boolean stat; //Aktueller Zustand der LED
uint16_t tim; //Dauer für das Blinken void setup() {
Serial.begin(115200); //Serielle Schnittstelle starten
pinMode(LED,OUTPUT); //Pin für die LED auf Output setzen
last = millis(); //aktuelle Zeit merken
stat = false; //aktueller Zustand LED aus
tim = 1000; //Blinkdauer auf 1s
digitalWrite(LED,!stat); //LED auf aktuellen Zustand setzen
//! da LED bei LOW leuchtet
SerialBT.begin("ESP32test"); //Bluetooth Name des ESP32
Serial.println("Der ESP32 ist bereit. Verbinde dich nun über Bluetooth.");
} void loop() {
int msg;
uint8_t i;
char cmd;
char val[20];
uint16_t vali;
if (Serial.available()) { //Daten vom seriellen Monitor werden an das Smartphone gesendet
SerialBT.write(Serial.read());
} if (SerialBT.available()) { //Daten von Bluetooth
msg = SerialBT.read(); //erstes Zeichen lesen
i=0;
if (msg >= 0) cmd = msg; //war das Zeichen OK, wird es als Kommando gespeichert
//Zeichen für Zeichen lesen solange welche vorhanden sind oder bis der
//Buffer voll ist
while ((msg >= 0) && (i<20)) {
msg = SerialBT.read();
if (i<20) val[i] = msg;
i++;
}    //Wert im Buffer in eine Zahl umwandeln
vali = atoi(val);
//Je nach Kommando
switch (cmd) {
//B die Blinkdauer ändern
case 'B': tim = vali; break;
//R einen Wert vom Analogeingang lesen und an das
//Smartphone senden
case 'R': vali = analogRead(SENSOR);                Serial.println(vali);
//gelesenen Wert in Zeichenkette umwandeln
sprintf(val,"%i",vali);
i=0;
//und Zeichen für Zeichen senden
while ((i<20) && (val[i]!=0)) {
SerialBT.write(val[i]);
i++;
}
//Zum Abschluss CR und LF senden
SerialBT.write(13);
SerialBT.write(10);
break;    }  } //Wenn die Blinkzeit abgelaufen ist, LED Zustand umkehren
if ((millis()-last) > tim) {
last=millis(); //Startzeit merken
stat = !stat;
digitalWrite(LED,!stat);
}
delay(25);
}

Ahora todavía necesitamos la aplicación para el smartphone. Esto se puede descargar e instalar fácilmente desde Playstore. En la configuración de Bluetooth del smartphone, tenemos que emparejar nuestro nuevo dispositivo. El dispositivo se llama ESP32test y se puede encontrar en la lista de dispositivos de uso poco frecuente. El emparejamiento debería ser fácil.

Ahora iniciamos la aplicación de Bluetooth Terminal. En el elemento de menú Devices, seleccionamos nuestro dispositivo. Ahora podemos establecer una conexión. Para hacer esto, hacemos clic en el símbolo con los dos enchufes separados en la parte superior derecha. El establecimiento de la conexión se registra en amarillo en la ventana del terminal.

Ingresamos el comando "B100" y lo enviamos para que el LED parpadee con 100ms. Luego ingresamos "R" como comando y el ESP32 debería responder con un valor medido después de que se haya enviado el comando.


El programa es solo un ejemplo de cómo usar Bluetooth con el ESP32. ¡Ahora es su turno!




Esp-32Specials

1 comentario

Markus Walsleben

Markus Walsleben

Daich selbst einen solchen genutzten ESP32 DevKit C nutze, kann ich sagen, dass ich das hier gezeigte Pinout deutlich übersichtlicher und verständlicher finde als das Stand Heute noch beim Produkt verlinkte Pinout.
Danke dafür!

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas