Cuprins:

Registrator de date Raspberry Pi Zero W: 8 pași (cu imagini)
Registrator de date Raspberry Pi Zero W: 8 pași (cu imagini)

Video: Registrator de date Raspberry Pi Zero W: 8 pași (cu imagini)

Video: Registrator de date Raspberry Pi Zero W: 8 pași (cu imagini)
Video: Raspberry Pi PICO | Starting With MicroPython + Examples | I2C OLED, ADC, PWM 2024, Noiembrie
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

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

Conectați-vă la WiFi
Conectați-vă la WiFi
Conectați-vă la WiFi
Conectați-vă la WiFi
Conectați-vă la WiFi
Conectați-vă la WiFi
Conectați-vă la WiFi
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

Actualizați și instalați software-ul necesar
Actualizați și instalați software-ul necesar
Actualizați și instalați software-ul necesar
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

Observații finale
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: