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

Ανάκτηση λανθασμένα διαμορφωμένης μονάδας Bluetooth HC-06: 4 βήματα
Ανάκτηση λανθασμένα διαμορφωμένης μονάδας Bluetooth HC-06: 4 βήματα

Βίντεο: Ανάκτηση λανθασμένα διαμορφωμένης μονάδας Bluetooth HC-06: 4 βήματα

Βίντεο: Ανάκτηση λανθασμένα διαμορφωμένης μονάδας Bluetooth HC-06: 4 βήματα
Βίντεο: Πώς να κάνεις καλά πράγματα να σου συμβούν. Ακουστικό βιβλίο 2024, Νοέμβριος
Anonim
Επαναφέρετε εσφαλμένα διαμορφωμένη μονάδα Bluetooth HC-06
Επαναφέρετε εσφαλμένα διαμορφωμένη μονάδα Bluetooth HC-06

Από καθαρό μαξιμαλισμό, διαμόρφωσα τη μονάδα HC-06 Bluetooth (slave) σε ρυθμό baud 1, 382, 400 baud με την εντολή AT+BAUDC. Από τότε που το Arduino συνδέθηκε με αυτό δεν ήταν σε θέση να χρησιμοποιήσει τη μονάδα με τη βιβλιοθήκη SoftwareSerial. Προσπάθησα να επαναφέρω το ρυθμό baud με το σειριακό υλικό του Arduino (καρφίτσες 0 & 1) χωρίς τύχη.

Προσπάθησα επίσης να κάνω Google το θέμα χωρίς να βρω μια βιώσιμη λύση. Maybeσως η χρήση της ενσωματωμένης σειριακής θύρας ενός υπολογιστή θα μπορούσε να ήταν μια λύση (με αλλαγή λογικού επιπέδου 12V σε 3V3), αλλά ο υπολογιστής μου δεν έχει αυτήν την παρωχημένη θύρα, οπότε έπρεπε να βρω μια άλλη λύση.

Βήμα 1: Τι θα χρειαστείτε

Αυτό που θα χρειαστείτε
Αυτό που θα χρειαστείτε
  • Πλακέτα Arudino/Genuino με το προεπιλεγμένο Atmel ATMEGA328P-PU MCU (@16MHz).
  • Μια μονάδα Bluetooth HC-06 που ακούει σε 1, 382, 400 baud
  • Βασικό arduino IDE από

Βήμα 2: Η λύση

Η λύση
Η λύση
Η λύση
Η λύση

Λάβετε υπόψη ότι αυτό το Instructable και η λύση είναι για σενάριο 1, 382, 400 baud (AT+BAUDC). Η λύση δεν θα λειτουργήσει για άλλα ποσοστά baud. Για να χειριστείτε άλλες περιπτώσεις, ανατρέξτε στα βήματα που ξεκινούν από το Βήμα 3.

Η λύση είναι πραγματικά απλή.

  1. Συνδέστε τον πείρο VCC του HC-06 με τον ακροδέκτη 5V του Arduino.
  2. Συνδέστε τον πείρο GND του HC-06 με τον πείρο GND του Arduino.
  3. Συνδέστε τον πείρο RXD του HC-06 με τον πείρο 2 του Arduino.
  4. Αφήστε τον πείρο TXD του HC-06 ασύνδετο (ή συνδέστε τον με τον πείρο 8).
  5. Ανεβάστε σκίτσο hc06reset.ino.
  6. Το πρόγραμμα θα ρυθμίσει το HC-06 σε λειτουργία 115, 200 baud (AT+BAUD8).
  7. Χρησιμοποιήστε την ανακτημένη μονάδα HC-06 όπως πριν.

Βήμα 3: Πίσω από τις σκηνές…

Στα παρασκήνια…
Στα παρασκήνια…
Στα παρασκήνια…
Στα παρασκήνια…

Η βιβλιοθήκη SoftwareSerial που συνοδεύει το Arduino IDE είναι ικανή να μεταδίδει το πολύ 115, 200 bit/δευτερόλεπτο, οπότε δεν είναι αρκετά γρήγορη για να επικοινωνήσει με τον επιθυμητό ρυθμό baud 1, 382, 400. Δεδομένου ότι ένας προεπιλεγμένος πίνακας Arduino λειτουργεί σε 16MHz, το θεωρητικό μη συμπιεσμένο μέγιστο ρυθμό μετάδοσης bit είναι 16, 000, 000 bits/sec. Είμαστε καλά μέχρι τώρα!

Με βάση την κατανόησή μου για το SoftwareSerial.cpp, η σφραγιστική επικοινωνία πραγματοποιείται με τη ρύθμιση ενός πείρου εξόδου High (= 1) ή Low (= 0) σε σχέση με μια καθυστέρηση (που προέρχεται από το ρυθμό baud) μεταξύ των αλλαγών.

  • Η καρφίτσα εξόδου είναι υψηλή από προεπιλογή (σημαίνει ότι δεν υπάρχουν δεδομένα)
  • μεταδίδεται ένα bit εκκίνησης (το οποίο τραβάει τον πείρο χαμηλά)
  • 8 bit δεδομένων που μεταδίδονται από LSB σε MSB, (+5V όταν το bit 1 και 0 διαφορετικά) τότε
  • μεταδίδεται ένα bit διακοπής (το οποίο τραβάει τον πείρο ψηλά)

Με αυτόν τον τρόπο μεταδίδεται 1 byte χρησιμοποιώντας 10 bits.

Το μήνυμα που πρέπει να στείλουμε είναι AT+BAUD8 (χωρίς / n, / r στο τέλος). Αυτή η εντολή επαναφέρει το HC-06 σε 115, 200 baud rate, το οποίο μπορεί να χειριστεί κανονική βιβλιοθήκη.

Για να στείλουμε bits με ταχύτητα 1, 382, 400 bits/sec, για κάθε bit έχουμε χρόνο 1/1, 382, 400 δευτερολέπτων (δηλαδή περίπου 723,38 ns) για κάθε bit. Το Arduino τρέχει στα 16, 000, 000 Mhz, οπότε κάθε κύκλος διαρκεί 1/16, 000, 000 δευτερόλεπτα - δηλαδή 62,5 ns ανά κύκλο.

Χρησιμοποιώντας τον κωδικό συναρμολόγησης AVR, μπορούμε να χρησιμοποιήσουμε την εντολή OUT για να ορίσουμε την καρφίτσα εξόδου υψηλή ή χαμηλή και το NOP να περιμένει ακριβώς έναν κύκλο CPU. Και οι δύο εντολές τρώνε ακριβώς 1 κύκλο επεξεργαστή. Με αυτόν τον τρόπο ο χρόνος δυαδικών ψηφίων 723,38 ns μπορεί να καλυφθεί από 11 έως 12 οδηγίες arduino ανά μεταδιδόμενο bit. Ένα πράγμα που πρέπει να λάβετε υπόψη: η εντολή OUT ορίζει ένα ολόκληρο byte ταυτόχρονα, οπότε πρέπει να επιλέξουμε ένα PORTx όπου αυτό δεν αποτελεί πρόβλημα. Η χρήση ATMEGA328P-PU για παράδειγμα PORTD (arduino pins 0-7) είναι ιδανική για αυτήν την κατάσταση. Μετά τη ρύθμιση του bit, πρέπει να περάσει μόνο ο κατάλληλος χρόνος που γίνεται με 10 έως 11 NOPs και αυτό είναι όλο.

Μπορείτε να βρείτε λεπτομέρειες υπολογισμού στο παρακάτω αρχείο Excel. Αυτό το αρχείο παρήγαγε τις απαιτούμενες συνολικές οδηγίες για το πρόγραμμα. Μόνο μερικές αντικαταστάσεις έπρεπε να γίνουν μετά την επικόλληση του δημιουργούμενου κώδικα.

Βήμα 4: Περαιτέρω δυνατότητες ανάγνωσης/ βελτίωσης

  • Maybeσως μια ταχύτερη βιβλιοθήκη SoftwareSerial μπορεί να δημιουργηθεί χρησιμοποιώντας την τεχνική που περιγράφεται στο προηγούμενο βήμα.
  • Το FedericoK2 έφτιαξε ένα εξαιρετικό εργαλείο που δημιουργεί τον κωδικό ανάκτησης HC-06 για κάθε πιθανό ρυθμό μετάδοσης bit. Αποκτήστε πρόσβαση στον ιστότοπο εδώ: https://tools.krum.com.ar/save_your_hc-06/ Σας ευχαριστούμε FedericoK2

Συνιστάται: