On trouve très peu d'information et de code pour les nouvelles cartes Arduino avec le Bluetooth Low Energy intégré, contrairement aux cartes ESP32, je mets donc à disposition les différents codes de tests et toutes informations utiles.Présentation et cas d'utilisation:Un beacon est une petite balise bluetooth low energy permettant d'interagir avec un utilisateur possédant un smartphone et l'application adéquate afin de proposer différents types de services publicitaires, notamment de proposer des offres pertinentes de coupons, de promotions ou d'informations liées à des enseignes.
Leur usage est principalement commerciale même s'il peuvent être utilisés à d'autres fins.
La technologie Beacon nécessite la gestion d'une base de donnée afin de traiter les informations issues de ces balises et leur donner un sens, sauf dans le cas des URL (Eddystone, type de trame URL, anciennement URIBeacon) qui génère un lien web.
4 types de Beacons:iBeacon (Propriétaire APPLE) - 1 seul type de trame, très répandu [2013]
AltBeacon (Ouvert Radius Network, compatible APPLE) - 1 seul type de trame, peu répandu [2014]
Eddystone (Ouvert Google) - 4 types de trames URL, UID, TLM et EID - récent se développe, différent des formats précédents [2015]
GeoBeacon (Ouvert Tecno-World) Géolocalisation exclusivement, utilise le format NAC-Adress (Natural Area Coding System) [2017]
Le beacon diffuse de l'information (en Broadcast) sans avoir a se connecter (donc tout le monde y a accès), on peut changer l'information suivant une heure donnée, arrêter la diffusion, la reprendre etc.., différents exemples seront donnés pour le iBeacon et le AltBeacon, il n'est pas possible d'utiliser le format Eddystone sans modifier la librairie ArduinoBLE car le type de données 0x03 n'est pas pris en charge.
La librairie actuelle permet donc de créer des iBeacons ainsi que des altBeacons avec la fonction setManufacturerData mais elle ne permet pas de les lire, il faudra impérativement un smartphone pour les tests.
Une demande a été faite pour l'ajout de cette fonction de lecture des données.
Lien de la librairie sur Github:
https://github.com/arduino-libraries/ArduinoBLEPlus d'explication sur les Beacons ici:https://www.ubidreams.fr/beacons/ [FR - Présentation]https://www.mokosmart.com/fr/beacon-infrastructure/ [FR - Présentation]https://en.wikipedia.org/wiki/Types_of_beacons [EN]Sites officiels:https://developer.apple.com/ibeacon/ [EN - iBeacon]https://altbeacon.org/ [EN - AltBeacon]https://developers.google.com/beacons/eddystone [EN - Eddystone]https://github.com/Tecno-World/GeoBeacon [EN - GeoBeacon]Format et structure des balises Beacons (données techniques):https://os.mbed.com/blog/entry/BLE-Beacons-URIBeacon-AltBeacons-iBeacon/ [EN]https://os.mbed.com/teams/Bluetooth-Low-Energy/code/BLE_EddystoneBeacon_Service/file/5a2a104a21a8/main.cpp/ [EN]https://austinblackstoneengineering.com/ble-beacons-ibeacon-altbeacon-uribeacon-and-derivatives/ [EN]En pièce jointe, les différents codes de test dans un dossier zippé (Beacons.zip):A titre d'info, l'application android 'Beacon Scanner' a été utilisé pour les tests.BLE_IBEACON_1.ino
BLE_IBEACON_2.ino
BLE_ALTBEACON_1.ino
BLE_ALTBEACON_2.ino
BLE_BEACON_EDDYSTONE_URL.ino
Les balises Bluetooth Low Energy (Beacons).docx