บอร์ด Tiny RTC I2C Modules กลายเป็นอุปกรณ์ที่มีประโยชน์มาก ทันทีที่ฉันนำเสนอรูปภาพด้วยการเชื่อมต่อของสองไมโครชิพที่มีสายรัดอยู่บนเขียงหั่นขนมมันก็จะอึดอัดเล็กน้อยกับจำนวนการเชื่อมต่อที่ไม่น่าเชื่อถือ บอร์ด Tiny RTC I2C Modules นั้นสะดวกมากที่จะใช้สำหรับการทำงานกับชิปนาฬิกาแบบเรียลไทม์ ds1307Z พร้อมด้วยอินเตอร์เฟส I2C แบบอนุกรม, ชิปหน่วยความจำ 24C32 พร้อมด้วยอินเตอร์เฟส I2C แบบอนุกรม, ความสามารถในการติดตั้งเซ็นเซอร์อุณหภูมิ ds18b20 นอกจากนี้คุณยังสามารถรับสัญญาณพัลส์รูปสี่เหลี่ยมที่ถูกต้องจากเอาต์พุตอันดับที่ 7 ของชิป ds1307Z บนขั้วต่อที่มีเครื่องหมาย SQ อยู่ด้วย บนแผงวงจรของโมดูล Tiny RTC I2C เป็นเรื่องยากที่จะเห็นว่าพินที่เจ็ดของชิป ds1307Z เชื่อมต่อกับพินที่เจ็ดของตัวเชื่อมต่อ P1
Tiny แผนผัง RTC I2C โมดูลแผนผัง:
ก่อนที่จะซื้อฉันค้นหาข้อมูลบนอินเทอร์เน็ต ฉันเรียนรู้ว่าบอร์ดนี้ทำงานกับแบตเตอรี่ลิเธียมซึ่งหาซื้อยาก ผู้ซื้อบอร์ด Tiny RTC I2C Modules ติดตั้งแบตเตอรี่ลิเธียมแทนแบตเตอรี่และบอร์ดทำงานไม่ถูกต้อง Microcircuit ใช้พลังงานน้อยมากดังนั้นบอร์ดจึงสามารถใช้กับแบตเตอรี่ลิเธียมได้ หากต้องการทำสิ่งนี้ให้ถอดส่วนประกอบวิทยุออกจากบอร์ด Tiny RTC I2C Modules: diode D1, resistor R4 และบัดกรีจัมเปอร์แทน R6 ฉันได้ลบตัวต้านทาน R7 ออกไปโดยทำความคุ้นเคยกับวงจรทั่วไปสำหรับการเปิดใช้ชิป ds1307
วงจร ds1307 ทั่วไป:
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการจบบอร์ด Tiny RTC I2C Modules จากวิดีโอที่บันทึกและเผยแพร่บนเครือข่ายโดยสหาย Alexei Bukreev
เอกสารข้อมูลบนชิป ds1307:
ดูไฟล์ออนไลน์:
ดูไฟล์ออนไลน์:
ฉันเชื่อมต่อบอร์ด Arduino Pro Mini พร้อมโมดูล RTC I2C ของ Tiny และ Arduino Pro Mini พร้อมอะแดปเตอร์ USB อนุกรม CH340G
เรียกใช้รหัสเพื่อกำหนดที่อยู่ของไมโครคอนโทรลเลอร์ ds1307 และ 24C32
รหัสตัวเอง:
#include
String stringOne;
การตั้งค่าเป็นโมฆะ ()
{
Wire.begin ();
Serial.begin (9600);
ในขณะที่ (! อนุกรม);
}
เป็นโมฆะห่วง ()
{
ข้อผิดพลาดไบต์ที่อยู่;
อุปกรณ์ nDevices;
Serial.println ("สแกน ... ");
nDevices = 0;
สำหรับ (ที่อยู่ = 1; ที่อยู่ & lt; 127; ที่อยู่ ++)
{
Wire.beginTransmission (ที่อยู่);
ข้อผิดพลาด = Wire.endTransmission ();
ถ้า (ข้อผิดพลาด == 0)
{
String stringOne = สตริง (ที่อยู่ HEX);
Serial.print ("0x"); Serial.print (stringOne); Serial.print ("-");
if (stringOne == "0A") Serial.println ("'ไดรเวอร์มอเตอร์'");
if (stringOne == "0F") Serial.println ("'ไดรเวอร์มอเตอร์'");
if (stringOne == "1D") Serial.println ("'ADXL345 อินพุต Accelerometer ดิจิตอล 3 แกน'");
if (stringOne == "1E") Serial.println ("'HMC5883 เข็มทิศดิจิตอล 3 แกน'");
if (stringOne == "5A") Serial.println ("'Touch Sensor'");
if (stringOne == "5B") Serial.println ("'Touch Sensor'");
if (stringOne == "5C") Serial.println ("'BH1750FVI เซ็นเซอร์วัดแสงดิจิตอล' หรือ 'เซ็นเซอร์สัมผัส");
if (stringOne == "5D") Serial.println ("'Touch Sensor'");
if (stringOne == "20") Serial.println ("'PCF8574 8-Bit I / O Expander' หรือ 'LCM1602 ตัวแปลง LCD' ');
if (stringOne == "21") Serial.println ("'PCF8574 8-Bit I / O Expander'");
if (stringOne == "22") Serial.println ("'PCF8574 8-Bit I / O Expander'");
if (stringOne == "23") Serial.println ("'PCF8574 8-Bit I / O Expander' หรือ 'BH1750FVI เซ็นเซอร์วัดแสงดิจิตอล' ');
if (stringOne == "24") Serial.println ("'PCF8574 8-Bit I / O Expander'");
if (stringOne == "25") Serial.println ("'PCF8574 8-Bit I / O Expander'");
if (stringOne == "26") Serial.println ("'PCF8574 8-Bit I / O Expander'");
if (stringOne == "27") Serial.println ("'PCF8574 8-Bit I / O Expander' หรือ 'LCM1602 ตัวแปลง LCD' ');
if (stringOne == "39") Serial.println ("'TSL2561 Ambient Light Sensor'");
if (stringOne == "40") Serial.println ("'BMP180 เซ็นเซอร์ความดันของบรรยากาศ' ');
if (stringOne == "48") Serial.println ("'ADS1115 โมดูล 16-Bit'");
if (stringOne == "49") Serial.println ("'ADS1115 โมดูล 16 บิต' หรือ 'SPI-to-UART'");
if (stringOne == "4A") Serial.println ("'ADS1115 โมดูล 16 บิต'");
if (stringOne == "4B") Serial.println ("'ADS1115 โมดูล 16 บิต'");
if (stringOne == "50") Serial.println ("'AT24C32 EEPROM'");
if (stringOne == "53") Serial.println ("'ADXL345 อินพุต Accelerometer ดิจิตอล 3 แกน'");
if (stringOne == "68") Serial.println ("'DS3231 นาฬิกาตามเวลาจริง'");
if (stringOne == "7A") Serial.println ("'LCD OLED 128x64'");
ถ้า (stringOne == "76") Serial.println ("'BMP280 เซ็นเซอร์ความดันบรรยากาศ' ');
if (stringOne == "77") Serial.println ("'BMP180 เซ็นเซอร์ความดันบรรยากาศ' หรือ 'BMP280 เซ็นเซอร์ความดันบรรยากาศ'");
if (stringOne == "78") Serial.println ("'LCD OLED 128x64'");
nDevices ++;
}
อื่นถ้า (ข้อผิดพลาด == 4)
{
Serial.print ("ไม่ทราบข้อผิดพลาดตามที่อยู่ 0x");
หาก (ที่อยู่ & lt; 16)
Serial.print ("0");
Serial.println (ที่อยู่ HEX);
}
}
ถ้า (nDevices == 0)
Serial.println ("ไม่พบอุปกรณ์ I2C \ n");
อื่น
Serial.println ("เสร็จแล้ว \ n");
ล่าช้า (5,000);
}
หลังจากเริ่มต้น Arduino IDE ให้เลือกรุ่นของบอร์ด arduino ติดตั้งพอร์ตอนุกรม (ฉันมี com31) และคัดลอกรหัสที่อยู่ด้านบนลงในหน้าต่างที่มีการแทนที่ข้อความ ฉันเริ่มการรวบรวมในขณะที่ Arduino IDE ขอให้บันทึกโฟลเดอร์ร่าง คลิกบันทึกและ Arduino IDE จะรวบรวม เราจะเขียนโปรแกรมไปยังบอร์ด Arduino และในจอภาพพอร์ตอนุกรมเราจะเห็นสิ่งต่อไปนี้:
ดังนั้นเราจึงทำให้แน่ใจว่าบอร์ดเชื่อมต่ออย่างถูกต้อง
ตอนนี้เพื่อทำงานกับ microcircuit แบบเรียลไทม์ (ds1307) คุณต้องติดตั้งไลบรารี“ Universal library iarduino_RTC.zip”
ไฟล์: iarduino_RTC.zip universal library:
หลังจากติดตั้งไลบรารีและรีบูต Arduino IDE ให้รันตัวอย่าง gettime:
หลังจากเสร็จสิ้นการรวบรวมเขียนโปรแกรมไปยังบอร์ด arduino ในมอนิเตอร์พอร์ตอนุกรมเราจะเห็นผลลัพธ์ของชิปเรียลไทม์
ในภาพด้านล่าง Arduino Pro Mini ของฉัน:
ขอให้มีความสุขในการช็อปปิ้ง!
ราคา: ~ 29