Application communication ESP32

Bonjour,

Je suis en train d'apprendre le Java et, j'ai du mal avec la partie Bluetooth.

Je cherche d'abord à faire fonctionner le bluetooth de l'ESP32 et de créer un échange avec mon télephone.
Je voudrais savoir si vous connaissiez un tuto ?

J'ai essayé en vain les différents programmes BLE dans les Examples de l'IDE Arduino et j'ai téléchargé une appli "NRF"

Si une âme charitable passe, thx

Bonjour

Pour un premier test de communication BLE je propose :
-l'exemple BLE-Uart côté ESP32
-l'application Serial Bluetooth Terminal sur Android (elle gère l'émulation série en BT Classique et en BLE)

Avec les outils de Nordic Semiconducteur ?
je ne suis pas certain que ça fonctionne avec nRF UART.
Avec nRF Connect ça n'est pas très convivial car il faut travailler au niveau des caractéristiques dans le bon service.

Bien entendu il y App Inventor mais le recours à ce genre d'outil facilitateur ne correspond peut être pas à l'objectif recherché. (BLE en apprentissage Java ?)

Merci pour les informations. Et pour l'application je ne cherche pas de faciliter, je veux le faire moi même en java (via Android Studio).

Pour le programme, je l'ai televerse sans problème mais sur l'appli, voici l'erreur :

19:01:34.647 Connecting to UART Service ...
19:01:35.186 Connection failed: no serial profile found ‑> use long click on device to define a custom profile

Mon téléphone n'arrive pas a s'y connecter.
Est ce normal ?

Enfaite, de ce que je comprends tu as plus un soucis coté java que arduino??

Si c’est plus un probleme d’application java ( android studio) ca va etre compliqué ici, car peu de monde connais ce language…
Ici ils utilisent en general app inventor

deja regarde sur google “android studio bluetooth arduino” tu trouves plein de cas d’exemple…

ce que tu peux faire dans un premier temps c’est de le faire sur app inventor ou une autre app android ( comme Serial Bluetooth Terminal) ou d’autre sur sur le playstore pour simuler les données que tu envois/reçois pour valider le coté arduino…

je te conseil d’aller sur des forum special androit studio…

je cherches a faire la meme chose sur android/Ios… mais j’utilise un language cross platform

Aurais-tu un code pour l'esp qui marcherait avec BLE uart ?

Bonjour
je viens de tester avec succès la communication entre :
-sur l’ESP32 : l’exemple BLE_uart
-sur le smartphone : soit nRF Connect , soit Serial Bluetooth Terminal (de Kai Moritch)

Dans le second cas (Serial Bluetooth Terminal) après avoir scanné en BLE, et après connection à “Uart Service” (nom sous lequel l’ESP32 s’annonce) je vois défiler les codes ASCII croissants emis par l’ESP32 et je peux également envoyer sur la ligne en bas de l’écran, des octets qui aparaissent ensuite dans le terminal Arduino
Screenshot_20181214-095505.png

Dans le premier cas (nRF Connect) après avoir scanné et après connection à “Uart Service” je déroule le Service Nordic UART et peux ensuite voire arriver (Value) les données succesives notifiées par la caractéristique TX de l’ESP32 , je peux également envoyer un octet vers l’ESP32 en écrivant sa valeur dans la caractéristique RX de l’ESP32 (cliquer sur la flèche sortante)
Screenshot_20181214-100042.png

L'application Bluefruit LE Connect d'Adafruit permet également d'échanger en mode UART avec un ESP32 exécutant l'exemple BLE_uart non modifié.

Il en est de même pour toute application smartphone reconnaissant la définition de l'émulation série BLE adoptée par Nordic Semiconductor. ( /!\ contrairement au Bluetooth Classic et son profil SPP standard , en BLE ce profil n'est pas défini , chacun le crée comme il veut avec son bouquet de Services et caractéristiques 'maison'. Il faudrait par exemple modifier l'exemple BLE_uart pour dialoguer avec un HM-10 , qui à 'sa' définition de l'émulation série.)

Bonsoir,

J'ai continué mes recherches hier et aujourd'hui.
Pour les trois applications Android, deux arrivent à se connecter à l'esp. Et la troisième Serial Bluetooth Terminal a le même problème. Sinon, je reçois des valeurs aléatoires ce qui est normal (enfin je suppose).

