https://github.com/jchristensen/poweroutagemonitor_sw
ไฟล์ readme
Jack Christensen
ปี 2555
Arduino Power Outage Logger ลิขสิทธิ์ (C) 2012-2019 โดย Jack Christensen GNU GPL v3.0
โปรแกรมนี้เป็นซอฟต์แวร์ฟรี: คุณสามารถแจกจ่ายใหม่และ/หรือแก้ไขภายใต้ข้อกำหนดของใบอนุญาตสาธารณะ GNU ทั่วไป v3.0 ตามที่เผยแพร่โดย Free Software Foundation
โปรแกรมนี้มีการแจกจ่ายด้วยความหวังว่าจะมีประโยชน์ แต่ไม่มีการรับประกันใด ๆ โดยไม่มีการรับประกันโดยนัยเกี่ยวกับความสามารถในการค้าหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดูใบอนุญาตสาธารณะ GNU ทั่วไปสำหรับรายละเอียดเพิ่มเติม
คุณควรได้รับสำเนาใบอนุญาตสาธารณะ GNU ทั่วไปพร้อมกับโปรแกรมนี้ ถ้าไม่ดู https://www.gnu.org/licenses/gpl.html
ภาพร่าง Arduino เพื่อใช้เครื่องบันทึกไฟดับโดยใช้ Microchip MCP79411 หรือ MCP79412 RTC สามารถเข้าสู่ระบบได้มากถึงเจ็ดครั้ง
จอแสดงผลปกติคือนาฬิกาที่แสดงเวลาวันที่และจำนวนไฟดับที่เข้าสู่วงเล็บมุมเช่น <4> หลังจากไฟดับใหม่ไฟ LED การแจ้งเตือนไฟดับใหม่จะสว่างขึ้น การดูบันทึกการหยุดทำงานปิดไฟ LED นาฬิกาปรับโดยอัตโนมัติสำหรับเวลาประหยัดเวลากลางวัน
ปุ่มสี่ปุ่มควบคุมตัวบันทึกและมีป้ายกำกับ:
SET / CLEAR / CANCEL(+) / FIRST / NEXT(-) / LAST / PREVRESET จากการแสดงนาฬิกา:
กด (+) หรือ (-) เพื่อดูบันทึกการหยุดทำงาน การกด (+) จะแสดงการหยุดทำงานครั้งแรก (เร็วที่สุด) การกด (+) อีกครั้งจะแสดงการหยุดทำงานครั้งต่อไป การกด (-) จะแสดงการหยุดทำงานครั้งสุดท้าย (ล่าสุด) การกด (-) อีกครั้งจะแสดงการหยุดทำงานก่อนหน้านี้ กด Set เพื่อกลับไปที่โหมดนาฬิกาหรือจะกลับมาโดยอัตโนมัติหลังจาก 30 วินาที
กด SET เพื่อเริ่มลำดับชุด กด (+) และ (-) เพื่อปรับแต่ละพารามิเตอร์ค้างไว้เพื่อปรับอย่างรวดเร็ว กดตั้งค่าเพื่อล่วงหน้าไปยังพารามิเตอร์ถัดไป ตั้งค่าตั้งค่าไว้เพื่อยกเลิกลำดับที่ตั้งไว้ การกด (+) และ (-) พร้อมกันในขณะที่การตั้งค่าวินาทีหรือการสอบเทียบ RTC จะเป็นศูนย์ค่า
จากโหมดนาฬิกาหรือในขณะที่ดูบันทึกการหยุดทำงานให้ตั้งค่าไว้เพื่อล้างบันทึกการหยุดทำงาน
ในขณะที่อยู่ในโหมดการแสดงผลนาฬิกาปกติการกดปุ่ม (-) จะสลับโหมดพระอาทิตย์ขึ้น/พระอาทิตย์ตกที่ซึ่งพระอาทิตย์ขึ้นและพระอาทิตย์ตกหลายครั้งสลับกับวันที่
หลังจากกดและปล่อยรีเซ็ตข้อความ RTC SYNC (ด้วย RTC ID) และข้อความการสอบเทียบที่แสดงในระหว่างการเริ่มต้นสามารถจัดขึ้นได้โดยการกดปุ่มและกดปุ่ม SET
โหมดทดสอบโฟโตเซลล์แสดงการอ่านโฟโตเซลล์แทนเขตเวลา สิ่งนี้มีประโยชน์ในการช่วยปรับเทียบความสว่างของการแสดงผล เพื่อเรียก:
การตั้งค่าฟิวส์เหมือนกับ Arduino Uno ยกเว้น 4.3V BOD เช่น:
avrdude -p m328p -U lfuse:w:0xff:m -U hfuse:w:0xde:m -U efuse:w:0x04:m -v
เซ็นเซอร์อุณหภูมิ MCP9800/1/2/3 เสริมสามารถรวมอยู่ในบัส I2C หากมีอยู่จะตรวจพบโดยอัตโนมัติและอุณหภูมิจะปรากฏบน LCD ด้วยเวลา
แผนผังวงจรและบอร์ดพีซีสำหรับโครงการนี้มีอยู่ที่ https://github.com/jchristensen/poweroutagemonitor_hw
แทนที่จะใช้ฟังก์ชั่น setSyncProvider() (อาจจะพบได้บ่อยกว่า) ในไลบรารีเวลารหัสปัจจุบันใช้การขัดจังหวะ 1Hz จาก RTC เพื่อรักษาเวลา สิ่งนี้ได้กลายเป็นวิธีที่ฉันต้องการ แต่นั่นไม่ใช่กรณีที่ฉันออกแบบบอร์ด Logger ไฟดับ
ดังนั้นจำเป็นต้องใช้สายไฟที่ด้านหลังของบอร์ดเพื่อให้สัญญาณขัดจังหวะกับ MCU เชื่อมต่อสายไฟจากพิน RTC "MFP" กับ PIN ATMEGA328P PIN 6 (AKA PD4 หรือ PIN Arduino D4) ดังแสดงในภาพด้านล่าง (บอร์ดเวอร์ชัน 1.2 รวมถึงการเชื่อมต่อนี้ดังนั้นจึงไม่จำเป็นต้องใช้สายไฟ)