The CORE I/O has 5V, 12V and a 24V rails, as well as 3 General-Purpose Input/Output (GPIO) pins that also function as Pulse Width Modulation (PWM) pins. The rails and the GPIO pins can be triggered via API commands as well as through web endpoints. This example shows the usage of the GPIO pins with API.
To install the dependencies run the following command:
python3 -m pip install -r requirements.txt
See the CORE I/O documentation on the developer site:
Note: If the pins are set to output mode, they will output 3.3V (in relation to the ground pins). These are NOT dry contact pins
This example demonstrates how to use the CORE IO GPIO pins to blink an LED. This example does not use the Spot SDK, but can be integrated with other Spot SDK examples. In the example, the user is given the choice as to which pin to trigger, and the syntax of the arguments required for this is as follows:
Arguments:
pin_mode: this argument allows choosing between voltage rails and GPIO pins
- voltage: this argument is used for specifying the voltage rail to be triggerred
- gpio: this argument is used for specifying the gpio pin to be triggered
- duration: number of seconds to trigger the output for the blink function
- mode: this argument sets the GPIO pin to input or putput mode
To run the GPIO example using the 5V pin:
python3.10 gpio_example.py --voltage 5 --duration 10
To run the GPIO example for a GPIO pin set as output:
python3.10 gpio_example.py --gpio 1 --duration 10 --mode out
To run the PWM example:
python3.10 pwm_control.py --number 1 --duty-ratio 0.7
Alternatively, these examples can be run with Docker. To do so, just build and run the image. When building on a separate machine, the docker image will need to be saved and copied to the CORE.
Build the image:
sudo docker build -t gpio_control .
Run the image:
# Toggle GPIO pin 1 on/off for 5 seconds
sudo docker run --privileged -v /etc:/etc gpio_control -pin_mode gpio --gpio 1 --duration 5 --mode out
# Toggle 5V rail on/off for 10 seconds
sudo docker run --privileged -v /etc:/etc gpio_control --pin_mode voltage --voltage 5 --duration 5
# PWM
sudo docker run --privileged -v /sys/class/pwm/:/sys/class/pwm/ --entrypoint python3 gpio_pwm pwm_control.py --number 1 --duty-ratio 0.7