Innehållsförteckning:

Raspberry Pi HomeLab och Who Is Home: 11 steg
Raspberry Pi HomeLab och Who Is Home: 11 steg

Video: Raspberry Pi HomeLab och Who Is Home: 11 steg

Video: Raspberry Pi HomeLab och Who Is Home: 11 steg
Video: 100 Days of HomeLab 2024, December
Anonim
Raspberry Pi HomeLab och Who Is Home
Raspberry Pi HomeLab och Who Is Home
Raspberry Pi HomeLab och Who Is Home
Raspberry Pi HomeLab och Who Is Home
Raspberry Pi HomeLab och Who Is Home
Raspberry Pi HomeLab och Who Is Home
Raspberry Pi HomeLab och Who Is Home
Raspberry Pi HomeLab och Who Is Home

Detta är min första oförstörbara, men den här instruerbara har två fazes.

faze ett: är att skapa en pi för att arbeta som ett hemlabb för IOT-arbete för ett team av studentutvecklare.

faze två: använder systemet för utveckling, genom att genomföra en demonstration med vårt vem är hem -projekt.

i slutet av detta kommer du att ha en fjärråtkomlig huvudlös pi som kan användas av människor för att fjärrprogrammera och arbeta på IOT -enheter.

nu varnar jag att genom att öppna din pi för allmänheten utan vederbörlig säkerhet öppnar du dig för risken för att ditt hemnätverk attackeras.

Vi kommer att gå igenom den första fazen i följande steg, men det här är en länk till lite information om vår klubb och projektet vem som är hemma.

github.com/ValenciaRobotics/embeddedclub

WhoIsHome

projektet Who Is home gör följande: kör ett python -skript som söker efter mac -adresser för enheter som är anslutna till ditt nätverk. den använder Nmap för detta. den kör dessa adresser mot en adresslista och om den angivna adressen är närvarande skickar den en char till en arduino med hjälp av seriell kommunikation. arduino styr en LED -remsa och när den får en röding har den en tillhörande färg för den enheten och den tänder lysdioderna för den personen baserat på att de är närvarande.

våra divisioner går ned

sites.google.com/view/valencia-robotics

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

vår klubbsida

sites.google.com/view/valenciatechclub

Python Script tillhandahålls av: Jonathan De La Cruz

www.linkedin.com/in/jonathandelacruz96/

Arduino Script och gå igenom och installationen av hemlabbet gjordes av: Dylan Poll

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

Jag är Dylan Poll, jag är den nuvarande presidenten för techklubben på vårt college och jag är också den inbäddade systemledaren.

Tillbehör

En pi

En arduino

En brödbräda

bygelkablar

En webbkamera

individuellt adresserbar RGB LED Strip

strömförsörjning för din pi, ett tangentbord en mus, dator för att göra den första installationen.

Steg 1: Ladda ner och installera initialinstallationsfiler

ladda ner och installera kitt (Windows)

www.putty.org

ladda ner rufus och installera

rufus.ie

ladda ner raspbian full buster och rekommenderad programvara (.zip)

www.raspberrypi.org/downloads/raspbian/

extrahera innehållet i.zip detta blir din [bildfil].

ta ett micro sd -kort, och använd en docka eller en microsd till usb -enhet och anslut det till din dator formatera ditt sd -kort

Steg 2: del två: Installera Raspbian med Rufus

Del två: Installera Raspbian med Rufus
Del två: Installera Raspbian med Rufus

kör rufus välj ditt sd -kort i det första fältet välj raspbian -bildfilen för.iso/.img välj start och vänta tills det är klart.

Steg 3: del tre: Anslutning av Pi

efter att det är klart drar du ut sd -kortet, sätter det i sd -kortplatsen på pi, det sitter på "nedre" kontakten i HDMI -kabeln till pi först, än ett tangentbord och en mus, och den sista strömkabeln. om du ansluter ström först kanske det inte registrerar din bildskärm/tv.

Steg 4: del fyra: Konfigurera ditt konto

logga in på pi! gör den första körningen! hoppa inte över det! välj USA engelska tangentbord eller så hittar du inte din @ -symbol senare … om du inte gör det är din @ -symbol där din "är. logga in på ditt wifi på pi uppdatera inte ännu. Jag har en anledning. tryck på" Windows tangentbordstangent "och gå till inställningar, gå till pi -konfiguration. gå till fliken gränssnitt.

