Sisukord:

Raspberry Pi Zero W andmebaas: 8 sammu (piltidega)
Raspberry Pi Zero W andmebaas: 8 sammu (piltidega)

Video: Raspberry Pi Zero W andmebaas: 8 sammu (piltidega)

Video: Raspberry Pi Zero W andmebaas: 8 sammu (piltidega)
Video: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, November
Anonim
Raspberry Pi Zero W andmebaas
Raspberry Pi Zero W andmebaas

Raspberry Pi Zero W abil saate teha odava ja hõlpsasti kasutatava andmekoguja, mille saab ühendada kohaliku WiFi -võrguga või kasutada pääsupunktina väljal, mis võimaldab teil nutitelefoniga juhtmevabalt andmeid alla laadida.

Ma esitasin selle seadistuse Ameerika Geofüüsika Liidu sügiskoosolekul 2017, et luua oma andmete logija seadistus. Selle esitluse leiate siit.

Mida vajate:

  • A Raspberry Pi Zero W
  • Micro SD kaart
  • USB -kaabel või USB -toiteallikas
  • USB -kaardilugejaga arvuti
  • Valikuline (kuid kasulik):

    • miniHDMI -> HDMI -adapter (Pi ühendamiseks ekraaniga)
    • USB OTG -adapter (klaviatuuri ühendamiseks Pi -ga

Samm: seadistage Pi Zero W

Alustuseks pange rassi pilt microSD-kaardile (selles õpetuses kasutasin 2017-07-05-raspbian-jessie-lite, saadaval siit). Võib kasutada lihtsat versiooni (ilma töölauata), kuna seadistamine toimub käsurealt.

Sisestage SD -kaart Pi -sse, ühendage ekraan ja klaviatuur ning lülitage toide sisse, ühendades toitekaabli. Võimalik on ka peata seadistamine, kuid see nõuab ühendamist SSH kaudu.

Pärast seda, kui Pi on käivitanud sisselogimise (vaikimisi kasutajanimi: pi, parool: vaarikas) ja muutke parool käsuga "passwd".

Klaviatuuri saab konfigureerida, sisestades terminali "sudo raspi-config".

Samm: ühendage WiFi -ga

Ühendage WiFi -ga
Ühendage WiFi -ga
Ühendage WiFi -ga
Ühendage WiFi -ga
Ühendage WiFi -ga
Ühendage WiFi -ga
Ühendage WiFi -ga
Ühendage WiFi -ga

Interneti -ühenduse loomiseks ütleme Pi -le, millise võrguga ühenduse luua. Alustage järgmise faili avamisega;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Lisage siia võrguteave allosas;

võrk = {

ssid = "võrgu nimi" psk = "võrgu parool"}

Ettevõttevõrgu puhul saate kasutada järgmist seadistust (kohandage WPA-EAP // TTLA // MSCHAPv2 kehtivatele seadetele).

võrk = {

ssid = "ssid" #Sisestage oma võrgu nimi key_mgmt = WPA-EAP eap = TTLS identity = "xxxxx" #Sisestage oma sisselogimiskonto parool = "xxxxx" #Sisestage passwork phase2 = "auth = MSCHAPv2"}

Salvestage, vajutades klahvikombinatsiooni CTRL+O, ja väljuge klahvikombinatsiooni CTRL+X abil.

Nüüd viidake oma konfiguratsioonifailile kataloogis/etc/network/interfaces

sudo nano/etc/network/interfaces

Muutke wlan0 osa järgmiselt:

auto wlan0

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

Jällegi salvestage fail (CTRL+O) ja seejärel väljuge (CTRL+X).

Pärast taaskäivitamist (sudo reboot) peaks teie wifi -ühendus toimima. Saate seda testida veebisaidi pingiga;

ping www.google.com

Tühistage ping CTRL+C abil

Juhtmeta ühenduse loomiseks Pi abil SSH kaudu peaksite lubama SSH:

sudo raspi-config

Liikuge jaotisse "5 liidesevalikut" ja lubage SSH. Seejärel minge tagasi ja väljuge konfiguratsioonist.

Otsige üles Pi IP -aadress:

ifconfig

IP asub wlan0 liidese "inet addr:" all.

Nüüd saate Pi -ga ühenduse luua WiFi kaudu, kui olete samas võrgus. Laadige alla Putty (Windowsi jaoks), sisestage jaotises "Host Name" leitud IP -aadress ja vajutage "Open". Pärast hoiatuse vastuvõtmist peaksite nüüd nägema käsurida ja sisselogimist.

Samm: värskendage ja installige vajalik tarkvara

Värskendage ja installige vajalik tarkvara
Värskendage ja installige vajalik tarkvara
Värskendage ja installige vajalik tarkvara
Värskendage ja installige vajalik tarkvara

Kui WiFi töötab, värskendage Pi -d järgmiselt:

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

Kui värskendus on lõppenud (see võib veidi aega võtta), installige tarkvara, millega me kasutame;

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

Samm: ühendage anduriga (selles näites Arduino)

Ühendage Arduino USB -jaoturi abil klaviatuuriga või ühendage Arduino ühe USB -pordi kaudu ja tehke häälestus SSH -ga WiFi kaudu.

Et pääseda juurde jadaportile, millega Arduino on ühendatud, on kasulik anda juurdepääs vaikimisi pi kontole. Kuna Arduino määratakse tavaliselt pordile "/dev/ttyACM0", kasutage pi -kasutajale juurdepääsu andmiseks järgmist käsku:

sudo chown pi: /dev /ttyACM0

Eeldades, et Arduino on juba seadistatud andmete saatmiseks jadapordi kaudu, saate andmeid pythonis vaadata järgmiselt.

Avatud python;

python3

Impordi seeria:

impordi seeria

Avage com -port:

ser = jada. Seriaalne (port = '/dev/ttyACM0', baudrate = 9600, timeout = 5)

Kui Arduino andmeedastuskiirus oli antud juhul 9600.

Rea lugemiseks ja printimiseks kasutage järgmist koodi:

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

Kui see töötab, saate ühenduse sulgeda ja Pythonist väljuda järgmiselt.

ser.close ()

välju ()

Samm: seadistage WiFi pääsupunkti võimalused

Seadistades oma Pi Zero W WiFi -pöörduspunkti režiimis, saate sellega ühenduse luua mis tahes WiFi -seadmega. See võimaldab logija seadistamist ja andmete allalaadimist wifi kaudu, kaableid ega draivereid pole vaja.

Selleks on Adafruitil hea õpetus saadaval. Mõned väikesed märkused:

  • /Etc/hostapd/hostapd.conf draiveri puhul ärge kasutage draiveririda.
  • Samm „Värskenda hostapd” ei peaks olema vajalik.

Kui pääsupunkt ei tööta õpetuse lõpus, proovige Pi taaskäivitada (sudo reboot).

6. toiming: Wifi pääsupunkti ja kliendirežiimi vahel vahetamine

Mõnikord soovite tarkvara värskendada või oma Raspberry Pi -le uut tarkvara installida, kuid selleks on vaja Interneti -ühendust. Õnneks on nende kahe vahel vahetamine väga lihtne.

Ühendage Pi -ga SSH -ga (üle kaabli, mitte wifi kaudu!). Alustage pääsupunktiteenuste peatamisega.

sudo cystemctl peata hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Seejärel muutke võrguliideste faili:

sudo nano/etc/network/interfaces

Siin peaksite kommenteerima hostimise parameetrid ja tühistama võrguühenduse parameetrite kommentaarid. Muutke seda siit:

#-Hostingu parameetrid:

allow-hotplug wlan0 iface wlan0 inet staatiline aadress 192.168.42.1 netmask 255.255.255.0 # -Võrgu (kliendi) parameetrid: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Selleks:

#-Hostingu parameetrid: #allow-hotplug wlan0 #iface wlan0 inet staatiline #aadress 192.168.42.1 #netmask 255.255.255.0 #-Võrgu (kliendi) parameetrid: auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Salvestage ja sulgege fail.

Järgmisena käivitate järgmised käsud:

sudo systemctl käivitage wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Nüüd peaks teie Pi uuesti WiFi -ga ühenduse looma, võimaldades teil tarkvara värskendada ja installida.

Pöörduspunkti režiimi naasmiseks lülitage kommentaarid ümber kataloogis/etc/network/interfaces ja taaskäivitage Pi.

7. etapp: lõppmärkused

Lõppmärkused
Lõppmärkused

Veebisaidi seadistamine

Apache server asub kaustas/var/www/. Vaikelehe muutmiseks muutke faili /var/www/html/index.html.

Siin saate faile WiFi -ühenduse kaudu allalaadimiseks kättesaadavaks teha, navigeerides brauseri kaudu Pi IP -aadressile (192.168.42.1). Iga wifi -toega seade saab need alla laadida ilma lisatarkvarata.

SFTP ühendus

SSH kaudu saab luua FTP -ühenduse. Filezilla abil saate kiiresti ja hõlpsalt üle kanda palju faile (vt pilti).

Reaalajas kell

Kuna Pi sisekell triivib märkimisväärselt, kui Interneti -ühendust pole, on täpse ajavõtmise korral vaja reaalaja kella (RTC) moodulit. Üks selline moodul on RasClock, paigaldusjuhised leiate siit. Saadaval on ka muud i2c -põhised kellad (st DS3231)

Järeldus

Kui kõik läks õigesti, peaks teil nüüd olema töötav Pi Zero andmeedastaja! Python logimise skripti näide on lisatud järgmisse etappi.

Samm 8: Pythoni logimisskripti näide

import os

importida seeriat ajast importimise ajast kuupäevast ja ajast importida datetime import numpy kui np ser = jada. Sarja (port = 'COM4', baudrate = 57600, timeout = 5) kataloog = r '\ var / www / html / data / anemometer / WMPro1352_ 'ser.flushInput () ser.flushOutput () proovige: samas True: day_timestring = datetime.strftime (datetime.now (),'%Y%m%d ') file_today = kataloog + day_timestring +'.dat ' #Loe välja andmed ja saate kohe ajajoone = ser.readline (). dekodeerida ('utf-8') nowtime = datetime.strftime (datetime.now (), '%Y-%m-%d%H:%M:% S.%f ') line = line.split (', ') try: u = float (line [1]) izņemot: u = np.nan try: v = float (line [2]) izņemot: v = np.nan try: w = float (line [3]) izņemot: w = np.nan try: c = float (line [5]), va: c = np.nan Ts = 1/403*c ** 2 - 273,15 proovige: Ta = float (rida [8]), välja arvatud: Ta = np.nan if (os.path.isfile (file_today)): koos open (file_today, 'a') kui fileobject: fileobject.write (nowtime+',') fileobject.write (str (u)+','+str (v)+','+str (w)+','+str (c)+','+str (Ts)+','+ str (Ta)+'\ n') fileobject.clos e () else: avatud (file_today, 'w') kui fileobject: fileobject.write ('"Time", "u", "v", "w", "c", "Ts", "Ta" / n ') fileobject.write (nüüdaeg+', ') fileobject.write (str (u)+', '+str (v)+', '+str (w)+', '+str (c)+', '+str (Ts)+', '+str (Ta)+' / n ') fileobject.close () v.a klaviatuurInterrupt: ser.close ()

Soovitan: