Cuprins:
- Pasul 1: Configurați Pi Zero W
- Pasul 2: Conectați-vă la WiFi
- Pasul 3: Actualizați și instalați software-ul necesar
- Pasul 4: Conectați-vă la un senzor (în acest exemplu un Arduino)
- Pasul 5: Configurați capacitățile punctelor de acces WiFi
- Pasul 6: Comutarea între punctele de acces Wifi și modurile client
- Pasul 7: Observații finale
- Pasul 8: Exemplu de script Python Logging
Video: Registrator de date Raspberry Pi Zero W: 8 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
Folosind un Raspberry Pi Zero W, puteți face un datalogger ieftin și ușor de utilizat, care poate fi fie conectat la o rețea wifi locală, fie poate servi ca punct de acces în câmp, care vă permite să descărcați date fără fir cu smartphone-ul.
Am prezentat această configurație la American Geophysical Union Fall Meeting 2017, ca o modalitate de a vă configura propriul set de date logger. Puteți găsi acea prezentare aici.
Ce vei avea nevoie:
- A Raspberry Pi Zero W
- Un card micro SD
- un cablu USB sau o sursă de alimentare USB
- Un computer cu cititor de carduri USB
-
Opțional (dar util):
- miniHDMI -> adaptor HDMI (pentru a conecta Pi la un ecran)
- Adaptor USB OTG (pentru a conecta o tastatură la Pi
Pasul 1: Configurați Pi Zero W
Pentru a începe, puneți o imagine Rasbian pe un card microSD (în acest tutorial am folosit 2017-07-05-raspbian-jessie-lite, disponibil aici). O versiune simplă poate fi utilizată (fără desktop) deoarece configurarea se va face prin linia de comandă.
Introduceți cardul SD în Pi, conectați ecranul și o tastatură și alimentați-l conectând cablul de alimentare. Configurarea fără cap este de asemenea posibilă, dar ar necesita conectarea prin SSH.
După ce Pi a pornit conectarea (nume de utilizator implicit: pi, parolă: zmeură) și modificați parola cu comanda „passwd”.
Tastatura poate fi configurată prin introducerea „sudo raspi-config” în terminal.
Pasul 2: Conectați-vă la WiFi
Pentru a vă conecta la internet, îi vom spune Pi-ului la ce rețea să vă conectați. Începeți prin deschiderea fișierului următor;
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Aici, adăugați informațiile despre rețea în partea de jos;
rețea = {
ssid = "nume rețea" psk = "parolă rețea"}
În cazul unei rețele de întreprindere, puteți utiliza următoarea configurare (reglați WPA-EAP // TTLA // MSCHAPv2 la setările aplicabile).
rețea = {
ssid = "ssid" #Enter your network name key_mgmt = WPA-EAP eap = TTLS identity = "xxxxx" #Enter your login account password = "xxxxx" #Enter the passwork phase2 = "auth = MSCHAPv2"}
Salvați apăsând CTRL + O și ieșiți cu CTRL + X.
Acum faceți referire la fișierul de configurare din / etc / network / interfaces
sudo nano / etc / network / interfaces
Schimbați partea wlan0 în:
auto wlan0
iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Din nou, salvați fișierul (CTRL + O) și apoi ieșiți (CTRL + X).
După repornire (repornire sudo), conexiunea WiFi ar trebui să funcționeze. Puteți testa acest lucru făcând ping pe un site web;
ping www.google.com
Anulați ping-ul cu CTRL + C
Pentru a vă conecta la Pi prin SSH fără fir, ar trebui să activați SSH:
sudo raspi-config
Navigați la „5 Opțiuni de interfațare” și activați SSH. Apoi reveniți și ieșiți din configurație.
Căutați adresa IP a Pi:
ifconfig
IP-ul va fi sub "inet addr:" al interfeței wlan0.
Acum vă puteți conecta la Pi prin WiFi, dacă vă aflați în aceeași rețea. Descărcați Putty (pentru Windows), introduceți adresa IP pe care ați găsit-o sub „Nume gazdă” și apăsați „Deschidere”. După acceptarea avertismentului, ar trebui să puteți vedea linia de comandă și să vă autentificați.
Pasul 3: Actualizați și instalați software-ul necesar
După ce WiFi funcționează, actualizați Pi cu:
sudo apt-get update -y && sudo apt-get upgrade -y
După finalizarea actualizării (poate dura ceva timp), instalați software-ul cu care vom folosi;
sudo apt-get install python3 python3-serial apache2 -y
Pasul 4: Conectați-vă la un senzor (în acest exemplu un Arduino)
Fie conectați Arduino împreună cu o tastatură folosind un hub USB, fie conectați Arduino prin portul USB unic și efectuați configurarea cu SSH prin WiFi.
Pentru a putea accesa portul serial la care este conectat Arduino, este util să dați acces la contul pi implicit. Deoarece Arduino este de obicei atribuit portului "/ dev / ttyACM0", utilizați următoarea comandă pentru a da utilizatorului 'pi' acces la port:
sudo chown pi: / dev / ttyACM0
Presupunând că Arduino a fost deja configurat pentru a trimite date prin portul serial, puteți vizualiza datele în python în modul următor:
Python deschis;
python3
Import serial:
import serial
Deschideți portul de com:
ser = serial. Serial (port = '/ dev / ttyACM0', baudrate = 9600, timeout = 5)
Unde baudrate-ul Arduino a fost setat la 9600 în acest caz.
Puteți citi și imprima o linie executând următorul cod:
ser.readline (). decode ('utf-8')
Dacă îl funcționezi, poți închide conexiunea și ieși din Python cu:
ser.close ()
Ieșire()
Pasul 5: Configurați capacitățile punctelor de acces WiFi
Configurând Pi Zero W în modul punct de acces wifi, vă puteți conecta la acesta cu orice dispozitiv wifi. Acest lucru permite configurarea jurnalului și descărcarea datelor prin Wi-Fi, fără cabluri sau drivere necesare.
Pentru aceasta, Adafruit are la dispoziție un tutorial bun. Câteva mici observații:
- Pentru driverul /etc/hostapd/hostapd.conf, utilizați nu utilizați linia driverului.
- Pasul „Actualizare hostapd” nu ar trebui să fie necesar.
Dacă punctul de acces nu funcționează la sfârșitul tutorialului, încercați să reporniți Pi (sudo reboot).
Pasul 6: Comutarea între punctele de acces Wifi și modurile client
Uneori veți dori să actualizați software-ul sau să instalați software nou pe Raspberry Pi, dar acest lucru necesită o conexiune la internet. Din fericire, comutarea între cele două este foarte ușoară.
Conectați-vă la Pi cu SSH (prin cablu, nu wifi!). Începeți prin oprirea serviciilor punctului de acces:
sudo cystemctl stop hostapd.service
sudo cystemctl stop isc-dhcp-server.service
Apoi editați fișierul de interfețe de rețea:
sudo nano / etc / network / interfaces
Aici trebuie să comentați parametrii de găzduire și să nu comentați parametrii conexiunii la rețea. Schimbați-l din acesta:
# -Parametri de găzduire:
allow-hotplug wlan0 iface wlan0 inet adresa statică 192.168.42.1 netmask 255.255.255.0 # -Parametrii rețelei (client): #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
La acest:
# -Parametri de găzduire: # allow-hotplug wlan0 #iface wlan0 inet static # address 192.168.42.1 # netmask 255.255.255.0 # -Parametri de rețea (client): auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Salvați și închideți fișierul.
Apoi rulați următoarele comenzi:
sudo systemctl pornește wpa_supplicant.service
sudo ifdown wlan0 sudo ifup wlan0
Acum, Pi-ul tău ar trebui să se conecteze din nou la wifi, permițându-ți să actualizezi și să instalezi software.
Pentru a reveni la modul punct de acces, comutați în jurul comentariilor din / etc / network / interfaces și reporniți Pi.
Pasul 7: Observații finale
Configurarea site-ului web
Serverul apache se află în / var / www /. Pentru a modifica pagina implicită, editați fișierul /var/www/html/index.html.
Aici puteți face fișiere disponibile pentru descărcare prin conexiunea wifi, navigând în browserul dvs. la adresa IP a Pi (192.168.42.1). Orice dispozitiv cu Wi-Fi poate apoi să le descarce fără niciun software suplimentar.
Conexiune SFTP
Prin SSH, se poate realiza o conexiune FTP. Puteți utiliza Filezilla pentru a transfera rapid și ușor o cantitate mare de fișiere (a se vedea imaginea).
Ceas în timp real
Deoarece ceasul intern al lui Pi va deriva semnificativ dacă nu există o conexiune la internet, va fi necesar un modul de ceas în timp real (RTC) dacă este necesară o estimare exactă a timpului. Un astfel de modul este RasClock, instrucțiunile de instalare pot fi găsite aici. Sunt disponibile și alte ceasuri bazate pe i2c (de exemplu, DS3231)
Concluzie
Dacă totul a mers corect, ar trebui să aveți acum un datalogger Pi Zero funcțional! Un exemplu de script de înregistrare python este inclus în pasul următor.
Pasul 8: Exemplu de script Python Logging
import os
import serial din timp import timp din 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 = director + day_timestring +'.dat '#Read out date și obțineți imediat linia de timp = ser.readline (). decodează ('utf-8') nowtime = datetime.strftime (datetime.now (), '% Y-% m-% d% H:% M:% S.% f ') line = line.split (', ') try: u = float (line [1]) exceptie: u = np.nan try: v = float (line [2]) exceptie: v = np.nan try: w = float (linia [3]) cu excepția: w = np.nan try: c = float (line [5]) exceptând: c = np.nan Ts = 1/403 * c ** 2 - 273.15 încercați: Ta = float (linia [8]) cu excepția: Ta = np.nan dacă (os.path.isfile (file_today)): cu open (file_today, 'a') ca fișier object: fileobject.write (nowtime + ',') fileobject.write (str (u) + ',' + str (v) + ',' + str (w) + ',' + str (c) + ',' + str (Ts) + ',' + str (Ta) + '\ n') fileobject.clos e () else: cu open (file_today, 'w') ca fileobject: 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 () cu excepția KeyboardInterrupt: ser.close ()
Recomandat:
ESP32 Xiaomi Hack - Obțineți date fără fir: 6 pași (cu imagini)
ESP32 Xiaomi Hack - Obțineți date fără fir: Dragi prieteni, bineveniți la un alt instructabil! Astăzi vom învăța cum să obținem datele pe care le transmite acest monitor Xiaomi de temperatură și umiditate utilizând funcționalitatea Bluetooth a plăcii ESP32. După cum puteți vedea, folosesc o placă ESP32
Server de date cu temperatură dublă IoT: 12 pași (cu imagini)
Server de date cu temperatură dublă IoT: Aceasta este prima mea încercare de a scrie un instructabil și așa că vă rog să vă lăsați ușor! Dacă credeți că acest lucru nu este prea rău, atunci vă rog să mă votați la primul concurs de autor. Acesta este proiectul meu Lock-Down pentru a monitoriza de la distanță 2 temperaturi într-o seră
Somatic - Mănușa de date pentru lumea reală: 6 pași (cu imagini)
Somatic - Mănușa de date pentru lumea reală: magneți cu cilindri de neodim cu diametrul de 4 mm Magneți cu cilindri din neodim cu diametrul de 4 mm Somatic este o tastatură și un mouse portabil, confortabil, neobstructiv și gata de purtare pe tot parcursul zilei. Este încărcat cu tot hardware-ul pentru a traduce semne manuale și m
Cum să preluați date dintr-o bază de date Firebase pe NodeMCU: 7 pași
Cum să preluăm date dintr-o bază de date Firebase pe NodeMCU: Pentru acest lucru instructiv, vom prelua date dintr-o bază de date în Google Firebase și le vom prelua folosind un NodeMCU pentru analiză ulterioară. CERINȚE DE PROIECT: 1) NodeMCU sau controler ESP8266 cont pentru crearea unei baze de date Firebase. 3) Descărcați
Registrator de temperatură WiFi (cu ESP8266): 11 pași (cu imagini)
Înregistrator de temperatură WiFi (cu ESP8266): Bună ziua, mă bucur să vă văd aici. Sper că în acest instructable veți găsi câteva informații utile. Nu ezitați să-mi trimiteți sugestii, întrebări, … Iată câteva date de bază și o prezentare rapidă a proiectului. Pentru utilizatorii de dispozitive mobile: Video. Anunță-mă w