Taula de continguts:

Registrador de dades Raspberry Pi Zero W: 8 passos (amb imatges)
Registrador de dades Raspberry Pi Zero W: 8 passos (amb imatges)

Vídeo: Registrador de dades Raspberry Pi Zero W: 8 passos (amb imatges)

Vídeo: Registrador de dades Raspberry Pi Zero W: 8 passos (amb imatges)
Vídeo: Сводные таблицы Excel с нуля до профи за полчаса + Дэшборды! | 1-ое Видео курса "Сводные Таблицы" 2024, Juliol
Anonim
Registrador de dades Raspberry Pi Zero W
Registrador de dades Raspberry Pi Zero W

Amb un Raspberry Pi Zero W, podeu crear un registre de dades barat i fàcil d’utilitzar, que es pot connectar a una xarxa wifi local o bé servir de punt d’accés al camp que us permet descarregar dades sense fils amb el vostre telèfon intel·ligent.

Vaig presentar aquesta configuració a la American Geophysical Union Fall Meeting 2017, com una manera de configurar el vostre propi registre de dades. Podeu trobar aquesta presentació aquí.

Què necessiteu:

  • A Raspberry Pi Zero W
  • Una targeta micro SD
  • un cable USB o una font d'alimentació USB
  • Un ordinador amb un lector de targetes USB
  • Opcional (però útil):

    • miniHDMI -> Adaptador HDMI (per connectar el Pi a una pantalla)
    • Adaptador USB OTG (per connectar un teclat al Pi

Pas 1: configureu Pi Zero W

Per començar, poseu una imatge Rasbian a una targeta microSD (en aquest tutorial he utilitzat el 2017-07-05-raspbian-jessie-lite, disponible aquí). Es pot utilitzar una versió simplificada (sense escriptori), ja que la configuració es realitzarà a través de la línia d’ordres.

Introduïu la targeta SD al Pi, connecteu la pantalla i un teclat i engegueu-la endollant el cable d’alimentació. La configuració sense cap també és possible, però caldria connectar-se mitjançant SSH.

Després que el Pi hagi iniciat l'inici de sessió (nom d'usuari per defecte: pi, contrasenya: raspberry) i canvieu la contrasenya amb l'ordre "passwd".

El teclat es pot configurar introduint "sudo raspi-config" al terminal.

Pas 2: connecteu-vos a WiFi

Connecteu-vos a WiFi
Connecteu-vos a WiFi
Connecteu-vos a WiFi
Connecteu-vos a WiFi
Connecteu-vos a WiFi
Connecteu-vos a WiFi
Connecteu-vos a WiFi
Connecteu-vos a WiFi

Per connectar-vos a Internet, li direm al Pi a quina xarxa voleu connectar-vos. Comenceu obrint el fitxer següent;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Aquí, afegiu la informació de la xarxa a la part inferior;

xarxa = {

ssid = "nom de xarxa" psk = "contrasenya de xarxa"}

En el cas d’una xarxa empresarial, podeu utilitzar la configuració següent (ajusteu WPA-EAP // TTLA // MSCHAPv2 a la configuració aplicable).

xarxa = {

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"}

Estalvieu prement CTRL + O i sortiu amb CTRL + X.

Ara feu referència al fitxer de configuració a / etc / network / interfaces

sudo nano / etc / network / interfaces

Canvieu la part wlan0 per:

auto wlan0

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

Una vegada més, deseu el fitxer (CTRL + O) i, a continuació, sortiu (CTRL + X).

Després de reiniciar (reinici sudo), la vostra connexió wifi hauria de funcionar. Podeu provar-ho fent ping a un lloc web;

ping www.google.com

Cancel·leu el ping amb CTRL + C

Per connectar-vos al Pi mitjançant SSH sense fils, heu d’habilitar SSH:

sudo raspi-config

Aneu a "5 opcions d'interfície" i activeu SSH. A continuació, torneu enrere i sortiu de la configuració.

Cerqueu l'adreça IP del Pi:

ifconfig

La IP estarà a "inet addr:" de la interfície wlan0.

Ara podeu connectar-vos al Pi mitjançant WiFi, si esteu a la mateixa xarxa. Baixeu Putty (per a Windows), introduïu l'adreça IP que trobareu a "Nom de l'amfitrió" i premeu "Obre". Després d’acceptar l’advertència, ara hauríeu de poder veure la línia d’ordres i iniciar la sessió.

Pas 3: actualitzeu i instal·leu el programari requerit

Actualitzeu i instal·leu el programari requerit
Actualitzeu i instal·leu el programari requerit
Actualitzeu i instal·leu el programari requerit
Actualitzeu i instal·leu el programari requerit

Un cop el WiFi funcioni, actualitzeu el Pi amb:

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

Un cop finalitzada l’actualització (pot trigar una estona), instal·leu el programari amb què farem servir;

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

Pas 4: connecteu-vos a un sensor (en aquest exemple, un Arduino)

Connecteu l'Arduino juntament amb un teclat mitjançant un concentrador USB, o bé connecteu l'Arduino mitjançant el port USB únic i feu la configuració amb SSH a través de WiFi.

Per poder accedir al port sèrie al qual està connectat Arduino, és útil donar accés al compte pi predeterminat. Com Arduino sol assignar-se al port "/ dev / ttyACM0", utilitzeu l'ordre següent per donar accés a l'usuari 'pi' al port:

sudo chown pi: / dev / ttyACM0

Suposant que l'Arduino ja s'ha configurat per enviar dades a través del port sèrie, podeu veure les dades en python de la següent manera:

Pitó obert;

python3

Importa la sèrie:

importació de sèries

Obriu el port de com:

ser = serial. Serial (port = '/ dev / ttyACM0', velocitat de transmissió = 9600, temps d'espera = 5)

On la velocitat de transmissió de l'Arduino es va fixar en 9600 en aquest cas.

Podeu llegir i imprimir una línia executant el codi següent:

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

Si el teniu funcionant, podeu tancar la connexió i sortir de Python amb:

ser.close ()

sortir ()

Pas 5: configureu les funcions del punt d'accés WiFi

En configurar el Pi Zero W en mode de punt d’accés wifi, podeu connectar-vos-hi amb qualsevol dispositiu wifi. Això permet configurar el registrador i descarregar dades per wifi, sense cables ni controladors.

Per a això, Adafruit disposa d’un bon tutorial. Algunes petites observacions:

  • Per al controlador /etc/hostapd/hostapd.conf, utilitzeu no utilitzeu la línia del controlador.
  • El pas "Actualitzar hostapd" no hauria de ser necessari.

Si el punt d'accés no funciona al final del tutorial, proveu de reiniciar el Pi (sudo reboot).

Pas 6: canviar entre el punt d’accés Wifi i les formes de client

De vegades, voldreu actualitzar el programari o instal·lar-ne un de nou al vostre Raspberry Pi, però això requereix una connexió a Internet. Per sort, canviar entre tots dos és molt fàcil.

Connecteu-vos al Pi amb SSH (per cable, no wifi!). Comenceu parant els serveis del punt d’accés:

sudo cystemctl atura hostapd.service

sudo cystemctl stop isc-dhcp-server.service

A continuació, editeu el fitxer d'interfícies de xarxa:

sudo nano / etc / network / interfaces

Aquí hauríeu de comentar els paràmetres d'allotjament i deixar de comentar els paràmetres de connexió de xarxa. Canvieu-lo a partir d'aquest:

# -Paràmetres d'allotjament:

allow-hotplug wlan0 iface wlan0 inet adreça estàtica 192.168.42.1 màscara de xarxa 255.255.255.0 # -Paràmetres de xarxa (client): #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Per a això:

# -Paràmetres d'allotjament: # allow-hotplug wlan0 #iface wlan0 inet static # address 192.168.42.1 # netmask 255.255.255.0 # -Paràmetres de xarxa (client): auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Deseu i tanqueu el fitxer.

A continuació, executeu les ordres següents:

sudo systemctl iniciar wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Ara el Pi hauria de tornar a connectar-se a wifi, cosa que us permetrà actualitzar i instal·lar programari.

Per tornar al mode de punt d'accés, canvieu els comentaris a / etc / network / interfaces i reinicieu el Pi.

Pas 7: Observacions finals

Observacions finals
Observacions finals

Configuració del lloc web

El servidor apache es troba a / var / www /. Per canviar la pàgina predeterminada, editeu el fitxer /var/www/html/index.html.

Podeu fer que els fitxers estiguin disponibles aquí per descarregar-los mitjançant la connexió wifi navegant al navegador fins a l’adreça IP del Pi (192.168.42.1). Qualsevol dispositiu amb connexió wifi pot descarregar-los sense cap programari addicional.

Connexió SFTP

A través de SSH, es pot establir una connexió FTP. Podeu utilitzar Filezilla per transferir de forma ràpida i senzilla una gran quantitat de fitxers (vegeu la imatge).

Rellotge en temps real

Com que el rellotge intern del Pi es desplaçarà significativament si no hi ha connexió a Internet, caldrà un mòdul de rellotge en temps real (RTC) si es requereix una indicació exacta del temps. Un d’aquests mòduls és el RasClock, les instruccions d’instal·lació es poden trobar aquí. També hi ha altres rellotges basats en i2c (és a dir, DS3231)

Conclusió

Si tot ha anat correctament, ara hauríeu de tenir un datalogger Pi Zero en funcionament. Al següent pas s’inclou un exemple d’escriptura de registre de Python.

Pas 8: exemple de script de registre de Python

import os

importació de sèries a partir de temps importació de dades: importació de dades i importació de dades: 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 = directori + day_timestring +'.dat '#Llegir dades i obtingueu immediatament la línia de temps = 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]) except: u = np.nan try: v = float (line [2]) except: v = np.nan try: w = float (línia [3]) excepte: w = np.nan try: c = float (line [5]) except: c = np.nan Ts = 1/403 * c ** 2 - 273.15 prova: Ta = float (línia [8]) excepte: Ta = np.nan if (os.path.isfile (file_today)): amb open (file_today, 'a') com a fileobject: fileobject.write (nowtime + ',') fileobject.write (str (u) + ',' + str (v) + ',' + str (w) + ',' + str (c) + ',' + str (Ts) + ',' + str (Ta) + '\ n') fileobject.clos e () else: amb obert (fitxer_avui, 'w') com a objecte de fitxer: fileobject.write ('"Temps", "u", "v", "w", "c", "Ts", "Ta" / n ') fileobject.write (ara +', ') fileobject.write (str (u) +', '+ str (v) +', '+ str (w) +', '+ str (c) +', '+ str (Ts) +', '+ str (Ta) +' / n ') fileobject.close () excepte KeyboardInterrupt: ser.close ()

Recomanat: