Πίνακας περιεχομένων:
- Βήμα 1: Αυτό που χρειάζεστε
- Βήμα 2: Προετοιμασία της μονάδας Bluetooth
- Βήμα 3: Τοποθέτηση των εξαρτημάτων
- Βήμα 4: Σύζευξη
- Βήμα 5: Το Λογισμικό
- Βήμα 6: Δοκιμή
Βίντεο: Sodial Dust Sensor στο Android: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Πριν από ένα χρόνο ένας φίλος μου είχε ένα εργαστήριο το Σαββατοκύριακο σχετικά με την παρακολούθηση του περιβάλλοντος. Ο στόχος του εργαστηρίου ήταν να δημιουργήσει έναν αισθητήρα σκόνης συνδεδεμένο με έναν πίνακα raspberry pi για να τοποθετήσει δεδομένα μετρήσεων σε κάποιο διακομιστή που παρείχε συχνά ενημερωμένους χάρτες συγκέντρωσης σκόνης. Ο φίλος μου ρώτησε αν υπάρχει τρόπος να λάβετε τα δεδομένα του αισθητήρα απευθείας στο smartphone του για παρακολούθηση και καταγραφή. Έτσι έψαξα το διαδίκτυο για ένα φύλλο δεδομένων και είδα ότι ο αισθητήρας είχε μια απλή διεπαφή UART με πρωτόκολλο 9600Baud 8N1. Αλλά πώς να συνδέσετε ένα UART με ένα smartphone; Λοιπόν, αυτό είναι εύκολο. Απλώς έπρεπε να χρησιμοποιήσω μία από αυτές τις απανταχού μικρές μονάδες Bluetooth που παρέχουν μια εξομοιωμένη θύρα στο Android. Τώρα δείτε πώς τα κατάφερα.
Βήμα 1: Αυτό που χρειάζεστε
Χρειάζεστε τα παρακάτω μέρη
- Συνδετήρας ζευγαρώματος JST XH 7 ακίδων για τη διασύνδεση Sodial με καλώδια. Αγόρασα το δικό μου στο Ebay.
- Μια μονάδα Bluetooth HC05 ή 06 συμβατή με υποδοχή UART
- Ένας σειριακός μετατροπέας USB με διεπαφή επιπέδου TTL. Χρησιμοποιούμε αυτό για να δώσουμε στη μονάδα BT ένα μοναδικό όνομα
- Αισθητήρας σκόνης Sodial SDS011. Πήρα το δικό μου από το Ebay
- ένα κομμάτι γυψοσανίδας
- Υποδοχή USB-B
- σύρμα
- Ένα κομμάτι ξύλο για να τοποθετήσετε τα πάντα
Στη συνέχεια, θα χρειαστείτε μερικά απλά εργαλεία:
- Ένα πριόνι για την κοπή του ξύλου
- τσιμπιδακι ΦΡΥΔΙΩΝ
- συγκολλητικό σίδερο και συγκολλητικό
- κόφτης καλωδίων
- Πυροβόλο θερμής κόλλας
- Ένα κομμάτι μανίκι σιλικόνης 8mm (όχι στην εικόνα)
Μπορείτε να κατεβάσετε το φύλλο δεδομένων Sodial SDS011 από εδώ Sodial SDS011
Βήμα 2: Προετοιμασία της μονάδας Bluetooth
Η μονάδα BT διαθέτει διεπαφή UART με επίπεδο TTL. Μπορεί να αναδιαμορφωθεί με εντολές "AT" όπως κάναμε με τα μόντεμ διαδικτύου στην αρχαιότητα. Για να το συνδέσετε σε ένα τερματικό πρόγραμμα στο μηχάνημά σας, πρέπει να προσαρμόσετε το UART στον υπολογιστή σας. Χρησιμοποίησα μετατροπέα USB-RS232 που αγόρασα στο amazon. Εφάρμοσα έναν σύνδεσμο για τη μονάδα BT και δρομολόγησα το τροφοδοτικό 3, 3V και το GND από το μετατροπέα στη μονάδα BT. Στη συνέχεια, συνέδεσα τις αντίστοιχες γραμμές TxD και RxD στο crossover. TxD από μετατροπέα USB σε RxD από μονάδα BT και αντίστροφα.
Έχω ένα μηχάνημα linux και χρησιμοποιώ cutecom. Μετά τη σύνδεση του μετατροπέα USB, η θύρα ήταν "ttyUSB0". Μπορείτε να βρείτε τα ονόματα comport στον κατάλογο "/dev" στον υπολογιστή σας linux. Για χρήστες Windows θα συνιστούσα το "hterm". Είναι εύκολο στη λειτουργία. Πληκτρολογήστε "AT" και θα πρέπει να λάβετε "AT" ως απάντηση. Στη συνέχεια, πληκτρολογήστε "AT+NameSensor" για να δώσετε στη μονάδα BT το όνομα "Sensor"
Βήμα 3: Τοποθέτηση των εξαρτημάτων
Κόψτε ένα κομμάτι ξύλου σε μέγεθος κατάλληλο για τη λήψη όλων των μερών. Συνδέστε όλα τα σήματα όπως υποδεικνύεται στο διάγραμμα. Είναι καλή ιδέα να βάλετε ένα μανίκι πυριτίου γύρω από τα καλώδια για να τα προστατέψετε. Συγκολλήστε το βύσμα USB-B στο διάτρητο. Χρησιμοποιείται μόνο για την παροχή ρεύματος. Στερεώστε όλα τα μέρη με βίδες στην ξύλινη βάση. Τέλος κολλήστε ζεστά τα καλώδια για να τα στερεώσετε στο ξύλο.
Βήμα 4: Σύζευξη
Τροφοδοτήστε την εφαρμογή αισθητήρα συνδέοντας ένα τροφοδοτικό USB. Ένα κόκκινο LED στη μονάδα BT θα αρχίσει να αναβοσβήνει. Μην προσπαθήσετε να το συνδυάσετε με το Android smartphone σας. Πρέπει να εισαγάγετε έναν κωδικό PIN. Αυτό είναι το "1234". Αφού εισαγάγετε τον κωδικό, το smartphone σας θα πρέπει να αντιστοιχιστεί με τη μονάδα BT.
Βήμα 5: Το Λογισμικό
Μου αρέσει να γράφω εφαρμογές Android στην ίδια την πλατφόρμα προορισμού. σας γλιτώνει από όλα αυτά τα πράγματα προσομοίωσης που πρέπει να προσέχετε εάν εργάζεστε με το Android Studio. Βρήκα τρία κατάλληλα εργαλεία ανάπτυξης στο ίδιο το Android
- Mintoris Basic. Ένας βασικός διερμηνέας με ένα πλούσιο σύνολο εντολών για να μπερδεύετε σχεδόν τα πάντα στο Android. Μπορείτε να δημιουργήσετε συντομεύσεις για τις εφαρμογές σας. Το Mintoris Basic δεν περιέχει μεταγλωττιστή. Πρέπει λοιπόν να έχετε εγκαταστήσει το Mintoris σε κάθε συσκευή που χρησιμοποιείτε. Αλλά πρέπει να το πληρώσετε μόνο μία φορά (περίπου 7 €)
- Βασικός! Εξαιρετικά καλός βασικός διερμηνέας και μεταγλωττιστής (πρόσθετο για μερικά €). Σχεδόν συνδέεται με τα πάντα στο android και μπορείτε να μεταγλωττίσετε πραγματικές εφαρμογές για τη διανομή τους χωρίς να έχετε Basic! στη συσκευή προορισμού. Δυστυχώς Βασικό! δεν διαθέτει τις εξαιρετικές συναρτήσεις γραφήματος διαγράμματος του Mintoris
- Το AIDE είναι ένα ημιεπαγγελματικό IDE για την ανάπτυξη android στην java στο android. Με το AIDE έχετε τη μέγιστη ευελιξία, αλλά πρέπει να μάθετε java. Το AIDE έχει ετήσιο κόστος περίπου 50 €
Επέλεξα τον Μιντόρη. Σε αυτήν την ενότητα δεν θα σας δώσω ένα σεμινάριο προγραμματισμού στο Mintoris αλλά μια σύντομη περιγραφή των μπλοκ λειτουργιών
Στο επόμενο μέρος δηλώνονται τρεις πίνακες για τις δύο γραμμές δεδομένων αισθητήρα και τις αντίστοιχες χρονικές σημάνσεις. Τα δεδομένα χρονικής σήμανσης χρησιμοποιούνται για την επισήμανση του άξονα x του διαγράμματος. Το Sodial εξάγει δύο ρεύματα δεδομένων το καθένα καθορισμένο για ένα ειδικό μέγεθος σωματιδίων. Οι δύο συστοιχίες dustdata λαμβάνουν αυτές τις τιμές.
WakeLock Μερικό
TextColor 100, 75, 10
TextColorA 50, 50, 50
TextAlign 0
TextSize 24
CLS
Αναδυόμενο "Μετρητής αισθητήρα σκόνης (γ) ARJ 2017"
Παγκόσμια dustData (), dustDataF (), timeStamp () Παγκόσμιος δείκτης, επιλογή, maxData, όνομα αρχείου $
Χαμηλή ώρα Σφραγίδα (59)
Χαμηλή σκόνη Δεδομένα (59)
Χαμηλή σκόνη DataF (59)
Dim Menu $ (4) = "max. 100 σύνολα δεδομένων", "max. 1000 σύνολα δεδομένων", "max. 5000 σύνολα δεδομένων", "max. 10000 σύνολα δεδομένων", "Exit"
«Αρχίστε τις συστοιχίες
Για i = 0 έως 59
dustData (i) = 0
dustDataF (i) = 0
timeStamp (i) = i
Επόμενο i
Στη συνέχεια, διαμορφώνεται ένα μενού λίστας. Αυτό δίνει στον χρήστη την επιλογή να επιλέξει το μέγιστο μέγεθος δεδομένων που θα συλλέξει. Αυτός είναι απλώς ένας διακόπτης ασφαλείας για να αποτρέψει το smartphone να απορροφά ατελείωτα δεδομένα. Οι λειτουργίες BTgetPaired $ () επιστρέφουν μια λίστα με όλες τις συζευγμένες συσκευές στη συσκευή android, τα ονόματά τους και τη διεύθυνση BT.
L ist Menu $ (), επιλογή
'Επιλέξτε μέγιστο ποσό εάν τα δεδομένα θα αποθηκευτούν
runLevel = 1
Επιλέξτε επιλογή
Περίπτωση 0 maxData = 100
Περίπτωση 1 maxDate = 1000
Περίπτωση 2 maxData = 5000
Περίπτωση 3 maxData = 10000
Περίπτωση 4 maxData = 0
Τέλος Επιλογή
'' Αισθητήρας σύνδεσης
αμυδρό ζεύγος $ (0)
ζεύγος $ () = BTGetPaired $ ()
Εάν ζεύγος $ (0) = "κανένα" Τότε
Εκτύπωση "Δεν βρέθηκαν συζευγμένες συσκευές. Είναι ενεργοποιημένο το BT;" Εκτύπωση "Το πρόγραμμα τερματίστηκε"
Τέλος
Τέλος εαν
Ζεύγος λίστας $ (), συσκευή $
όνομα $ = ItemExtract $ (συσκευή $, 0)
διεύθυνση $ = ItemExtract $ (συσκευή $, 1)
BTConnect 1, διεύθυνση $
«Περιμένετε τη σύνδεση
Πρόοδος ON
Εκτύπωση "Προσπαθούμε να συνδεθούμε με"; διεύθυνση $
Για i = 1 έως 20
Πρόοδος i/2
Εάν BTGetstate (1) = 4 Τότε Έξοδος για Περιμένετε 1000
Επόμενο i
Progress OFF
«Με επιτυχία συνδεθείτε στη συσκευή BT
Εάν BTGetState (1) = 4 Τότε Εκτύπωση "Συνδεδεμένος" Αλλιώς Εκτύπωση "Δεν ήταν δυνατή η σύνδεση με"; όνομα $
Εκτύπωση "Το πρόγραμμα τερματίστηκε"
Τέλος
Τέλος εαν
Το επόμενο μπλοκ δείχνει την απόκτηση δεδομένων. Για κάθε περίοδο δεδομένων ένα αρχείο ανοίγει αυτόματα και ονομάζεται μετά από ώρα και ημερομηνία. Στη συνέχεια, ο βρόχος διαβάζει τα δεδομένα του αισθητήρα. Τα δεδομένα είναι συσκευασμένα σε πολλά byte. Ένα σύνολο byte αναγνωρίζεται με δύο χαρακτήρες ASCII 170 και 171. Τα ακόλουθα δεδομένα αναδιοργανώνονται και συμπληρώνονται στους πίνακες σκόνης
Γραφικά Ενεργοποιημένα
'Άνοιγμα αρχείου δεδομένων για εγγραφή
fileName $ = FormatTime $ (t, "εεεε-ΜΜ-ηη-κκ-mm-ss") + ".dat"
Άνοιγμα 1, fileName $, "w+" Print "Opened datafile"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")
Writeln 1, "Time Dust2.5 Dust10"
Συμπλήρωση πίνακα με τα μετρημένα δεδομένα
δεδομένα $ = "" πακέτο $ = ""
δείκτης = 0
Do while maxData> 0
BTRead 1, πακέτο $, 10
δεδομένα $ = δεδομένα $+πακέτο $
Αν Len (δεδομένα $)> = 10 Τότε
Εάν (ASCII (Αριστερά $ (δεδομένα $, 1)) = 170) & (ASCII (Δεξιά $ (δεδομένα $, 1)) = 171) Τότε
dustDataF (index) = ASCII (Mid $ (data $, 2, 1))
dustDataF (index) = (dustDataF (index)+256*ASCII (Mid $ (data $, 3, 1))))/10
dustData (index) = ASCII (Mid $ (data $, 4, 1))
dustData (index) = (dustData (index)+256*ASCII (Mid $ (data $, 5, 1))))/10
Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (index)) + "" + Str $ (dustData (index))
δεδομένα $ = ""
maxData = maxData-1
index = index+1
Αν δείκτης> 59 Τότε δείκτης = 0
dustData (ευρετήριο) = 0
dustDataF (ευρετήριο) = 0
Τέλος εαν
Τέλος εαν
DrawGraph ()
Περίμενε 100
Βρόχος
Κλείσιμο 1
Γραφικά απενεργοποιημένα
CLS Εκτύπωση "Το πρόγραμμα τερματίστηκε"
Τέλος
Το τελευταίο μέρος είναι μια υπορουτίνα που καλείται μετά από κάθε λήψη δεδομένων. Καθαρίζει την οθόνη, ξανασχεδιάζει το διάγραμμα με τα πραγματικά δεδομένα που είναι αποθηκευμένα στις συστοιχίες σκόνης και χρονικής σήμανσης.
«Σχεδιάστε τις συντεταγμένες, τις ετικέτες, τα τσιμπούρια και επίσης τις καμπύλες δεδομένων
Υπο DrawGraph ()
«Στη λειτουργία γραφικών, η οθόνη διαγράφεται στο τρέχον χρώμα
Χρώμα 0, 0, 0
CLS
Χρώμα 0, 0, 100
«Ρυθμίστε το χρώμα γραφικών που θα χρησιμοποιηθεί για την σχεδίαση των γραμμών πλέγματος
TextColor 100, 100, 100, 50
'TextColor είναι το χρώμα του κύριου τίτλου του πλέγματος
TextColorA 100, 100, 100
'TextColorA χρησιμοποιείται για τίτλους άξονα και σχολιασμούς πλέγματος.
«Ορίστε το μέγεθος του κειμένου του τίτλου άξονα
«Ο κύριος τίτλος του πλέγματος είναι 2 φορές αυτού του μεγέθους
TextSize 20
FixDecimal 0
'Ορίστε την εμφάνιση 2 δεκαδικών ψηφίων
PadDigits 2
'Σχεδιάστε ένα πλέγμα για το γράφημα' Ορίστε το εύρος και τον τίτλο των X & Y
Άξονας AxisX 0, 59, "Time/s"
AxisY 0, 10000, "ug/m3"
Πλέγμα 3, "Συγκέντρωση σκόνης"
«Σχεδιάστε γραφήματα σκόνης
Χρώμα 100, 0, 0
GraphXY timeStamp (), dustDataF ()
Χρώμα 0, 100, 0
GraphXY timeStamp (), dustData ()
TextColor 100, 0, 0
DrawText "PM2.5", 30, Int (ScreenY ()-60), 90, 1
TextColor 0, 100, 0
DrawText "PM10", 30, Int (ScreenY ()-150), 90, 1
TextColor 100, 100, 100, 50
ΕΠΙΣΤΡΟΦΗ
Κατεβάστε τον πηγαίο κώδικα εδώ
Βήμα 6: Δοκιμή
Ενεργοποιήστε τον αισθητήρα και ξεκινήστε την εφαρμογή. Από τη λίστα των συζευγμένων συσκευών επιλέξτε αυτήν που ονομάζεται "Αισθητήρας". Μετά τη σύνδεση του αισθητήρα, η οθόνη θα αρχίσει να εμφανίζει τα δεδομένα. Ταυτόχρονα κατανέμεται το αρχείο δεδομένων. Αφού τελειώσετε τη μόδα, μπορείτε να χρησιμοποιήσετε το GnuPlot για να εμφανίσετε τα δεδομένα. Χρησιμοποιήστε το αρχείο "Test.gp" στο GnuPlot για να διαμορφώσετε το GnuPlot για εμφάνιση ενός αρχείου δεδομένων με το όνομα "Test.dat". Μπορείτε επίσης να το βρείτε εδώ
Δείτε το βίντεο για περισσότερες λεπτομέρειες και δοκιμές. Καλή διασκέδαση και περισσότερες ιδέες!
Συνιστάται:
Πώς να μετακινηθείτε στο TEXT στο I2C 0.91 "128X32 OLED DISPLAY: 6 βήματα
Πώς να μετακινηθείτε στο TEXT σε I2C 0.91 "128X32 OLED DISPLAY: Σε αυτό το σεμινάριο θα μάθουμε πώς να μετακινείτε το TEXT στο I2C 0.91" 128X32 OLED DISPLAY χρησιμοποιώντας λογισμικό Arduino και Visuino. Δείτε το βίντεο
Τροποποίηση στο Left Handed DSLR Holder του Bertus52x11. (με προσθήκη λαβής στο στόμα): 4 βήματα
Τροποποίηση στο αριστερόχειρο κάτοχο DSLR του Bertus52x11. (με προσθήκη στόματος): Νωρίτερα σήμερα το bertus52x11 δημοσίευσε την πιο έξυπνη ιδέα. Απευθύνεται σε άτομα που χρησιμοποιούν μόνο το αριστερό τους χέρι - μόνιμα ή χρονικά. Η αρχική του ιδέα ήταν να προσθέσει ένα γάντζο αντίχειρα στον σύνδεσμο τρίποδου από κάτω, επιτρέποντας στην κάμερα να κρατηθεί
Ο γρήγορος οδηγός για τη δημιουργία βίντεο με το iPhone σας και τη μεταφόρτωσή του στο Facebook ή στο YouTube: 9 βήματα
Ο γρήγορος οδηγός για τη δημιουργία βίντεο με το iPhone σας και τη μεταφόρτωσή του στο Facebook ή στο YouTube: Χρησιμοποιήστε αυτήν την απλή διαδικασία 5 βημάτων (το Instructables το κάνει να μοιάζει με περισσότερα βήματα από ό, τι είναι στην πραγματικότητα) για να δημιουργήσετε και να ανεβάσετε το πρώτο σας βίντεο YouTube ή Facebook - χρησιμοποιώντας μόνο το iPhone σας
Πώς να ανεβάσετε παιχνίδια στο Arduboy και 500 παιχνίδια στο Flash-cart: 8 βήματα
Πώς να ανεβάσετε παιχνίδια στο Arduboy και 500 παιχνίδια στο Flash-cart: Έφτιαξα ένα σπιτικό Arduboy με σειριακή μνήμη Flash που μπορεί να αποθηκεύσει έως και 500 παιχνίδια για να παίζετε στο δρόμο. Ελπίζω να μοιραστώ πώς να φορτώσετε παιχνίδια σε αυτό, συμπεριλαμβανομένου του τρόπου αποθήκευσης παιχνιδιών στη σειριακή μνήμη flash και να δημιουργήσετε το δικό σας ενοποιημένο πακέτο παιχνιδιών
NAS (Αποθήκευση στο συνημμένο στο δίκτυο) Χρήση Raspberry Pi: 6 βήματα
NAS (Αποθήκευση στο συνημμένο στο δίκτυο) Χρησιμοποιώντας το Raspberry Pi: Το Storage που συνδέεται με το δίκτυο ή το NAS για συντομία είναι μια πραγματικά καλή συσκευή για να έχετε, αν έχετε να κάνετε με μεγάλο αριθμό αρχείων και δεδομένων. Έχω τόσο μεγάλο μέρος του περιεχομένου που σχετίζεται με την εργασία στον εσωτερικό σκληρό δίσκο του υπολογιστή μου, ώστε να μην αφήνει πολύ χώρο για τα προσωπικά μου δεδομένα, οπότε