Operate the Terkin Datalogger sandbox¶
Prepare device¶
Upgrade firmware¶
Before uploading the user-space MicroPython program, please upgrade the Pycom firmware
on your device. At the time of this writing, we are running
Pycom MicroPython 1.20.0.rc11
on the FiPy without any flaws yet.
Switch to LittleFS¶
LittleFS should be favored over FatFS to prevent filesystem corruption in brownout conditions.
Attention
When switching between LittleFS and FatFS, the flash file system will be re-formatted thus erasing all content.
Switch to LittleFS:
import pycom
pycom.bootmgr(fs_type=pycom.LittleFS, reset=True)
Background information:
The option to use LittleFS instead of FAT as the primary filesystem of the internal flash will prevent data corruption even in the case of power loss during write operations.
—See also Filesystem corruption on FiPy’s FatFS in brownout conditions
Upload program¶
There are different commands to upload all files from the current working tree to the MicroPython device. After that, some of them will conveniently reset the device by software (cold start), which essentially will run your program from scratch as it will likewise happen in the real world.
After resetting the device, they will drop you into the program execution flow
through a REPL shell. Use CTRL+C
to interrupt the program and CTRL+X
to detach from the REPL environment.
Configure serial port¶
After connecting the device to your USB port, you should tell the sandbox
about the UART device the MicroPython MCU is now connected to.
Running make list-serials
might help here.
Example:
export MCU_PORT=/dev/cu.usbmodemPye090a1
From scratch¶
When starting from scratch, these guys will upload the whole bunch of dependency modules, datalogger framework and sketch to the device.
# Get most recent development sources
git pull
# Setup the sandbox environment on your workstation
make setup
# Upload framework and datalogger to the device
make install
# Upload program sketch and invoke hard reset.
# This just uploads "boot.py", "main.py" and "settings.py".
make sketch-and-run
When updating¶
For updating the firmware to the current development head, these steps should bring you up to speed.
# Get most recent development sources.
git pull
# Upload framework and sketch and invoke hard reset.
make recycle
Caveats¶
Framework dependencies are occasionally updated and extended. In this case, it is appropriate to run the “from scratch” procedure again.
You will most probably recognize this through any error messages signalling missing package or module dependencies.
If you are having problems updating your device, feel free to create an issue.
Sometimes, you want to erase the filesystem on flash memory holding the program in order to completely start over from scratch. There’s a shortcut for that:
make format-flash
AS THIS IS A DESTRUCTIVE OPERATION, THERE’S A CONFIRMATION PROMPT PROTECTING YOURSELF FROM ACCIDENTALLY DESTROYING DATA. REMEMBER: ALL YOUR DATA WILL BE LOST.
More commands¶
Attach to serial console¶
In order to connect to a device which is already running, just execute:
make console
To detach from the miniterm
environment, just type CTRL+]
.
Reset the device¶
In order to run a machine.reset()
on the device, just execute:
make reset-device
Toggle between maintenance and field mode¶
When the device is pulled into maintenance mode, deep sleep is disabled and the measurement interval will be decreased to 5 seconds.
Install prerequisites:
pip install scapy netifaces netaddr
Monitor local networks for devices:
sudo python3 -m tools.terkin monitor
Enable maintenance mode:
sudo python3 -m tools.terkin maintain
Release maintenance mode and enable field mode again:
sudo python3 -m tools.terkin field
In order to restrict these operations to a single device on the network, you should invoke the program like:
sudo python3 -m tools.terkin maintain 80:7d:3a:c2:de:44
By default, the list of MAC address prefixes are:
mac_prefixes_default = [
# WiPy
'30:ae:a4',
# FiPy
'80:7d:3a'
]
Essentially, we would like to be able to match all Espressif/Pycom devices.
Troubleshooting¶
We have collected some tracebacks with root causes and solutions which might also help you along, please have a look at Terkin Datalogger troubleshooting.