aktivera VNC…. och allt annat startar inte om.

Steg 5: del fem: Konfigurera din Pi som huvudlös (det bästa någonsin)

Del fem: Konfigurera din Pi som huvudlös (det bästa någonsin)
Del fem: Konfigurera din Pi som huvudlös (det bästa någonsin)

titta längst upp till höger på skärmen. du kommer att se den svarta och blå VNC -logotypen. öppna det. tryck på logga in, skapa och konto. lägg till pi. på din stationära/bärbara dator öppen webbläsarsökning på google VNC viewer nedladdningsinstallation. Logga in på ditt konto. kontrollera din e -post för att logga in och auktorisera dig själv. anslut till din pi (skriv in pi -lösenordet i den andra inloggningsmenyn) om det fungerar stäng av din pi. koppla ur din pi och allt. sätt pien i ett hörn i rummet och dra bara strömkabeln till den. du kan ansluta till pi med VNC viewer. du har nu en "huvudlös" pi. du kan också SSH till den. (se SSH -info i avsnittet om coola saker)

Steg 6: del sex: Installera alla kärnverktyg för utveckling på en Pi

Del sex: Installera alla kärnverktyg för utveckling på en Pi
Del sex: Installera alla kärnverktyg för utveckling på en Pi

Använd SSH eller VNC (eller om du bestämde dig för att inte vara cool och ställa in den utan huvud) gör följande. öppen terminal (denna nästa del kan ta ett tag …). kör dessa kommandon en i taget efter att var och en är klar.

sudo apt-get uppdatering; sudo apt-get uppgradering installerar ffmpeg {sudo apt-get install ffmpeg

Steg 7: del sju: Installera Adafruit WebIDE

Del sju: Installera Adafruit WebIDE
Del sju: Installera Adafruit WebIDE

curl https://raw.githubusercontent.com/adafruit/Adafruit-WebIDE/master/scripts/install.sh | sudo sh öppna en webbläsare på ditt skrivbord. rikta din webbläsares URL till "https://***.*.*.***: 8080" ersätt "*" med din Pi: s lokala IP -adress. skapa ett användarnamn och skicka. du har nu adafruit webIDE -installationen.

Steg 8: del åtta: Uppdatera Node-red och Node.js

update-nodejs-and-nodered nästa kod kommer att göra nodered körning vid start precis som adafruit webIDE, detta är viktigt om du vill utveckla på dessa saker. sudo systemctl enable nodered.service starta om Pi

Steg 9: del nio: Installera Arduino IDE

Del nio: Installera Arduino IDE
Del nio: Installera Arduino IDE

du kan göra det via kommandoraden men …. det kommer inte att vara den fullständiga versionen.. vilket betyder att du inte kan använda biblioteksimport-/sökverktyget, för att installera den fullständiga versionen behöver du gå till arduino -webbplatsen och ladda ner versionen för din pi -modell. det kommer att vara ARM32bit för pi3, få den stabila versionen. öppen terminal. (byt ut *: erna med utgivningsinformationen) kör dessa kommandon.

www.arduino.cc/en/Main/Software

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

Steg 10: Del tio: Ffmpeg

Del tio: Ffmpeg
Del tio: Ffmpeg

1x webbkamera logitech

(de följande artiklarna innehåller inte vad du behöver för att köra en 24/7 ström) 1x brödbräda en andra hallon pi modell 3 b (med sd -kort) individuellt adresserbar LED -remsa. arduino nano jumper wire aktivera VNC viewer på båda Pi (er)

pi -inställningar, aktivera vnc skapa ett konto med VNC viewer VIKTIGT: på den pi du planerar att använda som en offentlig arbetsbänk, gå till vnc -serverinställningar, alternativ, expertflik och gör inaktiv timeout: 0 sekunder, det är inställt för att stänga Vnc tittaren om den är inaktiv efter en timme, kommer detta att hindra ditt fönster från att stänga mitten av strömmen installera vnc viewer på streamer pi i terminalen.

sudo apt-get install vnc-java y

anslut din webbkamera och..installera din webbkamera.

sudo apt installera fswebcam

installera ffmpeg sudo apt-get install ffmpeg y

det är här dina egna val spelar in. i terminal, kör detta skript för att öppna ett fönster på din streamer pi: s skrivbord för din webbkamera.

ffplay -window_title "pi -cam" /dev /video0 -video_size 1920x1080 -vf crop = 400: 500: 300: 50 -framerate 20 ffplay låter dig se detta i ett fönster med namnet pi -cam, webbkameran visar dig på plats dev/video0 och dess ursprungliga storlek är 1920x1080. Jag vill bara se beskärningen = bredd: höjd: topleft_X: topleft_Y och en framerate på 20 räcker för mig. nästa kod kommer att strömma till ryck.

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

-f x11grab används för att ta tag i din skärm. min skärmupplösning är inställd på 1280x1024 Jag vill visa den i 1280x720 so -vf videoformat.

2m = 2mgb uppladdningshastighet. -f flv är att formatera videon till.flv så att twitch kan använda den.

nu kan du ge ditt team dina VNC -referenser till arbetsbänken Pi och de kan se förändringarna på ledremsan på distans. Rop till den här killen ~! hans video hjälpte mig att komma igång, jag var fortfarande tvungen att ta reda på hur jag skulle dyka in i min webbkamera … och ta reda på om ffmpeg X/

Arthur Reeder https://www.youtube.com/embed/kb_5_9GkwZc OBS: Jag är inte den mest informerade personen, det fungerar helt enkelt för mina behov, om någon har konstruktiva råd skulle jag gärna höra det men snälla gör det inte vara elak en av de möjliga vägarna för att ta detta vidare, skulle vara att använda denna mekaniker för att strömma detta, och använda en annan pi och kromförlängningens ljusström för att hämta den strömmen och sedan mata webbkameran till den eller på något annat sätt. https://www.youtube.com/embed/kb_5_9GkwZc OCKSÅ: om du vill lägga till ljud, så som det syns i mans youtube -video, kan du använda den här strängen, jag ville inte att mitt hus skulle spelas in och skickas för att rycka, det här sitter i mitt rum så jag strömmar inget ljud, det hjälper också till att minska belastningen på pi.

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 -förinställning ultrasnabb -c: a aac -pix_fmt yuv420p -f flv "rtmp: //live-lax.twitch.tv/app/ (insertyourstreamkeyhere)"

Steg 11:

Bild
Bild
Bild
Bild
Bild
Bild
Bild
Bild

nu till den sista delen, implementera seriell kommunikation med arduino och pi med python.

--- vem är hemprojektet --- Projektet använder ett python-skript som kör nmap i terminalen, kopiera innehållet i det, analyserar texten vi inte behöver och jämför mac-adresserna i nätverket mot listade mac -adresser och om det finns en match är den personen hemma. mac -adresserna hittades genom att utföra undersökningsarbete på routern, men nmap -verktyget ger dig information om enheterna i textfilen som genereras av koden. om användaren är närvarande skickar den ett tecken till arduinoen och arduino väntar tills checklistan är klar och lyser upp lysdioder som motsvarar profilerna som listas för mac -adresserna för nuvarande enheter. du kan lägga till andra saker, till exempel att låta discord-bots köra kommandon när personer kommer eller går med samma kod genom att använda delprocessoperatören för att utföra terminalkommandon i ditt python-skript. så först installerar vi nmap sudo apt-get install nmap. nästa kommer du att vilja ladda ner filerna på våra klubbar Git-Hub.

github.com/ValenciaRobotics/embeddedclub

för pythonkoden kommer den raspbiska installationen med allt som används i den här koden, så du behöver inte installera något extra. vi använde import re, import delprocess, importtid, import seriell det är viktigt att notera att python använder indrag för att separera ut kodblock, så var medveten om det om du bestämmer dig för att ändra hur koden skrivs:) py kommer med thonny ide och några andra alternativ, jag tycker att att köra skriptet i thonny är riktigt rakt fram, om du klickar på filen och försöker köra den, var det föreslå eller anta att thonny var vad du ville använda. innan du kör programmet måste du redigera följande. rad 14: * symbolerna används för att maskera min egen routerinformation, du måste ersätta den med din egen lokala ip. det skulle vara detsamma som vad du använder för att ansluta till din router. rad 28, 38, 48, 58: alla använder symbolen * för att maskera enhets -mac -adresser som listas från mitt nätverk, du måste ändra dem till mac -adresserna för enheterna i ditt eget nätverk för att upptäcka anslutningar. varför mac -adresser? för utan att reservera platser för din enhet kommer de säkert att förbli densamma om inte någon lurar. problem med den här koden, kommer den bara att upptäcka medan en anslutning aktivt använder internet, så den kanske inte upptäcks trots att en användare är närvarande. i arduino -koden vill du ändra följande. Först vill du gå till verktygsfliken, välja bibliotekshanteraren och söka efter "fastLED" och installera biblioteket för "fastLED". Därefter måste du ladda in "who is home".ino -koden från github -sidan och ändra följande som du vill. rad 86: ändra färger utifrån vad du vill att dina användare ska bifoga:)

// slå på det du behöver

om (d == 1) {leds [0] = 0xdd8bff; // lila leds [1] = 0xdd8bff;}

om (l == 1) {leds [2] = CRGB:: Grön; leds [3] = CRGB:: Grön;}

om (k == 1) {leds [4] = CRGB:: Röd; lysdioder [5] = CRGB:: Röd; }

om (j == 1) {leds [6] = CRGB:: Blå; leds [7] = CRGB:: Blå;}

FastLED.show (); fördröjning (30000); // 10 sekunders väntan på switchväskan en kort förklaring till hur man lägger till fler användare är följande

void loop () {

if (Serial.available ()> 0) {

Serial.println ();

person = Serial.read ();

fördröjning (1000);

switch (person) {

case'D ': d = 1;

person = 'F';

count = count+1;

ha sönder;

case'd ':

d = 0;

person = 'F';

count = count+1;

ha sönder;

versalen D är det mottagna tecknet från python -skriptet, så det vet att användaren är närvarande eftersom den mottagna bokstaven är versalen D, så det ändrar värdet på INTEGER d till 1, om det är en liten bokstav än den vet att de är frånvarande så INTEGEREN är inställd på 0. villkoret för LED -belysning i manuset från tidigare använder ett uttalande om IF d är 1 än det kommer att tända lysdioden, men om det inte är det lyser LED som "svart" vilket betyder obelyst. denna kod använder biblioteket "fastLED" och det finns mycket dokumentation om detta. Observera att om du ändrar tecknen, lägger till tecken eller tar bort tecken måste du ändra python -skriptet för att returnera dem du också ändrade dem, du måste också ändra villkoret i tomrumsslingan. if (count == 4) {holdup ();}} räkningen måste återspegla antalet enheter du "spårar". i mitt fall är det 4, så det väntar tills 4 enheter har förklarats som närvarande eller frånvarande och sedan uppdaterar det LED -remsan. i pythonkoden har raderna 31, 34, 41, 44, 51, 54, 61, 64 följande rad ser.write (b ' *') #skickar tecken som byte över serie där * är ett tecken det är skicka till arduino. ändra detta om du ändrar koden i arduino eller tvärtom:)

Återigen, som ett avslutande uttalande, vill jag ge kredit till min lagkamrat Jon, han gjorde ett jättebra jobb med att plocka upp slacken när vi behövde det.

Python Script tillhandahålls av: Jonathan De La Cruzhttps://www.linkedin.com/in/jonathandelacruz96/

Arduino Script och gå igenom och installationen av hemlabbet gjordes av: Dylan Poll

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

Förhoppningsvis vinner vi åtminstone en t-shirt! Jag kommer att uppdatera detta med skalkommandon för att automatiskt ladda ner och installera det mesta, vår klubbs webbplats har faktiskt nedladdningsbara skalskript för att utföra ffmpeg -operationerna.

Detta projekt tog mycket tid, jag grundade denna division av klubben från grunden så jag kan stolt säga att det här ögonblicket ger mig mycket glädje.:) tack för din tid, vi har en arbetsplattform att utveckla nu i min klubb på grund av detta projekt.

Rekommenderad: