La scheda Tiny RTC I2C Modules si è rivelata un dispositivo molto utile. Non appena presento un'immagine con la connessione di due microchip con una cinghia sulla breadboard, diventa un po 'scomodo con il numero di connessioni inaffidabili. La scheda Tiny RTC I2C Modules è molto comoda da usare per lavorare con il chip orologio in tempo reale ds1307Z con un'interfaccia seriale I2C, un chip di memoria 24C32 con un'interfaccia seriale I2C, la possibilità di installare un sensore di temperatura ds18b20. È inoltre possibile ottenere impulsi rettangolari precisi dalla settima uscita del chip ds1307Z, sul connettore è contrassegnato dalle lettere SQ. Sul circuito stampato dei moduli I2C Tiny RTC, è difficile vedere che il settimo pin del chip ds1307Z è collegato al settimo pin del connettore P1.
Schema della scheda dei piccoli moduli RTC I2C:
Prima di acquistare, ho cercato informazioni su Internet. Ho imparato che la scheda è stata progettata per funzionare con una batteria al litio, che è difficile da acquistare. Gli acquirenti della scheda Tiny RTC I2C Modules hanno installato una batteria al litio anziché la batteria e la scheda non ha funzionato correttamente. Il microcircuito consuma pochissima energia, quindi la scheda può essere utilizzata con una batteria al litio. Per fare ciò, rimuovere i seguenti componenti radio dalla scheda Moduli RTC I2C Tiny: diodo D1, resistenza R4 e saldare il ponticello al posto di R6. Ho anche rimosso il resistore R7, avendo familiarizzato con il circuito tipico per l'accensione del chip ds1307.
Circuiti tipici ds1307:
Puoi saperne di più sulla finalizzazione della scheda Moduli I2C RTC Tiny da un video registrato e pubblicato sulla rete dal compagno Alexei Bukreev.
Scheda tecnica sul chip ds1307:
Visualizza file online:
Visualizza file online:
Ho collegato la scheda Arduino Pro Mini con piccoli moduli RTC I2C e Arduino Pro Mini con adattatore seriale USB CH340G.
Eseguire il codice per determinare gli indirizzi dei microcircuiti ds1307 e 24C32.
Codice stesso:
#include
String stringOne;
void setup ()
{
Wire.begin ();
Serial.begin (9600);
while (! Serial);
}
void loop ()
{
errore byte, indirizzo;
int nDevices;
Serial.println ("Scansione ...");
nDevices = 0;
per (indirizzo = 1; indirizzo & lt; 127; indirizzo ++)
{
Wire.beginTransmission (indirizzo);
errore = Wire.endTransmission ();
if (errore == 0)
{
String stringOne = String (indirizzo, HEX);
Serial.print ("0x"); Serial.print (stringOne); Serial.print ("-");
if (stringOne == "0A") Serial.println ("'Motor Driver'");
if (stringOne == "0F") Serial.println ("'Motor Driver'");
if (stringOne == "1D") Serial.println ("'Accelerometro digitale a 3 assi ingresso ADXL345'");
if (stringOne == "1E") Serial.println ("'Bussola digitale a 3 assi HMC5883'");
if (stringOne == "5A") Serial.println ("'Touch Sensor'");
if (stringOne == "5B") Serial.println ("'Touch Sensor'");
if (stringOne == "5C") Serial.println ("'Sensore di luce digitale BH1750FVI' O 'Sensore di tocco");
if (stringOne == "5D") Serial.println ("'Touch Sensor'");
if (stringOne == "20") Serial.println ("'Expander I / O a 8 bit PCF8574' O 'Adattatore LCD LCM1602'");
if (stringOne == "21") Serial.println ("'Expander I / O 8-Bit PCF8574'");
if (stringOne == "22") Serial.println ("'Expander I / O a 8 bit PCF8574'");
if (stringOne == "23") Serial.println ("'Espansore I / O a 8 bit PCF8574' O 'Sensore di luce digitale BH1750FVI'");
if (stringOne == "24") Serial.println ("'Expander I / O 8-Bit PCF8574'");
if (stringOne == "25") Serial.println ("'Expander I / O a 8 bit PCF8574'");
if (stringOne == "26") Serial.println ("'Expander I / O a 8 bit PCF8574'");
if (stringOne == "27") Serial.println ("'Expander I / O a 8 bit PCF8574' O 'Adattatore LCD LCM1602'");
if (stringOne == "39") Serial.println ("'TSL2561 Ambient Light Sensor'");
if (stringOne == "40") Serial.println ("'Sensore di pressione barometrica BMP180'");
if (stringOne == "48") Serial.println ("'Modulo ADS1115 16-Bit'");
if (stringOne == "49") Serial.println ("'Modulo ADS1115 16-Bit' OR 'SPI-to-UART'");
if (stringOne == "4A") Serial.println ("'Modulo ADS1115 16-Bit'");
if (stringOne == "4B") Serial.println ("'Modulo ADS1115 16-Bit'");
if (stringOne == "50") Serial.println ("'AT24C32 EEPROM'");
if (stringOne == "53") Serial.println ("'Accelerometro digitale a 3 assi ingresso ADXL345'");
if (stringOne == "68") Serial.println ("'orologio in tempo reale DS3231'");
if (stringOne == "7A") Serial.println ("'LCD OLED 128x64'");
if (stringOne == "76") Serial.println ("'Sensore di pressione barometrica BMP280'");
if (stringOne == "77") Serial.println ("'Sensore di pressione barometrica BMP180' O 'Sensore di pressione barometrica BMP280'");
if (stringOne == "78") Serial.println ("'LCD OLED 128x64'");
nDevices ++;
}
altrimenti if (errore == 4)
{
Serial.print ("Errore sconosciuto all'indirizzo 0x");
if (indirizzo & lt; 16)
Serial.print ("0");
Serial.println (indirizzo, HEX);
}
}
if (nDevices == 0)
Serial.println ("Nessun dispositivo I2C trovato \ n");
altro
Serial.println ("done \ n");
ritardo (5000);
}
Dopo aver avviato l'IDE di Arduino, scegliendo il modello della scheda Arduino, installando la porta seriale (I have com31) e copiato il codice sopra riportato in una finestra con la sostituzione del testo. Ho iniziato la compilazione, mentre l'IDE di Arduino chiede di salvare la cartella degli schizzi. Fai clic su Salva e l'IDE di Arduino verrà compilato. Scriveremo il programma sulla scheda arduino e nel monitor della porta seriale vedremo quanto segue:
Quindi, ci siamo assicurati che le schede siano collegate correttamente.
Ora, per lavorare con il microcircuito in tempo reale (ds1307), è necessario installare la libreria "Universal library iarduino_RTC.zip"
File: libreria universale iarduino_RTC.zip:
Dopo aver installato la libreria e riavviato l'IDE di Arduino, esegui l'esempio gettime:
Dopo aver completato la compilazione, scrivendo il programma sulla scheda arduino, nel monitor della porta seriale vedremo il risultato del chip in tempo reale.
Nella foto in basso, il mio Arduino Pro Mini:
Buon shopping!
Costo: ~ 29