Płytka Tiny RTC I2C okazała się bardzo przydatnym urządzeniem. Gdy tylko przedstawię zdjęcie z połączeniem dwóch mikroczipów z paskami na płycie, staje się trochę niewygodne z powodu liczby niewiarygodnych połączeń. Moduły Tiny RTC I2C są bardzo wygodne w użyciu do pracy z układem zegara czasu rzeczywistego ds1307Z z szeregowym interfejsem I2C, układem pamięci 24C32 z szeregowym interfejsem I2C, możliwością instalacji czujnika temperatury ds18b20. Można również uzyskać dokładne prostokątne impulsy z 7. wyjścia układu ds1307Z, na złączu jest ono oznaczone literami SQ. Na płytce drukowanej modułów Tiny RTC I2C trudno jest zauważyć, że siódmy styk układu ds1307Z jest podłączony do siódmego styku złącza P1.
Schemat płytki z małymi modułami RTC I2C:
Przed zakupem szukałem informacji w Internecie. Dowiedziałem się, że płyta została zaprojektowana do pracy z baterią litową, którą trudno kupić. Nabywcy płytki Tiny RTC I2C zainstalowali baterię litową zamiast baterii, a płyta nie działała poprawnie. Mikroukład zużywa bardzo mało energii, więc płytkę można stosować z baterią litową. Aby to zrobić, usuń następujące elementy radiowe z płytki modułów Tiny RTC I2C: diodę D1, rezystor R4 i przylutuj zworkę zamiast R6. Usunąłem również rezystor R7, po zapoznaniu się z typowym obwodem włączania układu ds1307.
Typowy zespół ds1307:
Możesz dowiedzieć się więcej na temat finalizacji płyty Tiny RTC I2C Moduły z wideo nagranego i opublikowanego w sieci przez towarzysza Aleksieja Bukreewa.
Karta katalogowa układu DS1307:
Wyświetl plik online:
Wyświetl plik online:
Podłączyłem tablicę Arduino Pro Mini z modułami Tiny RTC I2C i Arduino Pro Mini z adapterem szeregowym USB CH340G.
Uruchom kod, aby określić adresy mikroukładów ds1307 i 24C32.
Sam kod:
#include
String stringOne;
void setup ()
{
Wire.begin ();
Serial.begin (9600);
while (! Serial);
}
void loop ()
{
błąd bajtu, adres;
int nUrządzenia;
Serial.println („Skanowanie ...”);
nUrządzenia = 0;
dla (adres = 1; adres <127; adres ++)
{
Wire.beginTransmission (adres);
error = Wire.endTransmission ();
if (błąd == 0)
{
String stringOne = String (adres, HEX);
Serial.print („0x”); Serial.print (stringOne); Serial.print („-”);
if (stringOne == „0A”) Serial.println („„ Driver Motor ””);
if (stringOne == "0F") Serial.println ("'Motor Driver'");
if (stringOne == "1D") Serial.println ("'ADXL345 3-osiowy cyfrowy akcelerometr'");
if (stringOne == „1E”) Serial.println („HMC5883 3-osiowy kompas cyfrowy” ”);
if (stringOne == „5A”) Serial.println („Czujnik dotykowy”);
if (stringOne == „5B”) Serial.println („Czujnik dotykowy”);
if (stringOne == „5C”) Serial.println („Cyfrowy czujnik światła BH1750FVI” LUB „Czujnik dotykowy”);
if (stringOne == „5D”) Serial.println („Czujnik dotykowy”);
if (stringOne == „20”) Serial.println („8-bitowy ekspander we / wy PCF8574„ LUB ”adapter LCD LCM1602”);
if (stringOne == "21") Serial.println ("'PCF8574 8-bitowy ekspander we / wy'");
if (stringOne == "22") Serial.println ("'PCF8574 8-bitowy ekspander we / wy'");
if (stringOne == „23”) Serial.println („8-bitowy ekspander we / wy PCF8574„ LUB ”cyfrowy czujnik światła BH1750FVI” ”);
if (stringOne == "24") Serial.println ("'PCF8574 8-bitowy ekspander we / wy'");
if (stringOne == "25") Serial.println ("'PCF8574 8-bitowy ekspander we / wy'");
if (stringOne == "26") Serial.println ("'PCF8574 8-bitowy ekspander we / wy'");
if (stringOne == „27”) Serial.println („8-bitowy ekspander we / wy PCF8574„ LUB ”adapter LCD LCM1602”);
if (stringOne == "39") Serial.println ("'TSL2561 Czujnik światła otoczenia" ");
if (stringOne == "40") Serial.println ("'Czujnik ciśnienia barometrycznego BMP180'");
if (stringOne == „48”) Serial.println („16-bitowy moduł ADS1115”);
if (stringOne == „49”) Serial.println („16-bitowy moduł ADS1115 LUB” SPI-to-UART ”);
if (stringOne == „4A”) Serial.println („16-bitowy moduł ADS1115”);
if (stringOne == „4B”) Serial.println („16-bitowy moduł ADS1115”);
if (stringOne == "50") Serial.println ("'AT24C32 EEPROM'");
if (stringOne == "53") Serial.println ("'ADXL345 3-osiowy cyfrowy akcelerometr'");
if (stringOne == "68") Serial.println („'Zegar czasu rzeczywistego DS3231'”);
if (stringOne == „7A”) Serial.println („LCD OLED 128x64”);
if (stringOne == "76") Serial.println („Barometryczny czujnik ciśnienia BMP280”);
if (stringOne == „77”) Serial.println („„ Barometryczny czujnik ciśnienia BMP180 ”LUB„ BMP280 barometryczny czujnik ciśnienia ””);
if (stringOne == "78") Serial.println („LCD OLED 128x64”);
nDevices ++;
}
w przeciwnym razie (błąd == 4)
{
Serial.print („Błąd nieznany pod adresem 0x”);
jeśli (adres <<16)
Serial.print („0”);
Serial.println (adres, HEX);
}
}
if (nDevices == 0)
Serial.println („Nie znaleziono urządzeń I2C \ n”);
jeszcze
Serial.println ("done \ n");
opóźnienie (5000);
}
Po uruchomieniu Arduino IDE, wybraniu modelu płyty arduino, zainstalowaniu portu szeregowego (mam com31) i skopiowaniu powyższego kodu do okna z zamiennym tekstem. Rozpocząłem kompilację, podczas gdy Arduino IDE prosi o zapisanie folderu szkicu. Kliknij Zapisz, a Arduino IDE się skompiluje. Piszemy program na płycie Arduino, aw monitorze portu szeregowego widzimy:
Dlatego upewniliśmy się, że płyty są prawidłowo podłączone.
Teraz, aby pracować z mikroukładem czasu rzeczywistego (ds1307), musisz zainstalować bibliotekę „Universal library iarduino_RTC.zip”
Plik: biblioteka uniwersalna iarduino_RTC.zip:
Po zainstalowaniu biblioteki i ponownym uruchomieniu Arduino IDE uruchom przykład gettime:
Po zakończeniu kompilacji, zapisaniu programu na płycie arduino, w monitorze portu szeregowego zobaczymy wynik układu w czasie rzeczywistym.
Na poniższym zdjęciu mój Arduino Pro Mini:
Miłych zakupów!
Koszt: ~ 29