Template:ArticleMainWriter Template:ArticleFirstDraftVersion
This LoRaWAN gateway package contains the frameworks to enable a LoRaWAN gateway that could be run on STM32MP1 Series with a local server or TheThingsNetwork.
This package consists in an OpenEmbedded meta layer, named meta-st-stm32mpu-app-lorawan, to be added on top of the STM32MP1 Distribution Package. It brings a complete and coherent, easy to build / install LoRaWAN gateway on STM32MP1 Series.
The meta layer contains frameworks, tools and applications to run the LoRaWAN gateway. Different images are available targeting different use cases such as the single use of the Cortex-A7, the use of the Cortex-A7 and Cortex-M4 side by side and the possibility to choose between an Ethernet or a wifi connection.
1. Hardware needed[edit source]
The concentrator LoRaWan RAK831
The converter board
This bundle allows to start with all the hardware needed. (pick your geographic area)
You can now assemble the modules to the board.
This is how it should look:
2. Prerequisites[edit source]
Install the STM32MP1 Distribution Package, but do not initialize the OpenEmbedded environment (sourcing the envsetup.sh) before having installed the meta-st-stm32mpu-app-lorawan meta layer (see next chapter).
3. Installation of the meta layer[edit source]
- To start you need to clone the git repositories to <Distribution Package installation directory>/layers/meta-st.
cd <Distribution Package installation directory>/layers/meta-st git clone https://gerrit.st.com/stm32mpuapp/meta/meta-st-stm32mpu-app-lorawan -b thud
4. Build the software image[edit source]
Setup for the LoRaWan gateway build environment
cd <Distribution Package installation directory>
Different OpenSTLinux expansion packages are available to target different use cases. The following commands need to be executed in the build environment.
You can choose between two different machines:
- stm32mp1-lorawan-a7 to only use the Cortex-A7 for the whole application's process
DISTRO=openstlinux-weston MACHINE=stm32mp1-lorawan-a7 source layers/meta-st/scripts/envsetup.sh bitbake st-image-lorawan
- stm32mp1-lorawan-m4 to use the Cortex-A7 and the Cortex-M4 side by side. The Cortex-A7 to manage the communication with The Things Network's server and the Cortex-M4 to communicate in real time with the concentrator.
DISTRO=openstlinux-weston MACHINE=stm32mp1-lorawan-m4 source layers/meta-st/scripts/envsetup.sh bitbake st-image-lorawan
5. Flash the built image[edit source]
Follow this link to know how to flash the built image.
6. Launch the LoRaWAN gateway's software[edit source]
- Power the board
- Depending on how you want to connect your board to the internet
- Ethernet connection
- Connect the ethernet cable
cd /usr/local/lorawan-gateway/
./LoRaWAN_gateway_launcher.sh ethernet
- Wifi connection
- Do not connect the ethernet cable
cd /usr/local/lorawan-gateway/
./LoRaWAN_gateway_launcher.sh wifi
- During the launcher script, enter your preferred server, up and down ports when it is asked.
- Important: copy your EUI before the restart of the gateway
All those informations can be found or changed manually in the global_conf.json and local_conf.json files in /usr/local/lorawan-gateway/ on the board.
Your gateway will reboot and after a short time, you we will be able to receive or transmit informations through LoRaWAN.
7. Source code of the firmware running on the M4[edit source]
If you want to access or modify the code of the firmware running on the M4
cd <working directory> repo init -u https://gerrit.st.com/stm32mpuapp/fw/manifests -b lorawan -m default.xml repo sync
8. LoRaWAN server[edit source]
You can choose between two different types of server. The following instructions show how to use them.
8.1. How to proceed on The Things Network[edit source]
Login or create an account on https://www.thethingsnetwork.org
- Go into your CONSOLE.
- Clic on GATEWAYS.
- Clic on register gateway.
- Check I'm using the legacy packet forwarder and enter your EUI you previously copied. If it is not available, create one and change it in the global_conf.json and local_conf.json files in /usr/local/lorawan-gateway/. You will need to reboot your board afterwards.
- Enter a description of the gateway, this is the name you can see on the map of the site.
- Select your Frequency Plan.
- Select your Router (for europe choose ttn-router-eu).
- You can place your gateway on the map by clicking on it or by entering directly the precise coordinates.
- Tell if your antenna is indoor or outdoor.
- For creating a test device. Be careful with your end node’s applications, the duty cycle is regulated by governments. This one is regulated so that it can send a new LoRaWAN message minimum every 3 minutes with this low amount of data. But you can change the APP_TX_DUTYCYCLE variable if you want to lengthen the delay between two dispatch.
- Not mandatory: for your application's devices, you can use cayenne, this is a framework that store the data and you can easily visualize them.
8.2. How to proceed with the LoRaWAN local server[edit source]
A local LoRaWAN server is available with this layer. After launching the LoRaWAN application You can find more informations here.
cd /usr/local/lorawan-server/
In the first part you need to start postgresql in order to use psql
sudo -i -u postgres initdb -D /var/lib/postgresql/data pg_ctl -D /var/lib/postgresql/data -l logfile start
You need now to create all the roles and databases for this application.
psql create role loraserver_as with login password 'dbpassword'; create role loraserver_ns with login password 'dbpassword';
create database loraserver_as with owner loraserver_as; create database loraserver_ns with owner loraserver_ns; \c loraserver_as create extension pg_trgm; create extension hstore; \q logout dpkg -i lora-gateway-bridge_3.2.1_linux_armv7.deb dpkg -i loraserver_3.2.1_linux_armv7.deb dpkg -i lora-app-server_3.3.0_linux_armv7.deb vi /etc/loraserver/loraserver.toml
- modify the line dsn=".." with dsn="postgres://loraserver_ns:dbpassword@localhost/loraserver_ns?sslmode=disable"
- :wq tp save and exit from vi
vi /etc/lora-app-server/lora-app-server.toml
- modify the line dsn=".." with dsn="postgres://loraserver_as:dbpassword@localhost/loraserver_as?sslmode=disable"
- modify the jwt_secret="verysecret" with the command
openssl rand -base64 32
- :wq to save and exit from vi
sudo systemctl start lora-gateway-bridge sudo systemctl start loraserver sudo systemctl start lora-app-server
Your Local LoRaWAN is now running.
To access you application site on a web browser with a computer on the same network.
ifconfig
To know the IP address and then access it : IP_address:8080. By default the login and password are admin.
On the application site:
- Go to Network-servers, click ADD and then put localhost:8000 for the name and the server. Click on Update network-server.
- Go to Service-profiles, click CREATE. Choose a name, take the localhost:8000 server. Click on Add gateway meta-data. All the rest is empty.
- Go to Device-profiles, click CREATE. Enter the informations relative to your Node. You need to save and re-click on you Node to unlock some configuration features.
If you have a decode or Encode fonction for your node, you can put them in the CODEC section.
- Go to Gateways, click CREATE. Choose a name, a description and take the localhost:8000 server. No gateway profile and discovery enabled is needed.
- Go to Applications, click CREATE. Choose a name, a description, take your service-profile and a codec if you use one. Click CREATE APPLICATION.
- Click on your application's name. Click CREATE in the DEVICES menu. Choose a name, a description, enter the Device EUI of your Node and you Device-profile. Check Disable frame-counter validation and then click on CREATE DEVICE.
- Click on your created node just above. In ACTIVATION, enter the informations reliative to this node. The Uplink frame-counter will incremente itself.
- You can now visualize your Node frames in LoRaWAN FRAMES on each node section.
9. Field test[edit source]
A successful 10 kilometers distance test without obstacles have been realized.