Inhoudsopgave:

Raspberry Pi Zero W datalogger - Ajarnpa
Raspberry Pi Zero W datalogger - Ajarnpa

Video: Raspberry Pi Zero W datalogger - Ajarnpa

Video: Raspberry Pi Zero W datalogger - Ajarnpa
Video: Datalogger with FireGUI Project and PIR Sensor + Raspberry Pi Zero W 2024, November
Anonim
Raspberry Pi Zero W datalogger
Raspberry Pi Zero W datalogger

Met een Raspberry Pi Zero W kun je een goedkope en gebruiksvriendelijke datalogger maken, die kan worden aangesloten op een lokaal wifi-netwerk, of kan dienen als toegangspunt in het veld waarmee je draadloos gegevens kunt downloaden met je smartphone.

Ik presenteerde deze opstelling op de American Geophysical Union Fall Meeting 2017, als een manier om uw eigen datalogger-opstelling te maken. Die presentatie vind je hier.

Wat je nodig zult hebben:

  • Een Raspberry Pi Zero W
  • Een micro SD-kaart
  • een USB-kabel of USB-voeding
  • Een computer met een USB-kaartlezer
  • Optioneel (maar handig):

    • miniHDMI -> HDMI-adapter (om de Pi op een scherm aan te sluiten)
    • USB OTG-adapter (om een toetsenbord op de Pi. aan te sluiten

Stap 1: Stel Pi Zero W. in

Zet om te beginnen een Rasbian-afbeelding op een microSD-kaart (in deze tutorial gebruikte ik 2017-07-05-raspbian-jessie-lite, hier beschikbaar). Er kan een lite-versie worden gebruikt (zonder desktop), omdat de installatie via de opdrachtregel zal plaatsvinden.

Plaats de SD-kaart in de Pi, sluit het scherm en een toetsenbord aan en zet hem aan door de stroomkabel in het stopcontact te steken. Headless setup is ook mogelijk, maar hiervoor is verbinding via SSH vereist.

Nadat de Pi is opgestart, logt u in (standaard gebruikersnaam: pi, wachtwoord: raspberry) en wijzigt u het wachtwoord met het commando "passwd".

Het toetsenbord kan worden geconfigureerd door "sudo raspi-config" in de terminal in te voeren.

Stap 2: Maak verbinding met wifi

Maak verbinding met wifi
Maak verbinding met wifi
Maak verbinding met wifi
Maak verbinding met wifi
Maak verbinding met wifi
Maak verbinding met wifi
Maak verbinding met wifi
Maak verbinding met wifi

Om verbinding te maken met internet, vertellen we de Pi met welk netwerk hij verbinding moet maken. Begin met het openen van het volgende bestand;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Voeg hier onderaan de netwerkinformatie toe;

netwerk={

ssid="netwerknaam" psk="netwerkwachtwoord"}

In het geval van een bedrijfsnetwerk kunt u de volgende instellingen gebruiken (pas WPA-EAP // TTLA // MSCHAPv2 aan op de van toepassing zijnde instellingen).

netwerk={

ssid="ssid" #Voer uw netwerknaam in key_mgmt=WPA-EAP eap=TTLS identity="xxxxx" #Voer uw login-account wachtwoord in="xxxxx" #Voer het wachtwoord in phase2="auth=MSCHAPv2" }

Sla op door op CTRL+O te drukken en sluit af met CTRL+X.

Verwijs nu naar uw configuratiebestand in /etc/network/interfaces

sudo nano /etc/network/interfaces

Wijzig het wlan0-gedeelte in:

automatisch wlan0

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

Nogmaals, sla het bestand op (CTRL+O) en sluit af (CTRL+X).

Na het opnieuw opstarten (sudo reboot), zou je wifi-verbinding moeten werken. U kunt dit testen door een website te pingen;

ping www.google.com

Annuleer de ping met CTRL+C

Om draadloos verbinding te maken met de Pi via SSH, moet u SSH inschakelen:

sudo raspi-config

Navigeer naar "5 Interfacing-opties" en schakel SSH in. Ga dan terug en verlaat de configuratie.

Zoek het IP-adres van de Pi op:

ifconfig

Het IP-adres bevindt zich onder "inet addr:" van de wlan0-interface.

Nu kunt u via wifi verbinding maken met de Pi als u zich op hetzelfde netwerk bevindt. Download Putty (voor Windows), voer het IP-adres in dat je hebt gevonden onder "Hostnaam" en druk op "Openen". Nadat u de waarschuwing hebt geaccepteerd, zou u nu de opdrachtregel moeten kunnen zien en kunt u inloggen.

Stap 3: Update en installeer de vereiste software

Vereiste software bijwerken en installeren
Vereiste software bijwerken en installeren
Vereiste software bijwerken en installeren
Vereiste software bijwerken en installeren

Nadat WiFi werkt, werkt u de Pi bij met:

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

Nadat de update is voltooid (het kan even duren), installeert u de software waarmee we gaan werken;

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

Stap 4: Maak verbinding met een sensor (in dit voorbeeld een Arduino)

Verbind de Arduino samen met een toetsenbord met behulp van een USB-hub, of sluit de Arduino aan via de enkele USB-poort en voer de installatie uit met SSH via WiFi.

Om toegang te krijgen tot de seriële poort waarop de Arduino is aangesloten, is het handig om toegang te geven tot het standaard pi-account. Aangezien de Arduino meestal wordt toegewezen aan poort "/dev/ttyACM0", gebruikt u de volgende opdracht om de 'pi'-gebruiker toegang tot de poort te geven:

sudo chown pi: /dev/ttyACM0

Ervan uitgaande dat de Arduino al is ingesteld om gegevens over de seriële poort te verzenden, kunt u de gegevens in python op de volgende manier bekijken:

Open python;

python3

Serienummer importeren:

serieel importeren

Open de com-poort:

ser = serieel. Serieel(poort = '/dev/ttyACM0', baudrate = 9600, time-out = 5)

Waar de baudrate van de Arduino in dit geval op 9600 stond.

U kunt een regel lezen en afdrukken door de volgende code uit te voeren:

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

Als het werkt, kun je de verbinding sluiten en Python afsluiten met:

ser.close()

Uitgang()

Stap 5: WiFi-toegangspuntmogelijkheden instellen

Door uw Pi Zero W in wifi-toegangspuntmodus in te stellen, kunt u er verbinding mee maken met elk wifi-apparaat. Dit maakt het mogelijk om de logger in te stellen en gegevens te downloaden via wifi, geen kabels of stuurprogramma's nodig.

Hiervoor heeft Adafruit een goede tutorial beschikbaar. Enkele kleine opmerkingen:

  • Gebruik voor het /etc/hostapd/hostapd.conf-stuurprogramma de regel niet gebruiken.
  • De stap "Update hostapd" zou niet nodig moeten zijn.

Als het toegangspunt aan het einde van de tutorial niet werkt, probeer dan de Pi opnieuw op te starten (sudo reboot).

Stap 6: Schakelen tussen wifi-toegangspunt en clientmodi

Soms wil je software updaten of nieuwe software op je Raspberry Pi installeren, maar hiervoor heb je een internetverbinding nodig. Gelukkig is schakelen tussen de twee heel eenvoudig.

Maak verbinding met de Pi met SSH (via een kabel, geen wifi!). Begin met het stoppen van de toegangspuntservices:

sudo cystemctl stop hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Bewerk vervolgens het netwerkinterfacebestand:

sudo nano /etc/network/interfaces

Hier moet u commentaar geven op de hostingparameters en het commentaar op de netwerkverbindingsparameters verwijderen. Verander het van dit:

#-Hosting-parameters:

allow-hotplug wlan0 iface wlan0 inet statisch adres 192.168.42.1 netmask 255.255.255.0 #-Netwerk (client) parameters: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Hierop:

#-Hosting parameters:#allow-hotplug wlan0 #iface wlan0 inet static # adres 192.168.42.1 # netmask 255.255.255.0 #-Netwerk (client) parameters: auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Sla het bestand op en sluit het.

Vervolgens voer je de volgende commando's uit:

sudo systemctl start wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Nu zou je Pi opnieuw verbinding moeten maken met wifi, zodat je software kunt updaten en installeren.

Om terug te keren naar de toegangspuntmodus, schakelt u de opmerkingen in /etc/network/interfaces om en start u de Pi opnieuw op.

Stap 7: Laatste opmerkingen

Laatste opmerkingen
Laatste opmerkingen

Website instellen

De apache-server bevindt zich in /var/www/. Om de standaardpagina te wijzigen, bewerkt u het bestand /var/www/html/index.html.

U kunt hier bestanden beschikbaar stellen om te downloaden via de wifi-verbinding, door in uw browser naar het IP-adres van de Pi (192.168.42.1) te gaan. Elk wifi-apparaat kan ze vervolgens downloaden zonder extra software.

SFTP-verbinding

Via SSH kan een FTP-verbinding worden gemaakt. U kunt Filezilla gebruiken om snel en eenvoudig een grote hoeveelheid bestanden over te zetten (zie afbeelding).

Realtime klok

Omdat de interne klok van de Pi aanzienlijk zal afwijken als er geen verbinding met internet is, is een realtimeklok (RTC) -module nodig als nauwkeurige tijdregistratie vereist is. Een dergelijke module is de RasClock, installatie-instructies zijn hier te vinden. Andere op i2c gebaseerde klokken zijn ook beschikbaar (bijv. DS3231)

Conclusie

Als alles goed is gegaan, zou je nu een werkende Pi Zero-datalogger moeten hebben! Een voorbeeld van een Python-logboekscript is opgenomen in de volgende stap.

Stap 8: Voorbeeld Python-logboekscript

importeer os

importeer serienummer vanaf tijd importeer tijd vanaf datetime importeer 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() try: while True: day_timestring = datetime.strftime(datetime.now(), '%Y%m%d') file_today = directory + day_timestring + '.dat' #Read out gegevens en krijg onmiddellijk de tijdlijn = ser.readline().decode('utf-8') nowtime = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:% S.%f') line = line.split(', ') probeer: u = float(line[1]) behalve: u = np.nan probeer: v = float(line[2]) behalve: v = np.nan probeer: w = float(line[3]) behalve: w = np.nan try: c = float(line[5]) behalve: c = np.nan Ts = 1/403 * c**2 - 273.15 probeer: Ta = float(line[8]) behalve: Ta = np.nan if (os.path.isfile(file_today)): met open(file_today, 'a') als bestandsobject: fileobject.write(nowtime+', ') fileobject.write(str(u)+', '+str(v)+', '+str(w)+', '+str(c)+', '+str(Ts)+', '+ str(Ta)+'\n') bestandsobject.clos e() else: met open(file_today, 'w') als bestandsobject: fileobject.write('"Time", "u", "v", "w", "c", "Ts", "Ta"\ n') fileobject.write(nowtime+', ') fileobject.write(str(u)+', '+str(v)+', '+str(w)+', '+str(c)+', '+str(Ts)+', '+str(Ta)+'\n') fileobject.close() behalve KeyboardInterrupt: ser.close()

Aanbevolen: