Innholdsfortegnelse:

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

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

Video: Raspberry Pi Zero W Datalogger: 8 trinn (med bilder)
Video: Raspberry Pi 4 Data Logger | DHT11/DHT22 Sensor Data Logger 2024, Juli
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

Ved å bruke en Raspberry Pi Zero W kan du lage en billig og brukervennlig datalogger, som enten kan kobles til et lokalt wifi -nettverk, eller fungere som et tilgangspunkt i feltet som lar deg laste ned data trådløst med smarttelefonen din.

Jeg presenterte dette oppsettet på American Geophysical Union Fall Meeting 2017, som en måte å lage ditt eget dataloggeroppsett. Du finner presentasjonen her.

Dette trenger du:

  • En Raspberry Pi Zero W
  • Et micro SD -kort
  • en USB -kabel eller USB -strømforsyning
  • En datamaskin med en USB -kortleser
  • Valgfritt (men nyttig):

    • miniHDMI -> HDMI -adapter (for å koble Pi til en skjerm)
    • USB OTG -adapter (for å koble et tastatur til Pi

Trinn 1: Sett opp Pi Zero W

For å komme i gang, legg et Rasbian-bilde på et microSD-kort (i denne opplæringen brukte jeg 2017-07-05-raspbian-jessie-lite, tilgjengelig her). En lite versjon kan brukes (uten skrivebord) ettersom oppsettet gjøres via kommandolinjen.

Sett inn SD -kortet i Pi, koble til skjermen og et tastatur, og slå det på ved å koble til strømkabelen. Hodeløst oppsett er også mulig, men vil kreve tilkobling via SSH.

Etter at Pi har startet opp pålogging (standard brukernavn: pi, passord: bringebær), og endre passordet med kommandoen "passwd".

Tastaturet kan konfigureres ved å skrive inn "sudo raspi-config" i terminalen.

Trinn 2: Koble til WiFi

Koble til WiFi
Koble til WiFi
Koble til WiFi
Koble til WiFi
Koble til WiFi
Koble til WiFi
Koble til WiFi
Koble til WiFi

For å koble til internett, forteller vi Pi hvilket nettverk du skal koble til. Start med å åpne følgende fil;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Her legger du til nettverksinformasjonen nederst;

nettverk = {

ssid = "nettverksnavn" psk = "nettverkspassord"}

Når det gjelder et bedriftsnettverk, kan du bruke følgende oppsett (juster WPA-EAP // TTLA // MSCHAPv2 til gjeldende innstillinger).

nettverk = {

ssid = "ssid" #Skriv inn nettverksnavnet ditt key_mgmt = WPA-EAP eap = TTLS identitet = "xxxxx" #Skriv inn påloggingspassordet ditt "xxxxx" #Skriv inn passwork phase2 = "auth = MSCHAPv2"}

Lagre ved å trykke CTRL+O, og avslutt med CTRL+X.

Referer nå til konfigurasjonsfilen i/etc/network/interfaces

sudo nano/etc/network/interfaces

Endre wlan0 -delen til:

auto wlan0

iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Lagre igjen filen (CTRL+O) og avslutt (CTRL+X).

Etter omstart (sudo reboot), bør wifi -tilkoblingen din fungere. Du kan teste dette ved å pinge et nettsted;

ping www.google.com

Avbryt pingen med CTRL+C

For å koble til Pi over SSH trådløst, bør du aktivere SSH:

sudo raspi-config

Naviger til "5 grensesnittalternativer", og aktiver SSH. Gå deretter tilbake og avslutt konfigurasjonen.

Slå opp IP -adressen til Pi:

ifconfig

IP -adressen vil være under "inet addr:" i wlan0 -grensesnittet.

Nå kan du koble til Pi over WiFi, hvis du er på samme nettverk. Last ned Putty (for Windows), skriv inn IP -adressen du fant under "Host Name", og trykk "Open". Etter å ha godtatt advarselen skal du nå kunne se kommandolinjen og logge inn.

Trinn 3: Oppdater og installer nødvendig programvare

Oppdater og installer nødvendig programvare
Oppdater og installer nødvendig programvare
Oppdater og installer nødvendig programvare
Oppdater og installer nødvendig programvare

Etter at WiFi fungerer, oppdaterer du Pi med:

sudo apt -get update -y && sudo apt -get upgrade -y

Etter at oppdateringen er ferdig (det kan ta en stund), installerer du programvaren vi skal bruke med;

sudo apt-get install python3 python3-serial apache2 -y

Trinn 4: Koble til en sensor (i dette eksemplet en Arduino)

Enten koble Arduino sammen med et tastatur ved hjelp av en USB -hub, eller koble Arduino via den eneste USB -porten, og gjør oppsettet med SSH over WiFi.

For å få tilgang til den serielle porten Arduino er koblet til, er det nyttig å gi tilgang til standard pi -kontoen. Siden Arduino vanligvis er tilordnet port "/dev/ttyACM0", bruker du følgende kommando for å gi 'pi' brukeren tilgang til porten:

sudo chown pi: /dev /ttyACM0

Forutsatt at Arduino allerede er konfigurert for å sende data over den serielle porten, kan du se dataene i python på følgende måte:

Åpen python;

python3

Importer serie:

importer serie

Åpne com -porten:

ser = serial. Serial (port = '/dev/ttyACM0', baudrate = 9600, timeout = 5)

Hvor baudraten til Arduino ble satt til 9600 i dette tilfellet.

Du kan lese og skrive ut en linje ved å kjøre følgende kode:

ser.readline (). dekode ('utf-8')

Hvis du har det til å fungere, kan du lukke tilkoblingen og avslutte Python med:

ser.close ()

exit()

Trinn 5: Sett opp WiFi -tilgangspunktfunksjoner

Ved å sette opp din Zero W i modus for wifi -tilgangspunkt, kan du koble til den med hvilken som helst wifi -enhet. Dette gjør det mulig å konfigurere loggeren og laste ned data via wifi, ingen kabler eller drivere kreves.

For dette har Adafruit en god opplæring tilgjengelig. Noen små bemerkninger:

  • For /etc/hostapd/hostapd.conf -driveren, bruk ikke bruk driverlinjen.
  • Trinnet "Oppdater hostapd" bør ikke være nødvendig.

Hvis tilgangspunktet ikke fungerer på slutten av opplæringen, kan du prøve å starte Pi på nytt (sudo reboot).

Trinn 6: Bytte mellom Wifi -tilgangspunkt og klientmoduser

Noen ganger vil du oppdatere programvare eller installere ny programvare på Raspberry Pi, men dette krever en internettforbindelse. Heldigvis er det veldig enkelt å bytte mellom de to.

Koble til Pi med SSH (over en kabel, ikke wifi!). Start med å stoppe tilgangspunktstjenestene:

sudo cystemctl stopp hostapd.service

sudo cystemctl stopp isc-dhcp-server.service

Rediger deretter nettverksgrensesnittfilen:

sudo nano/etc/network/interfaces

Her bør du kommentere hostingparametrene og fjerne kommentaren til nettverkstilkoblingsparametrene. Endre det fra dette:

#-Hosting parametere:

tillat-hotplug wlan0 iface wlan0 inet statisk adresse 192.168.42.1 netmask 255.255.255.0 # -Nettverk (klient) parametere: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Til dette:

#-Hosting-parametere: #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

Lagre og lukk filen.

Deretter kjører du følgende kommandoer:

sudo systemctl start wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Nå skal Pi koble til wifi igjen, slik at du kan oppdatere og installere programvare.

For å komme tilbake til tilgangspunktmodus, bytt rundt kommentarene i/etc/network/interfaces, og start Pi på nytt.

Trinn 7: Avsluttende kommentarer

Siste merknader
Siste merknader

Oppsett av nettsted

Apache -serveren ligger i/var/www/. For å endre standardsiden, rediger /var/www/html/index.html -filen.

Du kan gjøre filer tilgjengelig for nedlasting via wifi -tilkoblingen, ved å navigere i nettleseren til Pi -IP -adressen (192.168.42.1). Enhver wifi -aktivert enhet kan deretter laste dem ned uten ekstra programvare.

SFTP -tilkobling

Over SSH kan en FTP -tilkobling opprettes. Du kan bruke Filezilla til raskt og enkelt å overføre en stor mengde filer (se bilde).

Sanntidsklokke

Siden den interne klokken til Pi vil drive betydelig hvis det ikke er tilkobling til internett, vil en sanntidsklokke (RTC) -modul være nødvendig hvis nøyaktig tidvisning er nødvendig. En slik modul er RasClock, installasjonsinstruksjoner finner du her. Andre i2c -baserte klokker er også tilgjengelige (dvs. DS3231)

Konklusjon

Hvis alt gikk riktig, burde du nå ha en fungerende Pi Zero -datalogger! Et eksempel på python -loggskript er inkludert i neste trinn.

Trinn 8: Eksempel på Python Logging Script

import os

import serial from time import time from datetime import datetime import numpy as np ser = serial. Serial (port = 'COM4', baudrate = 57600, timeout = 5) directory = r '\ var / www / html / data / anemometer / WMPro1352_ 'ser.flushInput () ser.flushOutput () prøv: mens True: day_timestring = datetime.strftime (datetime.now (),'%Y%m%d ') file_today = katalog + day_timestring +'.dat '#Les ut data og få umiddelbart tidslinjen = ser.readline (). dekode ('utf-8') nå = datetime.strftime (datetime.now (), '%Y-%m-%d%H:%M:% S.%f ') line = line.split (', ') try: u = float (line [1]) unntatt: u = np.nan try: v = float (line [2]) unntatt: v = np.nan prøve: w = float (linje [3]) unntatt: w = np.nan try: c = float (line [5]) unntatt: c = np.nan Ts = 1/403*c ** 2 - 273,15 prøv: Ta = float (linje [8]) unntatt: Ta = np.nan if (os.path.isfile (file_today)): med åpen (file_today, 'a') som fileobject: fileobject.write (nå+',') fileobject.write (str (u)+','+str (v)+','+str (w)+','+str (c)+','+str (Ts)+','+ str (Ta)+'\ n') fileobject.clos e () else: med åpen (file_today, 'w') som fileobject: fileobject.write ('"Time", "u", "v", "w", "c", "Ts", "Ta" / n ') fileobject.write (nåtid+', ') fileobject.write (str (u)+', '+str (v)+', '+str (w)+', '+str (c)+', '+str (Ts)+', '+str (Ta)+' / n ') fileobject.close () unntatt KeyboardInterrupt: ser.close ()

Anbefalt: