Obsah:

Datalogger Raspberry Pi Zero W: 8 kroků (s obrázky)
Datalogger Raspberry Pi Zero W: 8 kroků (s obrázky)

Video: Datalogger Raspberry Pi Zero W: 8 kroků (s obrázky)

Video: Datalogger Raspberry Pi Zero W: 8 kroků (s obrázky)
Video: CS50 2014 - Week 2 2024, Červenec
Anonim
Datalogger Raspberry Pi Zero W
Datalogger Raspberry Pi Zero W

Pomocí Raspberry Pi Zero W můžete vytvořit levný a snadno použitelný datalogger, který lze připojit buď k místní síti Wi -Fi, nebo sloužit jako přístupový bod v terénu, který vám umožní bezdrátově stahovat data pomocí smartphonu.

Toto nastavení jsem představil na American Geophysical Union Fall Meeting 2017 jako způsob, jak si vytvořit vlastní nastavení záznamníku dat. Tuto prezentaci najdete zde.

Co budete potřebovat:

  • Raspberry Pi Zero W
  • Karta micro SD
  • kabel USB nebo napájecí zdroj USB
  • Počítač se čtečkou karet USB
  • Volitelné (ale užitečné):

    • miniHDMI -> HDMI adaptér (pro připojení Pi k obrazovce)
    • USB OTG adaptér (pro připojení klávesnice k Pi

Krok 1: Nastavte Pi Zero W

Chcete-li začít, vložte obrázek Rasbian na kartu microSD (v tomto tutoriálu jsem použil 2017-07-05-raspbian-jessie-lite, k dispozici zde). Lze použít verzi Lite (bez pracovní plochy), protože nastavení bude provedeno pomocí příkazového řádku.

Vložte kartu SD do počítače Pi, připojte obrazovku a klávesnici a zapojte napájecí kabel do zásuvky. Bezhlavé nastavení je také možné, ale vyžadovalo by připojení přes SSH.

Po spuštění systému Pi se přihlaste (výchozí uživatelské jméno: pi, heslo: malina) a změňte heslo příkazem „passwd“.

Klávesnici lze konfigurovat zadáním „sudo raspi-config“do terminálu.

Krok 2: Připojte se k WiFi

Připojte se k WiFi
Připojte se k WiFi
Připojte se k WiFi
Připojte se k WiFi
Připojte se k WiFi
Připojte se k WiFi
Připojte se k WiFi
Připojte se k WiFi

Chcete -li se připojit k internetu, řekneme Pi, ke které síti se připojit. Začněte otevřením následujícího souboru;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Zde ve spodní části přidejte informace o síti;

síť = {

ssid = "název sítě" psk = "heslo sítě"}

V případě podnikové sítě můžete použít následující nastavení (upravit WPA-EAP // TTLA // MSCHAPv2 na příslušná nastavení).

síť = {

ssid = "ssid" #Zadejte název sítě key_mgmt = WPA-EAP eap = TTLS identity = "xxxxx" #Zadejte heslo pro přihlášení k účtu = "xxxxx" #Zadejte pasovou fázi2 = "auth = MSCHAPv2"}

Uložte stisknutím kláves CTRL+O a ukončete stisknutím kláves CTRL+X.

Nyní se podívejte na konfigurační soubor v/etc/network/interfaces

sudo nano/etc/network/interfaces

Změňte část wlan0 na:

auto wlan0

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

Znovu uložte soubor (CTRL+O) a poté ukončete (CTRL+X).

Po restartu (sudo restart) by mělo fungovat vaše wifi připojení. Můžete to otestovat odesláním příkazu ping na web;

ping www.google.com

Zrušte ping pomocí CTRL+C

Pro bezdrátové připojení k Pi přes SSH byste měli povolit SSH:

sudo raspi-config

Přejděte na „5 možností rozhraní“a povolte SSH. Poté se vraťte zpět a ukončete konfiguraci.

Vyhledejte IP adresu Pi:

ifconfig

IP adresa bude pod „inet addr:“rozhraní wlan0.

Nyní se můžete k Pi připojit přes WiFi, pokud jste ve stejné síti. Stáhněte si Putty (pro Windows), zadejte IP adresu, kterou jste našli pod „Název hostitele“, a stiskněte „Otevřít“. Po přijetí varování byste nyní měli vidět příkazový řádek a přihlásit se.

Krok 3: Aktualizujte a nainstalujte požadovaný software

Aktualizujte a nainstalujte požadovaný software
Aktualizujte a nainstalujte požadovaný software
Aktualizujte a nainstalujte požadovaný software
Aktualizujte a nainstalujte požadovaný software

Jakmile WiFi funguje, aktualizujte Pi pomocí:

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

Po dokončení aktualizace (může to chvíli trvat) nainstalujte software, který budeme používat s;

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

Krok 4: Připojte se k senzoru (v tomto příkladu Arduino)

Buď připojte Arduino společně s klávesnicí pomocí USB rozbočovače, nebo připojte Arduino přes jeden USB port a proveďte nastavení pomocí SSH přes WiFi.

Aby bylo možné přistupovat k sériovému portu, ke kterému je připojeno Arduino, je užitečné poskytnout přístup k výchozímu účtu pi. Protože je Arduino obvykle přiřazeno k portu „/dev/ttyACM0“, použijte následující příkaz, který uživateli „pí“umožní přístup k portu:

sudo chown pi: /dev /ttyACM0

Za předpokladu, že Arduino již bylo nastaveno pro odesílání dat přes sériový port, můžete data zobrazit v pythonu následujícím způsobem:

Otevřený python;

python3

Importovat sériové číslo:

importní seriál

Otevřete port com:

ser = serial. Serial (port = '/dev/ttyACM0', přenosová rychlost = 9600, časový limit = 5)

Kde byla přenosová rychlost Arduina v tomto případě nastavena na 9600.

Řádek můžete přečíst a vytisknout spuštěním následujícího kódu:

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

Pokud to funguje, můžete ukončit připojení a ukončit Python pomocí:

ser.close ()

výstup()

Krok 5: Nastavení možností přístupového bodu WiFi

Nastavením Pi Zero W v režimu přístupového bodu wifi se k němu můžete připojit s jakýmkoli zařízením wifi. To umožňuje nastavení záznamníku a stahování dat přes wifi, nejsou potřeba žádné kabely ani ovladače.

K tomu má Adafruit k dispozici dobrý návod. Několik malých poznámek:

  • U ovladače /etc/hostapd/hostapd.conf použijte nepoužívat řádek ovladače.
  • Krok „Aktualizovat hostapd“by neměl být nutný.

Pokud přístupový bod na konci výukového programu nefunguje, zkuste restartovat Pi (sudo reboot).

Krok 6: Přepínání mezi přístupovým bodem Wifi a klientskými režimy

Někdy budete chtít aktualizovat software nebo nainstalovat nový software na váš Raspberry Pi, ale to vyžaduje připojení k internetu. Naštěstí je přepínání mezi nimi velmi snadné.

Připojte se k Pi pomocí SSH (přes kabel, ne přes wifi!). Začněte zastavením služeb přístupového bodu:

sudo cystemctl stop hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Poté upravte soubor síťových rozhraní:

sudo nano/etc/network/interfaces

Zde byste měli okomentovat parametry hostingu a zrušit komentář parametrů síťového připojení. Změňte to z tohoto:

#-Hosting parametry:

allow-hotplug wlan0 iface wlan0 statická adresa inet 192.168.42.1 maska sítě 255.255.255.0 # -síťové (klientské) parametry: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

K tomuto:

#-Hosting parametry: #allow-hotplug wlan0 #iface wlan0 inet static #address 192.168.42.1 #netmask 255.255.255.0 #-Network (client) parameters: auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Uložte a zavřete soubor.

Dále spustíte následující příkazy:

sudo systemctl start wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Nyní by se váš Pi měl znovu připojit k wifi, což vám umožní aktualizovat a nainstalovat software.

Chcete -li se vrátit do režimu přístupového bodu, přepněte komentáře v/etc/network/interfaces a restartujte Pi.

Krok 7: Závěrečné poznámky

Závěrečné poznámky
Závěrečné poznámky

Nastavení webu

Server apache je umístěn na/var/www/. Chcete -li změnit výchozí stránku, upravte soubor /var/www/html/index.html.

Zde můžete zpřístupnit soubory ke stažení přes wifi připojení tak, že v prohlížeči přejdete na IP adresu Pi (192.168.42.1). Jakékoli zařízení s podporou WiFi je pak může stáhnout bez dalšího softwaru.

Připojení SFTP

Přes SSH lze navázat připojení FTP. Pomocí Filezilla můžete rychle a snadno přenášet velké množství souborů (viz obrázek).

Hodiny reálného času

Jelikož se vnitřní hodiny Pi výrazně posunou, pokud není k dispozici připojení k internetu, bude v případě potřeby přesného měření času zapotřebí modul hodin reálného času (RTC). Jedním z takových modulů je RasClock, pokyny k instalaci najdete zde. K dispozici jsou také další hodiny založené na i2c (tj. DS3231)

Závěr

Pokud vše proběhlo správně, měli byste nyní mít funkční záznamník dat Pi Zero! V dalším kroku je zahrnut příklad skriptu protokolování pythonu.

Krok 8: Příklad skriptu pro protokolování Pythonu

import os

importovat seriál z času importovat čas z datetime import datetime import numpy jako np ser = serial. Serial (port = 'COM4', baudrate = 57600, timeout = 5) adresář = 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 = adresář + day_timestring +'.dat ' #Přečíst data a okamžitě získejte časový řádek = ser.readline (). decode ('utf-8') nowtime = datetime.strftime (datetime.now (), '%Y-%m-%d%H:%M:% S.%f ') line = line.split (', ') try: u = float (řádek [1]) kromě: u = np.nan try: v = float (řádek [2]) kromě: v = np.nan try: w = float (řádek [3]) kromě: w = np.nan try: c = float (řádek [5]) kromě: c = np.nan Ts = 1/403*c ** 2 - 273,15 zkuste: Ta = float (řádek [8]) kromě: Ta = np.nan if (os.path.isfile (file_today)): s 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: s otevřeným (file_today, 'w') jako 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 () kromě KeyboardInterrupt: ser.close ()

Doporučuje: