Un petit tutoriel pas à pas pour bien démarrer avec les cartes disponibles au fablab la Lopy4 de Pycom.
Plus d’infos ici
et des tutos ici
Etape 1
https://docs.pycom.io/gettingstarted/software/vscode/
Installation de Visual Studio Code et de l’extension Pymakr qui permet de reconnaitre la carte.
Il existe parfois des problèmes de compatibilité entre VSC et Pymakr notamment lors des sauts de version de VSC avec une mise à jour de Pymakr qui tarde un peu. Dans ce cas, vous pouvez rétrograder la version de VSC pour garder la compatibilité.
https://code.visualstudio.com/updates/v1_74
Selon la distribution Linux, peut nécessiter l’installation de pyserial. et de dialog.
python -m pip install pyserial (ou python3 -m pip install pyserial) sudo apt-get install dialog
Nécessite également NodeJS (sur Linux, à installer à partir d’un dépôt, sinon ici from the NodeJS website.).
apt-get install -y nodejs
Les PC du fablab sont déjà installés avec Visual Studio Code (version 1.58 en date 21/09/2022). L’extension Pymakr (1.1.18) est également installée. NE FAITES PAS d’UPDATE de version.
Etape 2
suivre les instructions pour communiquer avec la carte et lancer un 1er programme en python directement sur la LoPy4 via le port USB.
https://docs.pycom.io/gettingstarted/
Etape 3 : tester des exemples
1er test : utiliser la led RGB disponible pour vérifier que vous pouvez charger un programme
Le code est disponible ici [1]
2e test : récupérer l’adresse MAC LoRa du noeud
from network import LoRa import binascii lora = LoRa(mode=LoRa.LORA, region=LoRa.EU868) print(binascii.hexlify(lora.mac()).upper())
Etape 4 Constructeur et méthodes en lien avec LoRa pour la LoPy4
Sur cette page [4], on trouve des méthodes permettant d’initialiser les paramètres LoRa de la LoPy et de récupérer ou de modifier un certain nombre de paramètres.
- à partir de la datasheet de la LoPy4, cherchez :
- le nom du chip Semtech qui réalise la transmission LoRa ;
- la sensibilité pour les spreading factor de 6 à 12 pour la bande 125 kHz (LNA Boost for band 1 à 868 MHz) ;
- à partir de la page [4], identifiez les paramètres que vous pouvez modifier en mode LoRa (dit LoRa RAW ou LoRa MAC).
- Faites la même chose pour le mode LoRaWAN.
Etape 5 : Say Hello! et paramétrage du LoRa MAC
Nous allons maintenant tester une transmission (TX -> RX) dite LoRa MAC ou LoRa RAW parmi les LoPy de la salle.
Le code est disponible ici [2].
Toutes les LoPy vont émettre puis recevoir des trames. Il faut donc au moins 2 LoPy qui émettent et reçoivent en même temps.
- Insérez votre prénom dans le code. Exemple : ‘Hello I am Charlotte!’ Vérifiez qu’une ou plusieurs LoPy de la salle ont bien reçu votre message !
- En utilisant la méthode lora.stats(), affichez les paramètres de la transmission LoRa MAC. Notez le RSSI, le spreading factor (tx et rx), le tx-power, et le time on air. Comparez votre RSSI avec la sensibilité récupérée dans la data sheet.
- Affichez la valeur des constantes LoRa.BW_125KHZ, LoRa.CODING_4_5 jusqu’à LoRa.CODING_4_8.
Note : lorsque vous modifiez votre code, effectuez un safe boot (voir section annexe) avant de faire un run.
Annexe : Raccourcis clavier du terminal REPL
REPL (Read Evaluate Print Loop) est le nom donné à l’invite interactive de MicroPython accessible sur les appareils Pycom. Il permet de lancer des commandes et de tester du code Python.
Voici les raccourcis clavier les plus utiles :
Ctrl-C : interrompt le code actuel en cours d’exécution, pour récupérer l’invite
Ctrl-D : soft reset (pour un Hard reset, bouton noir RST juste à côté de la led RGB du LoPy)
Ctrl-F (ou Ctrl-Alt-F) : effectue un « safe-boot » du périphérique sans relancer boot.py et main.py
Tab : auto-complétion
Vous pouvez les retrouver en cliquant sur l’onglet Extensions puis Pymakr > Details.
Si vous n’avez plus accès à l’invite de commandes REPL >>> parce que votre code a planté la carte, vous pouvez tout d’abord essayer le safe boot (en étant bien dans la fenêtre d’invite de commande) ctrl+F (sur Atom) (ou ctrl+alt+F sur VSC), puis vous pouvez ré-initialiser la mémoire flash [5] :
>>> import os
>>> os.fsformat('/flash')
L’appui sur le bouton reset de la LoPy ré-initialise la carte mais relance le code chargé sur la mémoire flash !
Pour aller plus loin dans l’utilisation de la Lopy4 et de la couche PHY LoRa
consultez l’article https://telefab.fr/2021/10/04/aller-plus-loin-avec-la-lopy4/
Références bibliographiques
[1]https://docs.pycom.io/tutorials/basic/rgbled/
[2] https://docs.pycom.io/tutorials/networks/lora/lora-mac/
[3] https://docs.pycom.io/tutorials/networks/lora/module-module/
[4] https://docs.pycom.io/firmwareapi/pycom/network/lora/
[5] https://docs.pycom.io/gettingstarted/programming/safeboot/