Innehållsförteckning:
- Steg 1: Konfigurera Pi Zero W
- Steg 2: Anslut till WiFi
- Steg 3: Uppdatera och installera nödvändig programvara
- Steg 4: Anslut till en sensor (i detta exempel en Arduino)
- Steg 5: Konfigurera WiFi -åtkomstpunkter
- Steg 6: Växla mellan Wifi -åtkomstpunkt och klientlägen
- Steg 7: Slutanmärkningar
- Steg 8: Exempel på Python Logging Script
Video: Raspberry Pi Zero W Datalogger: 8 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Med en Raspberry Pi Zero W kan du göra en billig och lättanvänd datalogger, som antingen kan anslutas till ett lokalt wifi -nätverk, eller fungera som en åtkomstpunkt i fältet som gör att du kan ladda ner data trådlöst med din smartphone.
Jag presenterade denna inställning vid American Geophysical Union Fall Meeting 2017, som ett sätt att göra din egen dataloggerinställning. Den presentationen hittar du här.
Vad du kommer att behöva:
- En Raspberry Pi Zero W
- Ett micro SD -kort
- en USB -kabel eller USB -strömförsörjning
- En dator med en USB -kortläsare
-
Valfritt (men användbart):
- miniHDMI -> HDMI -adapter (för att ansluta Pi till en skärm)
- USB OTG -adapter (för att ansluta ett tangentbord till Pi
Steg 1: Konfigurera Pi Zero W
För att komma igång, lägg en Rasbian-bild på ett microSD-kort (i den här självstudien använde jag 2017-07-05-raspbian-jessie-lite, tillgänglig här). En lite version kan användas (utan skrivbord) eftersom installationen kommer att göras via kommandoraden.
Sätt i SD -kortet i Pi, anslut skärmen och ett tangentbord och slå på det genom att ansluta strömkabeln. Huvudlös installation är också möjlig, men kräver anslutning via SSH.
Efter att Pi har startat inloggningen (standard användarnamn: pi, lösenord: hallon) och ändra lösenordet med kommandot "passwd".
Tangentbordet kan konfigureras genom att ange "sudo raspi-config" i terminalen.
Steg 2: Anslut till WiFi
För att ansluta till internet berättar vi för Pi vilket nätverk som ska anslutas till. Börja med att öppna följande fil;
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Här kan du lägga till nätverksinformationen längst ner.
nätverk = {
ssid = "nätverksnamn" psk = "nätverkslösenord"}
För ett företagsnätverk kan du använda följande inställningar (justera WPA-EAP // TTLA // MSCHAPv2 till tillämpliga inställningar).
nätverk = {
ssid = "ssid" #Ange ditt nätverksnamn key_mgmt = WPA-EAP eap = TTLS identitet = "xxxxx" #Ange lösenordet för inloggningskontot = "xxxxx" #Ange passwork phase2 = "auth = MSCHAPv2"}
Spara genom att trycka på CTRL+O och avsluta med CTRL+X.
Referera nu till din konfigurationsfil i/etc/network/interfaces
sudo nano/etc/network/interfaces
Ändra wlan0 -delen till:
auto wlan0
iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Spara filen igen (CTRL+O) och avsluta sedan (CTRL+X).
Efter omstart (sudo reboot) bör din wifi -anslutning fungera. Du kan testa detta genom att pinga en webbplats;
ping www.google.com
Avbryt pingen med CTRL+C
För att ansluta till Pi över SSH trådlöst bör du aktivera SSH:
sudo raspi-config
Navigera till "5 gränssnittsalternativ" och aktivera SSH. Gå sedan tillbaka och avsluta konfigurationen.
Slå upp Pi: s IP -adress:
ifconfig
IP -adressen kommer att finnas under "inet addr:" i wlan0 -gränssnittet.
Nu kan du ansluta till Pi via WiFi, om du är i samma nätverk. Ladda ner kitt (för Windows), ange IP -adressen du hittade under "Värdnamn" och tryck på "Öppna". Efter att ha accepterat varningen ska du nu kunna se kommandoraden och logga in.
Steg 3: Uppdatera och installera nödvändig programvara
När WiFi fungerar, uppdatera Pi med:
sudo apt -get update -y && sudo apt -get upgrade -y
När uppdateringen är klar (det kan ta ett tag) installerar du programvaran som vi kommer att använda med;
sudo apt-get install python3 python3-seriell apache2 -y
Steg 4: Anslut till en sensor (i detta exempel en Arduino)
Anslut antingen Arduino tillsammans med ett tangentbord med en USB -hubb, eller anslut Arduino via den enda USB -porten och gör installationen med SSH över WiFi.
För att kunna komma åt den seriella porten som Arduino är ansluten till är det användbart att ge åtkomst till standard -pi -kontot. Eftersom Arduino vanligtvis är tilldelad till port "/dev/ttyACM0", använd följande kommando för att ge 'pi' -användaren åtkomst till porten:
sudo chown pi: /dev /ttyACM0
Om vi antar att Arduino redan har konfigurerats för att skicka data över serieporten, kan du se data i python på följande sätt:
Öppna python;
python3
Importera serienummer:
importera serie
Öppna com -porten:
ser = serial. Serial (port = '/dev/ttyACM0', baudrate = 9600, timeout = 5)
Där baudhastigheten för Arduino var inställd på 9600 i detta fall.
Du kan läsa och skriva ut en rad genom att köra följande kod:
ser.readline (). avkoda ('utf-8')
Om du har det fungerar kan du stänga anslutningen och avsluta Python med:
ser.close ()
utgång()
Steg 5: Konfigurera WiFi -åtkomstpunkter
Genom att konfigurera din Pi Zero W i wifi -åtkomstpunktsläge kan du ansluta till den med vilken wifi -enhet som helst. Detta gör det möjligt att konfigurera loggaren och ladda ner data via wifi, inga kablar eller drivrutiner krävs.
För detta har Adafruit en bra handledning tillgänglig. Några små anmärkningar:
- För /etc/hostapd/hostapd.conf -drivrutinen, använd inte använd drivrutinen.
- Steget "Uppdatera hostapd" bör inte vara nödvändigt.
Om åtkomstpunkten inte fungerar i slutet av självstudien, försök starta om Pi (sudo reboot).
Steg 6: Växla mellan Wifi -åtkomstpunkt och klientlägen
Ibland vill du uppdatera programvara eller installera ny programvara på din Raspberry Pi, men detta kräver en internetanslutning. Lyckligtvis är det väldigt enkelt att växla mellan de två.
Anslut till Pi med SSH (via en kabel, inte wifi!). Börja med att stoppa åtkomstpunktstjänsterna:
sudo cystemctl stoppa hostapd.service
sudo cystemctl stoppa isc-dhcp-server.service
Redigera sedan filen för nätverksgränssnitt:
sudo nano/etc/network/interfaces
Här bör du kommentera värdparametrarna och avmarkera parametrarna för nätverksanslutningen. Ändra det från detta:
#-Hosting-parametrar:
allow-hotplug wlan0 iface wlan0 inet statisk adress 192.168.42.1 netmask 255.255.255.0 # -Nätverk (klient) parametrar: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Till detta:
#-Hostningsparametrar: #allow-hotplug wlan0 #iface wlan0 inet static #address 192.168.42.1 #netmask 255.255.255.0 #-Network (client) parameters: auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Spara och stäng filen.
Därefter kör du följande kommandon:
sudo systemctl start wpa_supplicant.service
sudo ifdown wlan0 sudo ifup wlan0
Nu ska din Pi ansluta till wifi igen, så att du kan uppdatera och installera programvara.
För att komma tillbaka till åtkomstpunktsläge, växla runt kommentarerna i/etc/network/interfaces och starta om Pi.
Steg 7: Slutanmärkningar
Webbplatsinställning
Apache -servern finns i/var/www/. Om du vill ändra standardsidan redigerar du filen /var/www/html/index.html.
Du kan göra filer här tillgängliga för nedladdning via wifi -anslutningen genom att navigera i din webbläsare till Pi: s IP -adress (192.168.42.1). Alla wifi -aktiverade enheter kan sedan ladda ner dem utan någon extra programvara.
SFTP -anslutning
Över SSH kan en FTP -anslutning göras. Du kan använda Filezilla för att snabbt och enkelt överföra en stor mängd filer (se bild).
Riktig tids klocka
Eftersom den interna klockan på Pi kommer att driva avsevärt om det inte finns någon anslutning till internet, kommer en realtidsklocka (RTC) att behövas om korrekt tidtagning krävs. En sådan modul är RasClock, installationsanvisningar finns här. Andra i2c -baserade klockor är också tillgängliga (dvs. DS3231)
Slutsats
Om allt gick rätt borde du nu ha en fungerande Pi Zero -dataloggare! Ett exempel på python -loggningskript ingår i nästa steg.
Steg 8: Exempel på Python Logging Script
importera os
importera serie från tid import tid från datetime import datetime import numpy som np ser = serial. Serial (port = 'COM4', baudrate = 57600, timeout = 5) katalog = r '\ var / www / html / data / anemometer / WMPro1352_ 'ser.flushInput () ser.flushOutput () försök: medan True: day_timestring = datetime.strftime (datetime.now (),'%Y%m%d ') file_today = katalog + day_timestring +'.dat '#Läs ut data och få omedelbart tidslinjen = ser.readline (). avkoda ('utf-8') nowtime = datetime.strftime (datetime.now (), '%Y-%m-%d%H:%M:% S.%f ') line = line.split (', ') try: u = float (line [1]) utom: u = np.nan try: v = float (line [2]) utom: v = np.nan try: w = float (rad [3]) utom: w = np.nan try: c = float (rad [5]) utom: c = np.nan Ts = 1/403*c ** 2 - 273,15 försök: Ta = float (rad [8]) utom: Ta = np.nan if (os.path.isfile (file_today)): med open (file_today, 'a') som fileobject: fileobject.write (nu+',') fileobject.write (str (u)+','+str (v)+','+str (w)+','+str (c)+','+str (Ts)+','+ str (Ta)+'\ n') fileobject.clos e () else: med öppen (file_today, 'w') som fileobject: fileobject.write ('"Time", "u", "v", "w", "c", "Ts", "Ta" / n ') fileobject.write (nu+', ') fileobject.write (str (u)+', '+str (v)+', '+str (w)+', '+str (c)+', '+str (Ts)+', '+str (Ta)+' / n ') fileobject.close () utom KeyboardInterrupt: ser.close ()
Rekommenderad:
Astrofotografering med Raspberry Pi Zero: 11 steg (med bilder)
Astrofotografering Med Raspberry Pi Zero: Jag har gjort två andra Raspberry Pi -baserade kameraprojekt innan [1] [2]. Detta, min tredje kameraidé, är mitt första Raspberry Pi Zero -projekt. Detta är också mitt första besök på astrofotografering! På grund av den senaste "Supermånen" ville jag få min bror "
Alaska Datalogger: 5 steg (med bilder)
Alaska Datalogger: Alaska är på gränsen till att främja klimatförändringarna. Dess unika position att ha ett ganska orört landskap befolkat med en mängd olika kolgruvor kanarier möjliggör många forskningsmöjligheter. Vår vän Monty är en arkeolog som hjälper
Arduino Datalogger: 8 steg (med bilder)
Arduino Datalogger: I den här självstudien kommer vi att göra en enkel datalogger med Arduino. Poängen är att lära sig själva grunderna för att använda Arduino för att fånga information och skriva ut till terminalen. Vi kan använda denna grundläggande installation för att slutföra en rad uppgifter. För att komma igång
Hur man gör en datalogger för temperatur, PH och upplöst syre: 11 steg (med bilder)
Hur man gör en datalogger för temperatur, PH och upplöst syre: Mål: Gör en datalogger för ≤ $ 500. Den lagrar data för temperatur, pH och DO med en tidsstämpel och använder I2C -kommunikation. Varför I2C (interintegrerad krets)? Man kan stapla upp så många sensorer på samma linje med tanke på att var och en av dem har
Trådlös GPS -datalogger för vilda djur: 9 steg (med bilder)
Trådlös GPS -datalogger för vilda djur: I den här instruktören kommer vi att visa dig hur du gör en liten och billig Arduino -baserad GPS -datalogger med trådlös funktion! Användning av telemetri för att studera rörelser i vilda djur kan vara ett mycket viktigt verktyg för biologer. Det kan berätta var