Fragensteller
ASP.NET Core auf dem Raspberry Pi mit Linux, GPIO, PI Camera u.v.m

Allgemeine Diskussion
-
Hallo,
ich wollte auf einem Pi eine ASP.NET Core Anwendung betreiben und dennoch vollen zugriff auch die Hardware haben. Um die dafür notwendigen Infos zusammen zu tragen habe ich ca. 2 Tage gebraucht. Um jeden anderen diese lästige Suche und das probieren x Anleitungen zu ersparen, habe ich mich dazu entschlossen hier eine einfach Anleitung zusammen zu stellen.
Erstmal vorweg ich bin kein Linux Guru. Das letzte mal das ich Linuxserver verwaltet habe ist schon 10 Jahre her. Mehr als die Grundbefehle habe ich nicht drauf. Man muss sich auf Linux einlassen und es nicht mit Windows vergleichen. Rasbian ist keine schlechte Wahl.
- Rasbian von raspberrypi.org downloaden. (Ich habe mich für Rasbian Lite ohne Desktop entschieden)
- Rasbian auf SD Karte kopieren - Dazu dieser Anleitung folgen
- SD Karte in den PI stecken, zudem Monitor und Tastatur anschließen
- PI ans Netzteil anschließen und Bootvorgang abwarten
- Anmelden mit pi und Passwort raspberry (Achtung englische Tastatur y ist auf z)
- Befehl eingeben: sudo raspi-config (englische Tastatur beachten - findet man am Nummernblock)
- Unter Change User Password Passwort ändern
- Unter Interfaceing Options SSH antivieren
- Unter Network Options Wi-Fi einrichten oder Netzwerkkabel anschließen
- Putty downloaden und im Standard installieren. Jetzt können wir den Pi mit Putty steuern (dank SSH) und können Monitor und Tastatur entfernen.
- Putty starten und die IP oder den Namen (raspberrypi) von Pi eingeben
- Anmelden mit pi und Passwort
- Um aus ASP.NET Core auf die PI Hardware zugreifen zu können brauchen wir eine Lib. Ich habe mich für RaspberryIO entschieden. Dafür müssen wir den PI vorbereiten.
- Alle Befehle aus dem Bereich For Debian Stretch nacheinander in Putty eingeben (kopieren mit STRG>c - Putty Fenster anklicken - rechte Maustaste drücken - return/enter auf der Tastatur drücken)
- Alle Befehle aus dem Bereich Running .NET Core 2.2 wieder in Putty eingeben. Damit ist der PI für .NET Core vorbereitet.
- ASP.NET Core Anwendung in Visual Studio erstellen (Ich nenne die Anwendung AspNetOnPi)
Die Programm.cs öffnen und anpassen
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseUrls("http://*:5000");//Port hinzugefügt
Jetzt müssen wir noch einen Ordner für die Anwendung auf dem Pi erstellen. Dafür nutzen wir wieder Putty und geben folgenden Befehl ein:
mkdir /home/pi/AspNetOnPi (oder halt deinen gewünschten Ordnernamen).
Zum Deploy nutze ich ein Batch Datei die ich im Projektordner angelegt habe. Das ist eine einfache Textdatei mit der Endung .bat. Der Inhalt sieht so aus
dotnet publish -r linux-arm /p:ShowLinkerSizeComparison=true pushd .\bin\Debug\netcoreapp2.2\linux-arm\publish pscp -pw <Das Passwort des Pi> -v -r .\* pi@raspberrypi:/home/pi/AspNetOnPi popd
Jetzt kann die Batch ausgeführt werden. Damit erstellt am die Anwendung und kopiert sie mit SCP auf den Pi. (Vorher speichern in VS nicht vergessen)
Um die Anwendung starten zu können, müssen ihr entsprechende rechte zugewiesen werden. Dafür nutzen wir wieder Putty und geben nacheinander folgende Befehle ein
cd /home/pi/AspNetOnPi (oder halt den Namen deines Ordners)
sudo chmod 755 AspNetOnPi (Den Namen deiner ASP.NET Core Anwendung)
Jetzt können wir die Anwendung mit
./AspNetOnPi
starten und mit den Browser deiner Wahl die Website besuchen (http://raspberrypi:5000).
Um nun z.B. die GPIO aus ASP.NET zu nutzen einfach den Anleitungen auf RaspberryIO folgen.
Um die Anwendung auf dem Pi zu Debuggen, können wir uns an den Prozess anhängen. Wie das geht wird hier beschrieben Attach Debugger to ASP Core on Linux (ca. in der Mitte)
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings
- Bearbeitet Thomas Wycichowski Freitag, 1. Februar 2019 00:19
Alle Antworten
-
Mittlerweile hat auch Microsoft die GPIO APIs aus UWP in .NET Core verfügbar gemacht. Diese stehen nun in der Version 1 auf Nuget bereit.
Die PiCam oder eine andere Kamera kann man über OpenCV verfügbar machen. Dazu braucht man noch einen Wrapper wie z.B. OpenCVSharp
Eine Anleitung um OpenCV auf dem RPI zu installieren habe ich hier gefunden Install OpenCV 4.1.2 on Raspberry Pi 4
Man muss aber aktuel die Version 4.2.0 installieren dazu muss man die Befehle etwas anpassen. Im grunde ist es diese abfolge:
#RPI Config
sudo raspi-config
Advanced Optioins > Memory Split > 128
Interface Options > Pi Camera Enable#Dependencies
sudo apt-get -y install build-essential cmake git unzip pkg-config libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libgtk2.0-dev libcanberra-gtk* libxvidcore-dev libx264-dev libgtk-3-dev python3-dev python3-numpy python-dev python3-pip python-numpy libtbb2 libtbb-dev libdc1394-22-dev libv4l-dev v4l-utils libjasper-dev libopenblas-dev libatlas-base-dev libblas-dev liblapack-dev gfortran gcc-arm* protobuf-compiler#OpenCV
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-4.2.0 opencv
mv opencv_contrib-4.2.0 opencv_contrib#Build
cd ~/opencv/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_OPENMP=ON \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..#Swap change to CONF_SWAPSIZE=4096
sudo nano /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start#Make OpenCV
make -j4
sudo make install
sudo ldconfig
sudo apt-get update#Mono
sudo apt-get -y install apt-transport-https dirmngr gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/debian stable-raspbianstretch main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt-get update
sudo apt-get install mono-complete#.NET Core 3.1
sudo apt-get -y install libunwind8 gettext
wget https://download.visualstudio.microsoft.com/download/pr/67766a96-eb8c-4cd2-bca4-ea63d2cc115c/7bf13840aa2ed88793b7315d5e0d74e6/dotnet-sdk-3.1.100-linux-arm.tar.gz
sudo mkdir -p /usr/share/dotnet
sudo tar -xvf dotnet-sdk-3.1.100-linux-arm.tar.gz -C /usr/share/dotnet
sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet#OpenCVSharp https://github.com/shimat/opencvsharp
cd ~
git clone https://github.com/shimat/opencvsharp.git
cd opencvsharp
git fetch --all --tags --prune && git checkout ${OPENCVSHARP_VERSION}
cd src
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=${YOUR_OPENCV_INSTALL_PATH} ..
make -j4
sudo make install#Swap change to CONF_SWAPSIZE=100
sudo nano /etc/dphys-swapfile
sudo rebootWas auch gut funktioniert ist dieses Github Projekt V4L2.NET
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings
- Bearbeitet Thomas Wycichowski Freitag, 27. Dezember 2019 01:29