Πίνακας περιεχομένων:

Sodial Dust Sensor στο Android: 6 βήματα
Sodial Dust Sensor στο Android: 6 βήματα

Βίντεο: Sodial Dust Sensor στο Android: 6 βήματα

Βίντεο: Sodial Dust Sensor στο Android: 6 βήματα
Βίντεο: MIBRO GS: The Smartwatch That Will Make You Wonder How You Ever Lived Without It! 2024, Νοέμβριος
Anonim
Sodial Dust Sensor στο Android
Sodial Dust Sensor στο Android

Πριν από ένα χρόνο ένας φίλος μου είχε ένα εργαστήριο το Σαββατοκύριακο σχετικά με την παρακολούθηση του περιβάλλοντος. Ο στόχος του εργαστηρίου ήταν να δημιουργήσει έναν αισθητήρα σκόνης συνδεδεμένο με έναν πίνακα 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

Προετοιμασία της μονάδας Bluetooth
Προετοιμασία της μονάδας Bluetooth
Προετοιμασία της μονάδας Bluetooth
Προετοιμασία της μονάδας Bluetooth
Προετοιμασία της μονάδας Bluetooth
Προετοιμασία της μονάδας Bluetooth
Προετοιμασία της μονάδας Bluetooth
Προετοιμασία της μονάδας 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: Δοκιμή

Image
Image
Δοκιμή
Δοκιμή
Δοκιμή
Δοκιμή
Δοκιμή
Δοκιμή

Ενεργοποιήστε τον αισθητήρα και ξεκινήστε την εφαρμογή. Από τη λίστα των συζευγμένων συσκευών επιλέξτε αυτήν που ονομάζεται "Αισθητήρας". Μετά τη σύνδεση του αισθητήρα, η οθόνη θα αρχίσει να εμφανίζει τα δεδομένα. Ταυτόχρονα κατανέμεται το αρχείο δεδομένων. Αφού τελειώσετε τη μόδα, μπορείτε να χρησιμοποιήσετε το GnuPlot για να εμφανίσετε τα δεδομένα. Χρησιμοποιήστε το αρχείο "Test.gp" στο GnuPlot για να διαμορφώσετε το GnuPlot για εμφάνιση ενός αρχείου δεδομένων με το όνομα "Test.dat". Μπορείτε επίσης να το βρείτε εδώ

Δείτε το βίντεο για περισσότερες λεπτομέρειες και δοκιμές. Καλή διασκέδαση και περισσότερες ιδέες!

Συνιστάται: