Aujourd'hui, il existe à nouveau un microcontrôleur et c'est l'ESP32.
L'ESP32 est le grand frère de l'ESP8266. Il dispose d'un processeur Dualcore et de 520 kByte de RAM. Il possède beaucoup plus de broches d'E/S, qui peuvent prendre en charge presque toutes les fonctions.
Bien sûr, l'ESP32, comme son petit frère, a une implémentation WLAN complète. Un autre point fort de l'ESP32 est sa capacité Bluetooth (Classic et BLE). Dans le projet d'aujourd'hui, nous allons donc examiner comment communiquer avec ESP32 via Bluetooth à partir d'un smartphone.
En plus du module ESP32 avec 4Mbyte Flash, le DevKit C Breakout Board possède un convertisseur CP2102 série vers USB. Un régulateur de tension de 3,3V alimente le MCU. Comme pour la norme ESP8266, la tension aux entrées ne doit pas dépasser la tension d'alimentation.
Afin de tester le résultat de notre communication Bluetooth, nous avons également besoin d'un LED, d'une résistance en série de 220 ohms et d'un capteur qui fournit une tension de sortie analogique. Par exemple, une résistance photosensible.
Pour le smartphone, nous avons besoin d'une application qui implémente un terminal Bluetooth en série. Par exemple "Serial Bluetooth Terminal", que l'on peut trouver gratuitement pour Android dans le Playstore. Pour Apple, il existe également plusieurs applications similaires, mais je n'ai pas pu les tester par manque de matériel approprié.
L'anode du LED est branchée à la connexion 3,3V de la carte via la résistance en série de 220 Ohm. La cathode est connectée directement au connecteur GPIO14. Pour la résistance photosensible, nous créons un diviseur de tension avec une résistance de 10 kOhm entre 3,3V et GND. Le diviseur de tension est connecté à l'entrée analogique GPIO35. La tension diminue avec l'augmentation de la luminosité, car la valeur de la résistance photosensible diminue alors.
Le programme attend les données de Bluetooth. Si un message commence par B, la durée de la pause pour le clignotement en ms est prévue. Si un message commence par R, la valeur mesurée de l'entrée analogique est envoyée via Bluetooth.
Avant de télécharger le plan dans l'IDE Arduino, nous devons installer le support pour les cartes ESP32, si ce n'est déjà fait. Dans l'IDE Arduino, on va dans les préférences via le menu Fichier ou simplement en appuyant sur "Ctrl+ ;".
Dans le formulaire, nous cliquons sur le symbole à droite du champ de saisie sous le point "URLs supplémentaires de l'administrateur du forum". Ici, nous pouvons maintenant entrer l'URL de l'administrateur du forum ESP32 :
https://dl.espressif.com/dl/package_esp32_index.json
Après avoir sauvegardé les préréglages, nous appelons le gestionnaire du conseil d'administration via le menu Outils->Conseil d'administration:->Gestionnaire du conseil d'administration. Comme terme de recherche, nous tapons "esp32". On obtient l'entrée suivante, que l'on installe.
Nous pouvons maintenant sélectionner un tableau dans le menu Tools->Board:->ESP32 Arduino. Nous utilisons les modules de développement ESP32.
Si le paquet ESP32 est installé, nous avons tout ce dont nous avons besoin, car la bibliothèque "BluetoothSerial" est incluse dans le paquet ESP32. Nous pouvons donc établir le schéma immédiatement.
#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.");
} oid 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);
}
Maintenant, nous avons toujours besoin de l'application pour smartphone. Il peut être facilement téléchargé et installé sur le Playstore. Dans le réglage Bluetooth du smartphone, nous devons associer notre nouvel appareil. L'appareil s'appelle ESP32test et se trouve dans la liste des appareils rarement utilisés. Le appariement devrait être facile.
Nous allons maintenant lancer l'application Terminal Bluetooth. Dans le menu Appareils, nous sélectionnons notre appareil. Nous pouvons maintenant établir une connexion. Pour ce faire, on clique sur le symbole avec les deux fiches séparées dans le coin supérieur droit. L'établissement de la connexion est enregistré dans la fenêtre du terminal en lettres jaunes.
Nous entrons la commande "B100" et l'envoyons pour faire clignoter le LED pendant 100ms. Ensuite, nous saisissons "R" comme commande et ESP32 doit répondre avec une valeur mesurée après l'envoi de la commande.
Le programme n'est qu'un exemple de l'utilisation de Bluetooth avec ESP32. Maintenant, c'est à votre tour !
1 commentaire
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!