Basicmac es una implementación portátil de la especificación LoRaWAN® de LoRa Alliance® en el lenguaje de programación C. Es una bifurcación de la biblioteca LMiC de IBM y admite múltiples regiones, que se pueden seleccionar en tiempo de compilación y/o ejecución [1]. Para la utilización de Basicmac se usará una terminal Linux, los comandos presentados a continuación funcionan para el sistema operativo Ubuntu 20.04, podrían variar si se trabaja desde otra distribución de Linux.
Esta guía tiene por finalidad conectar la tarjeta de desarrollo a un servidor de The Things Network, creando una aplicación y usando la frecuencia us 915 Khz.
Las herramientas necesarias para construir y trabajar con Basicmac se muestran a continuación:
- Una cadena de herramientas de compilación cruzada adecuada
gcc-arm-none-eabi
ylibnewlib-arm-none-eabi
.
sudo apt-get update
sudo apt-get install gcc-arm-none-eabi
sudo apt-get install libnewlib-arm-none-eabi
- Un entorno con un intérprete de Python 3.8 o posterior.
sudo apt-get install python3.8-venv
- Una herramienta como OpenOCD para cargar el firmware en el hardware real.
sudo apt-get -y install openocd
- Una herramienta para compilar y administrar una colección de aplicaciones y archivos desde el código fuente.
sudo apt-get install make
- Una herramienta para clonar el repositorio de Basicmac en GitHub.
sudo apt-get install git
- Clonar el repositorio de GitHub de Basicmac y todos sus submódulos.
git clone --recurse-submodules https://github.com/mkuyper/basicmac.git basicmac
- Crear y activar un entorno virtual con Python dentro de la carpeta basicmac.
cd basicmac
python3 -m venv venv
source venv/bin/activate
- Instalar los módulos de Python requeridos por las herramientas de compilación y simulación, se pueden instalar usando pip.
pip install -r basicloader/requirements.txt
pip install -r ./requirements.txt
pip install pyyaml
- Basicmac emplea un gestor de arranque, Basicloader, para cargar e iniciar el firmware real. Este cargador de arranque también aplica cualquier actualización de firmware y verifica la integridad del firmware actual antes de llamar al punto de entrada del firmware. Para crear este cargador usar el siguiente comando:
cd basicloader
VARIANT=us915 make
El resultado del proceso de compilación es un archivo llamado bootloader.hex.
-
Conectar la tarjeta al computador mediante USB, verifique que el dispositivo es reconocido como una unidad USB con nombre DIS_L072Z.
-
Después de compilar un proyecto, se puede cargar en un dispositivo. Tenga en cuenta que tanto el cargador de arranque como el firmware deben cargarse, aunque como el cargador de arranque rara vez cambia, generalmente solo se carga una vez. Para cargar el cargador de arranque y el firmware, respectivamente, use los objetivos
make loadbl
ymake load
.
cd ../projects/ex-join
VARIANT=us915 make loadbl
VARIANT=us915 make load
El HAL para STM32 almacena información de personalización como EUI y claves para el funcionamiento de LoRaWAN en EEPROM. Si no se encuentra información de personalización válida en la EEPROM, la HAL creará un dispositivo EUI a partir de los registros de ID únicos de la MCU's y utilizará una clave de prueba y un EUI de unión fijos [1]:
- Device EUI:
FF-FF-FF-AA-xx-xx-xx-xx
- Join EUI:
FF-FF-FF-BB-00-00-00-00
- Device Key:
404142434445464748494A4B4C4D4E4F
Los valores de Join EUI y Device Key son los mismos para todas las tarjetas, solo el Device EUI es único para cada tarjeta. Para ver el Device EUI utilizado por la tarjeta de desarrollo, se deben seguir los siguientes pasos:
- Abrir una nueva terminal o salir del directorio anterior.
- En el B-L072Z-LRWAN1, el firmware imprime información de depuración en el UART que está conectado a través de ST-LINK a la computadora host. En Linux, este dispositivo suele aparecer como
/dev/ttyACM0
. Ejecutar el siguiente comando para lanzar el terminal serial minicom de la tarjeta:
sudo minicom -D /dev/ttyACM0 -b 2000000
- Presionar los dos botones de reset de la tarjeta al tiempo. En la terminal se visualizara la salida de depuración. En esta se muestra el Device EUI como se muestra en la siguiente imagen.
-
Entrar a la sección de aplicaciones de la pagina de The Things Network, a traves del link: https://nam1.cloud.thethings.network/console/applications
-
Crear un nueva aplicación presionando el botón de add application y dandole un nombre y un ID.
-
Ir a la pestaña de End devices y crear un nuevo dispositivo en add end device, como se muestra en la siguiente imagen.
- Registrar manualmente el dispositivo como se muestra en la siguiente imagen.
- Ingresar los datos de Device EUI, Join EUI y Device Key como se muestra en la siguiente imagen. Estos datos fueron dados en la sección anterior, recordar que el Device EUI es único de la tarjeta y se obtuvo en el paso 3 de la sección de Personalizaron. Por ultimo, presionar el botón de Register end device.
Una vez terminados estos pasos, ya se podrán visualizar los datos enviados por la tarjeta a TTN desde la pestaña Live data de la aplicación creada, siempre y cuando se tenga cobertura de un Gateway conectado a la red de TTN.
[1] M. Kuyper. Basicmac, Getting Started, 2020
[2] ST. UM2115, User manual. Discovery kit for LoRaWAN™, Sigfox™, and LPWAN protocols with STM32L0