Le firmware repeater standard est installé via une connexion USB au module et Google Chrome accédant la page Firmware flasher
Une fois l’installation effectuée, pour configurer le module, il nous faut utiliser une application, soit sur un smartphone soit un ordinateur.
La connexion se fait via BLUETOOTH
Il faut donc apparier le smartphone/ordinateur au module, le code d’appairage apparait sur l’écran du module.
Un fois l’appairage réalisé l’application aura accès aux paramètres de configuration
Configurer:

J’ai pour ma part imprimé un boitier en ASA qui permet d’installer le module dans une enceinte étanche avec des batteries et un panneau solaire.
Même procédure que pour le repeater, choisir le firmware compagnon pour le module.
Un
petit boitier
est imprimé en ASA pour installer le module ainsi qu’une batterie.
![]()
En ce qui concerne le Heltec V4 (sans écran), j’installe le firmware patché pour permettre de communiquer avec le modele via mon réseau en WiFi.
Pour cela il faut accéder a la page du patcher à l’aide de Google Chrome.
Choisir heltec_v4_companion_radio_wifi_patchable dans le menu firmware
Entrer les paramètres du WiFi auquel se connecter (SSID/password) ensuite patch et flash (sur USB).
Le module est alors accessible en WiFi, comme il n’y a pas de display il faut chercher son adresse sur le serveur DHCP.
Pour le connecter, l’app smartphone est utilisée en choisissant connecter, WiFi et indiquer l’adresse IP du module.
Une fois connecté on peut commencer a chercher les autres modules et le ajouter aux contacts.

L’intérêt du firmware patché étant de pouvoir connecter le module en WiFi a partir d’un logiciel Python
En installant la librairie python meshcore
pip install meshcore
ou
pip install meshcore --break-system-packages
On peut alors envoyer des messages via le meshcore en python:
#!/usr/bin/python
import asyncio
from meshcore import MeshCore, EventType
async def main():
# Connect to your device
meshcore = await MeshCore.create_serial("/dev/ttyUSB0")
# Get your contacts
result = await meshcore.commands.get_contacts()
if result.type == EventType.ERROR:
print(f"Error getting contacts: {result.payload}")
return
contacts = result.payload
print(f"Found {len(contacts)} contacts")
# Send a message to the first contact
if contacts:
# Get the first contact
contact = next(iter(contacts.items()))[1]
# Pass the contact object directly to send_msg
result = await meshcore.commands.send_msg(contact, "Hello from Python!")
if result.type == EventType.ERROR:
print(f"Error sending message: {result.payload}")
else:
print("Message sent successfully!")
await meshcore.disconnect()
asyncio.run(main())
Ce qui nous donne

et la réception: