Inhoudsopgave:
- Stap 1: Stel Pi Zero W. in
- Stap 2: Maak verbinding met wifi
- Stap 3: Update en installeer de vereiste software
- Stap 4: Maak verbinding met een sensor (in dit voorbeeld een Arduino)
- Stap 5: WiFi-toegangspuntmogelijkheden instellen
- Stap 6: Schakelen tussen wifi-toegangspunt en clientmodi
- Stap 7: Laatste opmerkingen
- Stap 8: Voorbeeld Python-logboekscript
Video: Raspberry Pi Zero W datalogger - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
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
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
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
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:
GPS Para Norma (Datalogger EEPROM): 5 stappen
GPS Para Norma (Datalogger EEPROM): Eenvoudige GPS-datalogger voor huisdieren op basis van arduino- en EEPROM-opname ================================ =======================Sencillo datalogger GPS para mascotas basado en arduino y grabacion en memoria EEPROM
Alaska datalogger: 5 stappen (met afbeeldingen)
Alaska Datalogger: Alaska staat aan de rand van de voortschrijdende klimaatverandering. De unieke ligging met een vrij ongerept landschap, bevolkt met een verscheidenheid aan kolenmijnkanaries, maakt veel onderzoeksmogelijkheden mogelijk. Onze vriend Monty is een archeoloog die helpt bij het
Arduino datalogger: 8 stappen (met afbeeldingen)
Arduino Datalogger: In deze tutorial gaan we een eenvoudige datalogger maken met Arduino. Het gaat erom de basisprincipes van het gebruik van Arduino te leren om informatie vast te leggen en naar de terminal af te drukken. We kunnen deze basisconfiguratie gebruiken om een reeks taken uit te voeren. Om te beginnen
Arduino Pro-mini datalogger: 15 stappen
Arduino Pro-mini datalogger: bouwinstructies voor open-source pro-mini Arduino datalogger Disclaimer: Het volgende ontwerp en de volgende code zijn gratis te downloaden en te gebruiken, maar er wordt geen enkele garantie of garantie gegeven. Ik moet eerst de getalenteerde mensen bedanken en promoten
Een datalogger maken met de Raspberry Pi: 3 stappen (met afbeeldingen)
Een datalogger maken met de Raspberry Pi: Deze eenvoudige datalogger doet regelmatig lichtmetingen met een analoge LDR (Photoresistor) en slaat deze op in een tekstbestand op je Raspberry Pi. Deze datalogger meet en registreert elke 60 seconden het lichtniveau, zodat je de h