Main Documentation: https://orgua.github.io/shepherd
Source Code: https://github.com/orgua/shepherd-targets
Main Project: https://github.com/orgua/shepherd
The repository contains a collection of target-hardware and mcu-firmwares used by the shepherd-testbed. In the past shepherd had a nRF52-only target but can now leverage an additional FRAM, as demonstrated successfully by the Riotee-Platform.
NOTE: The shepherd testbed has a second target-port (unused) and is looking for ideas. Just contact us.
Hardware v1.0 uses
- nRF52840 (Panasonic PAN1780)
- MSP430FR5962 (TI)
- RTC
BOM, gerber-files and schematics are available in the PCB-Directory. This folder also contains a guide for testing new target-PCBs.
- freedom to use both MCUs as needed (just as radio or FRAM) or disable when not needed (deep sleep)
- over-voltage protection for V_LV (max 3.9V)
- two debug LEDs with external supply (minimal impact on pwr-budget)
- one self-powered LED to "burn" energy
- io pins not interfering with RF (nRF PS v1.6 page 578)
- LEDs / UART similar to Riotee
- nRF uses low voltage mode (PSv1.1 page 61)
-
nrf52_demo_rf: demo implementation for a simple node that sends BLE packets when energy budget allows it
-
nrf52_testable: watches all gpio and reports with UART messages (verification after assembly)
- ensures that pcb is assembled OK and both MCUs are programmable and show basic functions
- what is not tested: watchdog, FRAM, RF-Frontend (-> use rf-demo or rf-survey), sleep power consumption
-
nrf52_rf_test: sends out 1 BLE-Packet per second (verify with an app like
RaMBLE
) -
nrf52_rf_survey: Link Matrix Generator - TX-Unit - sends packet with every possible P_TX, loops until stopped
-
nrf52_deep_sleep: practically turned off MCU with the lowest possible consumption
-
TODO: nrf52_spi_radio - default implementation to use nRF as a radio frontend
-
msp430_deep_sleep: practically turned off MCU with the lowest possible consumption
-
msp430_spi_fram: riotee implementation to use MSP as a flash storage
-
msp430_testable: switches on all shared gpio one by one (verification after assembly)
-
TODO: cleanup-fw - FRAM & program-storage should be wiped between runs
Step by step description for installing all prerequisites to compile the firmware.
- Make sure you have the GNU Arm Embedded Toolchain installed
- If
arm-none-eabi-gcc
is not in your path, set the environment variableGNU_INSTALL_ROOT
accordingly, e.g.:export GNU_INSTALL_ROOT=/opt/toolchain/
(note the trailing foreslash) - Download the nRF5 SDK from here. (You don't need a SoftDevice) and extract it
- Set the environment variables
SDK_ROOT
to the corresponding absolute path, e.g.:export SDK_ROOT=/home/user/nRF5_SDK_17.0.2_d674dde/
- run
make
Refer to the GitHub workflow for how to install the toolchain and build the project.
To build the code, you'll need the gcc toolchain for the MSP430 microcontroller series. Refer to the GitHub workflow for how to install the toolchain and build the project.
When an elf-firmware contains a SHEPHERD_NODE_ID
the variable will patched with the actual target-ID before running the experiment. See the proposed c-file for more information.