Πίνακας περιεχομένων:

Raspberry Pi Zero W Datalogger: 8 βήματα (με εικόνες)
Raspberry Pi Zero W Datalogger: 8 βήματα (με εικόνες)

Βίντεο: Raspberry Pi Zero W Datalogger: 8 βήματα (με εικόνες)

Βίντεο: Raspberry Pi Zero W Datalogger: 8 βήματα (με εικόνες)
Βίντεο: Lösung! Solaranlage aus der Ferne mit #wlan Shunt überwachen, MiniPV Einbau Test HOOTS Batterie APP 2024, Νοέμβριος
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

Χρησιμοποιώντας ένα Raspberry Pi Zero W, μπορείτε να φτιάξετε έναν φθηνό και εύχρηστο καταγραφικό δεδομένων, ο οποίος μπορεί είτε να συνδεθεί σε τοπικό δίκτυο wifi είτε να χρησιμεύσει ως σημείο πρόσβασης στο πεδίο που σας επιτρέπει να κατεβάζετε δεδομένα ασύρματα με το smartphone σας.

Παρουσίασα αυτήν τη ρύθμιση στο American Geophysical Union Fall Meeting 2017, ως έναν τρόπο για να κάνετε τη δική σας ρύθμιση καταγραφής δεδομένων. Μπορείτε να βρείτε αυτήν την παρουσίαση εδώ.

Τι θα χρειαστείτε:

  • Ένα Raspberry Pi Zero W
  • Μια κάρτα micro SD
  • καλώδιο USB ή τροφοδοτικό USB
  • Υπολογιστής με συσκευή ανάγνωσης καρτών USB
  • Προαιρετικό (αλλά χρήσιμο):

    • miniHDMI -> προσαρμογέας HDMI (για σύνδεση του Pi σε οθόνη)
    • Προσαρμογέας USB OTG (για σύνδεση πληκτρολογίου στο Pi

Βήμα 1: Ρύθμιση Pi Zero W

Για να ξεκινήσετε, τοποθετήστε μια εικόνα Rasbian σε μια κάρτα microSD (σε αυτό το σεμινάριο χρησιμοποίησα το 2017-07-05-raspbian-jessie-lite, διαθέσιμο εδώ). Μπορεί να χρησιμοποιηθεί μια lite έκδοση (χωρίς επιφάνεια εργασίας) καθώς η ρύθμιση θα γίνει μέσω της γραμμής εντολών.

Τοποθετήστε την κάρτα SD στο Pi, συνδέστε την οθόνη και ένα πληκτρολόγιο και ενεργοποιήστε την συνδέοντας το καλώδιο τροφοδοσίας. Η ρύθμιση χωρίς κεφαλή είναι επίσης δυνατή, αλλά θα απαιτούσε σύνδεση μέσω SSH.

Αφού ξεκινήσει το Pi login (προεπιλεγμένο όνομα χρήστη: pi, κωδικός: βατόμουρο) και αλλάξτε τον κωδικό πρόσβασης με την εντολή "passwd".

Το πληκτρολόγιο μπορεί να διαμορφωθεί εισάγοντας "sudo raspi-config" στο τερματικό.

Βήμα 2: Συνδεθείτε στο WiFi

Συνδεθείτε στο WiFi
Συνδεθείτε στο WiFi
Συνδεθείτε στο WiFi
Συνδεθείτε στο WiFi
Συνδεθείτε στο WiFi
Συνδεθείτε στο WiFi
Συνδεθείτε στο WiFi
Συνδεθείτε στο WiFi

Για να συνδεθείτε στο διαδίκτυο, θα πούμε στο Pi σε ποιο δίκτυο πρέπει να συνδεθεί. Ξεκινήστε ανοίγοντας το ακόλουθο αρχείο.

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Εδώ, προσθέστε τις πληροφορίες δικτύου στο κάτω μέρος.

δίκτυο = {

ssid = "όνομα δικτύου" psk = "κωδικός πρόσβασης δικτύου"}

Σε περίπτωση εταιρικού δικτύου, μπορείτε να χρησιμοποιήσετε την ακόλουθη ρύθμιση (προσαρμόστε το WPA-EAP // TTLA // MSCHAPv2 στις ισχύουσες ρυθμίσεις).

δίκτυο = {

ssid = "ssid" #Εισαγάγετε το όνομα του δικτύου σας key_mgmt = WPA-EAP eap = TTLS ταυτότητα = "xxxxx" #Εισαγάγετε τον κωδικό πρόσβασης του λογαριασμού σύνδεσής σας = "xxxxx" #Enter the passwork phase2 = "auth = MSCHAPv2"}

Αποθηκεύστε πατώντας CTRL+O και βγείτε με CTRL+X.

Τώρα αναφέρετε το αρχείο ρυθμίσεων στο/etc/network/interfaces

sudo nano/etc/network/interfaces

Αλλάξτε το μέρος wlan0 σε:

auto wlan0

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

Και πάλι, αποθηκεύστε το αρχείο (CTRL+O) και μετά βγείτε (CTRL+X).

Μετά την επανεκκίνηση (sudo επανεκκίνηση), η σύνδεση wifi θα πρέπει να λειτουργεί. Μπορείτε να το δοκιμάσετε πινγκάροντας έναν ιστότοπο.

ping www.google.com

Ακυρώστε το ping με CTRL+C

Για ασύρματη σύνδεση στο Pi μέσω SSH, θα πρέπει να ενεργοποιήσετε το SSH:

sudo raspi-config

Μεταβείτε στο "5 Επιλογές διασύνδεσης" και ενεργοποιήστε το SSH. Στη συνέχεια, επιστρέψτε και βγείτε από τη διαμόρφωση.

Αναζητήστε τη διεύθυνση IP του Pi:

ifconfig

Η IP θα βρίσκεται κάτω από το "inet addr:" της διεπαφής wlan0.

Τώρα μπορείτε να συνδεθείτε στο Pi μέσω WiFi, εάν βρίσκεστε στο ίδιο δίκτυο. Κατεβάστε το Putty (για παράθυρα), εισαγάγετε τη διεύθυνση IP που βρήκατε στο "Όνομα κεντρικού υπολογιστή" και πατήστε "Άνοιγμα". Μετά την αποδοχή της προειδοποίησης θα πρέπει τώρα να μπορείτε να δείτε τη γραμμή εντολών και να συνδεθείτε.

Βήμα 3: Ενημερώστε και εγκαταστήστε το απαιτούμενο λογισμικό

Ενημερώστε και εγκαταστήστε το απαιτούμενο λογισμικό
Ενημερώστε και εγκαταστήστε το απαιτούμενο λογισμικό
Ενημερώστε και εγκαταστήστε το απαιτούμενο λογισμικό
Ενημερώστε και εγκαταστήστε το απαιτούμενο λογισμικό

Αφού λειτουργήσει το WiFi, ενημερώστε το Pi με:

sudo apt -get ενημέρωση -y && sudo apt -get αναβάθμιση -y

Αφού ολοκληρωθεί η ενημέρωση (μπορεί να χρειαστεί λίγος χρόνος), εγκαταστήστε το λογισμικό με το οποίο θα χρησιμοποιούμε.

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

Βήμα 4: Σύνδεση με έναν αισθητήρα (σε αυτό το παράδειγμα ένα Arduino)

Είτε συνδέστε το Arduino μαζί με ένα πληκτρολόγιο χρησιμοποιώντας ένα διανομέα USB, είτε συνδέστε το Arduino μέσω της μοναδικής θύρας USB και κάντε τη ρύθμιση με SSH μέσω WiFi.

Για να είναι δυνατή η πρόσβαση στη σειριακή θύρα στην οποία είναι συνδεδεμένο το Arduino, είναι χρήσιμο να δώσετε πρόσβαση στον προεπιλεγμένο λογαριασμό pi. Καθώς το Arduino συνήθως εκχωρείται στη θύρα "/dev/ttyACM0", χρησιμοποιήστε την ακόλουθη εντολή για να δώσετε στον χρήστη "pi" πρόσβαση στη θύρα:

sudo chown pi: /dev /ttyACM0

Υποθέτοντας ότι το Arduino έχει ήδη ρυθμιστεί για την αποστολή δεδομένων μέσω της σειριακής θύρας, μπορείτε να δείτε τα δεδομένα σε python με τον ακόλουθο τρόπο:

Ανοιχτό python.

python3

Σειρά εισαγωγής:

σειρά εισαγωγής

Ανοίξτε τη θύρα com:

ser = serial. Serial (port = '/dev/ttyACM0', baudrate = 9600, timeout = 5)

Όπου το baudrate του Arduino ήταν 9600 σε αυτήν την περίπτωση.

Μπορείτε να διαβάσετε και να εκτυπώσετε μια γραμμή εκτελώντας τον ακόλουθο κώδικα:

ser.readline (). αποκωδικοποίηση ('utf-8')

Εάν το χρησιμοποιείτε, μπορείτε να κλείσετε τη σύνδεση και να βγείτε από την Python με:

ser.close ()

έξοδος()

Βήμα 5: Ρυθμίστε τις δυνατότητες σημείου πρόσβασης WiFi

Ρυθμίζοντας το Pi Zero W σε λειτουργία σημείου πρόσβασης wifi, μπορείτε να συνδεθείτε σε αυτό με οποιαδήποτε συσκευή wifi. Αυτό επιτρέπει τη ρύθμιση του καταγραφικού και τη λήψη δεδομένων μέσω wifi, δεν απαιτούνται καλώδια ή προγράμματα οδήγησης.

Για αυτό, το Adafruit διαθέτει ένα καλό σεμινάριο. Μερικές μικρές παρατηρήσεις:

  • Για το πρόγραμμα οδήγησης /etc/hostapd/hostapd.conf, μην χρησιμοποιείτε τη γραμμή προγραμμάτων οδήγησης.
  • Το βήμα "Ενημέρωση hostapd" δεν πρέπει να είναι απαραίτητο.

Εάν το σημείο πρόσβασης δεν λειτουργεί στο τέλος του σεμιναρίου, δοκιμάστε να επανεκκινήσετε το Pi (sudo επανεκκίνηση).

Βήμα 6: Εναλλαγή μεταξύ σημείου πρόσβασης Wi -Fi και λειτουργιών πελάτη

Μερικές φορές θα θέλετε να ενημερώσετε το λογισμικό ή να εγκαταστήσετε νέο λογισμικό στο Raspberry Pi, αλλά αυτό απαιτεί σύνδεση στο Διαδίκτυο. Ευτυχώς η εναλλαγή μεταξύ των δύο είναι πολύ εύκολη.

Συνδεθείτε στο Pi με SSH (μέσω καλωδίου, όχι wifi!). Ξεκινήστε διακόπτοντας τις υπηρεσίες σημείου πρόσβασης:

sudo cystemctl διακοπή hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Στη συνέχεια, επεξεργαστείτε το αρχείο διεπαφών δικτύου:

sudo nano/etc/network/interfaces

Εδώ θα πρέπει να σχολιάσετε τις παραμέτρους φιλοξενίας και να καταργήσετε τις παραμέτρους σύνδεσης δικτύου. Αλλάξτε το από αυτό:

#-Παράμετροι φιλοξενίας:

allow-hotplug wlan0 iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0 # -Δίκτυα (παράμετροι): #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Σε αυτό:

Παράμετροι #

Αποθηκεύστε και κλείστε το αρχείο.

Στη συνέχεια εκτελείτε τις ακόλουθες εντολές:

sudo systemctl εκκίνηση wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Τώρα το Pi σας θα πρέπει να συνδεθεί ξανά στο wifi, επιτρέποντάς σας να ενημερώσετε και να εγκαταστήσετε λογισμικό.

Για να επιστρέψετε στη λειτουργία σημείου πρόσβασης, αλλάξτε τα σχόλια στο/etc/network/interfaces και επανεκκινήστε το Pi.

Βήμα 7: Τελικές παρατηρήσεις

Τελικές παρατηρήσεις
Τελικές παρατηρήσεις

Ρύθμιση ιστότοπου

Ο διακομιστής apache βρίσκεται στο/var/www/. Για να αλλάξετε την προεπιλεγμένη σελίδα, επεξεργαστείτε το αρχείο /var/www/html/index.html.

Μπορείτε να κάνετε τα αρχεία εδώ διαθέσιμα για λήψη μέσω της σύνδεσης wifi, μεταβαίνοντας στο πρόγραμμα περιήγησής σας στη διεύθυνση IP του Pi (192.168.42.1). Στη συνέχεια, οποιαδήποτε συσκευή με δυνατότητα wifi μπορεί να τα κατεβάσει χωρίς επιπλέον λογισμικό.

Σύνδεση SFTP

Μέσω SSH, μπορεί να γίνει σύνδεση FTP. Μπορείτε να χρησιμοποιήσετε το Filezilla για να μεταφέρετε γρήγορα και εύκολα μεγάλο αριθμό αρχείων (δείτε την εικόνα).

Ρολόι πραγματικού χρόνου

Καθώς το εσωτερικό ρολόι του Pi θα παρασυρθεί σημαντικά εάν δεν υπάρχει σύνδεση στο διαδίκτυο, θα χρειαστεί μια μονάδα ρολογιού πραγματικού χρόνου (RTC) εάν απαιτείται ακριβής χρονομέτρηση. Μια τέτοια ενότητα είναι η RasClock, οι οδηγίες εγκατάστασης μπορούν να βρεθούν εδώ. Άλλα ρολόγια με βάση το i2c είναι επίσης διαθέσιμα (δηλ. DS3231)

συμπέρασμα

Εάν όλα πήγαν σωστά, θα πρέπει τώρα να έχετε έναν καταγραφικό δεδομένων Pi Zero που λειτουργεί! Ένα παράδειγμα σεναρίου καταγραφής python περιλαμβάνεται στο επόμενο βήμα.

Βήμα 8: Παράδειγμα σεναρίου καταγραφής Python

εισαγωγή os

σειριακή εισαγωγή από χρόνο ώρας εισαγωγής από ημερομηνία εισαγωγής datetime εισαγωγή numpy ως np ser = σειριακή. Σειρά (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 = directory + day_timestring +'.dat '#Read out δεδομένα και λάβετε αμέσως τη χρονική γραμμή = ser.readline (). αποκωδικοποίηση ('utf-8') nowtime = datetime.strftime (datetime.now (), '%Y-%m-%d%H:%M:% S.%f ') line = line.split (', ') try: u = float (γραμμή [1]) εκτός από: u = np.nan δοκιμάστε: v = float (γραμμή [2]) εκτός από: v = np.nan δοκιμάστε: w = float (γραμμή [3]) εκτός: w = np.nan δοκιμάστε: c = float (γραμμή [5]) εκτός από: c = np.nan Ts = 1/403*c ** 2 - 273,15 δοκιμάστε: Ta = float (γραμμή [8]) εκτός: Ta = np.nan if (os.path.isfile (file_today)): με ανοιχτό (file_today, 'a') ως fileobject: fileobject.write (nowtime+',') fileobject.write (str (u)+','+str (v)+','+str (w)+','+str (c)+','+str (Ts)+','+ str (Ta)+'\ n') fileobject.clos e () else: με ανοιχτό (file_today, 'w') ως 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 () εκτός από KeyboardIntrupt: ser.close ()

Συνιστάται: