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

Εύκολο πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Rev 3: 7 βήματα (με εικόνες)
Εύκολο πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Rev 3: 7 βήματα (με εικόνες)

Βίντεο: Εύκολο πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Rev 3: 7 βήματα (με εικόνες)

Βίντεο: Εύκολο πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Rev 3: 7 βήματα (με εικόνες)
Βίντεο: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Νοέμβριος
Anonim
Εύκολο πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Αναθ. 3
Εύκολο πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Αναθ. 3
Εύκολη πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Αναθ. 3
Εύκολη πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Αναθ. 3
Εύκολο πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Αναθ. 3
Εύκολο πολύ χαμηλής ισχύος BLE στο Arduino Μέρος 3 - Αντικατάσταση Nano V2 - Αναθ. 3

Ενημέρωση: 7 Απριλίου 2019 - Αναθ. 3 του lp_BLE_TempHumidity, προσθέτει γραφήματα ημερομηνίας/ώρας, χρησιμοποιώντας το pfodApp V3.0.362+και αυτόματη ενεργοποίηση κατά την αποστολή δεδομένων

Ενημέρωση: 24 Μαρτίου 2019 - Αναθ. 2 του lp_BLE_TempHumidity, προσθέτει περισσότερες επιλογές σχεδίου και i2c_ClearBus, προσθέτει υποστήριξη GT832E_01

Εισαγωγή

Αυτό το σεμινάριο, A Redbear Nano V2 Replacement, είναι Μέρος 3 του 3. Αυτή είναι η Αναθεώρηση 2 αυτού του έργου. Το PCI της Revision 2 περιλαμβάνει τοποθέτηση για το κελί νομίσματος και τον αισθητήρα, απλοποιεί την κατασκευή και βελτιώνει τη ροή του αέρα γύρω από τον αισθητήρα, ενώ τον προστατεύει από το άμεσο ηλιακό φως. Η αναθεώρηση 1 είναι εδώ.

Μέρος 1 - Δημιουργία συσκευών BLE πολύ χαμηλής ισχύος που διευκολύνεται με τα καλύμματα Arduino που ρυθμίζουν το Arduino σε κωδικούς nRF52 συσκευών χαμηλής ισχύος, την ενότητα προγραμματισμού και τη μέτρηση του ρεύματος τροφοδοσίας. Καλύπτει επίσης εξειδικευμένους χρονομετρητές χαμηλής ισχύος και συγκριτές και καταργημένες εισόδους και χρησιμοποιώντας το pfodApp για σύνδεση και έλεγχο της συσκευής nRF52.

Μέρος 2 - Μια οθόνη παρακολούθησης υγρασίας θερμοκρασίας πολύ χαμηλής ισχύος καλύπτει χρησιμοποιώντας μια μονάδα Redbear Nano V2 και έναν αισθητήρα θερμοκρασίας / υγρασίας Si7021 για την κατασκευή μπαταρίας / ηλιακής οθόνης χαμηλής ισχύος. Καλύπτει επίσης την τροποποίηση της βιβλιοθήκης Si7021 σε χαμηλή ισχύ, τη ρύθμιση της συσκευής BLE για μείωση της τρέχουσας κατανάλωσης σε <29uA και τον σχεδιασμό μιας προσαρμοσμένης οθόνης θερμοκρασίας/υγρασίας για το κινητό σας.

Μέρος 3 - Μια αντικατάσταση Redbear Nano V2, αυτή, καλύπτει τη χρήση άλλων μονάδων που βασίζονται σε nRF52 αντί του Nano V2. Καλύπτει την επιλογή εξαρτημάτων τροφοδοσίας, την κατασκευή, την αφαίρεση της προστασίας προγραμματισμού τσιπ nRF52, τη χρήση καρφιτσών NFC ως κανονικού GPIO και τον καθορισμό μιας νέας πλακέτας nRF52 στο Arduino.

Αυτό το διδάξιμο είναι μια πρακτική εφαρμογή του Μέρους 1 Δημιουργία συσκευών BLE πολύ χαμηλής ισχύος που διευκολύνονται με το Arduino κατασκευάζοντας μια οθόνη BLE θερμοκρασίας και υγρασίας πολύ χαμηλής ισχύος χρησιμοποιώντας έναν πίνακα SKYLAB SBK369 ως αντικατάσταση Nano V2. Αυτό το σεμινάριο καλύπτει τον τρόπο δημιουργίας ενός νέου ορισμού του πίνακα και πώς να αφαιρέσετε το προστατευτικό προγραμματισμού nRF52 για να επιτρέψετε τον επαναπρογραμματισμό του. Αυτό το σεμινάριο χρησιμοποιεί το ίδιο σκίτσο με το Μέρος 2 με τις ίδιες συντονισμένες παραμέτρους BLE για χαμηλή κατανάλωση ενέργειας και μπορεί να τροφοδοτείται από μπαταρία battery μπαταρία + ηλιακό ή ηλιακό μόνο. Ο συντονισμός των παραμέτρων BLE για χαμηλή ισχύ καλύφθηκε στο Μέρος 2

Rev 3 του lp_BLE_TempHumidity απεικονίζει τα δεδομένα σε σχέση με την ημερομηνία και την ώρα χρησιμοποιώντας μόνο το Arduino millis (). Δείτε την ημερομηνία και ώρα Arduino χρησιμοποιώντας millis () και pfodApp χρησιμοποιώντας την πιο πρόσφατη έκδοση του pfodApp (V3.0.362+).

Rev 4 του pfod_lp_nrf52.zip υποστηρίζει επίσης τη μονάδα GT832E_01 και αυτό το σεμινάριο καλύπτει τη χρήση των ακίδων NFC nRF52 ως τυπικών GPIO.

Η οθόνη που κατασκευάζεται εδώ θα λειτουργεί για χρόνια με Coin Cell ή 2 x μπαταρίες AAA, ακόμη περισσότερο με ηλιακή υποβοήθηση. Εκτός από την εμφάνιση της τρέχουσας θερμοκρασίας και υγρασίας, η οθόνη αποθηκεύει τις τελευταίες 36 ώρες των 10 λεπτών αναγνώσεις και τις τελευταίες 10 ημέρες ωριαίων ενδείξεων. Αυτά μπορούν να γραφτούν στο κινητό σας Android και οι τιμές να αποθηκευτούν σε ένα αρχείο καταγραφής. Δεν απαιτείται προγραμματισμός Android, το pfodApp χειρίζεται όλα αυτά. Η οθόνη και η γραφική παράσταση Android ελέγχονται πλήρως από το σκίτσο του Arduino, ώστε να μπορείτε να το προσαρμόσετε όπως απαιτείται.

Το μέρος 2 χρησιμοποίησε έναν πίνακα Redbear Nano V2 για το στοιχείο nRF52832 BLE. Αυτό το έργο αντικαθιστά αυτό με έναν φθηνότερο πίνακα SKYLAB SKB369. Όπως και στο Μέρος 2, ένας πίνακας διαρροής Sparkfun Si7021 χρησιμοποιείται για τον αισθητήρα θερμοκρασίας / υγρασίας. Μια τροποποιημένη βιβλιοθήκη χαμηλής ισχύος χρησιμοποιείται με το Si7021.

Βήμα 1: Γιατί αντικατάσταση Nano V2;

θ) Το Nano V2 ήταν εκτός παραγωγής για αρκετούς μήνες και δεν φαίνεται να ταιριάζει στη σειρά Particle.io, οπότε δεν είναι σαφές για πόσο καιρό θα είναι διαθέσιμο.

ii) Το Nano V2 είναι ακριβότερο. Ωστόσο, έχει επίσης επιπλέον δυνατότητες. Δες παρακάτω.

iii) Το Nano V2 διαθέτει εξαρτήματα και στις δύο πλευρές, γεγονός που του δίνει υψηλότερο προφίλ και καθιστά πιο δύσκολη την τοποθέτηση.

iv) Το Nano V2 έχει περιορισμένους διαθέσιμους ακροδέκτες εισόδου/εξόδου και η χρήση D6 έως D10 απαιτεί αγωγούς πτήσης.

Αν και ο πίνακας Nano V2 είναι πιο ακριβός από τον πίνακα SKYLAB SKB369, ~ US17 έναντι ~ US5, ο Nano V2 έχει περισσότερες δυνατότητες. Το Nano V2 περιλαμβάνει ρυθμιστή 3.3V και πυκνωτές τροφοδοσίας, επιπλέον εξαρτήματα για τη χρήση της επιλογής μετατροπέα nRF52 DC/DC, κεραία τσιπ και υποδοχή κεραίας uFL SMT.

Μια άλλη εναλλακτική λύση είναι η μονάδα GT832E_01 που χρησιμοποιείται από το www.homesmartmesh.com. Rev 4 του pfod_lp_nrf52.zip υποστηρίζει επίσης τον προγραμματισμό της μονάδας GT832E_01. Το SKYLAB SKB369 και το GT832E_01 είναι διαθέσιμα από τη διεύθυνση

Το Redbear (Particle.io) διαθέτει επίσης γυμνή μονάδα χωρίς ρυθμιστή 3V3, εξαρτήματα DC/DC ή κρύσταλλα 32Khz.

Περίγραμμα

Αυτό το έργο έχει 4 σχετικά ανεξάρτητα μέρη:-

Επιλογή και κατασκευή εξαρτήματος Αφαίρεση της σημαίας προστασίας κωδικοποίησης nRF52 και προγραμματισμός του σκίτσου Δημιουργία νέου ορισμού πίνακα Arduino nRF52 Επαναδιαμόρφωση καρφιτσών NRF52 NFC ως GPIO

Βήμα 2: Επιλογή και κατασκευή εξαρτημάτων

Επιλογή εξαρτήματος

Εκτός από τα εξαρτήματα nRF52832 και Si7021 που επιλέγονται στο Μέρος 2, αυτό το έργο προσθέτει ρυθμιστή 3.3V και πυκνωτές τροφοδοσίας.

Το στοιχείο Ρυθμιστής τάσης

Ο ρυθμιστής που χρησιμοποιείται εδώ είναι το MC87LC33-NRT. Μπορεί να χειριστεί έως και 12V εισόδους και έχει ρεύμα ηρεμίας <3,6uA, συνήθως 1,1uA. Ο Nano V2 που χρησιμοποιείται ρυθμιστής TLV704 έχει ελαφρώς υψηλότερο αθόρυβο ρεύμα, συνήθως 3,4uA και μπορεί να χειριστεί υψηλότερες τάσεις εισόδου, έως 24V. Το MC87LC33-NRT επιλέχθηκε αντ 'αυτού επειδή το φύλλο δεδομένων του καθορίζει τον τρόπο με τον οποίο ανταποκρίνεται καθώς η τάση εισόδου πέφτει κάτω από τα 3.3V, ενώ όπως δεν συμβαίνει με το φύλλο δεδομένων TLV704.

Το TLV704 καθορίζει μια τάση εισόδου 2,5V ελάχιστη και δεν είναι σαφές από το φύλλο δεδομένων τι θα συμβεί κάτω από αυτό. Το nRF52832 θα μειωθεί στα 1.7V και το Si7023 θα μειωθεί στα 1.9V. Το MC87LC33-NRT από την άλλη καθορίζει διαφορές τάσης εισόδου/εξόδου έως 0V για χαμηλά ρεύματα (Σχήμα 18 του φύλλου δεδομένων). Έτσι, δεδομένης της επιλογής των εξαρτημάτων, επιλέχθηκε το MC87LC33-NRT επειδή έχει την καθορισμένη απόδοση.

Πυκνωτές εφοδιασμού

Ο ρυθμιστής MC87LC33-NRT χρειάζεται μερικούς πυκνωτές τροφοδοσίας για σταθερότητα και απόκριση. Συνιστάται ένας πυκνωτής εξόδου> 0.1uF στο φύλλο δεδομένων. Το SKYLAB SBK369 καθορίζει επίσης πυκνωτές 10uF/0.1uF στην παροχή κοντά στην πλακέτα. Μεγαλύτεροι πυκνωτές βοηθούν στην παροχή των αιχμών του ρεύματος nRF52 TX. Εδώ χρησιμοποιήθηκαν κεραμικοί πυκνωτές 4 x 22uF 25V και 3 x 0.1uF 50V. Ένας πυκνωτής 22uF και ένας 0.1uF τοποθετήθηκε κοντά στο SKYLAB SBK369, ένας 0.1uF τοποθετήθηκε κοντά στην έξοδο του MC87LC33-NRT για να διασφαλιστεί η σταθερότητα και ένας 22uF και 0.1uF τοποθετήθηκαν στην είσοδο του MC87LC33-NRT και a επιπλέον 2 x 22uF πυκνωτές όπου συγκολλήθηκαν στους πείρους Vin/GND ως δεξαμενή περαιτέρω ρεύματος. Για σύγκριση, ο πίνακας NanoV2 έχει 22uF / 0.1uF στην είσοδο του ρυθμιστή TLV704 και 0.1uF στην έξοδο.

Οι επιπλέον πυκνωτές δεξαμενής ρεύματος εγκαταστάθηκαν στην είσοδο του ρυθμιστή 3,3V έτσι ώστε να φορτίζουν σε υψηλότερη τάση όταν λειτουργούν με ηλιακά στοιχεία. Η φόρτιση σε υψηλότερη τάση ισοδυναμεί με αποθήκευση περισσότερου ρεύματος για την παροχή των αιχμών Tx.

Οι κεραμικοί πυκνωτές X5R χρησιμοποιούνται επειδή έχουν χαμηλή αντίσταση σειράς και χαμηλό ρεύμα διαρροής. Η αντίσταση είναι τυπικά 100, 000MΩ ή 1000MΩ - µF που είναι ποτέ μικρότερη. Έτσι για 22uF έχουμε 22000MΩ, δηλαδή διαρροή 0,15nA στα 3,3V ή 0,6nA για τους τέσσερις πυκνωτές 22uF. Αυτό είναι αμελητέο. Για σύγκριση Χαμηλού ESR, Ηλεκτρολυτικοί πυκνωτές χαμηλής διαρροής Panasonic έχουν ρεύματα διαρροής <0,01CV. Έτσι για έναν πυκνωτή 22uF 16V η διαρροή είναι <10uA. Σημείωση: Αυτή είναι η διαρροή στην ονομαστική τάση, 16V σε αυτή την περίπτωση. Η διαρροή είναι χαμηλότερη σε χαμηλότερες τάσεις, δηλαδή <2,2uA στα 3,3V.

Λίστα μερών

Κατά προσέγγιση κόστος ανά μονάδα τον Δεκέμβριο του 2018, ~ 61 $, χωρίς τα μεταφορικά και τον προγραμματιστή από το Μέρος 1

  • SKYLAB SKB369 ~ 5 $ US π.χ. Aliexpress
  • Sparkfun Si7021 breakout board 8 ~ US $
  • 2 x 53mm x 30mm 0.15W 5V ηλιακά κύτταρα π.χ. Overfly 1. 1,10 US $
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip 25 25 US $ για 5 έκπτωση www.pcbcart.com
  • 1 x ρυθμιστής MC78LC33 3.3V, π.χ. Digikey MC78LC33NTRGOSCT-ND ~ 1 US $
  • 2 x 0.1uF 50V κεραμικό C1608X5R1H104K080A π.χ. Digikey 445-7456-1-ND 0.3 0,3 US $
  • 4 x 22uF 16V κεραμικό GRM21BR61C226ME44L π.χ. Digikey 490-10747-1-ND ~ 2 $
  • 1 x BAT54CW, π.χ. Digikey 497-12749-1-ND 0.5 0,5 δολάρια ΗΠΑ
  • 1 x 470R 0.5W 1% αντίσταση π.χ. Digikey 541-470TCT-ND 0. 0,25 US $
  • 1 x 10V 1W zener SMAZ10-13-F π.χ. Digikey SMAZ10-FDICT-ND 0.5 0,5 δολάρια ΗΠΑ
  • Βίδες από νάιλον 3mm x 12mm, π.χ. Jaycar HP0140 ~ 3 AUD $
  • 3mm x 12mm νάιλον περικόχλια, π.χ. Jaycar HP0146 ~ 3 AUD $
  • Scotch Permanent Mounting Tape Cat 4010 π.χ. από την Amazon 6. 6,6 US $
  • Θήκη μπαταρίας CR2032, π.χ. HU2032-LF 1.5 1,5 US $
  • Μπαταρία CR2032 ~ 1 US $
  • Φύλλο Perspex, 3,5mm και 8mm
  • pfodApp ~ 10 US $
  • Solder Paste π.χ. Jaycar NS-3046 ~ 13 AUD $

Βήμα 3: Κατασκευή

Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή

Το έργο είναι κατασκευασμένο σε ένα μικρό PCB. Το PCB κατασκευάστηκε από την pcbcart.com από αυτά τα αρχεία Gerber, SKYLAB_TempHumiditySensor_R2.zip Το PCB μιμείται την ακίδα Nano V2 και είναι αρκετά γενικής χρήσης για να χρησιμοποιηθεί για άλλα έργα BLE.

Αυτή είναι η σχηματική (έκδοση pdf)

Συγκολλήστε πρώτα τα εξαρτήματα SMD και στη συνέχεια τοποθετήστε την πλακέτα SKYLAB SKB369

Σχεδόν όλα τα εξαρτήματα είναι συσκευές επιφανειακής τοποθέτησης (SMD). Οι πυκνωτές και τα IC μπορεί να είναι δύσκολο να κολληθούν με το χέρι. Η προτεινόμενη μέθοδος είναι να κρατάτε το PCB σε ένα κατώφλι και να εφαρμόζετε μια μικρή ποσότητα πάστας συγκόλλησης στα τακάκια και να τοποθετείτε τα εξαρτήματα SMD, εκτός από την πλακέτα SKB369 στο PCB. Στη συνέχεια, χρησιμοποιώντας ένα πιστόλι θερμότητας, εφαρμόστε θερμότητα στο κάτω μέρος του PCB μέχρι να λιώσει η κόλλα συγκόλλησης και, στη συνέχεια, κάντε ένα γρήγορο πέρασμα από το πάνω μέρος της σανίδας προσέχοντας να μην φυσήξουν τα εξαρτήματα. Τέλος, αγγίξτε τα εξαρτήματα με ένα μικρό συγκολλητικό σίδερο. Να είστε προσεκτικοί με τους πυκνωτές και την αντίσταση καθώς είναι εύκολο να λιώσετε και τα δύο άκρα και να χαλαρώσετε το εξάρτημα ενώ κολλάτε το ένα άκρο.

Αυτή η αναθεώρηση προσθέτει επιπλέον κεραμικούς πυκνωτές 22uF 16V. Αυτοί οι επιπλέον πυκνωτές μειώνουν τις αιχμές που λαμβάνονται από την μπαταρία και επίσης μειώνουν τις πτώσεις τάσης όταν τροφοδοτούνται από τις ηλιακές κυψέλες. Όσο η τάση από τα ηλιακά κύτταρα παραμένει πάνω από την τάση της μπαταρίας, τότε δεν εξέρχεται ρεύμα από την μπαταρία.

Αφού τοποθετηθούν τα εξαρτήματα SMD, μπορείτε να κολλήσετε στην πλακέτα SKYLAB SKB369. Υπάρχουν δύο οπές σημείων δοκιμής στη μία πλευρά των καρτελών SKB369. Χρησιμοποιήστε δύο καρφίτσες σε μια βάση από χαρτόνι για να τοποθετήσετε τον πίνακα SKB369 και ευθυγραμμίστε προσεκτικά τους πείρους. (Δείτε το παράδειγμα της παραπάνω φωτογραφίας χρησιμοποιώντας το PCB Revision 1) Στη συνέχεια συγκολλήστε έναν πείρο της αντίθετης πλευράς για να κρατήσετε τη σανίδα στη θέση της πριν κολλήσετε τις άλλες καρφίτσες.

Σημειώστε το καλώδιο σύνδεσης Gnd από το CLK στο GND στο τελικό τμήμα. Αυτό είναι εγκατεστημένο ΜΕΤΑ τον προγραμματισμό για να αποτρέψει τον θόρυβο στην είσοδο CLK από το να ενεργοποιήσει το τσιπ nRF52 σε κατάσταση υψηλής έντασης εντοπισμού σφαλμάτων

Θήκη τοποθέτησης

Η θήκη στερέωσης κατασκευάστηκε από δύο τεμάχια perspex, 110mm x 35mm, πάχους 3mm. Το κομμάτι 3,5 χιλιοστών κάτω από τις ηλιακές κυψέλες χτυπήθηκε για να πάρει τις νάιλον βίδες των 3 χιλιοστών. Αυτή η αναθεωρημένη κατασκευή είναι απλουστευτική στη συνέχεια Rev 1 και βελτιώνει τη ροή αέρα γύρω από τον αισθητήρα. Οι πρόσθετες οπές σε κάθε άκρο είναι για τοποθέτηση, χρησιμοποιώντας για παράδειγμα καλώδια.

Βήμα 4: Αφαίρεση της σημαίας προστασίας κωδικοποίησης NRF52

Αφαίρεση της σημαίας προστασίας κωδικοποίησης NRF52
Αφαίρεση της σημαίας προστασίας κωδικοποίησης NRF52
Αφαίρεση της σημαίας προστασίας κωδικοποίησης NRF52
Αφαίρεση της σημαίας προστασίας κωδικοποίησης NRF52
Αφαίρεση της σημαίας προστασίας κωδικοποίησης NRF52
Αφαίρεση της σημαίας προστασίας κωδικοποίησης NRF52

Συνδέστε την πλακέτα θερμοκρασίας/υγρασίας στον προγραμματιστή που περιγράφεται στο μέρος 1, όπως φαίνεται παραπάνω.

Με τις ηλιακές κυψέλες και τις μπαταρίες αποσυνδεδεμένες, το Vin και το Gnd συνδέονται με το Vdd και Gnd του προγραμματιστή (τα καλώδια του κίτρινου και του πράσινου) και τα SWCLK και SWDIO συνδέονται με το Clk και το SIO της πλακέτας κεφαλίδας του προγραμματιστή (τα καλώδια White and Grey)

Αφαίρεση προστασίας προγράμματος nRF52

