INHOUDSOPGAWE:

Raspberry Pi Zero W -datalogger: 8 stappe (met foto's)
Raspberry Pi Zero W -datalogger: 8 stappe (met foto's)

Video: Raspberry Pi Zero W -datalogger: 8 stappe (met foto's)

Video: Raspberry Pi Zero W -datalogger: 8 stappe (met foto's)
Video: 10 привычек, чтобы стать счастливым 2024, Julie
Anonim
Framboos Pi Zero W -datalogger
Framboos Pi Zero W -datalogger

Met 'n Raspberry Pi Zero W kan u 'n goedkoop en maklik gebruikbare datalogger maak, wat óf aan 'n plaaslike wifi -netwerk gekoppel kan word, of as 'n toegangspunt kan dien in die veld waarmee u data draadloos met u slimfoon kan aflaai.

Ek het hierdie opstelling tydens die American Geophysical Union Fall Meeting 2017 aangebied, as 'n manier om u eie datalogger op te stel. U kan die aanbieding hier vind.

Wat u benodig:

  • 'N Framboos Pi Zero W
  • 'N Micro SD -kaart
  • 'n USB -kabel of USB -kragbron
  • 'N Rekenaar met 'n USB -kaartleser
  • Opsioneel (maar nuttig):

    • miniHDMI -> HDMI -adapter (om die Pi aan 'n skerm te koppel)
    • USB OTG -adapter (om 'n sleutelbord aan die Pi te koppel

Stap 1: Stel Pi Zero W op

Om te begin, plaas 'n Rasbian-prent op 'n microSD-kaart (in hierdie handleiding het ek 2017-07-05-raspbian-jessie-lite gebruik, hier beskikbaar). 'N Lite weergawe kan gebruik word (sonder 'n lessenaar), aangesien die opstelling via die opdragreël gedoen sal word.

Plaas die SD -kaart in die Pi, koppel die skerm en 'n sleutelbord aan, en skakel dit aan deur die kragkabel aan te sluit. Dit is ook moontlik om koploos op te stel, maar dit benodig verbinding via SSH.

Nadat die Pi die aanmelding begin het (standaard gebruikersnaam: pi, wagwoord: framboos) en verander u die wagwoord met die opdrag "passwd".

Die sleutelbord kan gekonfigureer word deur "sudo raspi-config" in die terminaal in te voer.

Stap 2: Koppel aan WiFi

Koppel aan WiFi
Koppel aan WiFi
Koppel aan WiFi
Koppel aan WiFi
Koppel aan WiFi
Koppel aan WiFi
Koppel aan WiFi
Koppel aan WiFi

Om aan die internet te koppel, sal ons die Pi vertel met watter netwerk. Begin deur die volgende lêer oop te maak;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Voeg hierin die netwerkinligting onderaan by;

netwerk = {

ssid = "netwerknaam" psk = "netwerkwagwoord"}

In die geval van 'n ondernemingsnetwerk, kan u die volgende opstelling gebruik (pas WPA-EAP // TTLA // MSCHAPv2 aan by die toepaslike instellings).

netwerk = {

ssid = "ssid" #Gee jou netwerknaam in key_mgmt = WPA-EAP eap = TTLS identiteit = "xxxxx" #Voer jou aanmeld rekening rekening wagwoord = "xxxxx" in #Voer die paswoord in fase2 = "auth = MSCHAPv2"}

Stoor deur CTRL+O te druk en verlaat met CTRL+X.

Verwys nou na u konfigurasielêer in/etc/network/interfaces

sudo nano/etc/network/interfaces

Verander die wlan0 -gedeelte na:

outomaties wlan0

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

Stoor weer die lêer (CTRL+O) en verlaat dan (CTRL+X).

Na herlaai (sudo herlaai) behoort u wifi -verbinding te werk. U kan dit toets deur 'n webwerf te ping;

ping www.google.com

Kanselleer die ping met CTRL+C

Om draadloos aan die Pi via SSH te koppel, moet u SSH aktiveer:

sudo raspi-config

Gaan na "5 koppelvlakopsies" en aktiveer SSH. Gaan dan terug en verlaat die konfigurasie.

Soek die IP -adres van die Pi op:

ifconfig

Die IP sal onder "inet addr:" van die wlan0 -koppelvlak wees.

U kan nou via WiFi aan die Pi koppel as u op dieselfde netwerk is. Laai Putty af (vir Windows), voer die IP -adres in wat u onder "Gasheernaam" gevind het en druk op "Open". Nadat u die waarskuwing aanvaar het, behoort u die opdragreël te sien en aan te meld.

Stap 3: Dateer die nodige sagteware op en installeer dit

Werk die nodige sagteware op en installeer dit
Werk die nodige sagteware op en installeer dit
Werk die nodige sagteware op en installeer dit
Werk die nodige sagteware op en installeer dit

Nadat WiFi werk, werk die Pi op met:

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

Nadat die opdatering voltooi is (dit kan 'n rukkie neem), installeer u die sagteware waarmee ons dit sal gebruik;

sudo apt-get install python3 python3-seriële apache2 -y

Stap 4: Koppel aan 'n sensor (in hierdie voorbeeld 'n Arduino)

Sluit die Arduino aan met 'n sleutelbord met 'n USB -hub, of koppel die Arduino via die enkele USB -poort en voer die opstelling uit met SSH via WiFi.

Om toegang te verkry tot die seriële poort waarmee die Arduino gekoppel is, is dit handig om toegang tot die standaard pi -rekening te gee. Aangesien die Arduino gewoonlik aan poort "/dev/ttyACM0" toegewys word, gebruik die volgende opdrag om die 'pi' -gebruiker toegang tot die poort te gee:

sudo chown pi: /dev /ttyACM0

As ons aanvaar dat die Arduino reeds ingestel is om data oor die seriële poort te stuur, kan u die data in python op die volgende manier sien:

Maak luislang oop;

luislang 3

Voer reeks in:

invoer reeks

Maak die com -poort oop:

ser = serial. Serial (poort = '/dev/ttyACM0', baudrate = 9600, time -out = 5)

Waar die baudrate van die Arduino in hierdie geval op 9600 gestel is.

U kan 'n reël lees en druk deur die volgende kode te gebruik:

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

As dit werk, kan u die verbinding sluit en Python verlaat met:

ser.close ()

uitgang ()

Stap 5: Stel WiFi -toegangspuntfunksies op

Deur u Pi Zero W in die wifi -toegangspuntmodus op te stel, kan u daaraan koppel met enige wifi -toestel. Hiermee kan u die logger instel en data via wifi aflaai, sonder kabels of bestuurders nie.

Hiervoor het Adafruit 'n goeie handleiding beskikbaar. 'N Paar klein opmerkings:

  • Gebruik nie die bestuurderslyn vir die bestuurder /etc/hostapd/hostapd.conf nie.
  • Die stap "Update hostapd" moet nie nodig wees nie.

As die toegangspunt aan die einde van die tutoriaal nie werk nie, probeer dan om die Pi weer te begin (sudo herlaai).

Stap 6: Skakel tussen Wifi -toegangspunt en kliëntmodusse

Soms wil u sagteware opdateer of nuwe sagteware op u Raspberry Pi installeer, maar dit vereis 'n internetverbinding. Gelukkig is dit baie maklik om tussen die twee te skakel.

Koppel aan die Pi met SSH (via 'n kabel, nie wifi nie!). Begin deur die toegangspuntdienste te stop:

sudo cystemctl stop hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Wysig dan die netwerk -koppelvlaklêer:

sudo nano/etc/network/interfaces

Hier moet u kommentaar lewer op die gasheerparameters en die kommentaar op die netwerkverbindingsparameters ongedaan maak. Verander dit hieruit:

#-Hostingsparameters:

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

Tot hierdie:

#-Hostingsparameters: #allow-hotplug wlan0 #iface wlan0 inet static #adres 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

Stoor en maak die lêer toe.

Vervolgens voer u die volgende opdragte uit:

sudo systemctl begin wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Nou moet u Pi weer verbinding maak met wifi, sodat u sagteware kan bywerk en installeer.

Om terug te keer na die toegangspuntmodus, skakel die opmerkings in/etc/network/interfaces om en herlaai die Pi.

Stap 7: Laaste opmerkings

Laaste Opmerkings
Laaste Opmerkings

Webwerf opstel

Die apache -bediener is geleë in/var/www/. Wysig die /var/www/html/index.html lêer om die standaardbladsy te verander.

U kan lêers hier beskikbaar stel om af te laai via die wifi -verbinding deur u blaaier na die IP -adres van die Pi (192.168.42.1) te navigeer. Elke toestel met wifi kan dit dan aflaai sonder enige ekstra sagteware.

SFTP -verbinding

Met SSH kan 'n FTP -verbinding gemaak word. U kan Filezilla gebruik om 'n groot hoeveelheid lêers vinnig en maklik oor te dra (sien prent).

Real -time klok

Aangesien die interne klok van die Pi aansienlik sal dryf as daar geen verbinding met die internet is nie, is 'n real -time klok (RTC) -module nodig as akkurate tydsberekening benodig word. Een so 'n module is die RasClock; installasie -instruksies kan hier gevind word. Ander horlosies gebaseer op i2c is ook beskikbaar (bv. DS3231)

Afsluiting

As alles reg verloop, moet u nou 'n werkende Pi Zero -datalogger hê! In die volgende stap is 'n voorbeeld van 'n python -aantekeningskrip ingesluit.

Stap 8: Voorbeeld Python Logging Script

invoer 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 () probeer: terwyl True: day_timestring = datetime.strftime (datetime.now (),'%Y%m%d ') file_today = directory + day_timestring +'.dat ' #Lees uit data en kry onmiddellik die tydlyn = ser.readline (). dekodeer ('utf-8') nowtime = datetime.strftime (datetime.now (), '%Y-%m-%d%H:%M:% S.%f ') line = line.split (', ') try: u = float (line [1]) behalwe: u = np.nan try: v = float (line [2]) behalwe: v = np.nan try: w = float (reël [3]) behalwe: w = np.nan try: c = float (reël [5]) behalwe: c = np.nan Ts = 1/403*c ** 2 - 273,15 probeer: Ta = float (reël [8]) behalwe: Ta = np.nan as (os.path.isfile (file_today)): met 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 () anders: met oop (file_today, 'w') as fileobject: fileobject.write ('"Time", "u", "v", "w", "c", "Ts", "Ta" / n ') fileobject.write (nou+', ') fileobject.write (str (u)+', '+str (v)+', '+str (w)+', '+str (c)+', '+str (Ts)+', '+str (Ta)+' / n ') fileobject.close () behalwe KeyboardInterrupt: ser.close ()

Aanbeveel: