Εργαστηριακή Άσκηση 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.
  • Εφαρμογή φίλτρου για την εξομάλυνση των δεδομένων.

Άσκηση CSS για τον Σχεδιασμό και Ανάπτυξη Ιστοτόπων

Σας δίνονται:

  1. ο κώδικας HTML που περιέχει κείμενο και μια εκόνα από μια σελίδα του σχολικού βιβλίου.
  2. ένα έγγραφο PDF που περιέχει τη σελίδα του βιβλίου: askisi_css_selides_bibliou

Να διαμορφώσετε το περιεχόμενο της ιστοσελίδας με τη βοήθεια της γλώσσας CSS, ώστε να είναι όμοιο στη μορφή με τη σελίδα του βιβλίου.

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

<body>
<p>Διαχείριση ιστοτόπου</p>
<p>1 Πρόσβαση στη διαχείριση</p>
<p>H διαχείριση του ιστοτόπου γίνεται μετά από την είσοδό μας στο διαχειριστικό περιβάλλον. Για την είσοδο στο διαχειριστικό περιβάλλον θα πρέπει να γνωρίζουμε το όνομα χρήστη-διαχειριστή και το αντίστοιχο συνθηματικό. Επίσης θα πρέπει να γνωρίζουμε και τη διεύθυνση της σελίδας διαχείρισης. Αυτή συνήθως βρίσκεται στη διεύθυνση: http://www.onoma-website.gr/wp-admin όπου το onoma-website.gr θα πρέπει να αντικατασταθεί από το πραγματικό όνομα (domain name) του ιστοτόπου σας. Αφού συλλέξουμε τα παραπάνω στοιχεία, τα βήματα για τη διαχείριση του ιστοτόπου σας είναι τα εξής:</p>
<ol>
<li>Ανοίξτε την ιστοσελίδα διαχείρισης του ιστοτόπου μέσω ενός φυλλομετρητή (web browser) - (Εικόνα 30)</li>
<li>Στη φόρμα εισόδου, που εμφανίζεται, χρησιμοποιήστε το όνομα χρήστη (username) και το συνθηματικό (password), που σας έχουν ήδη δοθεί και κάνετε Σύνδεση.</li>
</ol>
<img src="https://wp.w3schools.gr/wp-content/uploads/2017/11/capture.png">
<p>Εικόνα 30: Είσοδος στη διαχείριση</p>
<p>1.1 Πίνακας ελέγχου - Αρχική σελίδα διαχείρισης</p>
<p>Η πρώτη οθόνη, που συναντάτε με την είσοδό σας στο διαχειριστικό περιβάλλον, έχει την ακόλουθη μορφή:</p>
<p>115</p>
</body>

Βασικός κώδικας html

<!DOCTYPE html>
<html>
<head>
<title>HTML Tutorial</title>
<style>
body {font-size:14px;}
</style>
</head>
<body>
<h1>Τελικά, ποιο θα είναι το μέλλον στην εξέλιξη της μπαταρίας;</h1>
<p>Σταματημό δεν έχουν οι έρευνες για την δημιουργία ασφαλέστερων και αποδοτικότερων μπαταριών, χωρίς αυτό να σημαίνει ότι όλες βασίζονται στην ίδια φιλοσοφία. Κάποιες, μάλιστα, είναι εντελώς αντίθετες και ένα από τα χαρακτηριστικά παραδείγματα είναι οι δύο πρόσφατες έρευνες των MIT και Harvard.</p>
<p>Ξεκινώντας από την πρώτη, η ομάδα του MIT θεωρεί ότι η λύση θα δοθεί με μπαταρίες ιόντων λιθίου που δεν θα περιλαμβάνουν υγρούς ηλεκτρολύτες, έτσι ώστε να βρίσκονται εξολοκλήρου σε στερεά κατάσταση και να προσφέρουν μεγαλύτερη χωρητικότητα, σταθερότητα και απόδοση.</p>
</body>
</html>