Inhaltsverzeichnis:

Raspberry Pi Zero W Datenlogger - Gunook
Raspberry Pi Zero W Datenlogger - Gunook

Video: Raspberry Pi Zero W Datenlogger - Gunook

Video: Raspberry Pi Zero W Datenlogger - Gunook
Video: #126 Cheap MQTT Broker on Raspberry Zero W / DietPi / MQTT Message Logger SQlite / PHPliteAdmin 2024, Juli
Anonim
Raspberry Pi Zero W Datenlogger
Raspberry Pi Zero W Datenlogger

Mit einem Raspberry Pi Zero W können Sie einen kostengünstigen und einfach zu bedienenden Datenlogger herstellen, der entweder mit einem lokalen WLAN-Netzwerk verbunden werden kann oder als Zugangspunkt im Feld dient, der es Ihnen ermöglicht, Daten drahtlos mit Ihrem Smartphone herunterzuladen.

Ich habe dieses Setup auf dem Fall Meeting 2017 der American Geophysical Union vorgestellt, um ein eigenes Datenlogger-Setup zu erstellen. Diese Präsentation finden Sie hier.

Was wirst du brauchen:

  • Ein Raspberry Pi Zero W
  • Eine Micro-SD-Karte
  • ein USB-Kabel oder USB-Netzteil
  • Ein Computer mit einem USB-Kartenleser
  • Optional (aber nützlich):

    • miniHDMI -> HDMI Adapter (um den Pi mit einem Bildschirm zu verbinden)
    • USB-OTG-Adapter (zum Anschließen einer Tastatur an den Pi

Schritt 1: Einrichten von Pi Zero W

Legen Sie zunächst ein Rasbian-Image auf eine microSD-Karte (in diesem Tutorial habe ich 2017-07-05-raspbian-jessie-lite verwendet, hier erhältlich). Eine Lite-Version kann verwendet werden (ohne Desktop), da die Einrichtung über die Befehlszeile erfolgt.

Legen Sie die SD-Karte in den Pi ein, schließen Sie den Bildschirm und eine Tastatur an und schalten Sie ihn ein, indem Sie das Netzkabel einstecken. Eine Headless-Einrichtung ist ebenfalls möglich, erfordert jedoch eine Verbindung über SSH.

Nachdem der Pi hochgefahren ist, loggen Sie sich ein (Standardbenutzername: pi, Passwort: raspberry) und ändern Sie das Passwort mit dem Befehl "passwd".

Die Tastatur kann durch Eingabe von "sudo raspi-config" im Terminal konfiguriert werden.

Schritt 2: Mit WLAN verbinden

Mit WLAN verbinden
Mit WLAN verbinden
Mit WLAN verbinden
Mit WLAN verbinden
Mit WLAN verbinden
Mit WLAN verbinden
Mit WLAN verbinden
Mit WLAN verbinden

Um eine Verbindung zum Internet herzustellen, teilen wir dem Pi mit, mit welchem Netzwerk er sich verbinden soll. Öffnen Sie zunächst die folgende Datei;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Fügen Sie hier unten die Netzwerkinformationen hinzu;

Netzwerk={

ssid="Netzwerkname" psk="Netzwerkpasswort" }

Im Falle eines Unternehmensnetzwerks können Sie folgendes Setup verwenden (WPA-EAP // TTLA // MSCHAPv2 an die entsprechenden Einstellungen anpassen).

Netzwerk={

ssid="ssid" #Geben Sie Ihren Netzwerknamen ein key_mgmt=WPA-EAP eap=TTLS identity="xxxxx" #Geben Sie Ihr Login-Konto password="xxxxx" #Geben Sie das Passwort ein phase2="auth=MSCHAPv2" }

Speichern Sie mit STRG+O und beenden Sie mit STRG+X.

Verweisen Sie nun auf Ihre Konfigurationsdatei in /etc/network/interfaces

sudo nano /etc/network/interfaces

Ändern Sie den wlan0-Teil in:

Auto-WLAN0

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

Speichern Sie die Datei erneut (STRG+O) und beenden Sie sie (STRG+X).

Nach dem Neustart (sudo reboot) sollte Ihre WLAN-Verbindung funktionieren. Sie können dies testen, indem Sie eine Website anpingen.

ping www.google.com

Abbrechen des Pings mit STRG+C

Um sich drahtlos mit dem Pi über SSH zu verbinden, sollten Sie SSH aktivieren:

sudo raspi-config

Navigieren Sie zu "5 Schnittstellenoptionen" und aktivieren Sie SSH. Gehen Sie dann zurück und verlassen Sie die Konfiguration.

Suchen Sie die IP-Adresse des Pi:

ifconfig

Die IP befindet sich unter "inet addr:" der wlan0-Schnittstelle.

Jetzt können Sie sich über WLAN mit dem Pi verbinden, wenn Sie sich im selben Netzwerk befinden. Laden Sie Putty (für Windows) herunter, geben Sie die IP-Adresse ein, die Sie unter "Hostname" gefunden haben, und drücken Sie "Öffnen". Nachdem Sie die Warnung akzeptiert haben, sollten Sie jetzt die Befehlszeile sehen und sich anmelden können.

Schritt 3: Erforderliche Software aktualisieren und installieren

Erforderliche Software aktualisieren und installieren
Erforderliche Software aktualisieren und installieren
Erforderliche Software aktualisieren und installieren
Erforderliche Software aktualisieren und installieren

Nachdem WiFi funktioniert, aktualisieren Sie den Pi mit:

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

Nachdem das Update abgeschlossen ist (es kann eine Weile dauern), installieren Sie die Software, die wir verwenden werden;

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

Schritt 4: An einen Sensor anschließen (in diesem Beispiel ein Arduino)

Verbinden Sie das Arduino entweder über einen USB-Hub mit einer Tastatur oder verbinden Sie das Arduino über den einzelnen USB-Port und führen Sie die Einrichtung mit SSH über WLAN durch.

Um auf den seriellen Port zugreifen zu können, mit dem das Arduino verbunden ist, ist es nützlich, Zugriff auf das Standard-Pi-Konto zu gewähren. Da das Arduino normalerweise dem Port "/dev/ttyACM0" zugewiesen ist, verwenden Sie den folgenden Befehl, um dem 'pi'-Benutzer Zugriff auf den Port zu gewähren:

sudo chown pi: /dev/ttyACM0

Angenommen, der Arduino wurde bereits zum Senden von Daten über den seriellen Port eingerichtet, können Sie die Daten in Python wie folgt anzeigen:

Python öffnen;

python3

Seriennummer importieren:

Seriennummer importieren

Öffnen Sie den Com-Port:

ser = serial. Serial(port = '/dev/ttyACM0', Baudrate = 9600, Zeitüberschreitung = 5)

Wobei die Baudrate des Arduino in diesem Fall auf 9600 eingestellt war.

Sie können eine Zeile lesen und drucken, indem Sie den folgenden Code ausführen:

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

Wenn es funktioniert, können Sie die Verbindung schließen und Python beenden mit:

ser.close()

Ausfahrt()

Schritt 5: WLAN-Zugangspunktfunktionen einrichten

Indem Sie Ihren Pi Zero W im WLAN-Zugangspunktmodus einrichten, können Sie sich mit jedem WLAN-Gerät verbinden. Dies ermöglicht die Einrichtung des Loggers und das Herunterladen von Daten über WLAN, ohne dass Kabel oder Treiber erforderlich sind.

Dafür hat Adafruit ein gutes Tutorial zur Verfügung. Einige kleine Anmerkungen:

  • Für den /etc/hostapd/hostapd.conf-Treiber verwenden Sie die Treiberzeile nicht verwenden.
  • Der Schritt "Hostapd aktualisieren" sollte nicht notwendig sein.

Wenn der Access Point am Ende des Tutorials nicht funktioniert, versuchen Sie, den Pi neu zu starten (sudo reboot).

Schritt 6: Wechseln zwischen Wifi Access Point und Client-Modi

Manchmal möchten Sie Software aktualisieren oder neue Software auf Ihrem Raspberry Pi installieren, dies erfordert jedoch eine Internetverbindung. Der Wechsel zwischen den beiden ist zum Glück sehr einfach.

Verbinden Sie sich mit SSH mit dem Pi (über ein Kabel, nicht über WLAN!). Beginnen Sie mit dem Stoppen der Access Point-Dienste:

sudo cystemctl stop hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Bearbeiten Sie dann die Netzwerkschnittstellendatei:

sudo nano /etc/network/interfaces

Hier sollten Sie die Hosting-Parameter auskommentieren und die Netzwerkverbindungsparameter auskommentieren. Ändern Sie es von diesem:

#-Hosting-Parameter:

allow-hotplug wlan0 iface wlan0 inet statische Adresse 192.168.42.1 Netzmaske 255.255.255.0 #-Netzwerk (Client) Parameter: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Dazu:

#-Hosting-Parameter:#allow-hotplug wlan0 #iface wlan0 inet static # Adresse 192.168.42.1 # Netzmaske 255.255.255.0 #-Netzwerk-(Client-)Parameter: auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Speichern und schließen Sie die Datei.

Als nächstes führen Sie die folgenden Befehle aus:

sudo systemctl start wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Jetzt sollte sich Ihr Pi wieder mit dem WLAN verbinden, sodass Sie Software aktualisieren und installieren können.

Um zum Access Point-Modus zurückzukehren, wechseln Sie die Kommentare in /etc/network/interfaces und starten Sie den Pi neu.

Schritt 7: Abschließende Bemerkungen

Schlussbemerkungen
Schlussbemerkungen

Website-Einrichtung

Der Apache-Server befindet sich in /var/www/. Um die Standardseite zu ändern, bearbeiten Sie die Datei /var/www/html/index.html.

Sie können hier Dateien zum Herunterladen über die WLAN-Verbindung zur Verfügung stellen, indem Sie Ihren Browser zur IP-Adresse des Pi (192.168.42.1) navigieren. Jedes WLAN-fähige Gerät kann sie dann ohne zusätzliche Software herunterladen.

SFTP-Verbindung

Über SSH kann eine FTP-Verbindung hergestellt werden. Mit Filezilla können Sie schnell und einfach eine große Menge an Dateien übertragen (siehe Bild).

Echtzeituhr

Da die interne Uhr des Pi erheblich driftet, wenn keine Verbindung zum Internet besteht, wird ein Echtzeituhrmodul (RTC) benötigt, wenn eine genaue Zeitmessung erforderlich ist. Ein solches Modul ist die RasClock, eine Installationsanleitung finden Sie hier. Andere i2c-basierte Uhren sind ebenfalls verfügbar (z. B. DS3231)

Abschluss

Wenn alles richtig gelaufen ist, sollten Sie jetzt einen funktionierenden Pi Zero-Datenlogger haben! Ein Beispiel für ein Python-Protokollierungsskript ist im nächsten Schritt enthalten.

Schritt 8: Beispiel für ein Python-Protokollierungsskript

Importieren von 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() try: while True: day_timestring = datetime.strftime(datetime.now(), '%Y%m%d') file_today = directory + day_timestring + '.dat' #Auslesen Daten und sofort die Zeitleiste abrufen = ser.readline().decode('utf-8') nowtime = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:% S.%f') line = line.split(', ') try: u = float(line[1]) außer: u = np.nan try: v = float(line[2]) außer: v = np.nan try: w = float(line[3]) außer: w = np.nan try: c = float(line[5]) außer: c = np.nan Ts = 1/403 * c**2 - 273,15 try: Ta = float(line[8]) außer: Ta = np.nan if (os.path.isfile(file_today)): with open(file_today, 'a') as fileobject: fileobject.write(nowtime+', ') fileobject.write(str(u)+', '+str(v)+', '+str(w)+', '+str(c)+', '+str(Ts)+', '+ str(Ta)+'\n') fileobject.clos e() else: mit open(file_today, 'w') als Dateiobjekt: 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() außer KeyboardInterrupt: ser.close()

Empfohlen: