Papan Modul Tiny RTC I2C ternyata menjadi alat yang sangat berguna. Sebaik sahaja saya membentangkan gambar dengan sambungan dua mikrocip dengan menanggalkan papan di atas, ia menjadi sedikit tidak selesa dengan bilangan sambungan yang tidak boleh dipercayai. Papan Modul Tiny RTC I2C sangat mudah digunakan untuk bekerja dengan cip jam real time ds1307Z dengan antara muka I2C bersiri, cip memori 24C32 dengan antara muka I2C bersiri, keupayaan untuk memasang sensor suhu ds18b20. Anda juga boleh mendapatkan denyutan segiempat tepat yang tepat dari output ke-7 cip ds1307Z, pada penyambung itu ditandai dengan huruf SQ. Di papan litar Modul Tiny RTC I2C, sukar untuk melihat bahawa pin ketujuh cip ds1307Z disambungkan kepada pin ketujuh penyambung P1.
Papan Rangka I2C Modul Tiny RTC:
Sebelum membeli, saya mencari maklumat di Internet. Saya belajar bahawa lembaga itu dibuat untuk bekerja dengan bateri litium, yang sukar dibeli. Pembeli daripada Papan Modul RTC I2C Tiny memasang bateri litium bukan bateri, dan papan tidak berfungsi dengan betul. Mikroelektrik menggunakan kuasa yang sangat kecil, jadi papan boleh digunakan dengan bateri lithium. Untuk melakukan ini, keluarkan komponen radio yang berikut dari papan Modul Tiny RTC I2C: diode D1, perintang R4, dan solder pelompat di tempat R6. Saya juga mengeluarkan resistor R7, setelah membiasakan diri saya dengan litar tipikal untuk menukar cip ds1307.
Litar ds1307 tipikal:
Anda boleh mengetahui lebih lanjut mengenai memuktamadkan papan Modul Tiny RTC I2C dari video yang dirakam dan diterbitkan di rangkaian oleh rakannya Alexei Bukreev.
Datasheet pada cip ds1307:
Lihat fail dalam talian:
Lihat fail dalam talian:
Saya menyambung lembaga Arduino Pro Mini dengan Modul Tiny RTC I2C dan Arduino Pro Mini dengan penyesuai USB CH340G.
Jalankan kod untuk menentukan alamat dwimeter ds1307 dan 24C32.
Kod itu sendiri:
#include
String stringOne;
batal persediaan ()
{
Wire.begin ();
Serial.begin (9600);
sementara (! Siri);
}
kekosongan gelung ()
{
ralat byte, alamat;
int nDevices;
Serial.println ("Pengimbasan ...");
nDevices = 0;
untuk alamat (alamat = 1; alamat & lt; 127; ++)
{
Wire.beginTransmission (alamat);
ralat = Wire.endTransmission ();
jika (ralat == 0)
{
String stringOne = String (alamat, HEX);
Serial.print ("0x"); Serial.print (stringOne); Serial.print ("-");
jika (stringOne == "0A") Serial.println ("'Pemandu Motor'");
jika (stringOne == "0F") Serial.println ("'Pemandu Motor'");
jika (stringOne == "1D") Serial.println ("'ADXL345 Input 3-Axis Accelerometer Digital'");
jika (stringOne == "1E") Serial.println ("'HMC5883 3-Axis Digital Compass'");
jika (stringOne == "5A") Serial.println ("'Touch Sensor'");
jika (stringOne == "5B") Serial.println ("'Touch Sensor'");
jika (stringOne == "5C") Serial.println ("'Sensor Cahaya Digital' BH1750FVI 'OR' Sensor Sentuh ');
jika (stringOne == "5D") Serial.println ("'Touch Sensor'");
jika (stringOne == "20") Serial.println ("'PCF8574 8-Bit I / O Expander' OR 'LCM1602 LCD Adapter'");
jika (stringOne == "21") Serial.println ("'PCF8574 8-Bit I / O Expander'");
jika (stringOne == "22") Serial.println ("'PCF8574 8-Bit I / O Expander'");
jika (stringOne == "23") Serial.println ("'PCF8574 8-bit I / O Expander' OR 'BH1750FVI Digital Sensor Light'");
jika (stringOne == "24") Serial.println ("'PCF8574 8-Bit I / O Expander'");
jika (stringOne == "25") Serial.println ("'PCF8574 8-Bit I / O Expander'");
jika (stringOne == "26") Serial.println ("'PCF8574 8-Bit I / O Expander'");
jika (stringOne == "27") Serial.println ("'PCF8574 8-Bit I / O Expander' OR 'LCM1602 LCD Adapter'");
jika (stringOne == "39") Serial.println ("'TSL2561 Ambient Light Sensor'");
jika (stringOne == "40") Serial.println ("'BMP180 sensor tekanan barometrik'");
jika (stringOne == "48") Serial.println ("'ADS1115 Modul 16-Bit'");
jika (stringOne == "49") Serial.println ("'ADS1115 Modul 16-Bit' OR 'SPI-to-UART'");
jika (stringOne == "4A") Serial.println ("'ADS1115 Module 16-Bit'");
jika (stringOne == "4B") Serial.println ("'ADS1115 Module 16-Bit'");
jika (stringOne == "50") Serial.println ("'AT24C32 EEPROM'");
jika (stringOne == "53") Serial.println ("'ADXL345 Input 3-Axis Accelerometer Digital'");
jika (stringOne == "68") Serial.println ("'DS3231 masa nyata jam'");
jika (stringOne == "7A") Serial.println ("'LCD OLED 128x64'");
jika (stringOne == "76") Serial.println ("'BMP280 sensor tekanan barometrik'");
jika (stringOne == "77") Serial.println ("'BMP180 sensor tekanan barometrik' OR 'BMP280 sensor tekanan barometrik'");
jika (stringOne == "78") Serial.println ("'LCD OLED 128x64'");
nDevices ++;
}
lain jika (ralat == 4)
{
Serial.print ("Kesalahan yang tidak diketahui di alamat 0x");
jika (alamat & lt; 16)
Serial.print ("0");
Serial.println (alamat, HEX);
}
}
jika (nDevices == 0)
Serial.println ("Tiada peranti I2C dijumpai \ n");
lain
Serial.println ("selesai \ n");
kelewatan (5000);
}
Selepas memulakan IDE Arduino, memilih model papan arduino, memasang port bersiri (saya mempunyai com31), dan menyalin kod di atas di dalam tetingkap dengan penggantian teks. Saya memulakan kompilasi, manakala Arduino IDE meminta untuk menyimpan folder sketsa. Klik simpan dan Arduino IDE akan disusun. Kami akan menulis program ini ke papan arduino dan di monitor port bersiri kami akan melihat perkara berikut:
Jadi, kami memastikan bahawa papan disambung dengan betul.
Sekarang, untuk bekerja dengan microcircuit masa nyata (ds1307), anda perlu memasang perpustakaan "Universal library iarduino_RTC.zip"
Fail: iarduino_RTC.zip universal library:
Selepas memasang pustaka dan menaikkan semula IDE Arduino, jalankan contoh masa lampau:
Setelah menyelesaikan kompilasi, menulis program ke papan arduino, dalam monitor port siri kita akan melihat hasil cip masa nyata.
Dalam gambar di bawah ini, Arduino Pro Mini saya:
Mempunyai membeli-belah yang bagus!
Kos: ~ 29