ล็อคการรวมกันบนไมโครคอนโทรลเลอร์ atmega8 รหัสล็อคบนไมโครคอนโทรลเลอร์ PIC16F628A

แบบแผนและโปรแกรมรหัสล็อคแบบดิจิตอลพร้อมปุ่มอินฟราเรดบนไมโครคอนโทรลเลอร์

ขอให้เป็นวันที่ดีนักวิทยุสมัครเล่นที่รัก!
ฉันยินดีต้อนรับคุณสู่เว็บไซต์ ""

ขอให้เป็นวันที่ดีนักวิทยุสมัครเล่นที่รัก! วันนี้ในส่วนของ “วงจรวิทยุสมัครเล่นบนไมโครคอนโทรลเลอร์”เราจะพิจารณารูปแบบง่ายๆ - รหัสล็อคแบบดิจิตอลพร้อมปุ่ม IR

กุญแจรหัสนี้ติดตั้งที่ประตูทางเข้าของห้องที่มีการจำกัดการเข้าถึง ใช้ปุ่ม IR เพื่อเปิดประตู ด้วยเหตุนี้ จึงไม่จำเป็นต้องใช้ปุ่มกดภายนอกเพื่อป้อนรหัส และนอกจากนี้ การสกัดกั้นสัญญาณในช่วง IR ก็ทำได้ยากมาก รูปแบบการล็อครหัส:

รหัสล็อคอยู่ในโหมดสแตนด์บายจนกว่าจะได้รับสัญญาณ IR จากโฟโตไดโอด VD1 ซึ่งจะถูกแปลงเป็นแรงกระตุ้นทางไฟฟ้า กุญแจเป็นตัวส่งสัญญาณ IR และใช้พลังงานจากเซลล์กัลวานิกเซลล์เดียว ตัวแปลงแรงดันไฟฟ้า 1.5 โวลต์ถึง 5 โวลต์ประกอบอยู่บนไมโครวงจร คุณสามารถละเว้นส่วนนี้ของวงจรคีย์ที่มีตัวแปลงแรงดันไฟฟ้าได้ แต่สำหรับสิ่งนี้คุณจะต้องเลือกแหล่งพลังงานที่เหมาะสมสำหรับคีย์ที่มีแรงดันไฟฟ้า 5 โวลต์ กุญแจถูกเปิดใช้งานโดยการจ่ายแรงดันไฟฟ้าเพื่อสลับ SA1 เมื่อแทนที่คำ "ลับ" จำเป็นต้องเปลี่ยนรหัสในข้อความโปรแกรมของทั้งล็อคและคีย์ ล็อคใช้พลังงานจากแหล่งจ่ายไฟ 12 โวลต์ ขอแนะนำให้เสริมด้วยแบตเตอรี่เพื่อจ่ายไฟให้กับโซลินอยด์ในกรณีที่ไม่มีแรงดันไฟหลัก

ในตอนเย็นมีผู้หญิงตัวใหญ่ยืนกรานปรากฏตัวที่ธรณีประตูสำนักงานโดยเสนอซื้ออาหารจากแบรนด์ดัง วันต่อมา ฉันได้รับงานจากเจ้านาย (หรือที่รู้จักกันว่า) เพื่อปกป้องธรรมชาติที่สร้างสรรค์ของเขาจากการจู่โจมของตัวแทนฝ่ายขาย นี่จึงเป็นที่มาของแนวคิดการสร้างโปรเจ็กต์ชื่อรหัสว่า Hungry _ Wall แน่นอนว่าตอนนี้มีบริการมากมายที่ควบคุมการเข้าถึงสถานที่ แต่การทำล็อคอิเล็กทรอนิกส์ด้วยมือของคุณเองนั้นน่าสนใจกว่ามากโดยเฉพาะอย่างยิ่งสำหรับฉันซึ่งเป็นโปรแกรมเมอร์มือใหม่และวิศวกรอิเล็กทรอนิกส์

อย่างที่พวกเขาพูดสิ่งสำคัญคือการร่าง TOR อย่างถูกต้องนั่นคือ สิ่งที่เราต้องการได้รับจากผลลัพธ์

  1. สร้างระบบจดจำคีย์
  2. เปรียบเทียบคีย์กับฐาน และถ้ารหัสของคีย์ที่แสดงตรงกับรหัสใดรหัสหนึ่งที่บันทึกไว้ในฐาน ให้เปิดล็อค
  3. อ่านค่าของเซ็นเซอร์แม่เหล็ก ช่วยให้คุณระบุสถานะของประตู และถ้าประตูเปิดอยู่ ให้ปิดล็อค
  4. ใช้ตัวจับเวลาหลังจากนั้นล็อคจะปิดในกรณีที่เราเปลี่ยนใจเกี่ยวกับการเข้า / ออก นี่คือเพื่อให้แน่ใจว่า "ศัตรู" จะไม่เข้าไปในถ้ำลับโดยใช้ประโยชน์จากอารมณ์ที่เปลี่ยนแปลงของเรา
  5. ตรวจสอบการเปิดประตูโดยใช้ปุ่มที่อยู่ภายในห้อง
  6. การบันทึกคีย์ใหม่ในฐานข้อมูลหลังจากนำเสนอมาสเตอร์คีย์และแน่นอนว่าเป็นการบันทึกมาสเตอร์เอง
  7. การลบคีย์ออกจากฐานข้อมูล (คุณลักษณะ)
  8. ระบบแสดงผลเพื่อความน่าดึงดูดยิ่งขึ้น

งานเสร็จสิ้นไปครึ่งหนึ่งเหลือน้อยที่สุด - เพื่อดำเนินการตามแผนในฮาร์ดแวร์และซอฟต์แวร์ สำหรับสิ่งนี้คุณต้อง:

  1. ล็อคไฟฟ้า
  2. เครื่องอ่านการ์ด Proxy (em-Marin) "CP-Z" จาก IronLogic
  3. คีย์หรือการ์ดสำหรับเข้าสู่ฐานข้อมูล
  4. ปุ่ม
  5. จ่ายไฟ12V
  6. ร่างกาย (เพื่อให้ทุกอย่างเรียบร้อยและสวยงาม)
  7. อิเล็กทรอนิกส์ - ไมโครคอนโทรลเลอร์ ATmega 8, “bedX28”, โคลง KR1158EN5V, ทรานซิสเตอร์ IRLU 024 N, ตัวเชื่อมต่อ KLEM 2 6 ตัว, ตัวเชื่อมต่อ WF 3 1 ตัว (พอร์ต COM), ตัวเก็บประจุ, LED และตัวต้านทานเพื่อลิ้มรส

เค้าโครงกระดานแสดงในแผนภาพที่ 1

ด้านในของบอร์ดแสดงในรูปที่ 1

เพื่อแก้ปัญหา อุปกรณ์ที่ใช้ทั้งหมดจะถูกแบ่งออกเป็นบล็อกแบบลอจิคัล ซึ่งแสดงในแผนภาพที่ 2

บล็อกล็อคประกอบด้วยตัวล็อคไฟฟ้า ตัวตั้งเวลา TimeOpen ที่ให้คุณตั้งเวลาสูงสุดในการเปิดล็อค เซ็นเซอร์แม่เหล็กที่ระบุการเปิดและปิดประตู อินพุตของบล็อกล็อคคือคำสั่งในการเปิดล็อค (เปิด) ซึ่งมาจากบล็อกของออร์ล็อคและปุ่ม บล็อก oarlock ประกอบด้วยตัวอ่าน ฐานข้อมูล ตัวจับเวลา TimeMaster ที่กำหนดเวลาสูงสุดในการนำคีย์ใหม่มาเขียนลงในฐานข้อมูล การเข้าสู่บล็อกนั้นดำเนินการโดยการนำเสนอคีย์หรือมาสเตอร์ แผงปุ่มประกอบด้วยปุ่มที่ใช้งานได้ 2 สถานะ (กด/ไม่กด)

ในการอ่านการ์ดแบบไร้สัมผัส จะใช้เครื่องอ่านการ์ด "Proxy (em-Marin) "CP-Z" จาก IronLogic คุณลักษณะของมันคือจำลอง iButton (1-wire) หากคุณนำการ์ดพร็อกซีมาด้วย .. สิ่งนี้ช่วยให้คุณ เพื่อลดความซับซ้อนในการเขียนโปรแกรมล็อค อย่างไรก็ตาม ควรคำนึงถึงว่าเครื่องอ่านรุ่นนี้มีคราดใต้น้ำของตัวเอง

หลักการทำงานนั้นง่ายมาก เมื่อแสดงคีย์ รหัสจะถูกอ่านและเปรียบเทียบกับฐาน หากพบคีย์ในฐานข้อมูล ล็อคจะได้รับคำสั่งเปิด ที่นี่จำเป็นต้องคำนึงถึงลักษณะเฉพาะของการล็อค: การเปิดต้องทำด้วยการคลิก (เปิด - ปิด - เปิด) สิ่งนี้ช่วยป้องกันการติดขัดของล็อค เมื่อตัวช่วยปรากฏขึ้น ตรรกะของโปรแกรมจะเปลี่ยนไป การปรากฏตัวของมันไม่ส่งผลกระทบต่อ "อารมณ์" ของปราสาท เขาได้รับการยกย่องว่าเป็นสุลต่านตุรกีพร้อมที่จะลงทะเบียน (เขียนใน EEPROM) ภรรยาอีกคน (คีย์) เหล่านั้น. เมื่อมีการแสดงคีย์ (หากยังไม่เคยมีการบันทึก) รหัสจะถูกเขียนไปยัง EEPROM ที่นี่มีความจำเป็นต้องคำนึงถึงว่าหน่วยความจำของ mikruha นั้นไม่ใช่ยางและตัวอย่างเช่นสำหรับ ATmega 8 จะมีขนาด 512 ไบต์ซึ่งอนุญาตให้คุณเขียนได้สูงสุด 255 คีย์ (หากใช้ 2 ไบต์เพื่อจัดเก็บ 1 สำคัญเช่นในกรณีของเรา) คีย์แรกที่นำเสนอจะถูกบันทึกเป็นคีย์หลัก การกดปุ่มจะส่งคำสั่ง Open ไปยังล็อคด้วย ระบบแสดงผลทำให้โครงการของเรามีสีสันและให้ข้อมูลมากขึ้น ถ้าไดโอดสีแดงติด แสดงว่าทางเดินถูกบล็อก ถ้าเป็นสีเขียว ไปได้เลย! เมื่อแสดงต้นแบบ ไฟ LED ทั้งสองดวงจะติดสว่าง

สิ่งสำคัญคือต้องสังเกตว่าล็อคจะเปิดขึ้นเมื่อหน่วยโลจิคัล (เช่น แรงดันไฟฟ้า) ถูกนำไปใช้กับหน่วยนั้น และอยู่ในสถานะปิดหากไม่มีการใช้แรงดันไฟฟ้า สิ่งนี้ทำให้คุณสามารถปิดกั้นทางเดินได้หากคุณลืมชำระค่าสาธารณูปโภคและไฟฟ้าของคุณถูกตัด

ลักษณะของอุปกรณ์ทั้งหมดแสดงในรูปที่ 2 ทุกอย่างค่อนข้างเรียบร้อยและสวยงาม

คุณสามารถดาวน์โหลดแหล่งที่มา

ตัวกระตุ้นในล็อคแบบอิเล็กทรอนิกส์ซึ่งแสดงในรูป 1 ใช้ล็อคระบบเครื่องกลไฟฟ้า ZNEM-1-2 ซึ่งจะเปิดขึ้นเมื่อใช้แรงดันไฟฟ้าคงที่ 12 V กับระบบเครื่องกลไฟฟ้า Y1 ในตัว ส่วนตรรกะของล็อคอิเล็กทรอนิกส์สร้างขึ้นบนไมโครคอนโทรลเลอร์ PIC16F630-I / R ปุ่ม SB1 และ SB2 ได้รับการออกแบบมาเพื่อป้อนรหัสที่เปิดขึ้น ไฟ LED HL1-HL3 เรืองแสงสีต่างๆ ส่งสัญญาณสถานะและโหมดการทำงาน ทรานซิสเตอร์ฟิลด์เอฟเฟกต์ VT1 ตามสัญญาณที่สร้างโดยไมโครคอนโทรลเลอร์ที่เอาต์พุตของ RSZ ควบคุมแม่เหล็กไฟฟ้า Y1

ข้าว. 1

อุปกรณ์นี้ใช้พลังงานจากแบตเตอรี่กัลวานิกหรือแบตเตอรี่แบบชาร์จไฟได้ที่มีแรงดันไฟฟ้า 12 V แรงดันไฟฟ้านี้จำเป็นสำหรับการทำงานที่เชื่อถือได้ของแม่เหล็กไฟฟ้า Y1 สามารถจ่ายไฟได้ทั้งจากแบตเตอรี่กัลวานิกหรือแบตเตอรี่แบบชาร์จไฟได้ และจากแหล่งจ่ายไฟหลัก แบตเตอรี่รับประกันความสามารถในการเปิดล็อคในกรณีที่ไม่มีแรงดันไฟหลัก แต่คุณจะต้องตรวจสอบประจุอย่างต่อเนื่อง

แรงดันไฟฟ้า 5 V (ต้องใช้ในการจ่ายไฟให้กับไมโครคอนโทรลเลอร์) ได้มาจาก 12 V โดยใช้ตัวควบคุมในตัว DA1 หากคุณใช้แอคชูเอเตอร์สำหรับแรงดันไฟฟ้าอื่นหรือแหล่งพลังงานแยกต่างหาก แรงดันไฟฟ้าที่จ่ายให้กับอินพุตของสเตบิไลเซอร์สามารถลดลงได้ถึง 7 V หรือเพิ่มขึ้นเป็น 15 V

กระแสที่ใช้โดยล็อคเมื่อปิดมีขนาดเล็กมากและไม่เกินไม่กี่มิลลิแอมป์ ในกระบวนการพิมพ์โค้ด จะเพิ่มขึ้นเป็นสิบมิลลิแอมป์ ขึ้นอยู่กับจำนวนของ LED ที่เปิดอยู่ และเมื่อแม่เหล็กไฟฟ้าถูกกระตุ้น จะเพิ่มขึ้นเป็นประมาณ 1 A

ข้าว. 2a มุมมองด้านส่วนประกอบ

ข้าว. 2b. ดูจากเส้นทาง

ล็อคประกอบบนแผงวงจรพิมพ์ ตำแหน่งขององค์ประกอบและภาพวาดของตัวนำที่พิมพ์จะแสดงในรูปที่ 2. ไฟ LED HL1-HL3 และปุ่ม SB1, SB2 ติดตั้งแยกกันที่กรอบประตูล็อค สำหรับผู้ที่เปิดล็อค ควรมองเห็นไฟ LED และปุ่มต่างๆ ควรพร้อมสำหรับการกด LEDs ประเภทที่ระบุในแผนภาพมีเส้นผ่านศูนย์กลางตัวเรือน 10 มม. และเพิ่มความสว่าง อย่างไรก็ตาม คุณสามารถใช้สีเรืองแสงอื่นๆ ที่เหมาะสมได้

โปรแกรมไมโครคอนโทรลเลอร์ถูกสร้างขึ้นในสภาพแวดล้อม "PIC Simulator IDE v6.91" รหัสเปิดคือการรวมกันของการกดแปดครั้งตามลำดับบนปุ่ม SB1 และ SB2 ในโปรแกรม การกดปุ่ม SB1 จะแสดงด้วยศูนย์โลจิคัลในบิตของเซลล์หน่วยความจำที่ตรงกับหมายเลขซีเรียลของการกด และการกดปุ่ม SB2 จะแสดงด้วยหน่วยโลจิคัลในบิตดังกล่าว จำนวนชุดค่าผสมที่เป็นไปได้ทั้งหมดคือ 256
การกดปุ่มใดๆ จะได้รับการยืนยันโดยการเปิดไฟ LED HL1 ซึ่งช่วยให้คุณควบคุมปุ่มเหล่านี้ได้ด้วยสายตา เมื่อกดรหัส อย่ากดทั้งสองปุ่มพร้อมกัน การดำเนินการนี้จะยกเลิกการพยายามโทรออกและบล็อกการล็อกเป็นเวลา 4 วินาที ในกรณีที่มีการหยุดระหว่างการกดปุ่มนานเกินไปหรือกดปุ่มค้างไว้นานเกินไป (มากกว่า 3 วินาที) โปรแกรมจะเปิดไฟ LED HL3 และจะยกเลิกการพยายามเข้า บล็อกการล็อกเป็นเวลา 4 วินาที

หากรหัสถูกหมุนจนสุด แต่ไม่ตรงกับตัวอย่างที่จัดเก็บไว้ในหน่วยความจำของไมโครคอนโทรลเลอร์ การล็อคจะถูกบล็อกเป็นเวลา 4 วินาที แต่ไฟ LED HL3 จะกะพริบ การป้อนรหัสที่ไม่ถูกต้องสามครั้งจะทำให้การล็อกหยุดชะงักเป็นเวลาหนึ่งนาที ซึ่งมาพร้อมกับไฟ LED ทั้งสามดวง จนกว่าจะสิ้นสุดการปิดกั้นที่เกิดขึ้นไม่ว่าด้วยเหตุผลใดก็ตาม การกดปุ่มจะไม่มีผลใดๆ

การรวมโค้ดที่เป็นตัวอย่างถูกเก็บไว้ใน EEPROM ของไมโครคอนโทรลเลอร์ที่แอดเดรส 1 เมื่อเริ่มทำงาน โปรแกรมจะอ่านเนื้อหาของเซลล์นี้และกำหนดให้กับตัวแปรโค้ด ในขั้นต้นรหัสจะถูกป้อนลงใน EEPROM ในขั้นตอนของการเขียนโปรแกรมไมโครคอนโทรลเลอร์ วิธีการนี้มีอยู่ในซอฟต์แวร์ของโปรแกรมเมอร์ใด ๆ ตัวอย่างเช่นในหน้าต่างหลักของสภาพแวดล้อมการเขียนโปรแกรม "PIC Simulator IDE v6.91" ก็เพียงพอแล้วที่จะเปิดรายการเมนู "Tools- * EEPROM Memory Editor" ก่อนที่จะโหลดโปรแกรมลงในไมโครคอนโทรลเลอร์และในหน้าต่างที่มีอิมเมจ EEPROM เขียนรหัสที่ต้องการในเซลล์ตามที่อยู่ข้างต้น เนื้อหาของหน่วยความจำจะแสดงที่นี่เป็นเลขฐานสิบหก ดังนั้น เช่น รหัส 00110011 จะดูเหมือน 33

ระหว่างการทำงานของล็อค คุณสามารถเปลี่ยนรหัสได้โดยไม่ต้องตั้งโปรแกรมไมโครคอนโทรลเลอร์ใหม่ ในการทำเช่นนี้ให้เปิดล็อคและป้อนรหัสที่ถูกต้องซึ่งใช้ได้ในขณะนี้ ควรเปิดไฟ LED HL2 และล็อคควรเปิด ขณะที่เปิดอยู่ ให้กดทั้งสองปุ่มพร้อมกัน

ไฟ LED HL2 จะเริ่มกะพริบและ HL3 จะเปิดขึ้น ปล่อยปุ่มและหลังจากไฟ LED HL3 ดับลง ให้เริ่มป้อนชุดค่าผสมใหม่ - หากไม่ละเมิดข้อกำหนดสำหรับระยะเวลาการกดปุ่มและหยุดชั่วคราวระหว่างปุ่มเหล่านี้ ไฟ LED HL2 จะกะพริบต่อไป และไฟ LED HL3 จะกะพริบ เปิดอีกครั้ง - หลังจากไฟ LED HL3 ดับอีกครั้ง (ในการทำเช่นนี้ต้องปล่อยปุ่มทั้งสอง) หมุนชุดค่าผสมเดียวกันอีกครั้ง หากเหมือนกับอันแรก โปรแกรมจะยอมรับและเขียนลงใน EEPROM

ข้อความต้นฉบับของโปรแกรมพื้นฐานที่แนบมากับบทความประกอบด้วยคำอธิบายของตัวแปรทั้งหมดที่ใช้และความคิดเห็นในบรรทัดที่สำคัญที่สุด ตัวจับเวลา TMR0 ของไมโครคอนโทรลเลอร์ได้รับการกำหนดค่าให้โอเวอร์โฟลว์โดยมีระยะเวลาประมาณ 65.5 มิลลิวินาที แต่ละครั้งที่สร้างคำขอขัดจังหวะ การประมวลผลคำขอเหล่านี้ ไมโครคอนโทรลเลอร์จะกำหนดสถานะของปุ่มและนับช่วงเวลาที่ต้องการ ตัวอย่างเช่น การบล็อกการล็อกประมาณหนึ่งนาทีจะขึ้นอยู่กับจำนวนการขัดจังหวะ 1,000 ครั้ง จำนวนของพวกเขาในกรณีนี้จะถูกเก็บไว้ในตัวแปร den_p เนื่องจากเป็นประเภทยาวและใช้หน่วยความจำสี่ไบต์จึงสามารถรับค่าได้ตั้งแต่ 0 ถึง 232-1 (4294967295) ตัวอย่างเช่น หากคุณตั้งค่าขีดจำกัดผลลัพธ์การนับเป็น 3600/0.0655^56000 เวลาบล็อกจะเพิ่มขึ้นเป็นหนึ่งชั่วโมง

เดอะ ล็อครหัสบนไมโครคอนโทรลเลอร์ประกอบบนไมโครคอนโทรลเลอร์ AVR ATtiny13 ที่ค่อนข้างง่าย ใช้จำกัดการเข้าถึงพื้นที่เก็บของต่างๆ ล็อคประตูโรงรถ และประตูบ้าน รวมถึงเปิดอุปกรณ์ต่างๆ ที่ต้องการเปิด

หลักการทำงาน

การทำงานของการล็อคบนไมโครคอนโทรลเลอร์ขึ้นอยู่กับการป้อนข้อมูลตามลำดับของตัวเลขสามตัว ขนาดของแต่ละหมายเลขสามารถอยู่ในช่วงตั้งแต่ 0 ถึง 255 ซึ่งจะช่วยเพิ่มระดับความปลอดภัยของรหัสล็อคแบบรหัสเมื่อเทียบกับรหัสล็อคแบบอื่น ซึ่งรหัสลับแต่ละรหัสจะมีขนาดตั้งแต่ 0 ถึง 9

ในกรณีที่ลำดับที่ป้อนของตัวเลขทั้งสามนี้ตรงกับตัวเลขสามตัวที่ป้อนในหน่วยความจำของไมโครคอนโทรลเลอร์ของรหัสล็อค สัญญาณควบคุม (log.1) จะปรากฏขึ้นที่เอาต์พุต (พิน 3) HL4 LED จะสว่างขึ้นเป็นเวลา 15 วินาที ส่งสัญญาณความถูกต้องของอินพุตและรีเลย์ทำงาน K1 ซึ่งควบคุมแอคชูเอเตอร์ของล็อค หลังจากผ่านไป 15 วินาที บันทึกจะปรากฏขึ้นที่พิน 4 ของไมโครคอนโทรลเลอร์ 0 และล็อคจะกลับสู่สถานะรอเริ่มต้น

การทำงานของรหัสล็อคถูกควบคุมโดยปุ่มเพียงสองปุ่ม ซึ่งควบคุมโดยไฟ LED เท่านั้น นอกจากนี้รหัสลับยังถูกป้อนด้วยปุ่มเดียว SB2 ซึ่งอยู่ที่แผงด้านนอกของล็อค ปุ่มที่สอง SB1 ใช้สำหรับตั้งโปรแกรมและอยู่บนตัวบอร์ด

ขั้นตอนในการจัดการล็อครหัส

  • ป้อนรหัสสามหมายเลขลงในหน่วยความจำแบบไม่ลบเลือนของไมโครคอนโทรลเลอร์

ลองดูสิ่งนี้ด้วยตัวอย่างที่เฉพาะเจาะจง สมมติว่าเราต้องตั้งรหัสลับต่อไปนี้: หลักแรกคือ 8 หลักที่สองคือ 12 หลักที่สามคือ 9 ในการทำเช่นนี้ เราจ่ายพลังงานให้กับอุปกรณ์ จากนั้นกดปุ่มทั้งสองค้างไว้ (SB1 และ SB2 ). หลังจากนั้น ให้ปล่อยปุ่ม SB1 และทันทีที่ไฟ LED HL1 เริ่มกะพริบ ให้ปล่อยปุ่ม SB2 หลังจากการปรับเปลี่ยนเหล่านี้ ไฟ LED HL1 จะติดตลอดเวลา และไฟ LED HL2 และ HL3 จะไม่สว่างขึ้น สถานะของไฟ LED นี้บ่งชี้ว่าอุปกรณ์เข้าสู่โหมดการตั้งโปรแกรม

ตอนนี้เพื่อจดตัวเลขแรกเราต้องกดปุ่ม SB2 ค้างไว้ในขณะที่ไฟ LED ทั้งสามดวงจะเริ่มกะพริบ คุณต้องนับจำนวนแฟลชที่ต้องการ (ในกรณีของเราคือ 8) แล้วปล่อยปุ่ม หลังจากนั้น เพื่อยืนยันความถูกต้องของตัวเลขที่ป้อน ไฟ LED จะกะพริบเป็นจำนวนครั้งเท่ากัน (8 ครั้ง) ทุกอย่างหมายเลขแรกจะถูกเขียนลง จากนั้นไฟ LED HL2 จะสว่างขึ้น - เตือนเราว่าเราต้องจดตัวเลขที่สอง

เราดำเนินการในลักษณะเดียวกับการเขียนหมายเลขแรก: เรากดปุ่ม SB2 ค้างไว้และนับจำนวนไฟ LED ที่ต้องการ (ในตัวอย่างของเราคือ 12) ปล่อยปุ่มและตรวจสอบความถูกต้องของอินพุตโดย กะพริบซ้ำ จากนั้นไฟ LED HL3 จะสว่างขึ้นที่หมายเลขที่สาม และเราทำซ้ำขั้นตอนเดิมสำหรับหมายเลขที่สาม (หมายเลข 9)

หลังจากนั้นเราได้เขียนตัวเลขทั้งสามลงในหน่วยความจำของไมโครคอนโทรลเลอร์และเพื่อออกจากโหมดการเขียนโปรแกรม คุณต้องกดปุ่ม SB1

  • ชุดรหัสลับ

ลองพิจารณาสิ่งนี้ด้วยตัวอย่าง ก่อนหน้านั้นเราจดรหัสลับ 8-12-9 ในการเข้า ก่อนอื่นให้กดปุ่ม SB1 แล้วปล่อยทันทีหลังจากที่ไฟ LED HL1 สว่างขึ้น ซึ่งจะโอนล็อคของเราไปยังโหมดการป้อนรหัส ไฟ LED HL1 ที่สว่างขึ้นแสดงว่าคุณต้องป้อนตัวเลขตัวแรก ขั้นตอนการป้อนตัวเลขจะเหมือนกับการป้อนตัวเลขเมื่อตั้งโปรแกรม นั่นคือโดยการกดปุ่ม SB1 เราจะนับจำนวนที่ต้องการหลังจากนั้นปล่อยปุ่มและสังเกตการยืนยันหมายเลขที่โทรออกโดยการกะพริบไฟ LED จากนั้นเราจะไปยังหลักที่สองและสาม

ในกรณีที่ป้อนรหัสลับทั้งสามหลักถูกต้อง รีเลย์จะทำงานและไฟ LED HL4 จะเปิดเป็นเวลา 15 วินาที ไฟ LED HL1, HL2, HL3 จะติดสว่างในโหมดไฟวิ่ง

คุณมีความพยายามสามครั้งในการป้อนรหัสลับ หากป้อนรหัสไม่ถูกต้องเป็นครั้งที่สาม ความสามารถในการป้อนจะถูกบล็อกเป็นเวลา 2.5 นาที หลังจากเวลานี้ล็อคจะพร้อมให้ป้อนรหัสอีกครั้ง

เมื่อตั้งโปรแกรมไมโครคอนโทรลเลอร์ ควรตั้งค่าฟิวส์ต่อไปนี้:

  • CKDIV8 = 0
  • BODLEVEL0 = 0
  • SPMEN = 0

(1.3 Mb ดาวน์โหลด: 1 566)

รหัสล็อคจะช่วยจำกัดการเข้าถึงของบุคคลที่ไม่ได้รับอนุญาตไปยังห้องที่มีของมีค่า หนึ่งในตัวเลือกสำหรับการใช้การล็อครหัสบนไมโครคอนโทรลเลอร์ PIC16F628A มีให้ในบทความนี้

ภาพด้านล่างแสดงไดอะแกรมของรหัสล็อค แกนหลักของวงจรคือไมโครคอนโทรลเลอร์ PIC16F628A อัลกอริทึมสำหรับดำเนินการคำสั่งหลักแสดงในรูปที่ 2 โค้ดโปรแกรมเขียนด้วยภาษาแอสเซมบลี ดูรายชื่อในโฟลเดอร์ CL \ 16F628ATEMP.ASM ของไฟล์เก็บถาวรที่มีโปรเจ็กต์ อุปกรณ์ถูกควบคุมด้วยปุ่มเดียว การกดปุ่มจะทำให้เกิดการเปลี่ยนแปลงตามลำดับในโหมดการทำงานของอุปกรณ์ เสียงประกอบการกดปุ่มมีให้โดยตัวส่งเสียงแบบเพียโซ จอแสดงผลที่มีตัวควบคุมในตัวใช้สำหรับแสดงข้อมูลด้วยภาพ

วงจรทั้งหมดของการเขียนโปรแกรมในวงจรและการดีบักของไมโครคอนโทรลเลอร์ PIC16F628A ได้ดำเนินการโดยใช้ MPLAB IDE v8.15 (สภาพแวดล้อมการพัฒนาแบบบูรณาการ), คอมไพเลอร์ MPASM v5.22 (รวมอยู่ใน MPLAB IDE v8.15) และ MPLAB ICD 2 (ใน ดีบักเกอร์วงจร) สำหรับผู้ที่ไม่มีเครื่องมือข้างต้น แต่มีโปรแกรมของตัวเองสำหรับทำงานกับไฟล์ HEX และโปรแกรมเมอร์อื่น คุณสามารถค้นหาไฟล์ 16F628ATEMP.HEX ในโครงการที่เกี่ยวข้อง

ไมโครคอนโทรลเลอร์ DD1 มีเอาต์พุตการทำงาน RA0, RB0 - RB7, CCP1 ซึ่งใช้สำหรับข้อมูลอินพุตและเอาต์พุต ไมโครคอนโทรลเลอร์ DD1 ไม่มีฟังก์ชันรีเซ็ตแบบบังคับ พินรีเซ็ตเชื่อมต่อผ่านตัวต้านทาน R1 กับศักย์ไฟฟ้าบวก RC oscillator บนชิปใช้เพื่อสร้างความถี่สัญญาณนาฬิกา

ปุ่มนาฬิกา SB1 เชื่อมต่อกับเอาต์พุต RA0 ผ่านตัวต้านทานจำกัดกระแส R3 ในตำแหน่งกดของปุ่มนาฬิกา SB1 ตัวต้านทาน R7 จะจำลองระดับลอจิกต่ำ ไมโครคอนโทรลเลอร์ DD1 รับรู้สามสถานะของปุ่มนาฬิกา SB1:

  1. ไม่กด
  2. กดสั้น ๆ (น้อยกว่า 1 วินาที);
  3. กดค้างไว้ (มากกว่า 1 วินาที)

ตัวส่งเสียง Piezo P1 ช่วยแยกแยะสถานะของปุ่มชั้นเชิง SB1 ดังนั้นในสถานะ 1 จะไม่มีการสร้างเสียง ในสถานะ 2 จะเกิดเสียงจนกว่าไมโครคอนโทรลเลอร์จะรู้จักสถานะ 3 และในสถานะ 3 จะไม่มีเสียงเกิดขึ้น

ในการแสดงข้อมูล จะใช้จอแสดงผลคริสตัลเหลว HG1 สามารถดูข้อกำหนดทางเทคนิคของจอแสดงผลได้ที่เว็บไซต์ มีตัวควบคุมที่ใช้ฟังก์ชันการสร้างอักขระ แสดงสองบรรทัด บรรทัดละสิบหกอักขระ การแสดงผลถูกควบคุมผ่านไมโครคอนโทรลเลอร์พิน RB0, RB1, RB4 - RB7 การโหลดข้อมูลเกิดขึ้นในแทะผ่านพิน RB4 - RB7 "สลัก" - RB1 ตัวเลือกของการลงทะเบียนสัญญาณจะเกิดขึ้นที่เอาต์พุต RB0 ตัวต้านทาน R5 และ R6 ตั้งค่าคอนทราสต์ของจอแสดงผล HG1 ไฟพื้นหลังของจอแสดงผลเชื่อมต่อกับแหล่งจ่ายไฟผ่านตัวต้านทานจำกัดกระแส R4 จอแสดงผล HG1 ถูกขันเข้ากับบอร์ดด้วยตัวยึดทองเหลืองขนาด 3 x 15 มม. และสกรูขนาด 3 x 6 มม.

ด้วยการสร้างลอจิกบน RB2 ทำให้สามารถเปิดหรือปิดทรานซิสเตอร์เอฟเฟกต์ฟิลด์ VT1 ซึ่งจะเปิดและปิดล็อคไฟฟ้าที่เชื่อมต่อกับแผงขั้วต่อ X1 ล็อคไฟฟ้าต้องได้รับการออกแบบสำหรับแรงดันไฟฟ้าที่ใช้งานได้ 9-15 V และใช้กระแสไฟฟ้าไม่เกิน 1 A เมื่อใช้แรงดันไฟฟ้ากับล็อคไฟฟ้า จะต้องเปิดในกรณีที่ไม่มีแรงดันไฟฟ้า ล็อค (ปิด)

ไปยังเอาต์พุตของ CCP1 (การใช้งานฮาร์ดแวร์ของ PWM, ความถี่ 4 kHz, รอบการทำงาน 2) ผ่านตัวต้านทานจำกัดกระแส R2, ตัวส่งสัญญาณเสียงเพียโซ P1 ที่มีความถี่ในการทำงานของการสร้างเสียง 4 kHz เชื่อมต่ออยู่

อุปกรณ์นี้ใช้พลังงานจากแหล่งจ่ายแรงดันไฟ AC หรือ DC ที่เชื่อมต่อกับขั้วต่อ X2 แรงดันไฟฟ้าที่กำหนดของแหล่งจ่ายไฟคือ 9 - 15 V. กระแสไฟฟ้าที่กำหนดของแหล่งจ่ายไฟคือ 1 A. เพื่อทำให้แหล่งจ่ายไฟเสถียรจะใช้วงจรธรรมดาจากไดโอดบริดจ์ VD1, ตัวปรับเสถียรภาพเชิงเส้น DA1, ตัวเก็บประจุตัวกรอง C1 - C4.

อุปกรณ์สามารถทำงานได้ในช่วงอุณหภูมิตั้งแต่ -20 °С ถึง +70 °С
ไมโครคอนโทรลเลอร์ถูกตั้งโปรแกรมในลักษณะที่มีสถานะการทำงานสิบเอ็ดสถานะ

  1. เมื่อเปิดอุปกรณ์ EEPROM หน่วยความจำข้อมูลแบบไม่ลบเลือนจะถูกอ่าน ซึ่งข้อมูลของสถานะการล็อกและรหัสจะถูกอัปโหลด อุปกรณ์เปิดหรือปิดล็อคไฟฟ้าตามการลงทะเบียนสถานะการอ่านของล็อค อุปกรณ์จะเข้าสู่สถานะที่แสดงสถิติการเข้ารหัส เช่น 2.
  2. ในสถานะนี้ อุปกรณ์ในบรรทัดบนจะแสดงข้อความว่า “Stat. สเตตัส" และที่บรรทัดล่างสุดจะแสดงสถิติการเข้ารหัส ได้แก่ จำนวนการเข้ารหัสและจำนวนการถอดรหัส* หลังจากกดปุ่มชั้นเชิงสั้นหรือยาว อุปกรณ์ซึ่งได้รับการแนะนำโดยการลงทะเบียนสถานะล็อค จะเข้าสู่สถานะการเข้ารหัสหากล็อคเปิดอยู่ เช่น 3 และเข้าสู่สถานะการถอดรหัสหากล็อคถูกปิด เช่น 4.
  3. อุปกรณ์แสดงคำจารึก "รหัสรหัส" ในบรรทัดบนของจอแสดงผลและสลับไปยังสถานะที่ป้อนรหัส (โปรแกรมย่อย "การป้อนรหัส") เช่น 5. เพิ่มจำนวนตัวนับของการเข้ารหัส อุปกรณ์จะเข้าสู่สถานะที่เปลี่ยนสถานะของการล็อก ปิด เช่น 9.
  4. อุปกรณ์แสดงคำจารึก "Decode D.code" ในบรรทัดบนของจอแสดงผลและไปที่สถานะที่ป้อนรหัส (โปรแกรมย่อย "รายการรหัส") เช่น 5. เพิ่มจำนวนตัวนับของการถอดรหัส อุปกรณ์จะเปรียบเทียบรหัสที่ป้อนกับรหัสที่จัดเก็บไว้ในหน่วยความจำ EEPROM แบบไม่ลบเลือน หากรหัสตรงกัน อุปกรณ์จะเข้าสู่สถานะที่เปลี่ยนสถานะของการล็อก เปิด เช่น 10 และหากรหัสไม่ตรงกัน ก็จะเข้าสู่สถานะที่แสดงข้อมูลเกี่ยวกับข้อผิดพลาด เช่น สิบเอ็ด
  5. หลักแรกของรหัสสี่หลักจะถูกเน้นในวงเล็บเหลี่ยมที่บรรทัดล่างสุดของจอแสดงผล โดยการกดปุ่มนาฬิกาสั้น ๆ การลงทะเบียนของตัวเลขที่ป้อนจะเพิ่มขึ้น** หากกดปุ่มชั้นเชิงค้างไว้นานกว่า 1 วินาที อุปกรณ์จะเปลี่ยนเป็นสถานะที่เลือกหลักที่สองของรหัส นั่นคือ 6.
  6. หลักที่สองของรหัสสี่หลักจะถูกเน้นในวงเล็บเหลี่ยมที่บรรทัดล่างสุดของจอแสดงผล โดยการกดปุ่มนาฬิกาสั้น ๆ การลงทะเบียนของตัวเลขที่ป้อนจะเพิ่มขึ้น** หากกดปุ่มชั้นเชิงค้างไว้นานกว่า 1 วินาที อุปกรณ์จะเปลี่ยนเป็นสถานะที่เลือกหลักที่สามของรหัส นั่นคือ 7.
  7. หลักที่สามของรหัสสี่หลักจะถูกเน้นในวงเล็บเหลี่ยมที่บรรทัดล่างสุดของจอแสดงผล โดยการกดปุ่มนาฬิกาสั้น ๆ การลงทะเบียนของตัวเลขที่ป้อนจะเพิ่มขึ้น** หากกดปุ่มชั้นเชิงค้างไว้นานกว่า 1 วินาที อุปกรณ์จะเปลี่ยนเป็นสถานะที่เลือกหลักที่สี่ของรหัส นั่นคือ 8.
  8. หลักที่สี่ของรหัสสี่หลักจะถูกเน้นในวงเล็บเหลี่ยมที่บรรทัดล่างสุดของจอแสดงผล โดยการกดปุ่มนาฬิกาสั้น ๆ การลงทะเบียนของตัวเลขที่ป้อนจะเพิ่มขึ้น** หากกดปุ่มชั้นเชิงค้างไว้นานกว่า 1 วินาที อุปกรณ์จะเปลี่ยนเป็นสถานะจากที่รูทีนย่อย “Code Entry” ถูกร้องขอ เช่น 3 หรือ 4
  9. อุปกรณ์จะปิดล็อคและบันทึกสถานะของล็อคและรหัส ในบรรทัดบนสุดจะแสดงคำจารึก "การออม" และโค๊ตสี่หลักบรรทัดล่าง ถัดไป อุปกรณ์จะเข้าสู่สถานะที่แสดงสถิติการเข้ารหัส เช่น 2.
  10. อุปกรณ์เปิดล็อคและบันทึกสถานะล็อคและรหัส ในบรรทัดบนสุดจะแสดงคำจารึก "การออม" และโค๊ตสี่หลักบรรทัดล่าง ถัดไป อุปกรณ์จะเข้าสู่สถานะที่แสดงสถิติการเข้ารหัส เช่น 2.
  11. ในบรรทัดบนสุดจะแสดงข้อความ "Error Error" และในบรรทัดล่างจะมีรหัสสี่หลัก (ภาพที่ 4) หลังจากกดปุ่มชั้นเชิงสั้นหรือยาว อุปกรณ์จะเปลี่ยนเป็นสถานะที่แสดงสถิติการเข้ารหัส เช่น 2.