Από τη σελίδα Nordic Semi - Debug and Trace DAP - Debug Access Port. Ένας εξωτερικός εντοπιστής σφαλμάτων μπορεί να έχει πρόσβαση στη συσκευή μέσω του DAP. Το DAP εφαρμόζει μια τυπική θύρα εντοπισμού σφαλμάτων ARM® CoreSight ™ Serial Wire Debug (SW-DP). Το SW-DP υλοποιεί το πρωτόκολλο Serial Wire Debug (SWD) που είναι μια σειριακή διεπαφή δύο ακίδων, SWDCLK και SWDIO

Σημαντικό: Η γραμμή SWDIO διαθέτει εσωτερική αντίσταση έλξης. Η γραμμή SWDCLK διαθέτει εσωτερική αντίσταση αναδίπλωσης.

CTRL -AP - Θύρα πρόσβασης ελέγχου. Η θύρα πρόσβασης ελέγχου (CTRL-AP) είναι μια προσαρμοσμένη θύρα πρόσβασης που επιτρέπει τον έλεγχο της συσκευής ακόμη και αν οι άλλες θύρες πρόσβασης στο DAP απενεργοποιούνται από την προστασία θύρας πρόσβασης. Η προστασία θύρας πρόσβασης αποκλείει τον εντοπισμό σφαλμάτων από την πρόσβαση ανάγνωσης και εγγραφής σε όλους τους καταχωρητές CPU και τις διευθύνσεις που αντιστοιχίζονται στη μνήμη. Απενεργοποιήστε την προστασία θύρας πρόσβασης. Η προστασία θύρας πρόσβασης μπορεί να απενεργοποιηθεί μόνο με την έκδοση μιας εντολής ERASEALL μέσω CTRL-AP. Αυτή η εντολή θα διαγράψει το Flash, το UICR και τη μνήμη RAM.

Επιλέξτε CMSIS-DAP ως προγραμματιστή για το Particle's Debugger και επιλέξτε nRF5 Flash SoftDevice

Εάν το φλας λειτουργεί, τότε είναι εντάξει, αλλά συχνά οι μονάδες θα έχουν προστατευτεί από τον επαναπρογραμματισμό και θα λάβετε αυτήν την έξοδο σφάλματος στο παράθυρο Arduino

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Με άδεια GNU GPL v2 Για αναφορές σφαλμάτων, διαβάστε https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Πληροφορίες: μόνο μία επιλογή μεταφοράς. autoselect 'swd' speed adapter: 10000 kHz cortex_m reset_config sysresetreq Πληροφορίες: CMSIS-DAP: SWD Υποστηριζόμενες πληροφορίες: CMSIS-DAP: Interface Initialised (SWD) Info: CMSIS-DAP: FW Version = 1.10 Info: SWCLK/TCK = TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Πληροφορίες: CMSIS-DAP: Διασύνδεση έτοιμη Πληροφορίες: μείωση αιτήματος ταχύτητας: 10000kHz έως 5000kHz μέγιστες πληροφορίες: ταχύτητα ρολογιού 10000 kHz Πληροφορίες: SWD IDCODE 0x2ba01477 Σφάλμα: Δεν βρέθηκε MEM -AP για τον έλεγχο του πυρήνα Σφάλμα: Ο στόχος δεν έχει εξεταστεί ακόμα Σφάλμα κατά το αναβοσβήσιμο του SoftDevice.

Σε αυτήν την περίπτωση, πρέπει να ορίσετε τον καταχωρητή εντολών ERASEALL στο nRF52 για να καθαρίσετε τη μνήμη και να προγραμματίσετε ξανά τη συσκευή. Η έκδοση του openOCD που παρέχεται με sandeepmistry nRF52 δεν περιλαμβάνει την εντολή apreg που απαιτείται για την εγγραφή στον καταχωρητή εντολών ERASEALL, οπότε πρέπει να εγκαταστήσετε μια μεταγενέστερη έκδοση.

Εγκαταστήστε την έκδοση OpenOCD OpenOCD-20181130 ή νεότερη έκδοση. Η προ-μεταγλωττισμένη έκδοση των Windows είναι διαθέσιμη από τη διεύθυνση https://gnutoolchains.com/arm-eabi/openocd/ Ο πιο πρόσφατος κωδικός είναι διαθέσιμος στη διεύθυνση

Ανοίξτε μια γραμμή εντολών και αλλάξτε dir στον κατάλογο εγκατάστασης OpenOCD και εισαγάγετε την εντολή

bin / openocd.exe -d2 -f interface/cmsis -dap.cfg -f target/nrf52.cfg

Η απάντηση είναι

Άνοιγμα εντοπισμού σφαλμάτων On-Chip 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] Άδεια χρήσης GNU GPL v2 Για αναφορές σφαλμάτων, διαβάστε https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Πληροφορίες: αυτόματη επιλογή πρώτης διαθέσιμης μεταφοράς συνεδρίας "swd". Για να παρακάμψετε χρησιμοποιήστε την επιλογή "μεταφορά επιλογής". ταχύτητα προσαρμογέα: 1000 kHz cortex_m reset_config sysresetreq Πληροφορίες: Ακρόαση στη θύρα 6666 για συνδέσεις tcl Πληροφορίες: Ακρόαση στη θύρα 4444 για συνδέσεις telnet Πληροφορίες: CMSIS-DAP: SWD Υποστηριζόμενες πληροφορίες: CMSIS-DAP: FW Version = 1.10 Πληροφορίες: CMSIS-DAP: Αρχική διεπαφή (SWD) Πληροφορίες: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Πληροφορίες: CMSIS-DAP: Έτοιμη διεπαφή Πληροφορίες: ταχύτητα ρολογιού 1000 kHz Πληροφορίες: SWD DPIDR 0x2ba01477 Σφάλμα: Δεν ήταν δυνατή η εύρεση του MEM-AP για τον έλεγχο του πυρήνα Πληροφορίες: Ακρόαση στη θύρα 3333 για συνδέσεις gdb

Στη συνέχεια, ανοίξτε ένα παράθυρο τερματικού π.χ. TeraTerm (Windows) ή CoolTerm (Mac) και συνδεθείτε στη θύρα 127.0.0.1 4444

Το παράθυρο telnet θα εμφανίσει a> και η γραμμή εντολών θα εμφανίσει πληροφορίες: αποδοχή σύνδεσης "telnet" στο tcp/4444

Στο παράθυρο telnet (δηλ. TeraTerm) typenrf52.dap apreg 1 0x04αυτό επιστρέφει 0x00000000 που δείχνει το τσιπ προστατευμένο. Στη συνέχεια typenrf52.dap apreg 1 0x04 0x01και thennrf52.dap apreg 1 0x04αυτή επιστρέφει 0x00000001 δείχνοντας το τσιπ είναι τώρα ρυθμισμένο σε ERASEALL στην επόμενη επανεκκίνηση.

Κλείστε τη σύνδεση telnet και χρησιμοποιήστε επίσης Ctrl-C για έξοδο από το πρόγραμμα openOCD στη γραμμή εντολών και, στη συνέχεια, ενεργοποιήστε τον κύκλο λειτουργίας της μονάδας nRF52 και θα είναι τώρα έτοιμο για προγραμματισμό.

Τώρα προσπαθήστε ξανά να αναβοσβήνει η μαλακή συσκευή.

Τώρα μπορείτε να προγραμματίσετε τη μονάδα nRF52 από το Arduino.

Βήμα 5: Προγραμματισμός του SKYLAB SKB369

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

Κλείστε το Arduino και εγκαταστήστε ξανά την τελευταία έκδοση της υποστήριξης pfod_lp_nrf52, ακολουθώντας τις οδηγίες εγκατάστασης υποστήριξης υλικού pfod_lp_nrf52. Το πιο πρόσφατο pfod_lp_nrf52 περιλαμβάνει τον πίνακα αντικατάστασης SKYLAB SKB369 Nano2. Επιλέξτε αυτό ως πίνακα και, στη συνέχεια, μπορείτε να το προγραμματίσετε με την Αναθεώρηση 3 του lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, όπως περιγράφεται στο Μέρος 2.

Εάν ο προγραμματισμός αποτύχει. Κλείστε όλα τα παράθυρα Arduino, αφαιρέστε τα καλώδια USB, επανεκκινήστε το Arduino και συνδέστε ξανά το καλώδιο USB του προγραμματιστή και συνδέστε ξανά την τροφοδοσία USB της μονάδας nRF52 και δοκιμάστε ξανά.

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

Το αρχείο καταγραφής περιέχει επίσης τα επιπλέον δεδομένα που είναι απαραίτητα για την εκ νέου δημιουργία των γραφημάτων ημερομηνίας και ώρας σε ένα υπολογιστικό φύλλο. Για λεπτομέρειες, ανατρέξτε στην ενότητα Ημερομηνία και ώρα Arduino χρησιμοποιώντας millis () και pfodApp

Βήμα 6: Δημιουργία νέου ορισμού πίνακα Arduino NRF52

Δημιουργία νέου ορισμού πίνακα Arduino NRF52
Δημιουργία νέου ορισμού πίνακα Arduino NRF52
Δημιουργία νέου ορισμού πίνακα Arduino NRF52
Δημιουργία νέου ορισμού πίνακα Arduino NRF52
Δημιουργία νέου ορισμού πίνακα Arduino NRF52
Δημιουργία νέου ορισμού πίνακα Arduino NRF52
Δημιουργία νέου ορισμού πίνακα Arduino NRF52
Δημιουργία νέου ορισμού πίνακα Arduino NRF52

Για να υποστηρίξετε έναν νέο πίνακα nRF52, πρέπει α) να προσθέσετε έναν νέο κατάλογο στον κατάλογο παραλλαγών με τα αρχεία του πίνακα και β) να επεξεργαστείτε το αρχείο boards.txt για να προσθέσετε τον νέο πίνακα στο Arduino.

Προσθήκη νέας παραλλαγής πλακέτας nRF52

Όπως περιγράφεται στο Μέρος 1, Εγκατάσταση της υποστήριξης υλικού pfod_lp_nrf52, βρείτε τον υποκατάλογο υλικού του πακέτου sandeepmistry που έχετε ενημερώσει με την υποστήριξη pfod_lp_nrf52. Ανοίξτε τον υποκατάλογο / hardware / nRF5 / 0.6.0 / variants και δημιουργήστε έναν νέο κατάλογο για τη νέα πλακέτα σας, π.χ. variant.cpp και pins_arduino.h Μπορείτε να τα αντιγράψετε από τους άλλους καταλόγους παραλλαγών του πίνακα. Για την αντικατάσταση SKYLAB_SKB369_Nano2, αντέγραψα αρχικά τα αρχεία από την παραλλαγή RedBear_BLENano2.

pins_arduino.h αρχείο

Το αρχείο pins_arduino.h δεν χρειάζεται να αλλάξει. Περιλαμβάνει απλώς το αρχείο variant.h

αρχείο variant.h

Επεξεργαστείτε το αρχείο variant.h για να καθορίσετε τον συνολικό αριθμό καρφιτσών που θα έχει ο πίνακάς σας, PINS_COUNT

ΣΗΜΕΙΩΣΗ: Στο πακέτο sandeepmistry, οι ρυθμίσεις NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS και NUM_ANALOG_OUTPUTS αγνοούνται

Εάν ο πίνακας σας καθιστά διαθέσιμες περισσότερες ή λιγότερες αναλογικές ακίδες, ενημερώστε την ενότητα / * Analog Pins * / του αρχείου variant.h.

ΣΗΜΕΙΩΣΗ: Για τους πίνακες NanoV2 και SKYLAB, οι αναλογικές ακίδες αντιστοιχίζονται στις ψηφιακές ακίδες A0 == D0 κ.λπ

Αυτό δεν είναι απαραίτητο. Μπορείτε να αντιστοιχίσετε τις Αναλογικές Εισόδους σε οποιαδήποτε βολική καρφίτσα Arduino. Ανατρέξτε στη συνέχεια σε μπλε/variant.h και μπλε/variant.cpp αρχεία.

Το τσιπ nRF52832 έχει 8 αναλογικές ακίδες εισόδου, αλλά ο πίνακας αντικατάστασης SKYLAB_SKB369_Nano2 καθιστά διαθέσιμα μόνο 6 από αυτά για να ταιριάζει με το Nano2.

Όλοι οι αριθμοί pin, εκτός από το RESET_PIN, στο αρχείο variant.h είναι αριθμοί pin Arduino. Αυτό σημαίνει #define PIN_A0 (0) σημαίνει ότι το D0 στο σκίτσο του arduino είναι το ίδιο pin με το A0. Το RESET_PIN είναι η εξαίρεση. Αυτός ο αριθμός είναι ο αριθμός καρφιτσών nRF52823 και το 21 είναι η μόνη έγκυρη επιλογή. Ωστόσο, η υποστήριξη pfod_lp_nrf52 δεν ενεργοποιεί την ακίδα επαναφοράς στο nRF52832

variant.cpp αρχείο

Υπάρχει μόνο μία καταχώριση στο αρχείο variant.cpp, ο πίνακας g_ADigitalPinMap που αντιστοιχίζει αριθμούς pin Arduino στα nRF52832 chip P0.. pins

ΣΗΜΕΙΩΣΗ: Στους πίνακες NanoV2 και SKYLAB, οι αναλογικές ακίδες Arduino A0, A1 … είναι οι ίδιες με τις ψηφιακές ακίδες Arduino D0, D1… έτσι οι πρώτες καταχωρίσεις στο g_ADigitalPinMap ΠΡΕΠΕΙ να αντιστοιχούν σε αριθμούς ακίδων AINx στο τσιπ nRF52832

Για τις Αναλογικές Εισόδους που διαθέτει ο πίνακάς σας, αυτές οι καταχωρήσεις στο g_ADigitalPinMap πρέπει να αντιστοιχούν τους αριθμούς καρφιτσών nRF52832 AIN0, AIN1, AIN2 κ.λπ. δηλ. το AIN0 είναι το pin chip P0.02, το AIN1 είναι το pin chip P0.03 κ.λπ. βλέπε παραπάνω τη διάταξη nRF52832 pin.

Χρησιμοποιήστε (uint32_t) -1 για μη έγκυρες αντιστοιχίσεις. Για παράδειγμα, ο πίνακας αντικατάστασης SKYLAB_SKB369_Nano2 δεν έχει ενσωματωμένο LED, D13, οπότε η θέση του αντιστοιχεί στο (uint32_t) -1

Σε pfod_lp_nrf52.zip οι υποκατάλογοι των παραλλαγών Redbear NanoV2, SKYLAB SKB369 και GT832E_01 έχουν εικόνες που δείχνουν τις αντιστοιχίσεις που έχουν ρυθμιστεί από το variant.cpp. (Δείτε τις παραπάνω εικόνες)

Στην περίπτωση του SKYLAB SKB369, υπάρχουν πολλές καρφίτσες για να διαλέξετε. Μόνο αρκετά χαρτογραφούνται για να ταιριάζουν με το NanoV2. Στην περίπτωση του GT832E_01, όλες οι διαθέσιμες ακίδες πρέπει να αντιστοιχιστούν. Ακόμα και τότε υπάρχουν μόνο τρεις (3) αναλογικές είσοδοι αντί για τις έξι (6) στο NanoV2. Εκτός από αυτό, οι δύο ακίδες NFC, P0.09 και P0.10, πρέπει να ρυθμιστούν εκ νέου ως GPIO. Δείτε την αναδιαμόρφωση των ακίδων NRF52 NFC ως GPIO παρακάτω.

Ενημέρωση του αρχείου boards.txt

Εδώ είναι η καταχώρηση SKYLAB_SKB369_Nano2replacement στο αρχείο boards.txt.

## SKYLAB_SKB369 Nano2 ReplacementSKYLAB_SKB369_NANO2_REPLACEMENT.name =*SKYLAB SKB369 Nano2 Replacement

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol = cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target = nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.maload_Maked_Paked_EMBUMB_20BemBook_Semed_Paked_Makime_max SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu = φλοιός-m4

SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16000000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi = hard -mfpu = fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript = nrf52_xxaa.ld

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags = -DUSE_LFXO

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132 = S132

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion = 2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.upload.maximum_size = 409600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript = armgcc_s132_nrf52832_xxaa.ld

board.txt Ρυθμίσεις

Σχόλια - οι γραμμές που ξεκινούν με # είναι σχόλια.

Πρόθεμα - κάθε πίνακας χρειάζεται ένα μοναδικό πρόθεμα για να προσδιορίσει τις τιμές του. Εδώ το πρόθεμα είναιSKYLAB_SKB369_NANO2_REPLACEMENT.

Όνομα - Η γραμμή SKYLAB_SKB369_NANO2_REPLACEMENT.name καθορίζει το όνομα αυτού του πίνακα που θα εμφανίζεται στο μενού της πλακέτας του Arduino.

