-
Notifications
You must be signed in to change notification settings - Fork 3
Pycom LoPy
The LoPy from Pycom is a great module that mates an ESP32 processor running Python with LoRa, WiFi and BLE radios. Its super easy to quickly get going with the ability to send an receive using an onboard Python interpreter. This page describes how to setup and install a board with OpenChirp. Its worth noting that while this is an easy way to get going quickly its unclear how power efficient the ESP32 running Python is in its current form. We are doing some testing, but its likely not as efficient as boards that are optimized specifically for power. Below is a photo of the LoPy with a standard I/O expansion kit for connecting to GPIO.
- Download the pycom software from pycom's website to update the LoPy firmware (recommended)
- Install ATOM as described in the LoPy Install Instructions
In Atom, More -> Get serial ports Settings -> Global settings -> Device address (Paste your device address here!) Connect
To figure out the DevID, copy and paste the following into an empty document (File -> New File)
from network import LoRa
import binascii
# Initialize LoRa in LORAWAN mode.
lora = LoRa(mode=LoRa.LORAWAN, adr=True, public=True, tx_retries=0)
print("Mac ", binascii.hexlify(lora.mac()))
Simply, Run. Write this down as you will need this to setup the device on OpenChirp (copy & paste doesn't work with this terminal).
The examples project can be cloned from this repo.
- File -> Add Project Folder
- Update pymakr.conf with your device address (get from More -> Get serial ports)
- Connect (make sure only one project folder is added to your working project tree since pymakr will try to flash your device with root folder)
- Open main.py, update your application eui and key (you will have to generate this!)
- Write program to flash (Packages -> Pymakr -> Synchronize project or Upload)
Note: you can safely disconnect your serial communication by selecting the up/down chevron on the far right hand side of the pycom console.
LoPy can be used with 1 of the 3 useful companion boards:
Note: you will need this to upgrade the firmware of your LoPy.
Follow the instructions can be found at docs.pycom.io - 4.2.1 to update the firmware (recommended).
Documentations can be found at docs.pycom.io - 4.3.1.
Follow the instructions can be found at docs.pycom.io - 4.2.1 to update the firmware (recommended).
Documentations can be found at docs.pycom.io - 4.3.2.
Skip to Step 3 in the LoRa Device Tutorial to walk through setting it up on OpenChirp. Remember that we need the DevID
from your node and you have to generate a AppEUI
and AppKey
for your devices.
To test sending and receiving data on OpenChirp using the LoPy, try running this test project: https://github.com/OpenChirp/LoPyDemo
This project will send three uint8 values every five seconds over LoRaWAN and will print out any data received from the server. Make sure to set the APP_EUI and APP_KEY as described above. You can create a device for this demo using the "LoPy Simple Demo Template" or build it from scratch as described below.
You will want to setup the following three services:
- LoRaWAN Service
- TimeSeries Storage
- Byte Translator
You will add services on the "Services" tab of the OpenChirp web portal. First, add the TimeSeries service and then add the LoRaWAN Service.
Configure the LoRaWAN service as follows:
Next, load the demo program onto your LoPy and let it connect to the network. Once a packet is received you will see the "rawrx" field in the "Transducer" page update. This is technically added by the TimeSeries Service, so that needs to be running for the value to appear. You many need to refresh the browser window.
Next add the "Byte Translator" service to convert raw data into transducers. For the purpose of the demo, configure it as shown below:
Now once data arrives, you will see the following uplink data types appear.
Add the downlink transducers yourself using the "Transducer" tab. The units don't really matter, but make sure to set "Actuable" flag to "true".
Now create a command to test if the downlink is working.
You can add a variety as follows:
When you click on each of these, you should see the LoPy demo program print out the value. To review, these are the types that will eventually appear in your Transducer list if everything is working correctly:
OpenChirp is a research project started by the WiseLab at Carnegie Mellon University.
- Simple Device Tutorial
- PubSub Overview
- Time Series Data
- Device Tutorial
- Generate User Token Tutorial
- LoRaWAN Specific
-
Services
- Byte Translator
- Easybits
- Time Series Storage
- Event Trigger
- LoRaWAN Gateway
- GPS Mapper
- Custom Service
- Openchirp Packages
- REST API