Η κάρτα Tiny RTC I2C Modules αποδείχθηκε μια πολύ χρήσιμη συσκευή. Μόλις παρουσιάσω μια εικόνα με τη σύνδεση δύο μικροτσίπ με μια ταινία στο πινάκιο, γίνεται λίγο δύσκολη από τον αριθμό των αναξιόπιστων συνδέσεων. Οι μικροσκοπικές μονάδες RTC I2C είναι πολύ βολικές για χρήση με το τσιπ ρολογιού πραγματικού χρόνου ds1307Z με σειριακή διασύνδεση I2C, chip chip 24C32 με σειριακή διασύνδεση I2C, δυνατότητα εγκατάστασης αισθητήρα θερμοκρασίας ds18b20. Μπορείτε επίσης να πάρετε ακριβείς ορθογώνιους παλμούς από την 7η έξοδο του τσιπ ds1307Z, στον σύνδεσμο που φέρει τα γράμματα SQ. Στην πλακέτα κυκλωμάτων των μικροσκοπικών μονάδων RTC I2C, είναι δύσκολο να δείτε ότι ο έβδομος ακροδέκτης του τσιπ ds1307Z είναι συνδεδεμένος με τον έβδομο ακροδέκτη του συνδέσμου P1.
Tiny RTC I2C Modules Σχηματική πλακέτα:
Πριν αγοράσω, έψαξα για πληροφορίες στο Διαδίκτυο. Έμαθα ότι ο πίνακας έγινε για να λειτουργήσει με μια μπαταρία λιθίου, η οποία είναι δύσκολο να αγοραστεί. Οι αγοραστές της πλακέτας Tiny RTC I2C εγκατέστησαν μια μπαταρία λιθίου αντί της μπαταρίας και ο πίνακας δεν λειτούργησε σωστά. Ο μικροκυκλωτής καταναλώνει πολύ λίγη ενέργεια, οπότε η κάρτα μπορεί να χρησιμοποιηθεί με μπαταρία λιθίου. Για να το κάνετε αυτό, αφαιρέστε τα παρακάτω ραδιενεργά εξαρτήματα από την πλακέτα Tiny RTC I2C Modules: τη δίοδο D1, την αντίσταση R4 και τη συγκόλληση του βραχυκυκλώματος στη θέση του R6. Αφαιρέθηκα επίσης τον αντιστάτη R7, έχοντας εξοικειωθεί με το τυπικό κύκλωμα για την ενεργοποίηση του τσιπ ds1307.
Τυπικά κυκλώματα ds1307:
Μπορείτε να μάθετε περισσότερα σχετικά με την οριστικοποίηση της πλακέτας Tiny RTC I2C Modules από ένα βίντεο που έχει καταγραφεί και δημοσιευτεί στο δίκτυο από τον σύντροφο Alexei Bukreev.
Τεχνικό δελτίο στο τσιπ ds1307:
Προβολή ηλεκτρονικού αρχείου:
Προβολή ηλεκτρονικού αρχείου:
Έχω συνδέσει το διοικητικό συμβούλιο Arduino Pro Mini με μικροσκοπικές μονάδες RTC I2C και Arduino Pro Mini με σειριακό προσαρμογέα USB CH340G.
Εκτελέστε τον κώδικα για να προσδιορίσετε τις διευθύνσεις των μικροκυκλωμάτων ds1307 και 24C32.
Ο ίδιος ο κώδικας:
#include
String stringOne;
void setup ()
{
Wire.begin ();
Serial.begin (9600);
ενώ (! Serial);
}}
κενός βρόχος ()
{
byte error, διεύθυνση.
int nDevices;
Serial.println ("Σάρωση ...");
nDevices = 0;
για (διεύθυνση = 1, διεύθυνση & lt; 127; διεύθυνση ++)
{
Wire.beginTransmission (διεύθυνση);
error = Wire.endTransmission ();
αν (σφάλμα == 0)
{
String stringOne = String (διεύθυνση, HEX);
Serial.print ("0x"); Serial.print (stringOne); Serial.print ("-");
αν (stringOne == "0A") Serial.println ("Οδηγός κινητήρα");
αν (stringOne == "0F") Serial.println ("Οδηγός κινητήρα");
εάν (stringOne == "1D") Serial.println ("Ψηφιακό επιταχυνσιόμετρο εισόδου 3-άξονα ADXL345").
αν (stringOne == "1E") Serial.println ("'HMC5883 3-Axis Digital Compass'");
αν (stringOne == "5A") Serial.println ("αισθητήρας αφής");
αν (stringOne == "5B") Serial.println ("αισθητήρας αφής");
αν (stringOne == "5C") Serial.println ("'BH1750FVI ψηφιακός αισθητήρας φωτός' Ή 'αισθητήρας αφής")?
αν (stringOne == "5D") Serial.println ("αισθητήρας αφής");
αν (stringOne == "20") Serial.println ("PCF8574 8-Bit I / O Expander" ή "LCM1602 LCD Adapter");
αν (stringOne == "21") Serial.println ("'PCF8574 8-Bit I / O Expander");
αν (stringOne == "22") Serial.println ("'PCF8574 8-Bit I / O Expander");
εάν (stringOne == "23") Serial.println ("PCF8574 8-Bit I / O Expander" ή "BH1750FVI ψηφιακός αισθητήρας φωτός");
αν (stringOne == "24") Serial.println ("PCF8574 8-Bit I / O Expander");
αν (stringOne == "25") Serial.println ("'PCF8574 8-Bit I / O Expander");
αν (stringOne == "26") Serial.println ("'PCF8574 8-Bit I / O Expander");
αν (stringOne == "27") Serial.println ("PCF8574 8-Bit I / O Expander" ή "LCM1602 LCD Adapter");
αν (stringOne == "39") Serial.println ("'TSL2561 Αισθητήρας φωτός περιβάλλοντος");
αν (stringOne == "40") Serial.println ("αισθητήρας βαρομετρικής πίεσης BMP180");
αν (stringOne == "48") Serial.println ("'ADS1115 Ενότητα 16-Bit'");
αν (stringOne == "49") Serial.println ("'ADS1115 Ενότητα 16-Bit' ή 'SPI-to-UART'")?
αν (stringOne == "4A") Serial.println ("'ADS1115 Ενότητα 16-Bit'");
αν (stringOne == "4B") Serial.println ("'ADS1115 Ενότητα 16-Bit'");
αν (stringOne == "50") Serial.println ("'AT24C32 EEPROM'");
αν (stringOne == "53") Serial.println ("'ADXL345 ψηφιακό επιταχυνσιόμετρο εισόδου 3 άξων'");
αν (stringOne == "68") Serial.println ("'DS3231 ρολόι πραγματικού χρόνου'");
αν (stringOne == "7A") Serial.println ("'LCD OLED 128x64'");
αν (stringOne == "76") Serial.println ("αισθητήρας βαρομετρικής πίεσης BMP280");
εάν (stringOne == "77") Serial.println ("αισθητήρας βαρομετρικής πίεσης BMP180" ή "αισθητήρας βαρομετρικής πίεσης BMP280").
αν (stringOne == "78") Serial.println ("'LCD OLED 128x64'");
nΣυσκευές ++;
}}
αλλι αν (σφάλμα == 4)
{
Serial.print ("Unknow error στη διεύθυνση 0x").
αν (διεύθυνση & lt; 16)
Serial.print ("0");
Serial.println (διεύθυνση, HEX);
}}
}}
αν (nDevices == 0)
Serial.println ("Δεν βρέθηκαν συσκευές I2C \ n");
αλλού
Serial.println ("ολοκληρωμένο \ n");
καθυστέρηση (5000);
}}
Μετά την εκκίνηση του IDE του Arduino, επιλέγοντας το μοντέλο του board arduino, εγκαθιστώντας τη σειριακή θύρα (έχω com31) και αντιγράψα τον κώδικα που βρίσκεται παραπάνω σε ένα παράθυρο με αντικατάσταση κειμένου. Ξεκίνησα τη σύνταξη, ενώ το IDE του Arduino ζητά να αποθηκευτεί ο φάκελος σκίτσο. Κάντε κλικ στο κουμπί Αποθήκευση και το IDE του Arduino θα μεταγλωττιστεί. Γράφουμε το πρόγραμμα στο board arduino και στην οθόνη σειριακής θύρας βλέπουμε τα εξής:
Έτσι, διασφαλίσαμε ότι οι πίνακες είναι σωστά συνδεδεμένες.
Τώρα, για να συνεργαστείτε με τον μικροκυκλωτή σε πραγματικό χρόνο (ds1307), πρέπει να εγκαταστήσετε τη βιβλιοθήκη "Universal library iarduino_RTC.zip"
Αρχείο: univerzal library:
Μετά την εγκατάσταση της βιβλιοθήκης και την επανεκκίνηση του IDE του Arduino, εκτελέστε το παράδειγμα gettime:
Αφού καταγράψουμε το πρόγραμμα στο board arduino, στην οθόνη της σειριακής θύρας θα δούμε το αποτέλεσμα του τσιπ σε πραγματικό χρόνο.
Στην παρακάτω φωτογραφία, το Arduino Pro Mini μου:
Έχετε ωραία ψώνια!
Κόστος: ~ 29