İçindekiler:

Raspberry Pi Zero W Datalogger: 8 Adım (Resimli)
Raspberry Pi Zero W Datalogger: 8 Adım (Resimli)

Video: Raspberry Pi Zero W Datalogger: 8 Adım (Resimli)

Video: Raspberry Pi Zero W Datalogger: 8 Adım (Resimli)
Video: Raspberry Pi Zero 2W: Neler değişti? 2024, Kasım
Anonim
Raspberry Pi Zero W Veri Kaydedici
Raspberry Pi Zero W Veri Kaydedici

Raspberry Pi Zero W kullanarak, yerel bir wifi ağına bağlanabilen veya akıllı telefonunuzla kablosuz olarak veri indirmenize izin veren sahada bir erişim noktası görevi görebilen ucuz ve kullanımı kolay bir datalogger yapabilirsiniz.

Bu kurulumu, kendi veri kaydedici kurulumunuzu yapmanın bir yolu olarak Amerikan Jeofizik Birliği Güz Toplantısı 2017'de sundum. O sunuma buradan ulaşabilirsiniz.

Neye ihtiyacınız olacak:

  • Ahududu Pi Sıfır W
  • Bir mikro SD kart
  • bir USB kablosu veya USB güç kaynağı
  • USB kart okuyuculu bir bilgisayar
  • İsteğe bağlı (ancak kullanışlı):

    • miniHDMI -> HDMI adaptörü (Pi'yi ekrana bağlamak için)
    • USB OTG adaptörü (pi'ye bir klavye bağlamak için

Adım 1: Pi Zero W'yi Ayarlayın

Başlamak için, bir microSD karta bir Rasbian görüntüsü koyun (bu eğitimde 2017-07-05-raspbian-jessie-lite kullandım, burada mevcut). Kurulum komut satırı üzerinden yapılacağından, bir lite sürümü (masaüstü olmadan) kullanılabilir.

SD kartı Pi'ye takın, ekranı ve klavyeyi bağlayın ve güç kablosunu takarak açın. Başsız kurulum da mümkündür, ancak SSH üzerinden bağlanmayı gerektirir.

Pi açıldıktan sonra oturum açın (varsayılan kullanıcı adı: pi, parola: ahududu) ve parolayı "passwd" komutuyla değiştirin.

Klavye, terminalde "sudo raspi-config" girilerek yapılandırılabilir.

2. Adım: WiFi'ye bağlanın

WiFi'ye bağlan
WiFi'ye bağlan
WiFi'ye bağlan
WiFi'ye bağlan
WiFi'ye bağlan
WiFi'ye bağlan
WiFi'ye bağlan
WiFi'ye bağlan

İnternete bağlanmak için Pi'ye hangi ağa bağlanacağını söyleyeceğiz. Aşağıdaki dosyayı açarak başlayın;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Burada en alta ağ bilgilerini ekleyin;

ağ={

ssid="ağ adı" psk="ağ şifresi" }

Kurumsal ağ olması durumunda, aşağıdaki kurulumu kullanabilirsiniz (WPA-EAP // TTLA // MSCHAPv2'yi uygun ayarlara ayarlayın).

ağ={

ssid="ssid" #Ağ adınızı girin key_mgmt=WPA-EAP eap=TTLS kimliği="xxxxx" #Giriş hesabı şifrenizi girin="xxxxx" #Şifreyi girin faz2="auth=MSCHAPv2" }

CTRL+O ile kaydedin ve CTRL+X ile çıkın.

Şimdi /etc/network/interfaces içindeki yapılandırma dosyanıza başvurun

sudo nano /etc/ağ/arayüzler

wlan0 bölümünü şu şekilde değiştirin:

otomatik wlan0

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

Tekrar dosyayı kaydedin (CTRL+O) ve çıkın (CTRL+X).

Yeniden başlattıktan sonra (sudo yeniden başlatma), wifi bağlantınız çalışmalıdır. Bunu bir web sitesine ping atarak test edebilirsiniz;

www.google.com'a ping at

CTRL+C ile pingi iptal edin

Pi'ye SSH üzerinden kablosuz olarak bağlanmak için SSH'yi etkinleştirmelisiniz:

sudo raspi yapılandırması

"5 Arayüz Seçeneği"ne gidin ve SSH'yi etkinleştirin. Ardından geri dönün ve yapılandırmadan çıkın.

Pi'nin IP adresine bakın:

ifconfig

IP, wlan0 arabiriminin "inet addr:" altında olacaktır.

Artık aynı ağdaysanız WiFi üzerinden Pi'ye bağlanabilirsiniz. Putty'yi indirin (Windows için), "Ana Bilgisayar Adı" altında bulduğunuz IP adresini girin ve "Aç" a basın. Uyarıyı kabul ettikten sonra artık komut satırını görebilmeli ve giriş yapabilmelisiniz.

3. Adım: Gerekli Yazılımı Güncelleyin ve Yükleyin

Gerekli Yazılımı Güncelleyin ve Yükleyin
Gerekli Yazılımı Güncelleyin ve Yükleyin
Gerekli Yazılımı Güncelleyin ve Yükleyin
Gerekli Yazılımı Güncelleyin ve Yükleyin

WiFi çalıştıktan sonra Pi'yi şu şekilde güncelleyin:

sudo apt-get güncelleme -y && sudo apt-get yükseltme -y

Güncelleme bittikten sonra (biraz zaman alabilir) kullanacağımız yazılımı kurun;

sudo apt-get kurulum python3 python3-seri apache2 -y

Adım 4: Bir Sensöre Bağlayın (Bu Örnekte bir Arduino)

Arduino'yu bir USB hub kullanarak bir klavye ile birbirine bağlayın veya Arduino'yu tek USB portu üzerinden bağlayın ve kurulumu WiFi üzerinden SSH ile yapın.

Arduino'nun bağlı olduğu seri porta erişebilmek için varsayılan pi hesabına erişim vermekte fayda var. Arduino genellikle "/dev/ttyACM0" bağlantı noktasına atandığından, "pi" kullanıcısına bağlantı noktasına erişim vermek için aşağıdaki komutu kullanın:

sudo chown pi: /dev/ttyACM0

Arduino'nun seri port üzerinden veri göndermek için zaten kurulduğunu varsayarsak, verileri python'da aşağıdaki şekilde görüntüleyebilirsiniz:

Python'u açın;

piton3

Seriyi içe aktar:

seriyi içe aktar

com portunu açın:

ser = seri. Serial(port = '/dev/ttyACM0', baud hızı = 9600, zaman aşımı = 5)

Bu durumda Arduino'nun baud hızının 9600'e ayarlandığı yer.

Aşağıdaki kodu çalıştırarak bir satırı okuyabilir ve yazdırabilirsiniz:

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

Çalışıyorsa, bağlantıyı kapatabilir ve Python'dan şu şekilde çıkabilirsiniz:

ser.kapat()

çıkış()

Adım 5: WiFi Erişim Noktası Özelliklerini Ayarlayın

Pi Zero W'nizi wifi erişim noktası modunda ayarlayarak, herhangi bir wifi cihazı ile ona bağlanabilirsiniz. Bu, kaydedicinin kurulmasına ve verilerin wifi üzerinden indirilmesine izin verir, kablo veya sürücü gerekmez.

Bunun için Adafruit'in iyi bir öğreticisi var. Bazı küçük açıklamalar:

  • /etc/hostapd/hostapd.conf sürücüsü için, sürücü satırını kullanmayın.
  • "hostapd'yi güncelle" adımı gerekli olmamalıdır.

Eğitimin sonunda erişim noktası çalışmazsa, Pi'yi yeniden başlatmayı deneyin (sudo yeniden başlatma).

6. Adım: Wifi Erişim Noktası ve İstemci Modları Arasında Geçiş Yapma

Bazen yazılımı güncellemek veya Raspberry Pi'nize yeni yazılım yüklemek isteyebilirsiniz, ancak bunun için internet bağlantısı gerekir. Neyse ki ikisi arasında geçiş yapmak çok kolay.

Pi'ye SSH ile bağlanın (kablo üzerinden, wifi üzerinden değil!). Erişim noktası hizmetlerini durdurarak başlayın:

sudo systemctl hostapd.service'i durdur

sudo systemctl isc-dhcp-server.service'i durdur

Ardından ağ arayüzleri dosyasını düzenleyin:

sudo nano /etc/ağ/arayüzler

Burada barındırma parametrelerini açıklamalı ve ağ bağlantısı parametrelerinin yorumunu kaldırmalısınız. Bundan değiştirin:

#-Barındırma parametreleri:

allow-hotplug wlan0 iface wlan0 inet statik adres 192.168.42.1 ağ maskesi 255.255.255.0 #-Ağ (istemci) parametreleri: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Buna:

#-Barındırma parametreleri:#allow-hotplug wlan0 #iface wlan0 inet statik # adres 192.168.42.1 # ağ maskesi 255.255.255.0 #-Ağ (istemci) parametreleri: auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Dosyayı kaydedin ve kapatın.

Ardından aşağıdaki komutları çalıştırırsınız:

sudo systemctl wpa_supplicant.service'i başlat

sudo ifdown wlan0 sudo ifup wlan0

Şimdi Pi'niz tekrar wifi'ye bağlanarak yazılımı güncellemenize ve yüklemenize izin vermelidir.

Erişim noktası moduna geri dönmek için /etc/network/interfaces içindeki yorumları değiştirin ve Pi'yi yeniden başlatın.

7. Adım: Son Açıklamalar

Son Açıklamalar
Son Açıklamalar

Web sitesi kurulumu

Apache sunucusu /var/www/ dizininde bulunur. Varsayılan sayfayı değiştirmek için /var/www/html/index.html dosyasını düzenleyin.

Tarayıcınızı Pi'nin IP adresine (192.168.42.1) yönlendirerek dosyaları buradan wifi bağlantısı üzerinden indirilebilir hale getirebilirsiniz. Herhangi bir wifi özellikli cihaz, herhangi bir ekstra yazılım olmadan bunları indirebilir.

SFTP bağlantısı

SSH üzerinden FTP bağlantısı yapılabilir. Büyük miktarda dosyayı hızlı ve kolay bir şekilde aktarmak için Filezilla'yı kullanabilirsiniz (resme bakın).

Gerçek Zamanlı Saat

İnternet bağlantısı olmadığında Pi'nin dahili saati önemli ölçüde kayacağından, doğru zaman işleyişi gerekiyorsa gerçek zamanlı bir saat (RTC) modülüne ihtiyaç duyulacaktır. Böyle bir modül RasClock'tur, kurulum talimatları burada bulunabilir. Diğer i2c tabanlı saatler de mevcuttur (örn. DS3231)

Çözüm

Her şey yolunda gittiyse, artık çalışan bir Pi Zero veri kaydediciniz olmalıdır! Bir sonraki adıma bir python günlük kaydı komut dosyası örneği eklenmiştir.

8. Adım: Örnek Python Günlük Komut Dosyası

işletim sistemini içe aktar

zamandan seriyi içe aktar datetime'dan içe aktar numpy as np ser = serial. Serial(port = 'COM4', baudrate = 57600, timeout = 5) directory = r'\var\www\html\data\anemometer\WMPro1352_ ' ser.flushInput() ser.flushOutput() deneyin: while True: day_timestring = datetime.strftime(datetime.now(), '%Y%m%d') file_today = dizin + day_timestring + '.dat' #Okuyun veri ve hemen zaman çizgisini alın = ser.readline().decode('utf-8') nowtime = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:% S.%f') satır = satır.split(', ') deneyin: u = kayan nokta(satır[1]) hariç: u = np.nan deneyin: v = kayan(satır[2]) hariç: v = np.nan try: w = float(line[3]) hariç: w = np.nan try: c = float(line[5]) hariç: c = np.nan Ts = 1/403 * c**2 - 273.15 deneyin: Ta = float(line[8]) hariç: Ta = np.nan if (os.path.isfile(file_today)): fileobject olarak open(file_today, 'a') ile: fileobject.write(nowtime+', ') fileobject.write(str(u)+', '+str(v)+', '+str(w)+', '+str(c)+', '+str(Ts)+', '+ str(Ta)+'\n') fileobject.clos e() else: open(file_today, 'w') ile fileobject olarak: fileobject.write('"Time", "u", "v", "w", "c", "Ts", "Ta"\ n') fileobject.write(şimdiki+', ') fileobject.write(str(u)+', '+str(v)+', '+str(w)+', '+str(c)+', '+str(Ts)+', '+str(Ta)+'\n') fileobject.close() KeyboardInterrupt hariç: ser.close()

Önerilen: