Today I’ll show you how to Toggle Raspberry Pi GPIO Pins with ASP.NET Core 2.0.
First be aware of the following prerequisites:
- .NET Core 2.0 SDK
- A Raspberry Pi 3 Running Raspbian
- Install linux dependencies: sudo apt-get install curl libunwind8 gettext
Now let’s start:
Create a folder for your new project#
Open a command prompt an run:
mkdir aspnet.webapi.rpi.gpio
cd aspnet.webapi.rpi.gpioCreate an ASP.NET Core Web API project#
Create an ASP.NET Core Web API project with the following command:
dotnet new webapiAdd a reference to Unosquare.Raspberry.IO#
dotnet add package Unosquare.Raspberry.IONow restore the packages:
dotnet restoreCreate BlinkyController.cs#
In the Controllers folder, create a BlinkyController.cs file with the following contents:
using Microsoft.AspNetCore.Mvc;
using Unosquare.RaspberryIO;
using Unosquare.RaspberryIO.Gpio;
namespace aspnet.webapi.rpi.gpio.Controllers
{
[Route("api/[controller]")]
public class BlinkyController : Controller
{
[HttpPost]
public void Post([FromBody]bool isOn)
{
// Control GPIO pin 5
var pin = Pi.Gpio.Pin05;
pin.PinMode = GpioPinDriveMode.Output;
pin.Write(!isOn);
}
}
}Note: The sample toggles GPIO pin 5.
Publish the application#
Publish the application with the following commands:
dotnet publish -c Release -r linux-armCopy the files to your Raspberry#
Copy the contents of the folder \aspnet.on.rpi\bin\Release\netcoreapp2.0\linux-arm\publish to the Raspberry (i.e. /home/pi/publish)
Note: For this task I connect to the Raspberry via SFTP using WinSCP
Run the application#
Connect to Raspberry using ssh and then run the following commands:
sudo -i
cd /home/pi/publish
chmod +x aspnet.webapi.rpi.gpio
export ASPNETCORE_URLS="http://*:5000"
./aspnet.webapi.rpi.gpioNote: Unosquare.Raspberry.IO must be run with elevated privileges.
Call the Web API to Toggle the GPIO pin#
Post data to the Web API to toggle the GPIO pin.
To turn it on:
curl -H "Content-Type: application/json" -d 'true' http://[ip of your raspberry]:5000/api/blinkyTo Turn it off:
curl -H "Content-Type: application/json" -d 'false' http://[ip of your raspberry]:5000/api/blinkyGet the code here.
Hope it helps!