Εργαλείο μεταφόρτωσης - Το μπλοκ SKYLAB_SKB369_NANO2_REPLACEMENT.upload καθορίζει ποιο εργαλείο θα χρησιμοποιηθεί για μεταφόρτωση. Εάν χρησιμοποιείτε το πρόγραμμα εντοπισμού σφαλμάτων σωματιδίων, χρησιμοποιήστε το πρωτόκολλο = cmsis-dap όπως φαίνεται παραπάνω.

Bootloader - Αυτή η γραμμή είναι η ίδια για όλους τους πίνακες σε αυτόν τον πίνακα.txt

Δημιουργία - Μόνο δύο γραμμές πρέπει να ενημερώνονται σε αυτό το μπλοκ. Η γραμμή SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant καθορίζει το όνομα του καταλόγου αυτού του πίνακα στον υποκατάλογο παραλλαγής. Ο πίνακας SKYLAB_SKB369_NANO2_REPLACEMENT.build.build είναι η τιμή που επισυνάπτεται στο ARDUINO_ και στη συνέχεια ορίζεται κατά τη σύνταξη του κώδικα. π.χ. -DARDUINO_SKYLAB_SKB369_Nano2εγκατάσταση Αυτό σας επιτρέπει να ενεργοποιήσετε/απενεργοποιήσετε τμήματα του κώδικα για συγκεκριμένους πίνακες.

Χαμηλό ρολόι συχνότητας - Αυτή η γραμμή, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, καθορίζει την πηγή του ρολογιού χαμηλής συχνότητας, που χρησιμοποιείται για το χρονόμετρο lp_timer. Υπάρχουν τρεις επιλογές, -DUSE_LFXO, -DUSE_LFRC και -DUSE_LFSYNT. Η καλύτερη επιλογή είναι -DUSE_LFXO, εάν η πλακέτα διαθέτει εξωτερικό κρύσταλλο 32Khz. Εάν όχι, χρησιμοποιήστε το -DUSE_LFRC, το οποίο χρησιμοποιεί έναν εσωτερικό ταλαντωτή RC και τραβά λίγο περισσότερο ρεύμα, ~ 10uA περισσότερο, και είναι πολύ λιγότερο φορές λιγότερο ακριβές. Μην χρησιμοποιείτε το -DUSE_LFSYNT καθώς αυτό διατηρεί το τσιπ συνεχώς σε λειτουργία με αποτέλεσμα την τρέχουσα κλήρωση mAs.

Softdevice - Το pfod_lp_nrf52 υποστηρίζει μόνο τσιπ nRF52 και softdevice s132, επομένως δεν χρειάζονται αλλαγές για αυτό το μπλοκ, εκτός από το πρόθεμα.

Αναδιαμόρφωση των ακίδων nRF52 NFC ως GPIO

Να είστε προεπιλεγμένοι στις ακίδες nRF52, τα P0.09 και P0.10 έχουν ρυθμιστεί για χρήση ως NFC και αναμένεται να είναι συνδεδεμένα σε μια κεραία NFC. Εάν πρέπει να τα χρησιμοποιήσετε ως καρφίτσες I/O γενικής χρήσης (GPIO), τότε πρέπει να προσθέσετε έναν ορισμό, -DCONFIG_NFCT_PINS_AS_GPIOS, στο… menu.softdevice.s132.build.extra_flags μεταγλώττισης ρυθμίσεων στο αρχείο boards.txt.

Για παράδειγμα pfod_lp_nrf52.zip, διαμορφώνει εκ νέου τις καρφίτσες GT832E_01 για χρήση ως I/O. Στην ενότητα GT832E_01 για αυτόν τον πίνακα, στο αρχείο boards.txt, έχει προστεθεί ο ακόλουθος ορισμός

GT832E_01.menu.softdevice.s132.build.extra_flags = -DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS

Το σενάριο σύνδεσης στο pfod_lp_nrf52.zip έχει επίσης τροποποιηθεί για να διατηρηθεί αυτή η ρύθμιση και δεν χρειάζεται αλλαγή.

Βήμα 7: Συμπέρασμα

Αυτό το σεμινάριο παρουσίασε μια αντικατάσταση για το Redbear NanoV2 χρησιμοποιώντας μια μονάδα SKYLAB SKB369. Χρησιμοποιήθηκε μια μπαταρία/ηλιακή ενέργεια Temperature Humidity Monitor ως παράδειγμα έργου BLE πολύ χαμηλής ισχύος στο Arduino για την ενότητα SKYLAB. Τροφοδοτήστε ρεύματα ~ 29uA όπου επιτυγχάνεται με τον συντονισμό των παραμέτρων σύνδεσης. Αυτό είχε ως αποτέλεσμα τη διάρκεια ζωής της μπαταρίας νομισμάτων CR2032 ~ 10 μήνες. Μεγαλύτερο για κυψέλες νομισμάτων και μπαταρίες υψηλότερης χωρητικότητας. Η προσθήκη δύο φθηνών ηλιακών κυττάρων επέκτεινε εύκολα τη διάρκεια ζωής της μπαταρίας κατά 50% ή περισσότερο. Ένα φωτεινό φως δωματίου ή ένας λαμπτήρας γραφείου είναι αρκετό για να τροφοδοτήσει την οθόνη από τα ηλιακά κύτταρα.

Αυτό το σεμινάριο κάλυψε επίσης την αφαίρεση της προστασίας τσιπ από ένα προ-προγραμματισμένο nRF52 και τον τρόπο ρύθμισης ενός νέου ορισμού πλακέτας που ταιριάζει με το δικό σας PCB/κύκλωμα

Δεν απαιτείται προγραμματισμός Android. Το pfodApp χειρίζεται όλα αυτά.

Συνιστάται: