Inhoudsopgave:

Raspberry Pi HomeLab en wie thuis is: 11 stappen
Raspberry Pi HomeLab en wie thuis is: 11 stappen

Video: Raspberry Pi HomeLab en wie thuis is: 11 stappen

Video: Raspberry Pi HomeLab en wie thuis is: 11 stappen
Video: Установите Windows 11 на Raspberry Pi 2024, November
Anonim
Raspberry Pi HomeLab en wie is thuis
Raspberry Pi HomeLab en wie is thuis
Raspberry Pi HomeLab en wie is thuis
Raspberry Pi HomeLab en wie is thuis
Raspberry Pi HomeLab en wie is thuis
Raspberry Pi HomeLab en wie is thuis
Raspberry Pi HomeLab en wie is thuis
Raspberry Pi HomeLab en wie is thuis

Dit is mijn eerste onverwoestbare, maar deze instructable heeft twee fazes.

faze one: is een pi aan het opzetten om te werken als een thuislab voor IOT-werk voor een team van studentontwikkelaars.

fase twee: gebruikt het systeem voor ontwikkeling, door een demonstratie te implementeren met behulp van ons who is home-project.

aan het einde hiervan heb je een op afstand toegankelijke headless pi die door mensen kan worden gebruikt om op afstand te programmeren en op IOT-apparaten te werken.

nu waarschuw ik dat door je pi voor het publiek te openen zonder de nodige beveiliging, je jezelf blootstelt aan het risico dat je thuisnetwerk wordt aangevallen.

we zullen de eerste fase in de volgende stappen bespreken, maar dit is een link naar wat informatie over onze club en het who is home-project.

github.com/ValenciaRobotics/embeddedclub

Wie Is Thuis

het Who Is home-project doet het volgende: voert een python-script uit dat controleert op de mac-adressen van apparaten die op uw netwerk zijn aangesloten. het gebruikt hiervoor Nmap. het voert die adressen uit tegen een lijst met adressen en als het vermelde adres aanwezig is, stuurt het een char naar een arduino met behulp van seriële communicatie. de Arduino bestuurt een LED-strip en wanneer hij een char ontvangt, heeft hij een bijbehorende kleur voor dat apparaat en hij verlicht de LED's voor die persoon op basis van hun aanwezigheid.

onze divisies subsite

sites.google.com/view/valencia-robotics

sites.google.com/view/valencia-robotics/cl…

onze clubsite

sites.google.com/view/valenciatechclub

het Python-script werd geleverd door: Jonathan De La Cruz

www.linkedin.com/in/jonathandelacruz96/

het Arduino-script en het doorlopen en instellen van het thuislab is gedaan door: Dylan Poll

www.linkedin.com/in/dylan-poll-4a324a1a2/

Ik ben Dylan Poll, ik ben de huidige president van de tech club van ons college en ik ben ook de embedded systems lead.

Benodigdheden

een pi

een arduino

een breadboard

jumperdraden

Een webcam

individueel adresseerbare RGB LED Strip

voeding voor je pi, een toetsenbord, een muis, een computer om de eerste installatie uit te voeren.

Stap 1: Initiële installatiebestanden downloaden en installeren

download en installeer putty (windows)

www.putty.org

download rufus en installeer

rufus.ie

download raspbian volledige buster en aanbevolen software (.zip)

www.raspberrypi.org/downloads/raspbian/

pak de inhoud in de.zip uit. Dit wordt je [afbeeldingsbestand].

neem een micro-sd-kaart en gebruik een dock of een microsd-naar-usb-apparaat en sluit deze aan op uw computer formatteer uw sd-kaart

Stap 2: deel twee: Raspbian installeren met Rufus

deel twee: Raspbian installeren met Rufus
deel twee: Raspbian installeren met Rufus

run rufus selecteer je SD-kaart in het eerste veld selecteer het raspbian-afbeeldingsbestand voor de.iso/.img select start en wacht tot het klaar is.

Stap 3: deel drie: de Pi. aansluiten

trek daarna de SD-kaart eruit, plaats deze in de SD-kaartsleuf op de pi, steek de "onderste" stekker in de HDMI-kabel naar de pi, dan een toetsenbord en muis en de laatste voedingskabel. als u eerst de stroom aansluit, wordt uw monitor/tv mogelijk niet geregistreerd.

Stap 4: deel vier: uw account instellen

log in op pi !doe de eerste run setup! sla het niet over! selecteer Amerikaans Engels toetsenbord of je zult je @-symbool later niet vinden… als je dat niet doet, is je @-symbool waar je " is. log in op je wifi op pi update nog niet. Ik heb een reden. druk op de "windows-toetsenbordtoets " en ga naar voorkeuren, ga naar pi-configuratie. ga naar het tabblad interfaces.

VNC inschakelen…. en al het andere start niet opnieuw op.

Stap 5: deel vijf: je Pi instellen als headless (het beste ooit)

deel vijf: je Pi instellen als headless (het beste ooit)
deel vijf: je Pi instellen als headless (het beste ooit)

kijk rechtsboven in je scherm. u ziet het zwart-blauwe VNC-logo. dat openen. klik op inloggen, maken en account. voeg de pi toe. op uw desktop/laptop open browser zoeken op google VNC-viewer downloaden installeren. Log in op jouw account. controleer je e-mail voor het inloggen en autoriseer jezelf. maak verbinding met je pi (typ het pi-wachtwoord in het tweede inlogmenu) als het werkt, zet je pi uit. koppel je pi en alles los. zet de pi in een hoek in je kamer en leid er alleen de stroomkabel naar toe. je kunt verbinding maken met de pi met behulp van VNC-viewer. je hebt nu een "headless" pi. je kunt er ook SSH naartoe (zie SSH info in de coole dingen sectie)

Stap 6: deel zes: alle kernhulpmiddelen voor ontwikkeling installeren op een Pi

deel zes: alle kernhulpmiddelen voor ontwikkelen op een Pi installeren
deel zes: alle kernhulpmiddelen voor ontwikkelen op een Pi installeren

met SSH of VNC (of als je besloot niet cool te zijn en het headless in te stellen) doe het volgende. open terminal (dit volgende deel kan even duren…) voer deze commando's een voor een uit nadat ze allemaal VOLTOOID zijn.

sudo apt-get update; sudo apt-get upgrade ffmpeg installeren{ sudo apt-get install ffmpeg

Stap 7: deel zeven: de Adafruit WebIDE installeren

deel zeven: de Adafruit WebIDE installeren
deel zeven: de Adafruit WebIDE installeren

curl https://raw.githubusercontent.com/adafruit/Adafruit-WebIDE/master/scripts/install.sh | sudo sh open een browser op uw hoofdbureaublad. wijs uw browser-URL naar "https://***.*.*.***:8080" vervang de "*" door het lokale IP-adres van uw Pi. maak een gebruikersnaam aan en geef door. je hebt nu de adafruit webIDE setup.

Stap 8: deel acht: update Node-red en Node.js

update-nodejs-and-nodered de volgende code laat nodered draaien bij het opstarten, net als de adafruit webIDE, dit is belangrijk als je je op deze dingen wilt ontwikkelen. sudo systemctl enable nodered.service herstart de Pi

Stap 9: deel negen: Arduino IDE installeren

Deel negen: Arduino IDE installeren
Deel negen: Arduino IDE installeren

je kunt het doen via de opdrachtregel, maar …. het zal niet de volledige versie zijn.. wat betekent dat je de bibliotheekimport / zoekfunctie niet kunt gebruiken, om de volledige versie te installeren die je nodig hebt om naar de arduino-website te gaan en de versie voor je pi-model te downloaden. het zal de ARM32bit voor de pi3 zijn, haal de stabiele release. open terminal.(vervang de *'s door de release-info) voer deze commando's uit.

www.arduino.cc/en/Main/Software

cd Downloads/ tar -xf arduino-1.*.*-linuxarm.tar.xz sudo mv arduino-1.*.* /opt sudo /opt/arduino-1.*.*/install.sh

Stap 10: Deel tien: Ffmpeg

Deel tien: Ffmpeg
Deel tien: Ffmpeg

1x webcam logitech

(de volgende items bevatten niet wat je nodig hebt om een 24/7 stream te laten lopen) 1x breadboard een tweede raspberry pi-model 3 b (met sd-kaart) individueel adresseerbare LED-strip. arduino nano-jumperdraad schakelt VNC-viewer in op beide Pi('s)

pi-voorkeuren, schakel vnc in maak een account met VNC-viewer BELANGRIJK: op de pi die u als openbare werkbank wilt gebruiken, ga naar vnc-serverinstellingen, opties, expert-tabblad en maak time-out voor inactiviteit: 0 seconden, het is ingesteld om Vnc te sluiten viewer als deze na een uur inactief is, voorkomt u dat uw venster halverwege de stream sluit. Installeer vnc-viewer op streamer pi in terminal.

sudo apt-get install vnc-java y

sluit je webcam aan en..installeer je webcam.

sudo apt install fswebcam

installeer ffmpeg sudo apt-get installeer ffmpeg y

dit is waar je eigen keuzes in het spel komen. in terminal, voer dit script uit om een venster op het bureaublad van je streamer pi te openen voor je webcam.

ffplay -window_title "pi-cam" /dev/video0 -video_size 1920x1080 -vf crop=400:500:300:50 -framerate 20 ffplay laat je dit zien in een venster genaamd pi-cam, de webcam die je laat zien is op locatie dev/video0 en de oorspronkelijke grootte is 1920x1080. Ik wil alleen de crop=width:height:topleft_X:topleft_Y zien en een framerate van 20 is genoeg voor mij. de volgende code zal naar twitch streamen.

ffmpeg -f x11grab -video_size 1280x1024 -framerate 24 -i $DISPLAY -f alsa -vf scale=1280x720 -c:v h264 -g 24 -b:v 2M -preset ultrasnel -c:a aac -pix_fmt yuv420p -f flv " rtmp://live-lax.twitch.tv/app/(vul hier uw streamsleutel in)"

-f x11grab wordt gebruikt om je scherm te pakken. mijn schermresolutie is ingesteld op 1280x1024 Ik wil dat weergeven in 1280x720 dus -vf videoformaat.

2m= uploadsnelheid van 2 mgb. -f flv is om de video te formatteren in.flv zodat twitch het kan gebruiken.

nu kun je je team je VNC-referenties geven aan de werkbank Pi en ze kunnen de wijzigingen aan de ledstrip op afstand live zien. Shout-out naar deze man~! zijn video hielp me op het goede spoor te komen, ik moest echter nog uitzoeken hoe ik in mijn webcam moest duiken … en meer te weten komen over ffmpeg X/

Arthur Reeder https://www.youtube.com/embed/kb_5_9GkwZc OPMERKING: ik ben niet de meest geïnformeerde persoon, dit werkt gewoon voor mijn behoeften, als iemand constructief advies heeft, hoor ik het graag, maar doe het alsjeblieft niet een van de mogelijke routes om dit verder te brengen, zou zijn om deze monteur te gebruiken om dit te streamen, en een andere pi en de chromen extensie lightstream te gebruiken om die stream op te halen en dan de webcam daarin of op een andere manier te voeden. https://www.youtube.com/embed/kb_5_9GkwZc OOK: als je audio wilt toevoegen, zoals te zien is in de youtube-video van de man, kun je deze string gebruiken, ik wilde niet dat mijn huis werd opgenomen en verzonden naar twitch, dit zit in mijn kamer, dus ik stream geen audio, het helpt ook de belasting van de pi te verminderen.

ffmpeg -f x11grab -video_size 1280x1024 -framerate 24 -i $DISPLAY -f alsa -i default -af acompressor=threshold=0.089:ratio=9:attack=200:release=1000 -vf scale=1280x720 -c:v h264 - g 24 -b:v 2M -preset ultrasnel -c:a aac -pix_fmt yuv420p -f flv "rtmp://live-lax.twitch.tv/app/(insertyourstreamkeyhere)"

Stap 11:

Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding

nu naar het laatste stuk, het implementeren van arduino en pi seriële communicatie met python.

---the who is home-project--- Het project gebruikt een python-script dat nmap in terminal uitvoert, de inhoud daarvan kopieert, de tekst die we niet nodig hebben ontleedt en de mac-adressen op het netwerk vergelijkt met de vermelde mac-adressen en als er een match is, is die persoon thuis. de mac-adressen zijn gevonden door onderzoek te doen op de router, maar de nmap-tool geeft je informatie over de apparaten in het tekstbestand dat door de code wordt gegenereerd. als de gebruiker aanwezig is, stuurt het een karakter naar de Arduino, en de Arduino wacht tot de checklist is voltooid, en licht LED's op die overeenkomen met de profielen die worden vermeld voor de mac-adressen van huidige apparaten. je kunt andere dingen toevoegen, zoals discord-bots opdrachten laten uitvoeren op mensen die met dezelfde code komen of gaan door de subprocesoperator te gebruiken om terminalopdrachten in je python-script uit te voeren. dus eerst installeren we nmap sudo apt-get install nmap. vervolgens wil je de bestanden downloaden op onze clubs Git-Hub.

github.com/ValenciaRobotics/embeddedclub

voor de python-code wordt de raspbian-installatie geleverd met alles wat in deze code wordt gebruikt, dus u hoeft niets extra's te installeren. we gebruikten import re, import subproces, import time, import serial. Het is belangrijk op te merken dat python inspringing gebruikt voor het scheiden van codeblokken, dus houd er rekening mee dat als je besluit de manier waarop de code is geschreven te veranderen:) de py wordt geleverd met thonny ide en een paar andere opties, ik vind dat het uitvoeren van het script in thonny echt ongecompliceerd is, als je op het bestand klikt en het probeert uit te voeren, was het suggereren of aannemen dat thonny is wat je wilde gebruiken. voordat u het programma uitvoert, moet u het volgende bewerken. regel 14: de *-symbolen worden gebruikt om mijn eigen routerinformatie te maskeren, die moet je vervangen door je eigen lokale ip. het zou hetzelfde zijn als wat u gebruikt om verbinding te maken met uw router. regels 28, 38, 48, 58: deze gebruiken allemaal het * -symbool om de mac-adressen van apparaten uit mijn netwerk te maskeren, je moet die wijzigen in de mac-adressen van de apparaten op je eigen netwerk om verbindingen te detecteren. waarom mac-adressen? want zonder locaties voor uw apparaat te reserveren, zullen ze zeker hetzelfde blijven, tenzij iemand spoofing uitvoert. problemen met deze code, wordt deze alleen gedetecteerd wanneer een verbinding actief internet gebruikt, dus wordt deze mogelijk niet gedetecteerd ondanks de aanwezigheid van een gebruiker. in de arduino-code wilt u het volgende wijzigen. eerst ga je naar het tabblad tools, selecteer je bibliothekenbeheer, zoek je naar "fastLED" en installeer je de bibliotheek voor "fastLED". vervolgens moet je de "wie is er thuis".ino-code van de github-pagina laden en het volgende naar wens wijzigen. regel 86: verander de kleuren op basis van wat u wilt dat uw gebruikers hebben toegevoegd:)

// zet aan wat je nodig hebt

if(d == 1){ leds[0] = 0xdd8bff; // paarse leds [1] = 0xdd8bff;}

if(l == 1){ leds[2] = CRGB::Groen; leds [3] = CRGB::Groen;}

if(k == 1){ leds[4] = CRGB::Rood; leds [5] = CRGB::Rood; }

if(j == 1){ leds[6] = CRGB::Blauw; leds[7] = CRGB::Blauw;}

FastLED.show(); vertraging (30000); //10 seconde wacht op de schakelkast een korte uitleg voor het toevoegen van meer gebruikers is de volgende:

lege lus(){

if (Serial.available() > 0) {

Serieel.println();

persoon = Serieel.lezen();

vertraging (1000);

schakelaar(persoon){

geval'D': d = 1;

persoon = 'F';

tel = tel+1;

pauze;

geval'd':

d = 0;

persoon = 'F';

tel = tel+1;

pauze;

de hoofdletter D is het ontvangen teken van het python-script, dus het weet dat de gebruiker aanwezig is omdat de ontvangen letter de hoofdletter D is, dus het verandert de waarde van de INTEGER d in 1, als het een kleine letter is dan weet het dat ze zijn afwezig, dus de INTEGER is ingesteld op 0. de voorwaarde voor leds-verlichting in het script van vóór gebruikt een verklaring dat ALS d 1 is, de led zal oplichten, maar als dat niet het geval is, blijft de led als "zwart" wat betekent dat hij niet brandt. deze code maakt gebruik van de bibliotheek "fastLED" en er is veel documentatie hierover. merk op dat als u de tekens wijzigt, tekens toevoegt of tekens verwijdert, u het python-script moet wijzigen om degene die u hebt gewijzigd ook terug te geven, u zult ook de voorwaarde in de void-lus moeten wijzigen. if(count == 4){holdup();} } de telling moet het aantal apparaten weergeven dat u "volgt". in mijn geval is het 4, dus het wacht tot 4 apparaten als aanwezig of afwezig zijn verklaard en dan werkt het de ledstrip bij. in de python-code hebben de regels 31, 34, 41, 44, 51, 54, 61, 64 de volgende regel ser.write(b'*') #sends character cast as byte over serial waarbij * een teken is dat het is naar de arduino sturen. verander dit als je de code in de arduino verandert of vice versa:)

Nogmaals, als slotverklaring wil ik mijn teamgenoot Jon bedanken, hij heeft geweldig werk geleverd door de speling op te vangen wanneer we die nodig hadden.

Het Python-script werd geleverd door: Jonathan De La Cruzhttps://www.linkedin.com/in/jonathandelacruz96/

het Arduino-script en het doorlopen en instellen van het thuislab is gedaan door: Dylan Poll

www.linkedin.com/in/dylan-poll-4a324a1a2/

Hopelijk winnen we in ieder geval een t-shirt! Ik zal dit updaten met shell-commando's om het meeste hiervan automatisch te downloaden en te installeren, onze clubwebsite heeft eigenlijk downloadbare shell-scripts om de ffmpeg-bewerkingen uit te voeren.

Dit project heeft veel tijd gekost, ik heb deze divisie van de club van de grond af aan opgericht, dus ik kan met trots zeggen dat dit moment me veel vreugde brengt.:) bedankt voor je tijd, we hebben een werkplatform om nu in mijn club te ontwikkelen vanwege dit project.

Aanbevolen: