Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Αναλύστε δομές από σκυρόδεμα, μέταλλο, ξύλο για στροφές και γωνίες και ειδοποιήσεις εάν έχουν αποκλίνει από την αρχική τους θέση.
Βήμα 1: Εισαγωγή
Με την ανάπτυξη του τομέα πολιτικών μηχανικών, μπορούμε να εντοπίσουμε πολλές κατασκευές παντού. Μεταλλικές κατασκευές, δοκοί από σκυρόδεμα, κτίρια πολλαπλών πλατφορμών είναι μερικά από αυτά. Επιπλέον, οι περισσότεροι από εμάς έχουμε συνηθίσει να μένουμε σε ένα κτίριο ή σπίτι τις περισσότερες ώρες της ημέρας. Πώς μπορούμε όμως να διασφαλίσουμε ότι το κτίριο είναι αρκετά ασφαλές για να μείνει; Τι γίνεται αν υπάρχει μια μικρή ρωγμή ή μια υπερβολικά κεκλιμένη δοκός στο κτίριό σας; Θα έθετε σε κίνδυνο εκατοντάδες ζωές.
Σεισμοί, σκληρότητα εδάφους, ανεμοστρόβιλοι και πολλά άλλα, θα μπορούσαν να είναι παράγοντες για εσωτερικές ρωγμές και απόκλιση των δομών ή των δοκών από την ουδέτερη θέση. Τις περισσότερες φορές δεν γνωρίζουμε την κατάσταση των γύρω δομών. Maybeσως το μέρος που περπατάμε καθημερινά να έχει ραγισμένα δοκάρια από σκυρόδεμα και να καταρρεύσει ανά πάσα στιγμή. Αλλά χωρίς να το γνωρίζουμε, μπαίνουμε ελεύθερα μέσα. Ως λύση για αυτό, χρειαζόμαστε μια καλή μέθοδο για την παρακολούθηση σκυροδέματος, ξύλου, μεταλλικών δοκών όπου δεν μπορούμε να φτάσουμε.
Βήμα 2: Λύση
Ο "Αναλυτής δομής" είναι μια φορητή συσκευή που μπορεί να τοποθετηθεί σε δοκό από σκυρόδεμα, μεταλλική κατασκευή, πλάκες κλπ. Αυτή η συσκευή μετρά τη γωνία και αναλύει τις στροφές όπου είναι τοποθετημένη και στέλνει τα δεδομένα στην εφαρμογή για κινητά μέσω Bluetooth. Αυτή η συσκευή χρησιμοποιεί επιταχυνσιόμετρο/ γυροσκόπιο για τη μέτρηση της γωνίας σε επίπεδα x, y, z και αισθητήρα κάμψης για την παρακολούθηση των στροφών. Όλα τα ακατέργαστα δεδομένα υποβάλλονται σε επεξεργασία και οι πληροφορίες αποστέλλονται στην εφαρμογή για κινητά.
Βήμα 3: Κύκλωμα
Συλλέξτε τα ακόλουθα στοιχεία.
- Arduino 101 Πίνακας
- 2 αισθητήρες Flex
- 2 Χ 10k αντιστάσεις
Για να μειωθεί ο αριθμός των εξαρτημάτων, εδώ χρησιμοποιείται ο πίνακας Arduino 101, καθώς περιέχει επιταχυνσιόμετρο και μονάδα BLE. Οι εύκαμπτοι αισθητήρες χρησιμοποιούνται για τη μέτρηση της ποσότητας κάμψης καθώς αλλάζει την αντίστασή της κατά την κάμψη. Το κύκλωμα είναι πολύ μικρό καθώς χρειάζονταν μόνο 2 αντιστάσεις και 2 εύκαμπτους αισθητήρες για σύνδεση. Το παρακάτω διάγραμμα δείχνει τον τρόπο σύνδεσης ενός αισθητήρα κάμψης στην πλακέτα Arduino.
Ένας πείρος της αντίστασης συνδέεται με τον πείρο A0 της πλακέτας Arduino. Ακολουθήστε την ίδια διαδικασία για να συνδέσετε τον δεύτερο αισθητήρα κάμψης. Χρησιμοποιήστε τον πείρο A1 για να συνδέσετε την αντίσταση.
Συνδέστε το βομβητή απευθείας στον πείρο D3 και τον πείρο Gnd.
Βήμα 4: Ολοκληρώνοντας τη συσκευή
Αφού κάνετε το κύκλωμα, πρέπει να στερεωθεί μέσα σε ένα περίβλημα. Σύμφωνα με το παραπάνω τρισδιάστατο μοντέλο, 2 εύκαμπτοι αισθητήρες πρέπει να τοποθετηθούν στην αντίθετη πλευρά του περιβλήματος. Ανοίξτε χώρο για τη θύρα USB για τον προγραμματισμό της πλακέτας και την παροχή ρεύματος. Καθώς αυτή η συσκευή χρειάζεται να χρησιμοποιηθεί για μεγάλο χρονικό διάστημα, η καλύτερη μέθοδος για την παροχή ενέργειας είναι η χρήση ενός σταθερού πακέτου ισχύος.
Βήμα 5: Εφαρμογή για κινητά
Κατεβάστε και εγκαταστήστε το Blynk από το Android Play Store. Ξεκινήστε ένα νέο έργο για το Arduino 101. Επιλέξτε τη μέθοδο επικοινωνίας ως BLE. Προσθέστε 1 τερματικό, 2 κουμπιά και BLE στη διεπαφή. Οι παρακάτω εικόνες σας δείχνουν πώς να δημιουργήσετε τη διεπαφή.
Βήμα 6: Αρχεία κώδικα Blynk
Αφού δημιουργήσετε τη διεπαφή στο Blynk, θα λάβετε έναν κωδικό εξουσιοδότησης. Εισαγάγετε αυτόν τον κωδικό στο ακόλουθο μέρος.
#include #include char auth = "**************"; // Κωδικός εξουσιοδότησης Blynk
Τερματικό WidgetTerminal (V2)
BLEΠεριφερειακό blePeripheral?
Κατά τη διαδικασία βαθμονόμησης, οι τρέχουσες ενδείξεις αισθητήρα αποθηκεύονται στο EEPROM.
αξίες(); EEPROM.write (0, flx1);
EEPROM.write (1, flx2);
EEPROM.write (2, x);
EEPROM.write (3, y);
EEPROM.write (4, z);
terminal.print ("Calibration Succesful");
Μετά τη βαθμονόμηση, η συσκευή θα συγκρίνει την απόκλιση με τις τιμές κατωφλίου και θα ηχεί ο βομβητής εάν υπερβαίνουν την τιμή.
αξίες(); εάν (abs (flex1-m_flx1)> 10 ή abs (flex2-m_flx2)> 10) {
terminal.println ("Over Bend");
τόνος (βομβητής, 1000)
}
εάν (abs (x-m_x)> 15 ή abs (y-m_y)> 15 ή abs (z-m_z)> 15) {
terminal.println ("Υπερβολικά κεκλιμένο");
τόνος (βομβητής, 1000)
}
Βήμα 7: Λειτουργικότητα
Κολλήστε τη συσκευή στη δομή που πρέπει να παρακολουθείται. Κολλήστε και τους 2 flex αισθητήρες. Τροφοδοτήστε την πλακέτα χρησιμοποιώντας το καλώδιο USB.
Ανοίξτε τη διεπαφή Blynk. Συνδεθείτε με τη συσκευή αγγίζοντας το εικονίδιο Bluetooth. Πατήστε το κουμπί βαθμονόμησης. Μετά τη βαθμονόμηση του τερματικού θα εμφανιστεί ένα μήνυμα ως "Επιτυχής βαθμονόμηση". Επαναφέρετε τη συσκευή. Τώρα θα παρακολουθεί τη δομή και θα σας ειδοποιεί μέσω του βομβητή εάν αποκλίνει από παραμορφώσεις. Μπορείτε να ελέγξετε τις τιμές γωνίας και κάμψης ανά πάσα στιγμή πατώντας το κουμπί Κατάσταση. Αυτό μπορεί να μοιάζει με μια μικρή συσκευή. Αλλά οι χρήσεις του είναι ανεκτίμητες. Μερικές φορές ξεχνάμε να ελέγξουμε την κατάσταση του σπιτιού μας, του γραφείου κ.λπ., με το πολυάσχολο πρόγραμμά μας. Αλλά αν υπάρχει ένα μικρό πρόβλημα, μπορεί να τελειώσει όπως στο παραπάνω σχήμα.
Αλλά με αυτήν τη συσκευή, μπορούν να σωθούν εκατοντάδες ζωές ενημερώνοντας τα μικρά αλλά επικίνδυνα προβλήματα στις κατασκευές.
Βήμα 8: Αρχείο κώδικα Arduino101
#define Σειριακό BLYNK_PRINT
#define flex1 A0
#define flex2 A1 // Ορίστε ευέλικτο αισθητήρα και πινέζες βομβητή
#define buzzer 3
#include "CurieIMU.h" #include "BlynkSimpleCurieBLE.h"
#include "CurieBLE.h"
#include "Wire.h"
#include "EEPROM.h"
#include "SPI.h"
char auth = "**************"; // Blynk Authorization Code WidgetTerminal terminal (V2)?
BLEΠεριφερειακό blePeripheral?
int m_flx1, m_flx2, m_x, m_y, m_z; // τιμές αποθηκευμένες στη μνήμη
int flx1, flx2, x, y, z; // Τρέχουσες αναγνώσεις
void τιμές () {για (int i = 0; i <100; i ++) {
flx1 = analogRead (flex1); // Λάβετε ωμές αναγνώσεις από αισθητήρες
flx2 = analogRead (flex2);
x = CurieIMU.readAccelerometer (X_AXIS)/100;
y = CurieIMU.readAccelerometer (Y_AXIS)/100;
z = CurieIMU.readAccelerometer (Z_AXIS)/100;
καθυστέρηση (2)?
}
flx1 = flx1/100; flx2 = flx2/100;
x = x/100; // Λάβετε τις μέσες τιμές των ενδείξεων
y = y/100;
z = z/100;
}
void setup () {// pinMode (3, OUTPUT);
pinMode (flex1, INPUT);
pinMode (flex2, INPUT); // Ρύθμιση των λειτουργιών ακίδων αισθητήρα
Serial.begin (9600);
blePeripheral.setLocalName ("Arduino101Blynk"); blePeripheral.setDeviceName ("Arduino101Blynk");
blePeripheral.setAparance (384);
Blynk.begin (auth, blePeripheral);
blePeripheral.begin ();
m_flx1 = EEPROM.read (0); m_flx2 = EEPROM.read (1);
m_x = EEPROM.read (2); // Διαβάστε τις προ -αποθηκευμένες τιμές αισθητήρα από το EEPROM
m_y = EEPROM.read (3);
m_z = EEPROM.read (4);
}
void loop () {Blynk.run ();
blePeripheral.poll ();
αξίες();
εάν (abs (flex1-m_flx1)> 10 ή abs (flex2-m_flx2)> 10) {terminal.println ("Over Bend");
τόνος (βομβητής, 1000)
}
εάν (abs (x-m_x)> 15 ή abs (y-m_y)> 15 ή abs (z-m_z)> 15) {terminal.println ("Υπερβολικά κεκλιμένο");
τόνος (βομβητής, 1000)
}
τόνος (βομβητής, 0)
}
/*VO υποδεικνύει τη λειτουργία βαθμονόμησης. Σε αυτήν τη λειτουργία, οι τιμές των αισθητήρων * αποθηκεύονται στο EEPROM
*/
BLYNK_WRITE (V0) {int pinValue = param.asInt ();
εάν (pinValue == 1) {
αξίες();
EEPROM.write (0, flx1); EEPROM.write (1, flx2);
EEPROM.write (2, x);
EEPROM.write (3, y);
EEPROM.write (4, z);
terminal.print ("Calibration Succesful");
}
}
/ * Μπορούμε να ζητήσουμε τρέχουσες τιμές απόκλισης * πατώντας το κουμπί V1
*/
BLYNK_WRITE (V1) {
int pinValue = param.asInt ();
εάν (pinValue == 1) {
αξίες(); terminal.print ("απόκλιση γωνίας Χ");
terminal.print (abs (x-m_x));
terminal.println ();
terminal.print ("Απόκλιση γωνίας Υ");
terminal.print (abs (y-m_y));
terminal.println ();
terminal.print ("Z γωνιακή απόκλιση-");
terminal.print (abs (z-m_z));
terminal.println ();
terminal.print ("Flex 1 deviation-");
terminal.print (abs (flx1-m_flx1));
terminal.println ();
terminal.print ("Flex 2 deviation-");
terminal.print (abs (flx2-m_flx2));
terminal.println ();
}
}
BLYNK_WRITE (V2) {
}