Want to create interactive content? It’s easy in Genially!

Get started free

PREVENT IoT Practical Session (UCLan)

citizensinpower

Created on April 25, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

Customer Service Course

Dynamic Visual Course

Dynamic Learning Course

Akihabara Course

Transcript

Πρακτική άσκηση IoT - Πρόγραμμα PREVENT

Πρακτική άσκηση IoT

Έναρξη

Περεχόμενα

Στόχοι
Ανίχνευση πυρκαγιάς
Ανίχνευση πλημμύρας
Ανίχνευση σεισμών

Στόχοι

  • Ο κύριος στόχος αυτής της πρακτικής συνεδρίας είναι να προσφέρει μια «πρακτική» εμπειρία σχετικά με το IoT και τον τρόπο με τον οποίο αυτή η τεχνολογία μπορεί να χρησιμοποιηθεί για την επίλυση προβλημάτων που σχετίζονται με φυσικές καταστροφές.
  • Η συνεδρία περιλαμβάνει 3 πρακτικά πειράματα: Ενσωμάτωση και δοκιμή του αισθητήρα MQ2 για την ανίχνευση πυρκαγιάς
    • Ενσωμάτωση και δοκιμή του αισθητήρα νερού για την ανίχνευση πλημμύρας
    • Ενσωμάτωση και δοκιμή του αισθητήρα MPU6050 για την ανίχνευση σεισμών
Καλή διασκέδαση!!!

01

Ενσωμάτωση και δοκιμή αισθητήρα MQ2 για ανίχνευση πυρκαγιάς

Στόχος

Ο στόχος αυτού του πειράματος είναι να ενσωματωθεί ο αισθητήρας αερίου MQ2 με έναν μικροελεγκτή Arduino Uno και να εμφανίζονται σε πραγματικό χρόνο τα δεδομένα του αισθητήρα σε μια οθόνη LCD. Ο αισθητήρας MQ2 θα ανιχνεύει καπνό, προπάνιο και άλλα αέρια που μπορεί να υποδηλώνουν την ύπαρξη φωτιάς, και τα δεδομένα αυτά θα χρησιμοποιούνται για την εκτίμηση του πιθανού κινδύνου πυρκαγιάς.

Βασικές πληροφορίες

  • Αισθητήρας MQ2: Ο αισθητήρας MQ2 είναι ικανός να ανιχνεύει διάφορα αέρια, όπως καπνό, μεθάνιο, προπάνιο και μονοξείδιο του άνθρακα. Λειτουργεί μετρώντας τη συγκέντρωση των αερίων στον αέρα και εκπέμποντας μια αναλογική τάση που αντιστοιχεί στη συγκέντρωση του αερίου.
  • Εφαρμογές:
  • Ανίχνευση διαρροής αερίου – Χρησιμοποιείται σε σπίτια, κουζίνες και βιομηχανικούς χώρους για την ανίχνευση διαρροών υγραερίου, μεθανίου και προπανίου.
    • Ανίχνευση καπνού – Μπορεί να ενσωματωθεί σε συστήματα πυρανίχνευσης για την ανίχνευση καπνού και εύφλεκτων αερίων.
    • Παρακολούθηση της ποιότητας του αέρα σε εσωτερικούς χώρους – Βοηθά στη μέτρηση των επιπέδων ατμοσφαιρικής ρύπανσης ανιχνεύοντας επικίνδυνα αέρια όπως το CO.
    • Συσκευές αλκοτέστ – Χρησιμοποιούνται για την ανίχνευση των επιπέδων αλκοόλ στην αναπνοή.
    • Έξυπνη οικιακή αυτοματοποίηση – Μπορεί να ενεργοποιήσει συστήματα εξαερισμού ή συναγερμούς σε περίπτωση υψηλών συγκεντρώσεων αερίων.
    • Βιομηχανική ασφάλεια – Χρησιμοποιείται σε εργοστάσια και χημικά εργοστάσια για την ανίχν
    • Εφαρμογές στην αυτοκινητοβιομηχανία – Χρησιμοποιείται σε οχήματα για την ανίχνευση διαρροών καυσίμων ή επιπέδων καυσαερίων.
    • IoT & Έξυπνες πόλεις – Ενσωματώνεται σε συσκευές IoT για την παρακολούθηση των επιπέδων περιβαλλοντικής
  • Arduino Uno: Το Arduino Uno είναι μια δημοφιλής πλακέτα μικροελεγκτή που θα χρησιμοποιηθεί για τη σύνδεση με τον αισθητήρα MQ2 και μια οθόνη LCD. Θα επεξεργάζεται τα δεδομένα του αισθητήρα και θα ελέγχει την οθόνη LCD για την εμφάνιση πληροφοριών σε πραγματικό χρόνο.
  • Οθόνη LCD: Η οθόνη LCD θα χρησιμοποιείται για την εμφάνιση των μετρήσεων σε πραγματικό χρόνο από τον αισθητήρα MQ2, υποδεικνύοντας εάν υπάρχει πιθανός κίνδυνος πυρκαγιάς με βάση την παρουσία αερίων.

Μέτρα ασφαλείας

  • Δεδομένου ότι το πείραμα αυτό περιλαμβάνει την ανίχνευση αερίων (ενδεχομένως εύφλεκτων), συμπεριλάβετε μια σύντομη σημείωση σχετικά με τη διασφάλιση του κατάλληλου αερισμού κατά τη δοκιμή του αισθητήρα με αέρια ή καπνό. Υπενθυμίστε στους μαθητές να εργάζονται πάντα σε ασφαλές περιβάλλον.

Απαιτούμενος εξοπλισμός

  • Υλικό:
    • Πλακέτα Arduino Uno
    • Αισθητήρας αερίου MQ2
    • Οθόνη LCD 16x2 (σύνδεση I2C ή παράλληλη)
    • Καλώδια σύνδεσης
    • Πλακέτα δοκιμών (προαιρετικά)
    • Τροφοδοτικό για Arduino
  • Λογισμικό:
    • Arduino IDE (για προγραμματισμό του μικροελεγκτή)
  • Εξαρτήσεις βιβλιοθήκης
    • LiquidCrystal_I2C
    • Καλώδιο

Εγκατάσταση Arduino IDE

  • Εγκαταστήστε τις εξαρτήσεις της βιβλιοθήκης σύμφωνα με το έργο, όπως φαίνεται παρακάτω:
  • Κατεβάστε το Arduino IDE για την πλατφόρμα σας:
    • Windows
    • MacOS - Apple Silicon/Intel
    • Linux
  • Ακολουθήστε τις οδηγίες εγκατάστασης και ανοίξτε την εφαρμογή
    • Συνδέστε την πλακέτα Arduino UNO σε οποιαδήποτε θύρα USB του υπολογιστή
    • Επιλέξτε την πλακέτα από τη λίστα όπως φαίνεται παρακάτω:
  • Επικολλήστε τον κώδικα για κάθε έργο που βρίσκεται στο αποθετήριο GitHub.
  • Ανεβάστε το σκίτσο στο Arduino UNO επιλέγοντας το κουμπί

Διάγραμμα κυκλώματος

  • Συνδέσεις για αισθητήρα MQ2:
    • VCC του MQ2 σε 5V στο Arduino
    • GND του MQ2 σε GND στο Arduino
    • Αναλογική έξοδος (A0) του MQ2 σε αναλογική ακίδα στο Arduino (π.χ. A0)
  • Συνδέσεις για οθόνη LCD:
    • VCC της LCD σε 5V στο ArduinoGND της LCD σε GND στο Arduino
    • SDA σε A4 (στο Arduino Uno) για επικοινωνία
    • I2CSCL σε A5 (στο Arduino Uno) για επικοινωνία I2C
  • Συνδέστε τον αισθητήρα MQ2 στο Arduino Uno όπως φαίνεται στο διάγραμμα κυκλώματος.
  • Συνδέστε την οθόνη LCD στο Arduino Uno μέσω I2C ή παράλληλης σύνδεσης σύμφωνα με τις προδιαγραφές.

Προγραμματισμός του Arduino

  • Ανοίξτε το Arduino IDE και γράψτε τον κώδικα για την αρχικοποίηση του αισθητήρα MQ2 και της οθόνης LCD.
  • Συμπεριλάβετε τις απαραίτητες βιβλιοθήκες, όπως LiquidCrystal_I2C (για LCD) και άλλες βιβλιοθήκες σχετικές με αισθητήρες, εάν υπάρχουν.
  • Γράψτε το πρόγραμμα για την ανάγνωση δεδομένων από τον αισθητήρα MQ2 και την εμφάνιση των τιμών στην οθόνη LCD.
  • Εφαρμόστε λογική για να αξιολογήσετε εάν η ένδειξη του αισθητήρα υποδηλώνει την παρουσία επιπέδων αερίου που σχετίζονται με πιθανή πυρκαγιά.

void loop() { sum = readMQ2(); for(int i = 0; i < repetitions; i++) { sum += readMQ2(); } avg = sum / repetitions; lcd.clear(); lcd.print("Value: "); lcd.print(String(avg)); lcd.setCursor(0, 1); Serial.print("Value: "); if (avg > 100) { lcd.print("Smoke/Gas Found!"); Serial.println("Smoke/Gas Found!"); } else { lcd.print("No Smoke/Gas"); Serial.println("No Smoke/Gas found"); } delay(300); } // Function to retrieve the Analog MQ2 Reading int readMQ2() { unsigned int sensorValue = analogRead(MQ2_AO); // Map the resolution of the sensor from 10bit to 8bit for quicker detection unsigned int outputValue = map(sensorValue, 0, 1023, 0, 255); return outputValue; }

Δείγμα κώδικα

#include <LiquidCrystal_I2C.h> #include <Wire.h> #define LCD_ADD 0x27 // I2C Address of LCD Display #define LCD_COLS 16 // Number of columns of LCD Display #define LCD_ROWS 2 // Number of rows of LCD Display // Pin Definition #define MQ2_AO A0 // Variable Declaration int sum = 0; int avg = 0; int repetitions = 100; LiquidCrystal_I2C lcd(LCD_ADD, LCD_COLS, LCD_ROWS); void setup() { Serial.begin(115200); // Initialize LCD and turn on Backlight LED lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Smoke/Gas"); lcd.setCursor(0, 1); lcd.print("Detector."); Serial.println("Smoke/Gas Detector."); delay(1000); }

Δοκιμές και βαθμονόμηση

  • Ανεβάστε τον κώδικα στο Arduino και ανοίξτε τη σειριακή οθόνη (σε Mac και/ή Windows) για να επαληθεύσετε τις ενδείξεις του αισθητήρα.
  • Δοκιμάστε τον αισθητήρα εκθέτοντάς τον σε διάφορα επίπεδα καπνού ή αερίων (με ασφάλεια) και παρατηρήστε την οθόνη LCD.
  • Ρυθμίστε την τιμή κατωφλίου στον κώδικα για να ορίσετε το επίπεδο συγκέντρωσης αερίου στο οποίο ανιχνεύεται πιθανή πυρκαγιά.

Παρατηρήσεις

  • Καταγράψτε τις ενδείξεις του αισθητήρα σε διαφορετικές συγκεντρώσεις αερίων.
  • Παρατηρήστε την οθόνη LCD για να ελέγξετε αν το σύστημα αναγνωρίζει σωστά την παρουσία αερίων που σχετίζονται με πυρκαγιά.

Αποτελέσματα και ανάλυση

  • Αναμενόμενα αποτελέσματα: Η οθόνη LCD πρέπει να εμφανίζει τις ενδείξεις της στάθμης αερίου σε πραγματικό χρόνο. Όταν η συγκέντρωση αερίου υπερβαίνει ένα ορισμένο όριο, στην οθόνη LCD πρέπει να εμφανίζεται το μήνυμα «Πιθανός κίνδυνος πυρκαγιάς!».
  • Ανάλυση: Συγκρίνετε τα δεδομένα του αισθητήρα με τα αναμενόμενα όρια για την ανίχνευση καπνού ή φωτιάς. Συζητήστε πώς μπορεί να χρησιμοποιηθεί ο αισθητήρας MQ2 σε πραγματικά συστήματα ανίχνευσης φωτιάς.

Συζήτηση

  • Συζητήστε την αποτελεσματικότητα του αισθητήρα MQ2 στην ανίχνευση καπνού ή άλλων αερίων που σχετίζονται με φωτιά.
  • Αξιολογήστε τη συνολική απόδοση της ενσωμάτωσης μεταξύ του Arduino, του αισθητήρα MQ2 και της οθόνης LCD.

Ερωτήσεις κριτικής σκέψης

  • Πώς μπορείτε να τροποποιήσετε το κύκλωμα για να ανιχνεύει άλλα αέρια;
  • Ποιοι άλλοι αισθητήρες θα μπορούσατε να χρησιμοποιήσετε για να βελτιώσετε την ακρίβεια της ανίχνευσης πυρκαγιάς;
  • Ποιοι παράγοντες θα μπορούσαν να προκαλέσουν ψευδώς θετικά ή ψευδώς αρνητικά αποτελέσματα στο σύστημα ανίχνευσης πυρκαγιάς;
  • Πώς θα βελτιώνατε την αξιοπιστία του συστήματος ανίχνευσης πυρκαγιάς σε μια πραγματική εφαρμογή;
  • Προτείνετε τρόπους με τους οποίους θα μπορούσε να βελτιωθεί περαιτερω.

02

Ενσωμάτωση και δοκιμή αισθητήρα νερού για την ανίχνευση πλημμυρών

Στόχος

Ο στόχος αυτού του πειράματος είναι να ενσωματωθεί ο αισθητήρας βροχόπτωσης/νερού Grove με έναν μικροελεγκτή Arduino Uno και να εμφανίζονται σε πραγματικό χρόνο τα δεδομένα του αισθητήρα σε μια οθόνη LCD. Ο αισθητήρας θα ανιχνεύει την παρουσία βροχόπτωσης καθώς και τη στάθμη του νερού, και τα δεδομένα αυτά θα χρησιμοποιούνται για την εκτίμηση του ενδεχόμενου κινδύνου πλημμύρας.

Βασικές πληροφορίες

  • Αισθητήρας βροχόπτωσης / νερού: Ο Grove - Αισθητήρας νερού είναι ένας απλός αλλά αποτελεσματικός αισθητήρας που χρησιμοποιείται για την ανίχνευση της παρουσίας νερού, των επιπέδων υγρασίας και ακόμη και των βροχοπτώσεων. Ανήκει στο οικοσύστημα Grove της Seeed Studio, το οποίο διευκολύνει τη σύνδεση με μικροελεγκτές όπως Arduino και Raspberry Pi χωρίς να απαιτείται συγκόλληση ή πολύπλοκη καλωδίωση. Ο Grove - αισθητήρας βροχόπτωσης / νερού μπορεί να παράγει τιμές τάσης για τη στάθμη του νερού. Για την ανίχνευση πλημμυρών, η αντίσταση των εκτεθειμένων στοιχείων χαλκού αλλάζει, παράγοντας έτσι αναλογικές τιμές τάσης που μπορούν να χρησιμοποιηθούν για την ανίχνευση της στάθμης του νερού. Κάθε ίχνος έχει μια ασθενή αντίσταση 1MΩ. Όταν ο αισθητήρας βυθίζεται στο νερό, η ένδειξη τάσης από την ακίδα σήματος μειώνεται.
  • Εφαρμογές:
    • Ανίχνευση βροχής και βροχόπτωσης – Χρησιμοποιείται σε μετεωρολογικούς σταθμούς για την ανίχνευση βροχόπτωσης και την ενεργοποίηση συναγερμών.
    • Ανίχνευση διαρροών – Εγκαθίσταται κοντά σε σωλήνες, συσκευές ή υπόγεια για την ανίχνευση διαρροών νερού και την πρόληψη ζημιών.
    • Παρακολούθηση υγρασίας εδάφους – Βοηθά στην έξυπνη γεωργία ανιχνεύοντας την ξηρότητα του εδάφους και αυτοματοποιώντας την άρδευση.
    • Ανίχνευση στάθμης νερού – Χρησιμοποιείται σε δεξαμενές
    • Οικιακή αυτοματοποίηση και IoT – Μπορεί να ενσωματωθεί σε συστήματα έξυπνης οικίας για να ειδοποιεί τους χρήστες για διαρροές νερού ή πλημμύρες.
    • Βιομηχανικές εφαρμογές – Βοηθά στην παρακολούθηση της υγρασίας ή στην ανίχνευση της παρουσίας νερού σε κρίσιμα περιβάλλοντα.
  • Arduino Uno: Το Arduino Uno είναι μια δημοφιλής πλακέτα μικροελεγκτή που θα χρησιμοποιηθεί για τη σύνδεση με τον αισθητήρα και μια οθόνη LCD. Θα επεξεργάζεται τα δεδομένα του αισθητήρα και θα ελέγχει την οθόνη LCD για την εμφάνιση πληροφοριών σε πραγματικό χρόνο.
  • LCD Screen: Η οθόνη LCD θα χρησιμοποιείται για την εμφάνιση των μετρήσεων του αισθητήρα σε πραγματικό χρόνο, υποδεικνύοντας εάν υπάρχει πιθανός κίνδυνος πλημμύρας με βάση την παρουσία υψηλών επιπέδων νερού.

Μέτρα ασφαλείας

  • Δεδομένου ότι αυτό το πείραμα περιλαμβάνει την ανίχνευση βροχόπτωσης και νερού, συμπεριλάβετε μια σύντομη σημείωση σχετικά με τη σωστή φροντίδα κατά τη δοκιμή του αισθητήρα, ώστε να αποφευχθεί η διαρροή. Υπενθυμίστε στους μαθητές να εργάζονται πάντα σε ασφαλές

Απαιτούμενος εξοπλισμός

  • Υλικό:
    • Πλακέτα Arduino Uno Αισθητήρας νερού
    • Οθόνη LCD 16x2 (σύνδεση I2C ή παράλληλη)
    • Καλώδια jumper
    • Πλακέτα δοκιμών (προαιρετικά)
    • Τροφοδοτικό για Arduino
  • Λογισμικό:
    • Arduino IDE (για προγραμματισμό του μικροελεγκτή)
  • Εξαρτήσεις βιβλιοθήκης
    • LiquidCrystal_I2C
    • Καλώδιο

Εγκατάσταση Arduino IDE

  • Κατεβάστε το Arduino IDE για την πλατφόρμα σας:
    • Windows
    • MacOS - Apple Silicon/Intel
    • Linux
  • Ακολουθήστε τις οδηγίες εγκατάστασης και ανοίξτε την εφαρμογή
  • Συνδέστε την πλακέτα Arduino UNO σε οποιαδήποτε θύρα USB του υπολογιστή
  • Επιλέξτε την πλακέτα από τη λίστα όπως φαίνεται παρακάτω:
  • Εγκαταστήστε τις εξαρτήσεις της βιβλιοθήκης σύμφωνα με το έργο, όπως φαίνεται παρακάτω:
  • Επικολλήστε τον κώδικα για κάθε έργο που βρίσκεται στο αποθετήριο GitHub
  • Ανεβάστε το σκίτσο στο Arduino UNO επιλέγοντας το κουμπί

Διάγραμμα κυκλώματος

  • Συνδέσεις για τον αισθητήρα MQ2:
    • VCC του αισθητήρα στο 5V του Arduino
    • GND του αισθητήρα στο GND του Arduino
    • Αναλογική έξοδος (A0) του αισθητήρα σε αναλογική ακίδα του Arduino (π.χ. A0)
  • Συνδέσεις για την οθόνη LCD:
    • VCC της οθόνης LCD στο 5V του Arduino
    • GND της οθόνης LCD στο GND του Arduino
    • SDA σε A4 (στο Arduino Uno) για επικοινωνία I2C
    • SCL σε A5 (στο Arduino Uno) για επικοινωνία I2C
  • Συνδέστε τον αισθητήρα στο Arduino Uno όπως φαίνεται στο διάγραμμα κυκλώματος.
  • Συνδέστε την οθόνη LCD στο Arduino Uno μέσω I2C ή παράλληλης σύνδεσης σύμφωνα με τις προδιαγραφές.

Προγραμματισμός του Arduino

  • Ανοίξτε το Arduino IDE και γράψτε τον κώδικα για την αρχικοποίηση του αισθητήρα και της οθόνης LCD.
  • Συμπεριλάβετε τις απαραίτητες βιβλιοθήκες, όπως LiquidCrystal_I2C (για LCD) και άλλες βιβλιοθήκες σχετικές με τον αισθητήρα, εάν υπάρχουν.
  • Γράψτε το πρόγραμμα για την ανάγνωση των δεδομένων από τον αισθητήρα και την εμφάνιση των τιμών στην οθόνη LCD.
  • Εφαρμόστε λογική για να αξιολογήσετε εάν η ένδειξη του αισθητήρα υποδηλώνει την ύπαρξη επιπέδων νερού που σχετίζονται με πιθανή πλημμύρα.

void loop() { // read the input pin val = analogRead(WATER_SENSOR); // Serial.println(val); if (val < 150) intensity = "High"; else if (val >= 150 && val <= 160) intensity = "Moderate"; else if (val > 160 && val <= 250) intensity = "Low"; else intensity = "None"; lcd.clear(); lcd.print("Water Level:"); lcd.setCursor(0,1); lcd.print(intensity); Serial.print("Water Level: "); Serial.println(intensity); Serial.print("Value: "); Serial.println(val); delay(500); }

Sample Code

#include <LiquidCrystal_I2C.h> #include <Wire.h> #define WATER_SENSOR A0 #define LCD_ADD 0x27 // I2C Address of LCD Display #define LCD_COLS 16 // Number of columns of LCD Display #define LCD_ROWS 2 // Number of rows of LCD Display LiquidCrystal_I2C lcd(LCD_ADD, LCD_COLS, LCD_ROWS); int val = 0; String intensity; void setup() { Serial.begin(115200); // Initialize LCD and turn on Backlight LED lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Flood Detector."); lcd.setCursor(0, 1); Serial.println("Flood Detector."); }

Δοκιμές και βαθμονόμηση

  • Ανεβάστε τον κώδικα στο Arduino και ανοίξτε τη σειριακή οθόνη (σε Mac και/ή Windows) για να επαληθεύσετε τις ενδείξεις του αισθητήρα.
  • Δοκιμάστε τον αισθητήρα εκθέτοντάς τον σε διάφορα επίπεδα νερού και παρατηρήστε την οθόνη LCD.
  • Ρυθμίστε την τιμή κατωφλίου στον κώδικα για να ορίσετε το επίπεδο νερού στο οποίο ανιχνεύεται πιθανή πλημμύρα.

Παρατηρήσεις

  • Καταγράψτε τις ενδείξεις του αισθητήρα σε διαφορετικές συγκεντρώσεις αερίου.
  • Παρατηρήστε την οθόνη LCD για να ελέγξετε αν το σύστημα αναγνωρίζει σωστά το επίπεδο νερού που σχετίζεται με την πλημμύρα.

Αποτελέσματα και ανάλυση

  • Αναμενόμενα αποτελέσματα: Η οθόνη LCD πρέπει να εμφανίζει τις ενδείξεις της στάθμης του νερού σε πραγματικό χρόνο. Όταν η στάθμη του νερού υπερβαίνει ένα ορισμένο όριο, στην οθόνη LCD πρέπει να εμφανίζεται το μήνυμα «Υψηλή στάθμη νερού».
  • Ανάλυση: Συγκρίνετε τα δεδομένα του αισθητήρα με τα αναμενόμενα όρια για την ανίχνευση πλημμύρας. Συζητήστε πώς μπορεί να χρησιμοποιηθεί ο αισθητήρας νερού σε πραγματικά συστήματα ανίχνευσης πλημμύρας.

Συζήτηση

  • Συζητήστε την αποτελεσματικότητα του αισθητήρα νερού στην ανίχνευση της παρουσίας νερού, των επιπέδων υγρασίας και ακόμη και των βροχοπτώσεων που σχετίζονται με πιθανές πλημμύρες.
  • Αξιολογήστε τη συνολική απόδοση της ενσωμάτωσης μεταξύ του Arduino, του αισθητήρα νερού και της οθόνης LCD.

Ερωτήσεις κριτικής σκέψης

  • Ποιοι άλλοι αισθητήρες θα μπορούσατε να χρησιμοποιήσετε για να βελτιώσετε την ακρίβεια της ανίχνευσης πλημμυρών;
  • Ποιοι παράγοντες θα μπορούσαν να προκαλέσουν ψευδώς θετικά ή ψευδώς αρνητικά αποτελέσματα στο σύστημα ανίχνευσης πλημμυρών;
  • Πώς θα βελτιώνατε την αξιοπιστία του συστήματος ανίχνευσης πλημμυρών σε μια πραγματική εφαρμογή;
  • Προτείνετε τρόπους περαιτέρω βελτίωσης του συστήματος.

03

Ενσωμάτωση και δοκιμή του αισθητήρα MPU6050 για την ανίχνευση σεισμών

Στόχος

Ο στόχος αυτού του πειράματος είναι να ενσωματωθεί ο αισθητήρας mpu6050 με έναν μικροελεγκτή Arduino Uno και να εμφανιστούν τα δεδομένα του αισθητήρα σε πραγματικό χρόνο σε μια οθόνη LCD. Η μονάδα αδρανειακής μέτρησης MPU6050 μπορεί να παράγει τιμές για την επιτάχυνση και το γυροσκόπιο. Για την ανίχνευση σεισμών, η επιτάχυνση του άξονα Z, δεδομένου ότι το MPU6050 είναι στερεωμένο με τη σωστή πλευρά προς τα πάνω σε μια επίπεδη επιφάνεια, μετατρέπεται από [m/s2] σε [g] διαιρώντας την τιμή της επιτάχυνσης με τη βαρυτική δύναμη της γης (~9,81 m/s2). Αυτή η τιμή g κατηγοριοποιείται στη συνέχεια σύμφωνα με την τροποποιημένη κλίμακα Mercalli και τα δεδομένα αυτά θα χρησιμοποιηθούν για την εκτίμηση του πιθανού σεισμικού κινδύνου.

Βασικές πληροφορίες

  • Αισθητήρας MPU6050: Το MPU6050 είναι ένας αισθητήρας παρακολούθησης κίνησης 6 αξόνων που συνδυάζει γυροσκόπιο 3 αξόνων (μέτρηση γωνιακής ταχύτητας) και επιταχυνσιόμετρο 3 αξόνων (μέτρηση επιτάχυνσης). Χρησιμοποιείται ευρέως στην παρακολούθηση κίνησης, την ανίχνευση προσανατολισμού και την αναγνώριση χειρονομιών. Περιλαμβάνει επίσης έναν ενσωματωμένο ψηφιακό επεξεργαστή κίνησης (DMP), ο οποίος μπορεί να επεξεργάζεται τα δεδομένα του αισθητήρα πριν τα στείλει σε έναν μικροελεγκτή, μειώνοντας έτσι το υπολογιστικό φορτίο.
  • Εφαρμογές:
    • Παρακολούθηση κίνησης και έλεγχος χειρονομιών – Χρησιμοποιείται σε χειριστήρια παιχνιδιών, ρομποτική και συστήματα καταγραφής ανθρώπινων κινήσεων.
    • Σταθεροποίηση drone και UAV – Βοηθά στη διατήρηση της σταθερότητας των drone παρακολουθώντας τον προσανατολισμό τους.
    • Ρομποτική και συστήματα αυτοεξισορρόπησης – Απαραίτητο για ρομποτικές εφαρμογές όπως ρομπότ αυτοεξισορρόπησης και ρομποτικοί βραχίονες.
    • Φορητές συσκευές και συσκευές παρακολούθησης φυσικής κατάστασης – Χρησιμοποιείται για μέτρηση βημάτων, αναγνώριση δραστηριότητας και παρακολούθηση φυσικής κατάστασης.
    • Εικονική πραγματικότητα (VR) και επαυξημένη πραγματικότητα (AR) – Βοηθά στην παρακολούθηση της κίνησης του κεφαλιού για μια πιο ρεαλιστική εμπειρία.
    • Smartphone και tablet – Χρησιμοποιείται για την αυτόματη περιστροφή της οθόνης, την ανίχνευση κινήσεων και τον έλεγχο των παιχνιδιών.
    • Εφαρμογές στον τομέα της αυτοκινητοβιομηχανίας – Βοηθά στον έλεγχο της σταθερότητας του οχήματος, στην ανίχνευση συγκρούσεων και στην ανίχνευση κίνησης.
    • Παρακολούθηση βιομηχανικού εξοπλισμού – Χρησιμοποιείται στην προληπτική συντήρηση και στην ανάλυ
  • Arduino Uno: Το Arduino Uno είναι μια δημοφιλής πλακέτα μικροελεγκτή που θα χρησιμοποιηθεί για τη σύνδεση με τον αισθητήρα mpu6050 και μια οθόνη LCD. Θα επεξεργάζεται τα δεδομένα του αισθητήρα και θα ελέγχει την οθόνη LCD για την εμφάνιση πληροφοριών σε πραγματικό χρόνο.
  • Οθόνη LCD: Η οθόνη LCD θα χρησιμοποιηθεί για την εμφάνιση των μετρήσεων σε πραγματικό χρόνο από τον αισθητήρα mpu6050, υποδεικνύοντας εάν υπάρχει πιθανός κίνδυνος σεισμού με βάση την παρουσία κραδασμών και δυνάμεων g.

Μέτρα ασφαλείας

  • Δεδομένου ότι το πείραμα αυτό περιλαμβάνει την ανίχνευση κραδασμών και δυνάμεων g, συμπεριλάβετε μια σύντομη σημείωση σχετικά με τον σωστό χειρισμό του αισθητήρα κατά τη διάρκεια της δοκιμής. Υπενθυμίστε στους μαθητές να εργάζονται πάντα σε ασφαλές περιβάλλον.

Απαιτούμενος εξοπλισμός

  • Υλικό:
    • Πλακέτα Arduino Uno Αισθητήρας MPU6050
    • Οθόνη LCD 16x2 (σύνδεση I2C ή παράλληλη)
    • Καλώδια jumper
    • Πλακέτα δοκιμών (προαιρετικά)
    • Τροφοδοτικό για Arduino
  • Λογισμικό:
    • Arduino IDE (για προγραμματισμό του μικροελεγκτή)
  • Εξαρτήσεις βιβλιοθήκης
    • Adafruit MPU6050
    • Αισθητήρας Adafruit
    • LiquidCrystal_I2C
    • Καλώδιο

Εγκατάσταση Arduino IDE

  • Εγκαταστήστε τις εξαρτήσεις της βιβλιοθήκης σύμφωνα με το έργο, όπως φαίνεται παρακάτω:
  • Κατεβάστε το Arduino IDE για την πλατφόρμα σας:
    • Windows
    • MacOS - Apple Silicon/Intel
    • Linux
  • Ακολουθήστε τις οδηγίες εγκατάστασης και ανοίξτε την εφαρμογή.
  • Συνδέστε την πλακέτα Arduino UNO σε οποιαδήποτε θύρα USB του υπολογιστή
  • Επιλέξτε την πλακέτα από τη λίστα όπως φαίνεται παρακάτω:
  • Επικολλήστε τον κώδικα για κάθε έργο που βρίσκεται στο αποθετήριο GitHub
  • Ανεβάστε το σκίτσο στο Arduino UNO επιλέγοντας το κουμπί

Διάγραμμα κυκλώματος

  • Συνδέσεις για αισθητήρα MQ2:
    • VCC του mpu6050 σε 3,3V στο Arduino
    • GND του mpu6050 σε GND στο Arduino
    • SCL του mpu6050 σε SCL στο Arduino
    • SDA του mpu6050 σε SDA στο Arduino
  • Συνδέσεις για οθόνη LCD:
    • VCC της LCD σε 5V στο Arduino
    • GND της LCD σε GND στο Arduino
    • SDA σε A4 (στο Arduino Uno) για επικοινωνία I2C
    • SCL σε A5 (στο Arduino Uno) για επικοινωνία I2C
  • Συνδέστε τον αισθητήρα mpu6050 στο Arduino Uno όπως φαίνεται στο διάγραμμα κυκλώματος.
  • Συνδέστε την οθόνη LCD στο Arduino Uno μέσω I2C ή παράλληλης σύνδεσης σύμφωνα με τις προδιαγραφές.

Προγραμματισμός του Arduino

  • Ανοίξτε το Arduino IDE και γράψτε τον κώδικα για την αρχικοποίηση του αισθητήρα mpu6050 και της οθόνης LCD.
  • Συμπεριλάβετε τις απαραίτητες βιβλιοθήκες, όπως LiquidCrystal_I2C (για LCD) και άλλες βιβλιοθήκες σχετικές με αισθητήρες, εάν υπάρχουν.
  • Γράψτε το πρόγραμμα για την ανάγνωση δεδομένων από τον αισθητήρα mpu6050 και την εμφάνιση των τιμών στην οθόνη LCD.
  • Εφαρμόστε λογική για να αξιολογήσετε εάν η ένδειξη του αισθητήρα υποδηλώνει την παρουσία επιπέδων δόνησης που σχετίζονται με πιθανό σεισμό.
Sample Code

void loop() { sumAccel = 0.0; // Average Accelerometer Z axis for 300 readings and convert them from m/s^2 to g // to reduce sensor error for(int i = 0; i < 300; i++) { mpu.getAccelerometerSensor()->getEvent(&event); sumAccel = abs(event.acceleration.z / 9.81); } avgAccel = sumAccel / 300; // Calculate the difference of the previous and current reading to determine shifts in g value diff = abs(avgAccel - prevAccel); // Identify the category of the earthqake by comparing the difference of the readings if (diff >= 0.0276 && diff <= 0.115) intensity = "Category V"; else if (diff > 0.115 && diff <= 0.215) intensity = "Category VI"; else if (diff > 0.215 && diff <= 0.401) intensity = "Category VII"; else if (diff > 0.401 && diff <= 0.747) intensity = "Category VIII"; else if (diff > 0.747 && diff <= 1.39) intensity = "Category IX"; else if (diff > 1.39) intensity = "Category X"; else intensity = "None"; lcd.clear(); lcd.print(diff); lcd.print(" g"); lcd.setCursor(0, 1); lcd.print(intensity); // Assign the current reading to the previous to repeat the comparison prevAccel = avgAccel; delay(50); }

#include <Adafruit_MPU6050.h> #include <Adafruit_Sensor.h> #include <LiquidCrystal_I2C.h> #include <Wire.h> #define LCD_ADD 0x27 // I2C Address of LCD Display #define LCD_COLS 16 // Number of columns of LCD Display #define LCD_ROWS 2 // Number of rows of LCD Display // Peripheral Definition Adafruit_MPU6050 mpu; LiquidCrystal_I2C lcd(LCD_ADD, LCD_COLS, LCD_ROWS); // Variables Declaration float sumAccel = 0.0; float avgAccel; float prevAccel = 0.0; float diff = 0.0; String intensity; void setup(void) { Serial.begin(115200); // Initialize LCD and turn on Backlight LED lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Quake Detector."); lcd.setCursor(0, 1); // Check MPU6050 Connectivity while (!mpu.begin()) { Serial.println("MPU6050 not connected!"); delay(1000); } lcd.print("MPU6050 ready."); delay(1000); } sensors_event_t event;

Δοκιμές και βαθμονόμηση

  • Ανεβάστε τον κώδικα στο Arduino και ανοίξτε τη σειριακή οθόνη (σε Mac και/ή Windows) για να επαληθεύσετε τις ενδείξεις του αισθητήρα.
  • Δοκιμάστε τον αισθητήρα εκθέτοντάς τον σε διάφορα επίπεδα δόνησης και παρατηρήστε την οθόνη LCD.

Παρατηρήσεις

  • Καταγράψτε τις ενδείξεις του αισθητήρα σε διαφορετικές συγκεντρώσεις αερίου.
  • Παρατηρήστε την οθόνη LCD για να ελέγξετε αν το σύστημα αναγνωρίζει σωστά την παρουσία κραδασμών που σχετίζονται με σεισμό.

Αποτελέσματα και ανάλυση

  • Αναμενόμενα αποτελέσματα: Η οθόνη LCD θα πρέπει να εμφανίζει τις μετρήσεις του επιπέδου δόνησης σε πραγματικό χρόνο. Όταν η δύναμη g της δόνησης υπερβαίνει ένα ορισμένο όριο, θα πρέπει να εμφανίζεται το μήνυμα «Κατηγορία V» στην οθόνη LCD.
  • Ανάλυση: Συγκρίνετε τα δεδομένα του αισθητήρα με τα αναμενόμενα όρια για την ανίχνευση σεισμών. Συζητήστε πώς μπορεί να χρησιμοποιηθεί ο αισθητήρας mpu6050 σε πραγματικά συστήματα ανίχνευσης πυρκαγιάς.

Συζήτηση

  • Συζητήστε την αποτελεσματικότητα του αισθητήρα mpu6050 στην ανίχνευση της παρουσίας κραδασμών και δυνάμεων g που σχετίζονται με σεισμούς.
  • Αξιολογήστε τη συνολική απόδοση της ενσωμάτωσης μεταξύ του Arduino, του αισθητήρα mpu6050 και της οθόνης LCD.

Ερωτήσεις κριτικής σκέψης

  • Πώς μπορείτε να τροποποιήσετε το κύκλωμα για να ανιχνεύσετε επιπλέον δεδομένα, όπως το αζιμούθιο;
  • Ποιοι άλλοι αισθητήρες θα μπορούσατε να χρησιμοποιήσετε για να βελτιώσετε την ακρίβεια της ανίχνευσης σεισμών;
  • Ποιοι παράγοντες θα μπορούσαν να προκαλέσουν ψευδώς θετικά ή ψευδώς αρνητικά αποτελέσματα στο σύστημα ανίχνευσης σεισμών;
  • Πώς θα βελτιώνατε την αξιοπιστία του συστήματος ανίχνευσης σεισμών σε μια πραγματική εφαρμογή;
  • Προτείνετε τρόπους περαιτέρω βελτίωσης του συστήματος.