J'ai essayé un autre programme de l'IDE mais qui ne marche pas : SerialToSerialBT.

C'est dommage car, c'est ce que je cherche, j'envoie une commande Bluetooth et, l'esp me répond (en Bluetooth également).

Auriez-vous se code ?

Bonjour

Et la troisième Serial Bluetooth Terminal a le même problème. Sinon, je reçois des valeurs aléatoires ce qui est normal (enfin je suppose).

J’ai essayé un autre programme de l’IDE mais qui ne marche pas : SerialToSerialBT.

Il vaudrait mieux préciser quel Bluetooth tu veux utliser le Bluetooth ‘classique’ ou le Bluetooth ‘LE’. Les deux sont incompatibles et présentent d’importantes différences de protocole.

  1. En Bluetooth ‘LE’ j’ai montré plus haut avec des copies d’écran comment l’application Android Serial Bluetooth Terminal communique avec le sketch BLE_uart sur ESP32
    Les données reçues ne sont pas aléatoires elle proviennent de ce code dans loop() :
if (deviceConnected) {
        pTxCharacteristic->setValue(&txValue, 1);
        pTxCharacteristic->notify();
        txValue++;
		delay(10); // bluetooth stack will go into congestion, if too many packets are sent
	}

…d’ou les caractères successifs correpondant à un code ASCII croissant.
Pour avoir un autre comportement il faut modifier le code dans loop()

  1. en BT ‘Classique’ l’application Android Serial Bluetooth Terminal communique sans problème avec le sketch SerialToSerialBT une fois effectué l’appairage (indispensable en BT Classique)
    Aprèsl’ appairage se connecter à l’ESP32 (device ESP32test)
    IMG_20181216_105724.jpg
    tester ensuite l’envoi de caractère et le retour en echo distant (c’est ce que fais le code de SerialToSerialBT)
    IMG_20181216_105758.jpg

Re, alors pour commencer, j'ai réussi à me connecter à l'ESP avec serial terminal.

Après je voulais essayer le WIFI, tout marche niquel, je crée ma page et interagit avec des requêtes ce que je cherche à faire avec Bluetooth.

Le code SerialToSerialBT fait se qunil faudrait mais, même problème je n'arrive pas à m'y connecter.

Par contre, pourquoi celui-ci complètement différent des BLE_uart et autre ? Il est beaucoup plus simple ce qui n'est pas plus mal.

J'ai toujours des problèmes c'est bien dommage ^^

le message d'erreur '"gatt status....." pourrait indiquer que tu tentes de te connecter en Bluetooth Low Energy (BLE) à un ESP32 qui fonctionne en Bluetooth Classique (=sketch SerialToSerialBT)
L'appairage a-t-il eté effectué auparavant ? Si oui l'application Android devrait lister l'ESP32 parmi les devices 'BT Classiques' disponibles.

Il y a deux Bluetooth ditincts, l'ESP32 sait les utliser tous les deux.... à condition de ne pas confondre ou mélanger les 2 Bluetooth différents.
Les librairies pour ESP32/IDE Arduino (et leurs exemples) sont distinctes

BT Classique : SerialToSerialBT
BT LE : divers exemples dont BLE_uart

Simplicite ou complexité du code ?
En Bluetooth Classique, profil SPP, la complexité du code est cachée dans la librairie
En Bluetooth LE la complexité reste visible (avec la librairie actuelle) et il faut impérativement entrer dans le détail des "services et des caractéristiques"

Vous aviez raison, merci beaucoup !

Et pour finir, comment comparer :

if (SerialBT.available()) {
    test = SerialBT.read();
    Serial.write(test);
    if (test = "abc") {
      Serial.write("Ok");
    }
  }

un test d'égalité se fait avec == , pas =

J'ai également essayé ^^ mais cela ne marchait pas. En effet, L'IDE me renvoyer une erreur de comparaison.

Donc j'ai essayé test comme étant un string ou un char mais la comparaison ne marche pas. Alors que ceci marche très bien :

if (SerialBT.available()) {
char test = SerialBT.read();
Serial.write(test);
}

Le problème devient Hors Sujet, je vais poser ma question autre part.