🛠 Balise BLE : diffuser un beacon avec le CYW43438
Objectifs
Faire de la Zero W une balise de présence BLE : la puce Cypress CYW43438 (celle du Pi 3 B) gère Bluetooth 4.0 + BLE sous Linux, sans dongle.
Matériel
- 1 Zero W sous Raspberry Pi OS Lite
- Un smartphone avec un scanner BLE (nRF Connect, LightBlue)
Étapes
- Installez la pile :
sudo apt install bluez bluepypuis montez la radio :sudo hciconfig hci0 up. - Diffusez nom + charge utile fabricant (schéma iBeacon-like) :
#!/usr/bin/env python3
from bluepy.btle import ADType, Peripheral
import struct, time
p = Peripheral
p.setAdvertiseData(ADType.COMPLETE_LOCAL_NAME, b"ZeroW-01")
payload = struct.pack("<BHBHH", 0xFF, 0x004C, 0x0215, 0xBEEF, 0x0001)
p.setAdvertiseData(ADType.MANUFACTURER_DATA, payload)
p.setAdvertiseEnable(True)
while True:
time.sleep(1)
- Scannez depuis le téléphone :
ZeroW-01doit apparaître avec la charge utile 0xBEEF.
Vérification
hciconfig hci0 affiche l'interface UP RUNNING ; le scanner voit le beacon.
Erreurs fréquentes
- Radio éteinte (
hciconfig hci0 downpar défaut au boot sur certaines images) : le scan ne voit rien. - bluepy n'est plus maintenu : testez avant tout produit.
Autres tutoriels pour cette carte
- Premier démarrage headless de la Zero W (Wi-Fi + SSH)
- Suder le header 40 broches et faire clignoter une LED
- Se connecter au Wi-Fi en ligne de commande (nmcli)
- Pi-hole : bloqueur de pub DNS sur Zero W
- Gadget USB : Ethernet sur le port OTG + relais Wi-Fi
- Nœud capteur autonome sur batterie : énergie et fiabilité
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash