js-ble-esp32

# [Envoi de données de JS à ESP32 avec BLE](https://qypol342.github.io/js-ble-esp32/demo_async.html) [English README 🇬🇧](/js-ble-esp32/README_EN.html)

🎯 Objectif

L’objectif de ce projet est d’avoir le code minimum pour communiquer avec esp32 avec du Bluetooth BLE depuis son navigateur. Parce que le projet se repose sur le navigateur cela fonctionne aussi sur mobile.

⚠️ Attention

L’api Bluetooth n’est pas encore supporté par beaucoup de navigateurs. Pour l’instant seuls les navigateurs avec le moteur Chromium sont compatibles. Mais cela n’est pas un probleme sur mobile (PWA)

👉 Prérequis

Vous avez besoin d’un Esp32 évidemment, de l’IDE Arduino pour téléverser le code et finalement d’un serveur web (dans mon cas j’ai utiliser npm avec la commande npx serve)

📋 Installation

Cloner le projet sur votre machine </br> Téléverser le .ino sur votre Esp32 </br> Assurez vous que le chemin du serveur web correspond bien à la racine de ce projet Lancer votre serveur web ( exemple npx serve )

📐 Bluetooth BLE structure

Le protocole fonctionne avec des services et des caractéristiques. Cette structure est très similaire à celle d’une bibliothèque, les services sont des étagères, on y range donc les livres des mêmes auteurs et du même genre. Les caractéristiques sont comme des livres on les ranges dans les mêmes services si il propose le même type de donnée ou que les données ont le même objectif.

Voici la structure créée dans ce projet:

Dans cette exemple characteristicRandNb est un seul octet, alors que characteristicLed est un table de 2 octet. L’objectif est de contrôler la led (l’allumer et l’éteindre).

🚀 Utilisation

Un fois la page web chargée et l’Esp 32 alimenté, cliquez sur connect, si votre navigateur est compatible un petit page va soucrir où vous allez pouvoir choisir l’appareil. Une fois l’appareil choisi et la connexion réussit les autres boutons sont activés. Avec le bouton Read vous pouvez lire characteristicLed qui est un tableau de 2 octets. Avec le bouton Write vous pouvez écrire sur characteristicLed. Le code envoyé lorsque vous cliquez sur Write change entre ces deux tableaux: Une fois [42, 35] un fois [42,2]. </br> Dans le code de l’arduino si le deuxième élément du tableau est un 2 alors la LED s’allume. Pour confirmer cet événement, il change la première valeur du tableau, il la met à 23. L’Esp 32 va a chaque révolution modifier la valeur de characteristicRandNb avec un nombre aléatoire compris entre 0 et 11. </br> Avec le bouton Notify sur la page web vous pouvez vous abonner au changement de valeur. A chaque changement, la nouvelle valeur sera affichée dans la console.</br> Finalement le bouton Disconnect qui parle de lui-même permet de déconnecter l’appareil. Dans cette configuration l’Esp 32 peut être connecté à un seul appareil à la fois.

📚 Documentation

Librairie arduino BLE

Google BLE Guide

Data needed

Note video

to redo