*หลังจากล้นเคาน์เตอร์ (มากกว่า 65535) จะรีเซ็ตเป็นศูนย์และเริ่มนับอีกครั้ง ซึ่งนำไปสู่ความล้มเหลวทางสถิติ ในแง่ที่ว่าจำนวนการเข้ารหัสอาจมากกว่าจำนวนการถอดรหัส ดังนั้น ขอแนะนำให้ยกเลิกการจ่ายพลังงานอุปกรณ์เพื่อรีเซ็ตตัวนับ

** เมื่อเพิ่มเลข 9 จะเกิดเลขศูนย์

เนื่องจากหน่วยความจำ EEPROM (ตั้งค่าในการกำหนดค่า) ได้รับการปกป้องจากการอ่านในวงจรของไมโครคอนโทรลเลอร์ จึงไม่สามารถอ่านและค้นหารหัสผ่านในวงจรได้ ดังนั้นจึงเปิดล็อคไฟฟ้า ยังมีวิธีที่ง่ายกว่าในการเปิด - ใช้แรงดันไฟฟ้าโดยตรงกับล็อคไฟฟ้าโดยตรง ฉันสรุปได้ว่าอุปกรณ์ "รหัสล็อค" และล็อคไฟฟ้าจะต้องได้รับการปกป้องอย่างน่าเชื่อถือจากการเจาะของบุคคลที่ไม่ได้รับอนุญาต ปุ่มและจอแสดงผลต้องสามารถเข้าถึงได้โดยอิสระ

ควรสังเกตว่าอุปกรณ์สามารถยกเลิกการจ่ายพลังงานได้ อย่างไรก็ตาม หลังจากป้อนรหัสแล้ว สถานะของการล็อกและรหัสจะถูกจัดเก็บไว้ในหน่วยความจำ EEPROM แบบไม่ลบเลือน ห้ามมิให้ยกเลิกพลังงานอุปกรณ์ในขณะที่บันทึกรหัสในหน่วยความจำ EEPROM แบบไม่ลบเลือน

ควรให้ความสนใจกับรายละเอียดที่สำคัญอย่างหนึ่งในการทำงานของอุปกรณ์ เมื่อเปิดอุปกรณ์จะสามารถเปิดล็อคไฟฟ้าได้ในช่วงเวลาสั้น ๆ (น้อยกว่า 1 วินาที) แม้ว่าสถานะปิดของล็อคไฟฟ้าจะถูกเก็บไว้ในหน่วยความจำ EEPROM ที่ไม่ลบเลือนก็ตาม เมื่อจำลองการทำงานของโค้ดโปรแกรมในสภาพแวดล้อม MPLAB IDE ฉันตรวจไม่พบข้อผิดพลาดนี้ ในกรณีที่อุปกรณ์ไฟฟ้าดับโดยไม่คาดคิดขณะบันทึกรหัสในหน่วยความจำ EEPROM รหัสอาจถูกบันทึกอย่างไม่ถูกต้องและจะไม่สามารถกู้คืนได้ ซึ่งจะนำไปสู่การตั้งโปรแกรมไมโครคอนโทรลเลอร์ใหม่ สิ่งนี้นำไปสู่คำแนะนำเกี่ยวกับความต้องการแหล่งจ่ายไฟสำรองที่เสถียรและ (หรือ) ไปยังอุปกรณ์ GB1 - พลังงานสำรอง

ดูไฟล์สำหรับการผลิตแผงวงจรพิมพ์ในโฟลเดอร์

สามารถเปลี่ยนชิ้นส่วนต่อไปนี้ในเครื่องนี้ได้ ไมโครคอนโทรลเลอร์ DD1 จากซีรี่ส์ PIC16F628A-I / P-xxx ที่มีความถี่สัญญาณนาฬิกาในการทำงาน 20 MHz ในแพ็คเกจ DIP18 จอแสดงผล HG1 จะพอดีกับซีรีส์ WH1602x รุ่นใดก็ได้ ตัวปรับแรงดันไฟฟ้า DA1 ในประเทศ KR142EN5A (5 V, 1.5 A) ฟิลด์ MOSFET ทรานซิสเตอร์ VT1 (N-channel) ในแพ็คเกจ I-Pak (TO-251AA) อะนาล็อกของพิกัดที่ระบุในแผนภาพมีความเหมาะสม ตัวส่งสัญญาณเสียง Piezo P1 ที่มีความถี่ในการทำงานของการสร้างเสียง 4 kHz สามารถใช้ไดโอดบริดจ์ VD1 กับซีรีส์ 2Wxx ใดก็ได้ ขั้วต่อสายไฟ X2 คล้ายกับที่แสดงในแผนภาพโดยมีหน้าสัมผัสตรงกลาง d=2.1 มม. ตัวเก็บประจุแบบไม่มีขั้ว C1 และ C2 ที่มีค่าเล็กน้อย 0.01 - 0.47 µF x 50 V. ตัวเก็บประจุด้วยไฟฟ้า C3 และ C4 มีพิกัดความจุเท่ากันและแรงดันไฟฟ้าไม่ต่ำกว่าที่ระบุไว้ในแผนภาพ

ดาวน์โหลดไฟล์เก็บถาวรพร้อมโครงการล็อครหัส: 16F628Code_Lock.rar

กำลังโหลด...กำลังโหลด...