Indholdsfortegnelse:

Raspberry Pi Zero W Datalogger: 8 trin (med billeder)
Raspberry Pi Zero W Datalogger: 8 trin (med billeder)

Video: Raspberry Pi Zero W Datalogger: 8 trin (med billeder)

Video: Raspberry Pi Zero W Datalogger: 8 trin (med billeder)
Video: How I Use ChatGPT to Program My Raspberry Pi 2024, November
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

Ved hjælp af en Raspberry Pi Zero W kan du lave en billig og brugervenlig datalogger, som enten kan tilsluttes et lokalt wifi -netværk eller fungere som et adgangspunkt i feltet, som giver dig mulighed for at downloade data trådløst med din smartphone.

Jeg præsenterede dette setup på American Geophysical Union Fall Meeting 2017, som en måde at lave dit eget datalogger -setup på. Du kan finde den præsentation her.

Det skal du bruge:

  • En Raspberry Pi Zero W
  • Et micro SD -kort
  • et USB -kabel eller en USB -strømforsyning
  • En computer med en USB -kortlæser
  • Valgfrit (men nyttigt):

    • miniHDMI -> HDMI -adapter (til at forbinde Pi til en skærm)
    • USB OTG -adapter (til tilslutning af et tastatur til Pi

Trin 1: Konfigurer Pi Zero W

For at komme i gang skal du sætte et Rasbian-billede på et microSD-kort (i denne vejledning brugte jeg 2017-07-05-raspbian-jessie-lite, tilgængelig her). En lite version kan bruges (uden skrivebord), da opsætningen foretages via kommandolinjen.

Sæt SD -kortet i Pi, tilslut skærmen og et tastatur, og tænd det ved at tilslutte strømkablet. Hovedløs opsætning er også mulig, men det ville kræve forbindelse via SSH.

Efter at Pi har startet login (standard brugernavn: pi, adgangskode: hindbær), og skift adgangskoden med kommandoen "passwd".

Tastaturet kan konfigureres ved at indtaste "sudo raspi-config" i terminalen.

Trin 2: Opret forbindelse til WiFi

Opret forbindelse til WiFi
Opret forbindelse til WiFi
Opret forbindelse til WiFi
Opret forbindelse til WiFi
Opret forbindelse til WiFi
Opret forbindelse til WiFi
Opret forbindelse til WiFi
Opret forbindelse til WiFi

For at oprette forbindelse til internettet fortæller vi Pi, hvilket netværk der skal oprettes forbindelse til. Start med at åbne følgende fil;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Her kan du tilføje netværksoplysningerne i bunden;

netværk = {

ssid = "netværksnavn" psk = "netværksadgangskode"}

I tilfælde af et virksomhedsnetværk kan du bruge følgende opsætning (juster WPA-EAP // TTLA // MSCHAPv2 til de relevante indstillinger).

netværk = {

ssid = "ssid" #Indtast dit netværksnavn key_mgmt = WPA-EAP eap = TTLS identitet = "xxxxx" #Indtast din login-adgangskode = "xxxxx" #Indtast passwork phase2 = "auth = MSCHAPv2"}

Gem ved at trykke på CTRL+O, og afslut med CTRL+X.

Henvis nu til din konfigurationsfil i/etc/network/interfaces

sudo nano/etc/network/interfaces

Skift wlan0 -delen til:

auto wlan0

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

Gem igen filen (CTRL+O), og afslut derefter (CTRL+X).

Efter genstart (sudo genstart) skulle din wifi -forbindelse fungere. Du kan teste dette ved at pinge et websted;

ping www.google.com

Annuller pingen med CTRL+C

For at oprette forbindelse til Pi over SSH trådløst skal du aktivere SSH:

sudo raspi-config

Naviger til "5 grænsefladeindstillinger", og aktiver SSH. Gå derefter tilbage og afslut konfigurationen.

Slå IP -adressen til Pi op:

ifconfig

IP'en vil være under "inet addr:" i wlan0 -grænsefladen.

Nu kan du oprette forbindelse til Pi via WiFi, hvis du er på det samme netværk. Download Putty (til Windows), indtast den IP -adresse, du fandt under "Værtsnavn", og tryk på "Åbn". Efter at have accepteret advarslen skal du nu kunne se kommandolinjen og logge ind.

Trin 3: Opdater og installer påkrævet software

Opdater og installer påkrævet software
Opdater og installer påkrævet software
Opdater og installer påkrævet software
Opdater og installer påkrævet software

Når WiFi fungerer, skal du opdatere Pi'en med:

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

Når opdateringen er færdig (det kan tage et stykke tid), skal du installere den software, vi vil bruge med;

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

Trin 4: Tilslut til en sensor (i dette eksempel en Arduino)

Enten tilslut Arduino sammen med et tastatur ved hjælp af en USB -hub, eller tilslut Arduino via den enkelte USB -port, og foretag opsætningen med SSH over WiFi.

For at få adgang til den serielle port, Arduino er forbundet til, er det nyttigt at give adgang til standard pi -kontoen. Da Arduino normalt er tildelt port "/dev/ttyACM0", skal du bruge følgende kommando til at give 'pi' -brugeren adgang til porten:

sudo chown pi: /dev /ttyACM0

Forudsat at Arduino allerede er konfigureret til at sende data over den serielle port, kan du se dataene i python på følgende måde:

Åben python;

python3

Importer serie:

import seriel

Åbn com -porten:

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

Hvor baudrate for Arduino var indstillet til 9600 i dette tilfælde.

Du kan læse og udskrive en linje ved at køre følgende kode:

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

Hvis du har det til at fungere, kan du lukke forbindelsen og afslutte Python med:

ser.close ()

Afslut()

Trin 5: Konfigurer WiFi Access Point -muligheder

Ved at konfigurere din Pi Zero W i wifi -adgangspunkttilstand kan du oprette forbindelse til den med enhver wifi -enhed. Dette tillader opsætning af loggeren og download af data via wifi, ingen kabler eller drivere kræves.

Til dette har Adafruit en god tutorial tilgængelig. Nogle små bemærkninger:

  • For driveren /etc/hostapd/hostapd.conf skal du ikke bruge driverlinjen.
  • "Opdater hostapd" -trinnet burde ikke være nødvendigt.

Hvis adgangspunktet ikke virker i slutningen af selvstudiet, kan du prøve at genstarte Pi (sudo genstart).

Trin 6: Skift mellem Wifi -adgangspunkt og klienttilstande

Nogle gange vil du gerne opdatere software eller installere ny software på din Raspberry Pi, men dette kræver en internetforbindelse. Det er heldigvis meget let at skifte mellem de to.

Tilslut Pi med SSH (over et kabel, ikke wifi!). Start med at stoppe adgangspunktstjenesterne:

sudo cystemctl stop hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Rediger derefter netværksgrænsefladefilen:

sudo nano/etc/network/interfaces

Her bør du kommentere hostingparametrene og fjerne kommentaren til netværksforbindelsesparametrene. Skift det fra dette:

#-Hosting parametre:

allow-hotplug wlan0 iface wlan0 inet statisk adresse 192.168.42.1 netmask 255.255.255.0 # -Network (klient) parametre: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Til dette:

#-Hosting parametre: #allow-hotplug wlan0 #iface wlan0 inet static #adresse 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

Gem og luk filen.

Dernæst kører du følgende kommandoer:

sudo systemctl start wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Nu skal din Pi oprette forbindelse til wifi igen, så du kan opdatere og installere software.

For at komme tilbage til adgangspunktstilstand skal du skifte rundt i kommentarerne i/etc/network/interfaces og genstarte Pi.

Trin 7: Afsluttende bemærkninger

Afsluttende bemærkninger
Afsluttende bemærkninger

Opsætning af websted

Apache -serveren er placeret i/var/www/. Hvis du vil ændre standardsiden, skal du redigere filen /var/www/html/index.html.

Du kan gøre filer her tilgængelige til download via wifi -forbindelsen ved at navigere i din browser til Pi's IP -adresse (192.168.42.1). Enhver wifi -aktiveret enhed kan derefter downloade dem uden ekstra software.

SFTP -forbindelse

Over SSH kan der oprettes en FTP -forbindelse. Du kan bruge Filezilla til hurtigt og nemt at overføre en stor mængde filer (se billede).

Ur i realtid

Da det interne ur i Pi vil drive betydeligt, hvis der ikke er nogen forbindelse til internettet, vil et realtidsur (RTC) -modul være nødvendigt, hvis nøjagtig tidvisning er påkrævet. Et sådant modul er RasClock, installationsvejledning kan findes her. Andre i2c -baserede ure er også tilgængelige (dvs. DS3231)

Konklusion

Hvis alt gik korrekt, skulle du nu have en fungerende Pi Zero -datalogger! Et eksempel på et python -logningsscript er inkluderet i det næste trin.

Trin 8: Eksempel på Python Logging Script

import os

import seriel fra tid import tid fra datetime import datetime import numpy som np ser = serial. Serial (port = 'COM4', baudrate = 57600, timeout = 5) bibliotek = r '\ var / www / html / data / anemometer / WMPro1352_ 'ser.flushInput () ser.flushOutput () try: while True: day_timestring = datetime.strftime (datetime.now (),'%Y%m%d ') file_today = directory + day_timestring +'.dat '#Read out data og få straks tidslinjen = ser.readline (). afkode ('utf-8') nu = datetime.strftime (datetime.now (), '%Y-%m-%d%H:%M:% S.%f ') line = line.split (', ') try: u = float (line [1]) undtagen: u = np.nan try: v = float (line [2]) undtagen: v = np.nan try: w = float (linje [3]) undtagen: w = np.nan try: c = float (line [5]) undtagen: c = np.nan Ts = 1/403*c ** 2 - 273,15 prøv: Ta = float (linje [8]) undtagen: Ta = np.nan if (os.path.isfile (file_today)): med åben (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 åben (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 () undtagen KeyboardInterrupt: ser.close ()

Anbefalede: