Spisu treści:

Rejestrator danych Raspberry Pi Zero W: 8 kroków (ze zdjęciami)
Rejestrator danych Raspberry Pi Zero W: 8 kroków (ze zdjęciami)

Wideo: Rejestrator danych Raspberry Pi Zero W: 8 kroków (ze zdjęciami)

Wideo: Rejestrator danych Raspberry Pi Zero W: 8 kroków (ze zdjęciami)
Wideo: Raspberry Pi Zero 2 - wszystko co musisz wiedzieć ZANIM kupisz nowe Zero2W 2024, Lipiec
Anonim
Rejestrator danych Raspberry Pi Zero W
Rejestrator danych Raspberry Pi Zero W

Korzystając z Raspberry Pi Zero W można zrobić tani i łatwy w obsłudze rejestrator danych, który może być podłączony do lokalnej sieci Wi-Fi lub służyć jako punkt dostępowy w terenie, który umożliwia bezprzewodowe pobieranie danych za pomocą smartfona.

Przedstawiłem tę konfigurację na American Geophysical Union Fall Meeting 2017, jako sposób na stworzenie własnej konfiguracji rejestratora danych. Możesz znaleźć tę prezentację tutaj.

Czego będziesz potrzebować:

  • Raspberry Pi Zero W
  • Karta micro SD
  • kabel USB lub zasilacz USB
  • Komputer z czytnikiem kart USB
  • Opcjonalne (ale przydatne):

    • miniHDMI -> adapter HDMI (do podłączenia Pi do ekranu)
    • Adapter USB OTG (do podłączenia klawiatury do Pi

Krok 1: Skonfiguruj Pi Zero W

Aby rozpocząć, umieść obraz Rasbian na karcie microSD (w tym samouczku użyłem 2017-07-05-raspbian-jessie-lite, dostępny tutaj). Można użyć wersji Lite (bez pulpitu), ponieważ konfiguracja zostanie wykonana za pomocą wiersza poleceń.

Włóż kartę SD do Pi, podłącz ekran i klawiaturę i włącz ją, podłączając kabel zasilający. Konfiguracja bezgłowa jest również możliwa, ale wymagałaby połączenia przez SSH.

Po uruchomieniu Pi zaloguj się (domyślna nazwa użytkownika: pi, hasło: raspberry) i zmień hasło poleceniem "passwd".

Klawiaturę można skonfigurować, wpisując w terminalu „sudo raspi-config”.

Krok 2: Połącz się z Wi-Fi

Połącz się z Wi-Fi
Połącz się z Wi-Fi
Połącz się z Wi-Fi
Połącz się z Wi-Fi
Połącz się z Wi-Fi
Połącz się z Wi-Fi
Połącz się z Wi-Fi
Połącz się z Wi-Fi

Aby połączyć się z Internetem, powiemy Pi, z którą siecią ma się połączyć. Zacznij od otwarcia następującego pliku;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Tutaj dodaj informacje o sieci na dole;

sieć={

ssid="nazwa sieci" psk="hasło sieci" }

W przypadku sieci firmowej można użyć następującej konfiguracji (dostosuj WPA-EAP // TTLA // MSCHAPv2 do odpowiednich ustawień).

sieć={

ssid="ssid" #Wprowadź nazwę sieci key_mgmt=WPA-EAP eap=TTLS identity="xxxxx" #Wprowadź hasło do konta logowania="xxxxx" #Wprowadź fazę hasła2="auth=MSCHAPv2" }

Zapisz, naciskając CTRL+O i wyjdź z CTRL+X.

Teraz odwołaj się do swojego pliku konfiguracyjnego w /etc/network/interfaces

sudo nano /etc/sieć/interfejsy

Zmień część wlan0 na:

auto wlan0

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

Ponownie zapisz plik (CTRL+O), a następnie wyjdź (CTRL+X).

Po ponownym uruchomieniu (sudo reboot) połączenie Wi-Fi powinno działać. Możesz to przetestować, wysyłając polecenie ping do witryny;

pinguj www.google.com

Anuluj ping za pomocą CTRL+C

Aby połączyć się bezprzewodowo z Pi przez SSH, należy włączyć SSH:

sudo raspi-config

Przejdź do „5 opcji interfejsu” i włącz SSH. Następnie wróć i wyjdź z konfiguracji.

Sprawdź adres IP Pi:

ifconfig

Adres IP będzie pod "inet addr:" interfejsu wlan0.

Teraz możesz połączyć się z Pi przez Wi-Fi, jeśli jesteś w tej samej sieci. Pobierz Putty (dla systemu Windows), wprowadź adres IP znaleziony w polu „Nazwa hosta” i naciśnij „Otwórz”. Po zaakceptowaniu ostrzeżenia powinieneś teraz widzieć wiersz poleceń i logowanie.

Krok 3: Zaktualizuj i zainstaluj wymagane oprogramowanie

Zaktualizuj i zainstaluj wymagane oprogramowanie
Zaktualizuj i zainstaluj wymagane oprogramowanie
Zaktualizuj i zainstaluj wymagane oprogramowanie
Zaktualizuj i zainstaluj wymagane oprogramowanie

Po uruchomieniu WiFi zaktualizuj Pi za pomocą:

aktualizacja sudo apt-get -y && aktualizacja sudo apt-get -y

Po zakończeniu aktualizacji (może to chwilę potrwać) zainstaluj oprogramowanie, z którym będziemy korzystać;

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

Krok 4: Podłącz do czujnika (w tym przykładzie Arduino)

Podłącz Arduino razem z klawiaturą za pomocą koncentratora USB lub podłącz Arduino przez pojedynczy port USB i wykonaj konfigurację za pomocą SSH przez WiFi.

Aby móc uzyskać dostęp do portu szeregowego, do którego podłączone jest Arduino, przydatne jest przyznanie dostępu do domyślnego konta pi. Ponieważ Arduino zwykle jest przypisane do portu "/dev/ttyACM0", użyj następującego polecenia, aby dać użytkownikowi "pi" dostęp do portu:

sudo chown pi: /dev/ttyACM0

Zakładając, że Arduino zostało już skonfigurowane do przesyłania danych po porcie szeregowym, możesz przeglądać dane w Pythonie w następujący sposób:

Otwórz Pythona;

Python3

Numer seryjny importu:

importuj serial

Otwórz port COM:

ser = serial. Serial(port = '/dev/ttyACM0', szybkość transmisji = 9600, limit czasu = 5)

Gdzie prędkość transmisji Arduino została w tym przypadku ustawiona na 9600.

Możesz przeczytać i wydrukować wiersz, uruchamiając następujący kod:

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

Jeśli to działa, możesz zamknąć połączenie i wyjść z Pythona za pomocą:

ser.zamknij()

Wyjście()

Krok 5: Skonfiguruj możliwości punktu dostępu Wi-Fi

Konfigurując urządzenie Pi Zero W w trybie punktu dostępu Wi-Fi, możesz połączyć się z nim za pomocą dowolnego urządzenia Wi-Fi. Pozwala to na konfigurację rejestratora i pobieranie danych przez Wi-Fi, bez konieczności stosowania kabli ani sterowników.

W tym celu Adafruit ma dobry samouczek. Kilka drobnych uwag:

  • W przypadku sterownika /etc/hostapd/hostapd.conf nie używaj wiersza sterownika.
  • Krok „Aktualizuj hostapd” nie powinien być konieczny.

Jeśli punkt dostępu nie działa na końcu samouczka, spróbuj ponownie uruchomić Pi (ponowne uruchomienie sudo).

Krok 6: Przełączanie między trybem punktu dostępu Wi-Fi a trybem klienta

Czasami będziesz chciał zaktualizować oprogramowanie lub zainstalować nowe oprogramowanie na swoim Raspberry Pi, ale wymaga to połączenia z Internetem. Na szczęście przełączanie się między nimi jest bardzo łatwe.

Połącz się z Pi za pomocą SSH (przez kabel, nie przez Wi-Fi!). Zacznij od zatrzymania usług punktu dostępu:

sudo cystemctl zatrzymać hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Następnie edytuj plik interfejsów sieciowych:

sudo nano /etc/sieć/interfejsy

Tutaj należy zakomentować parametry hostingu i odkomentować parametry połączenia sieciowego. Zmień to z tego:

#- Parametry hostingu:

allow-hotplug wlan0 iface wlan0 inet adres statyczny 192.168.42.1 maska sieci 255.255.255.0 #-Parametry sieciowe (klienta): #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Do tego:

#-Parametry hostingu:#allow-hotplug wlan0 #iface wlan0 inet static # adres 192.168.42.1 # maska sieciowa 255.255.255.0 #-Parametry sieciowe (klienta): auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.

Zapisz i zamknij plik.

Następnie uruchamiasz następujące polecenia:

sudo systemctl uruchom wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Teraz Twoje Pi powinno ponownie połączyć się z Wi-Fi, umożliwiając aktualizację i instalację oprogramowania.

Aby wrócić do trybu punktu dostępu, przełącz komentarze w /etc/network/interfaces i zrestartuj Pi.

Krok 7: Uwagi końcowe

Uwagi końcowe
Uwagi końcowe

Konfiguracja strony internetowej

Serwer Apache znajduje się w /var/www/. Aby zmienić domyślną stronę, edytuj plik /var/www/html/index.html.

Możesz tutaj udostępnić pliki do pobrania przez połączenie Wi-Fi, przechodząc w przeglądarce do adresu IP Pi (192.168.42.1). Każde urządzenie obsługujące Wi-Fi może je pobrać bez dodatkowego oprogramowania.

Połączenie SFTP

Przez SSH można nawiązać połączenie FTP. Możesz użyć Filezilli do szybkiego i łatwego przesyłania dużej ilości plików (patrz obraz).

Zegar czasu rzeczywistego

Ponieważ wewnętrzny zegar Pi będzie się znacznie dryfować, jeśli nie ma połączenia z Internetem, moduł zegara czasu rzeczywistego (RTC) będzie potrzebny, jeśli wymagane jest dokładne odmierzanie czasu. Jednym z takich modułów jest RasClock, instrukcje instalacji można znaleźć tutaj. Dostępne są również inne zegary oparte na i2c (np. DS3231)

Wniosek

Jeśli wszystko poszło poprawnie, powinieneś mieć teraz działający rejestrator danych Pi Zero! Przykładowy skrypt logowania Pythona znajduje się w następnym kroku.

Krok 8: Przykładowy skrypt logowania w Pythonie

importuj system

import serial z czasu import czasu z datetime import datetime import numpy jako 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 = katalog + day_timestring + '.dat' #Read out danych i natychmiast uzyskaj linię czasu = 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(line[3]) z wyjątkiem: w = np.nan try: c = float(line[5]) z wyjątkiem: c = np.nan Ts = 1/403 * c**2 - 273,15 try: Ta = float(line[8]) z wyjątkiem: Ta = np.nan if (os.path.isfile(file_today)): with 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: z open(file_today, 'w') as 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() z wyjątkiem KeyboardInterrupt: ser.close()

Zalecana: