Innehållsförteckning:

Raspberry Pi Zero W Datalogger: 8 steg (med bilder)
Raspberry Pi Zero W Datalogger: 8 steg (med bilder)

Video: Raspberry Pi Zero W Datalogger: 8 steg (med bilder)

Video: Raspberry Pi Zero W Datalogger: 8 steg (med bilder)
Video: Автоматический календарь-планировщик смен в Excel 2024, Juli
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

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

Anslut till WiFi
Anslut till WiFi
Anslut till WiFi
Anslut till WiFi
Anslut till WiFi
Anslut till WiFi
Anslut till WiFi
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

Uppdatera och installera nödvändig programvara
Uppdatera och installera nödvändig programvara
Uppdatera och installera nödvändig programvara
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

Slutliga kommentarer
Slutliga kommentarer

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: