Εργαστηριακή Άσκηση Arduino & Raspberry Pi

Διάρκεια: 3 ώρες
Συστήματα: Arduino και Raspberry Pi
Στόχοι:

  1. Καταγραφή και απεικόνιση δεδομένων σε πραγματικό χρόνο.
  2. Συνδυασμός Arduino για ανάγνωση δεδομένων και Raspberry Pi για επεξεργασία.
  3. Εξάσκηση σε σειριακή επικοινωνία και γραφική αναπαράσταση δεδομένων με Python.

Περιγραφή

Οι μαθητές θα κατασκευάσουν ένα σύστημα που χρησιμοποιεί έναν αισθητήρα συνδεδεμένο στο Arduino για να κάνει μια μέτρηση. Για παράδειγμα, μπορεί να μετρά τη θερμοκρασία χρησιμοποιώντας έναν αισθητήρα LM35 ή DHT11. Τα δεδομένα θα αποστέλλονται μέσω σειριακής επικοινωνίας στο Raspberry Pi, όπου θα προβάλλονται σε πραγματικό χρόνο σε διάγραμμα με τη χρήση Python (matplotlib).


Υλικά

  • 1 Arduino Uno ή συμβατό.
  • 1 Raspberry Pi (με προεγκατεστημένο Raspbian και Python libraries).
  • 1 αισθητήρας (θερμοκρασίας, υγρασίας, φωτός, μαγνητικού πεδίου, κίνησης κλπ).
  • Καλώδια σύνδεσης και breadboard.
  • USB καλώδιο για σύνδεση Arduino – Raspberry Pi.

Βήματα Εργασίας

1. Σύνδεση και Προγραμματισμός του Arduino (1 ώρα)

  • Συνδέστε τον αισθητήρα θερμοκρασίας στο Arduino:
    • LM35:
      • VCC → 5V,
      • GND → GND,
      • OUT → A0 (αναλογική είσοδος).
    • DHT11:
      • DATA → ψηφιακή είσοδος (π.χ., D2).
  • Προγραμματίστε το Arduino να διαβάζει τη θερμοκρασία και να στέλνει τα δεδομένα μέσω του σειριακού port.

Παράδειγμα κώδικα (LM35):

const int sensorPin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(sensorPin);
  float temperature = (sensorValue * 5.0 / 1023.0) * 100; // Μετατροπή σε °C
  Serial.println(temperature);
  delay(1000);
}

2. Σύνδεση Arduino – Raspberry Pi (15 λεπτά)

  • Συνδέστε το Arduino στο Raspberry Pi μέσω USB.
  • Εγκαταστήστε το pyserial στο Raspberry Pi:
pip install pyserial

3. Προγραμματισμός του Raspberry Pi (1 ώρα και 15 λεπτά)

  • Γράψτε ένα Python script που:
    • Διαβάζει δεδομένα από το Arduino.
    • Εμφανίζει τη θερμοκρασία στην οθόνη.
    • Απεικονίζει τα δεδομένα σε πραγματικό χρόνο με χρήση matplotlib.

Ο παρακάτω κώδικας είναι ημιτελής και περιλαμβάνει:

  • Την αρχική ρύθμιση της σειριακής επικοινωνίας.
  • Τη βασική δομή για την καταγραφή και εμφάνιση δεδομένων.

Εσείς πρέπει να γράψετε τα τμήματα για:

  1. Την ανάγνωση και αποκωδικοποίηση δεδομένων από το Arduino.
  2. Την ενημέρωση της λίστας θερμοκρασιών και του γραφήματος.
  3. Την αποθήκευση των δεδομένων σε αρχείο .csv (προαιρετικά, για πιο προχωρημένους).
import serial
import matplotlib.pyplot as plt
import time

# Σύνδεση με Arduino
try:
    arduino = serial.Serial('/dev/ttyUSB0', 9600)
    time.sleep(2)  # Χρόνος για να σταθεροποιηθεί η σύνδεση
    print("Σύνδεση με Arduino επιτυχής!")
except:
    print("Αποτυχία σύνδεσης με Arduino.")
    exit()

# Αρχικοποίηση δεδομένων
temperatures = []
timestamps = []

# Ρύθμιση γραφήματος
plt.ion()
fig, ax = plt.subplots()
line, = ax.plot([], [], 'r-')
ax.set_xlim(0, 60)
ax.set_ylim(0, 50)
ax.set_xlabel('Χρόνος (δευτερόλεπτα)')
ax.set_ylabel('Θερμοκρασία (°C)')

start_time = time.time()

while True:
    try:
        # Συμπλήρωσε τον κώδικα εδώ για την ανάγνωση δεδομένων
        # data = ...
        # temp = ...

        # Συμπλήρωσε τον κώδικα για να προσθέσεις δεδομένα στις λίστες
        # temperatures.append(...)
        # timestamps.append(...)

        # Ενημέρωση γραφήματος
        line.set_data(timestamps, temperatures)
        ax.set_xlim(0, max(60, time.time() - start_time + 10))
        ax.set_ylim(min(temperatures) - 5, max(temperatures) + 5)

        plt.draw()
        plt.pause(0.1)

    except KeyboardInterrupt:
        print("Τέλος μέτρησης")
        # Προαιρετικά: Αποθήκευση δεδομένων σε αρχείο CSV
        # with open('data.csv', 'w') as f:
        #     f.write(...)
        break

4. Επεκτάσεις (Προαιρετικά)

  • Αποθήκευση των δεδομένων σε αρχείο .csv.
  • Εφαρμογή φίλτρου για την εξομάλυνση των δεδομένων.

Μετατρέψτε το παρακάτω σε σελίδα βιβλίου

Βασικές Έννοιες 1

1. Βασικές έννοιες

1.1 Πληροφορική ή Επιστήμη Υπολογιστών;

Ο όρος «πληροφορική» προέρχεται από τη λέξη πληροφορία. Εμφανίστηκε τη δεκαετία του 1960 στη Γαλλία (Informatique) και τη Γερμανία (Informatik). Από την ετυμολογία της λέξης προκύπτει ο ορισμός:

Πληροφορική είναι η επιστήμη που ασχολείται με την αναπαράσταση, αποθήκευση και επεξεργασία της πληροφορίας.

H Πληροφορική είναι άρρηκτα συνδεδεμένη με τη μηχανή που λέγεται ηλεκτρονικός υπολογιστής. Γι’ αυτό και στον Αγγλόφωνο χώρο, έχει επικρατήσει η ονομασία Επιστήμη Υπολογιστών (Computer Science). Στη νέα επιστήμη όσο σημαντικός είναι ο υπολογιστής (computer), άλλο τόσο σημαντικές είναι οι διαδικασίες υπολογισμού (computing) που μπορεί να κάνει.

Επιστήμη Υπολογιστών είναι η επιστήμη που ασχολείται με τους υπολογιστές και τους υπολογισμούς.

Για μας, στο εξής, Πληροφορική και Επιστήμη Υπολογιστών αναφέρονται στην ίδια επιστήμη. Θεμελιώδεις έννοιες στην Επιστήμη των Υπολογιστών είναι:

• η ίδια η μηχανή, ο υπολογιστής και

• η υπολογιστική διαδικασία που η μηχανή μπορεί να επιτελέσει, το πρόγραμμα

Ιστορικοί σταθμοί της Επιστήμης Υπολογιστών

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

100 π.Χ. Μηχανισμός των Αντικυθήρων, μηχανικός υπολογιστής και όργανο αστρονομικών παρατηρήσεων

820 μ.Χ. Ο al-Khwarizmi, Πέρσης μαθηματικός και αστρονόμος γράφει βιβλίο για τους αλγόριθμους

1822 Ο Charles Babbage σχεδιάζει την Αναλυτική Μηχανή του, την πρώτη μηχανή με αποθηκευμένα προγράμματα.

1940 Ο John von Neumann θέτει τις θεμελιώδεις αρχές σχεδίασης των σύγχρονων ΗΥ, γνωστές ως “αρχιτεκτονική von Neumann”, στο Πανεπιστήμιο του Πρίνστον.

1944 Ο Aiken κατασκευάζει τον Mark I. Χρόνος για πρόσθεση: 1/3 s., για πολλαπλασιασμό: 6 s

1946 Οι Eckert και Maughly κατασκευάζουν τον ENIAC, τον πρώτο ηλεκτρονικό υπολογιστή με 18000 λυχνίες. Χρόνος για πολλαπλασιασμό: 6 ms

1949 Ο Wilkes κατασκευάζει τον EDSAC, τον πρώτο ψηφιακό υπολογιστή γενικής χρήσης με αποθηκευμένο πρόγραμμα (υπολογιστής τύπου von Neumann)

1969 Γέννηση του διαδικτύου με τη δημιουργία του δικτύου ARPANET

1991 Δημιουργία του Παγκόσμιου Ιστού (WWW) στο CERN

Η παραπάνω ιστορική αναδρομή εμφανίζει κυρίως τεχνολογικά επιτεύγματα και όχι επιστημονικά. Μήπως, λοιπόν, η Πληροφορική είναι απλώς η τεχνολογία των υπολογιστών και δεν είναι επιστήμη;

Η απάν

11

Μικρές ασκήσεις CSS

Οι παρακάτω ασκήσεις είναι φτιαγμένες πάνω στο Θέμα Twenty Seventeen του WordPress, το οποίο θα πρέπει να ενεργοποιήσετε πριν ξεκινήσετε. Για να γράψετε κώδικα CSS, θα επιλέξετε το μενού Προσαρμογή στον Πίνακα Ελέγχου.

Αυτός εδώ ο ιστότοπος περιέχει όλες τις ρυθμίσεις που ζητούνται.

Με τις υγείες σας
Με τις υγείες σας!
  1. Μορφοποίηση του τίτλου
    • Μεγαλώστε τον τίτλο του ιστοτόπου σας στα 80px.
    • Προσθέστε σκιά στον τίτλο.
    • Δυσκολία: Για αρχάριους
  2. Μέγεθος του Λογότυπου
    • Στην Προσαρμογή >> Ταυτότητα ιστοτόπου επιλέξτε μια εικόνα για λογότυπο
    • Μεγαλώστε την εικόνα ώστε να εμφανίζεται διπλάσια από την προεπιλεγμένη.
    • Δυσκολία: Επιλογέας και κατάλληλοι κανόνες
  3. Φόντο με κλιμακούμενο χρώμα (gradient)
    • Αν δεν έχετε Κεντρικό Μενού, δημιουργήστε ένα.
    • Αλλάξτε το χρώμα φόντου του μενού σε κλιμακούμενο (gradient) χρώμα.
    • Δυσκολία: Κανόνες
  4. Πλαίσιο στις πλαϊνές μικροεφαρμογές
    • Αν δεν έχετε κάποια μικροεφαρμογή στην πλαϊνή στήλη, προσθέστε μια.
    • Βάλτε πλαίσιο με κουκίδες στην κάθε μικροεφαρμογή.
    • Αφήστε τα κατάλληλα περιθώρια, ώστε να απομακρύνετε το πλαίσιο από το κείμενο που περιέχει και τα γειτονικά του στοιχεία.
    • Δυσκολία: Χαμηλή
  5. Χρώμα στους τίτλους των μικροεφαρμογών
    • Ορίστε πορτοκαλί χρώμα για το φόντο του κάθε τίτλου μικροεφαρμογής.
    • Δυσκολία: Για αρχάριους
  6. Σκουρόχρωμη λειτουργία στο υποσέλιδο
    • Βάλτε σκουρόχρωμο φόντο και ανοιχτόχρωμα γράμματα σε όλο το υποσέλιδο.
    • Δυσκολία: Για αρχάριους
  7. Απόκρυψη στοιχείου
    • Στο τέλος της σελίδας γράφει “Με την υποστήριξη του WordPress”. Κρύψτε αυτό το στοιχείο.
    • Πειραματιστείτε με τους κανόνες display και visibility και βρείτε τη διαφορά.
    • Δυσκολία: Για αρχάριους
  8. Περιστροφή και μετακίνηση του υπότιτλου
    • Μετακινήστε τον Υπότιτλο του ιστοτόπου σας στη δεξιά άκρη της σελίδας και περιστρέψτε τον κατά 90°.
    • Δυσκολία: Κανόνες τοποθέτησης στοιχείου
  9. Χρώμα ενεργού Μενού
    • Το μενού της σελίδας όπου βρισκόμαστε θα πρέπει να έχει χρώμα royalblue.
    • Δυσκολία: Επιλογέας
  10. Μεγέθυνση εικόνας κάτω από το ποντίκι
    • Ρυθμίστε τις εικόνες που περιέχονται στα άρθρα να κάνουν εφέ μεγέθυνσης καθώς περνάει το ποντίκι από πάνω τους.
    • Δημιουργήστε εφέ αργής μετάβασης του ζουμ.
    • Δυσκολία: Μεγάλη