บ้าน / ระบบทำความร้อน / ล็อคอิเล็กทรอนิกส์สำหรับ arduino uno ล็อคอิเล็กทรอนิกส์ทำมันด้วยตัวเอง การเตรียมการประกอบ

ล็อคอิเล็กทรอนิกส์สำหรับ arduino uno ล็อคอิเล็กทรอนิกส์ทำมันด้วยตัวเอง การเตรียมการประกอบ

บทช่วยสอนวันนี้เกี่ยวกับวิธีใช้เครื่องอ่าน RFID กับ Arduino เพื่อสร้างระบบล็อคอย่างง่าย ด้วยคำพูดง่ายๆ- ล็อค RFID

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

บทช่วยสอนจะใช้แท็ก RFID กับ Arduino อุปกรณ์จะอ่านตัวระบุเฉพาะ (UID) ของแท็ก RFID แต่ละแท็กที่เราวางไว้ถัดจากเครื่องอ่านและแสดงบนจอแสดงผล OLED หาก UID ของแท็กเท่ากับค่าที่กำหนดไว้ล่วงหน้าซึ่งเก็บไว้ในหน่วยความจำ Arduino เราจะเห็นข้อความ "ปลดล็อค" บนหน้าจอ หากตัวระบุเฉพาะไม่เท่ากับค่าที่กำหนดไว้ล่วงหน้า ข้อความ "ปลดล็อคแล้ว" จะไม่ปรากฏขึ้น - ดูภาพด้านล่าง

ปราสาทถูกปิด

ปราสาทเปิดอยู่

รายละเอียดที่จำเป็นในการสร้างโครงการนี้:

  • เครื่องอ่านอาร์เอฟไอดี RC522
  • จอแสดงผล OLED
  • กระดานขนมปัง
  • สายไฟ

รายละเอียดเพิ่มเติม:

  • แบตเตอรี่ (พาวเวอร์แบงค์)

ต้นทุนรวมของส่วนประกอบโครงการอยู่ที่ประมาณ 15 ดอลลาร์

ขั้นตอนที่ 2: เครื่องอ่าน RFID RC522

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

ชิปเดียวกันนี้มีอยู่ในแท็กพวงกุญแจ RFID

แท็ก RFID แต่ละรายการมีหมายเลขเฉพาะที่ระบุ นี่คือ UID ที่แสดงบนจอแสดงผล OLED ยกเว้น UID นี้ แต่ละแท็กสามารถเก็บข้อมูลได้ การ์ดประเภทนี้สามารถเก็บข้อมูลได้มากถึง 1,000 ข้อมูล น่าประทับใจใช่ไหม คุณลักษณะนี้จะไม่ถูกใช้งานในวันนี้ วันนี้ สิ่งที่น่าสนใจคือการระบุการ์ดเฉพาะโดย UID เครื่องอ่าน RFID และบัตร RFID ทั้งสองนี้มีราคาประมาณ 4 ดอลลาร์

ขั้นตอนที่ 3 จอแสดงผล OLED

บทช่วยสอนใช้จอภาพ I2C OLED ขนาด 0.96" 128x64

นี่เป็นจอแสดงผลที่ดีมากสำหรับใช้กับ Arduino เป็นจอแสดงผลแบบ OLED และนั่นหมายความว่ามีการใช้พลังงานต่ำ การใช้พลังงานของจอแสดงผลนี้ประมาณ 10-20mA และขึ้นอยู่กับจำนวนพิกเซล

จอแสดงผลมีความละเอียด 128 x 64 พิกเซลและมีขนาดเล็ก มีตัวเลือกการแสดงผลสองแบบ หนึ่งในนั้นคือสีเดียวและอีกสีหนึ่งสามารถแสดงได้สองสี: สีเหลืองและสีน้ำเงินเช่นเดียวกับที่ใช้ในบทช่วยสอน ด้านบนของหน้าจอสามารถเป็นสีเหลืองและด้านล่างเป็นสีน้ำเงินเท่านั้น

จอแสดงผล OLED นี้สว่างมากและมีไลบรารีที่ยอดเยี่ยมและดีมากที่ Adafruit พัฒนาขึ้นสำหรับจอแสดงผลนี้ นอกจากนี้ จอแสดงผลยังใช้อินเทอร์เฟซ I2C ดังนั้นการเชื่อมต่อกับ Arduino จึงเป็นเรื่องง่ายอย่างเหลือเชื่อ

คุณต้องเชื่อมต่อสายไฟสองเส้นเท่านั้น ยกเว้น Vcc และ GND หากคุณยังใหม่กับ Arduino และต้องการใช้จอแสดงผลราคาไม่แพงและเรียบง่ายในโครงการของคุณ ให้เริ่มที่นี่

ขั้นตอนที่ 4: การประกอบชิ้นส่วนทั้งหมดเข้าด้วยกัน

การสื่อสารกับบอร์ด Arduino Uno ทำได้ง่ายมาก ขั้นแรก ให้ต่อสายไฟเข้ากับทั้งเครื่องอ่านและจอแสดงผล

ระวัง เครื่องอ่าน RFID ต้องเชื่อมต่อกับเอาต์พุต 3.3V จาก Arduino Uno มิฉะนั้นจะเสียหาย

เนื่องจากจอแสดงผลสามารถทำงานที่ 3.3V ได้ เราจึงเชื่อมต่อ VCC จากโมดูลทั้งสองเข้ากับรางเขียงหั่นขนมแบบบวก รางนี้เชื่อมต่อกับเอาต์พุต 3.3V จาก Arduino Uno จากนั้นเราเชื่อมต่อทั้งสองกราวด์ (GND) กับบัสกราวด์เขียงหั่นขนม จากนั้นเราเชื่อมต่อบัส GND ของเขียงหั่นขนมกับ Arduino GND

จอแสดงผล OLED → Arduino

SCL → ขาอนาล็อก 5

SDA → ขาอนาล็อก 4

เครื่องอ่าน RFID → Arduino

RST → ขาดิจิตอล 9

IRQ → ไม่ได้เชื่อมต่อ

มิโซะ → ขาดิจิตอล 12

MOSI → ขาดิจิตอล 11

SCK → ขาดิจิตอล 13

SDA → พินดิจิทัล 10

โมดูลเครื่องอ่าน RFID ใช้อินเทอร์เฟซ SPI เพื่อสื่อสารกับ Arduino ดังนั้นเราจะใช้พิน SPI ของฮาร์ดแวร์ Arduino UNO

พิน RST ไปที่พินดิจิทัล 9 พิน IRQ ยังคงถูกตัดการเชื่อมต่อ พิน MISO ไปที่พินดิจิทัล 12 พิน MOSI ไปที่พินดิจิทัล 11 พิน SCK ไปที่พินดิจิทัล 13 และสุดท้ายพิน SDA ไปที่พินดิจิทัล 10 แค่นั้นแหละ

เชื่อมต่อเครื่องอ่าน RFID แล้ว ตอนนี้เราต้องเชื่อมต่อจอแสดงผล OLED กับ Arduino โดยใช้อินเทอร์เฟซ I2C ดังนั้นพิน SCL บนจอแสดงผลจึงไปที่พิน 5 แบบอะนาล็อก และ SDA บนจอแสดงผลไปที่พิน 4 แบบอะนาล็อก หากตอนนี้เราเปิดโปรเจ็กต์และวางการ์ด RFID ไว้ข้างๆ เครื่องอ่าน เราจะเห็นว่าโปรเจ็กต์ทำงานได้ดี

ขั้นตอนที่ 5: รหัสโครงการ

เพื่อที่จะรวบรวมรหัสโครงการ เราจำเป็นต้องรวมไลบรารีบางตัว ก่อนอื่น เราต้องมีไลบรารี MFRC522 Rfid

หากต้องการติดตั้งให้ไปที่ ร่าง -> รวมไลบรารี -> จัดการไลบรารี(การบริหารจัดการห้องสมุด). ค้นหา MFRC522 และติดตั้ง

นอกจากนี้เรายังต้องการไลบรารี Adafruit SSD1306 และไลบรารี Adafruit GFX สำหรับการแสดงผล

ติดตั้งไลบรารีทั้งสอง ไลบรารี Adafruit SSD1306 ต้องการการปรับเปลี่ยนเล็กน้อย ไปที่โฟลเดอร์ Arduino -> ห้องสมุดให้เปิดโฟลเดอร์ Adafruit SSD1306 และแก้ไขไลบรารี่ Adafruit_SSD1306.h. แสดงความคิดเห็นบรรทัดที่ 70 และไม่แสดงความคิดเห็นบรรทัดที่ 69 เพราะ จอแสดงผลมีความละเอียด 128x64

ขั้นแรก เราประกาศค่าของแท็ก RFID ที่ Arduino ควรรู้จัก นี่คืออาร์เรย์ของจำนวนเต็ม:

รหัส int = (69,141,8,136); // ยูไอดี

จากนั้นเราจะเริ่มต้นเครื่องอ่าน RFID และแสดงผล:

Rfid.PCD_Init(); display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

หลังจากนั้นในฟังก์ชันลูป เราจะตรวจสอบแท็กบนเครื่องอ่านทุกๆ 100 มิลลิวินาที

หากเครื่องอ่านมีแท็ก เราจะอ่าน UID และพิมพ์บนหน้าจอ จากนั้นเราจะเปรียบเทียบ UID ของแท็กที่เราเพิ่งอ่านกับค่าที่เก็บไว้ในตัวแปรโค้ด หากค่าเหมือนกัน เราจะแสดงข้อความ UNLOCK มิฉะนั้นเราจะไม่แสดงข้อความนี้

ถ้า(ตรงกัน) ( Serial.println("\nฉันรู้จักการ์ดใบนี้!"); printUnlockMessage(); )else ( Serial.println("\nUnknown Card"); )

แน่นอน คุณสามารถเปลี่ยนรหัสนี้เพื่อจัดเก็บค่า UID มากกว่า 1 ค่า เพื่อให้โครงการรู้จักแท็ก RFID มากขึ้น นี่เป็นเพียงตัวอย่างเท่านั้น

รหัสโครงการ:

#รวม #รวม #รวม #รวม # กำหนด OLED_RESET 4 จอแสดงผล Adafruit_SSD1306 (OLED_RESET); #กำหนด SS_PIN 10 #กำหนด RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // อินสแตนซ์ของคลาส MFRC522::MIFARE_Key คีย์; รหัส int = (69,141,8,136); //นี่คือ UID int codeRead = 0; สตริง uidString; การตั้งค่าเป็นโมฆะ () ( Serial.begin (9600); SPI.begin (); // Init SPI บัส rfid.PCD_Init (); // Init MFRC522 display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // เริ่มต้นด้วย I2C addr 0x3D (สำหรับ 128x64) // ล้าง buffer.display.clearDisplay(); display.display(); display.setTextColor(WHITE); // หรือ BLACK); display.setTextSize(2); display.setCursor(10,0); display.print ("ล็อค RFID"); display.display(); ) void loop() ( if(rfid.PICC_IsNewCardPresent()) ( readRFID(); ) delay(100); ) void readRFID() ( rfid.PICC_ReadCardSerial(); Serial.print(F("\nPICC ประเภท: ") ); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); // กาเครื่องหมาย PICC ของ MIFARE แบบคลาสสิก ถ้า (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) ( Serial.println(F("แท็กของคุณไม่ใช่ประเภท MIFARE Classic")); return; ) clearUID(); Serial.println(" UID ของ PICC ที่สแกน:"); printDec(rfid.uid.uidByte, rfid.uid.size); uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+ สตริง(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte); printUID(); int i = 0; boolean match = true; while(i

ขั้นตอนที่ 6: ผลลัพธ์สุดท้าย

อย่างที่คุณเห็นจากบทเรียน - คุณสามารถเพิ่มเครื่องอ่าน RFID ในโครงการของคุณด้วยเงินเพียงเล็กน้อย คุณสามารถสร้างระบบรักษาความปลอดภัยได้อย่างง่ายดายด้วยเครื่องอ่านนี้หรือสร้างโปรเจ็กต์ที่น่าสนใจอื่นๆ เช่น เพื่อให้ข้อมูลจากไดรฟ์ USB ถูกอ่านหลังจากปลดล็อกเท่านั้น

ฉันกำลังดู The Amazing Spider-Man ซ้ำเมื่อวันก่อน และในฉากหนึ่ง Peter Parker เปิดและปิดประตูจากระยะไกลจากแล็ปท็อปของเขา ทันทีที่ฉันเห็นสิ่งนี้ฉันก็รู้ทันทีว่าฉันต้องการล็อคอิเล็กทรอนิกส์ที่ประตูหน้า

หลังจากเล่นซอเล็กน้อย ฉันก็ประกอบโมเดลที่ใช้งานได้ของสมาร์ทล็อค ในบทความนี้ฉันจะบอกคุณว่าฉันรวบรวมมันอย่างไร

ขั้นตอนที่ 1: รายการวัสดุ





ในการประกอบล็อคอิเล็กทรอนิกส์บน Arduino คุณจะต้องใช้สื่อต่อไปนี้:

อิเล็กทรอนิกส์:

  • อะแดปเตอร์ติดผนัง 5V

ส่วนประกอบ:

  • 6 สกรูสำหรับสลัก
  • กระดาษแข็ง
  • สายไฟ

เครื่องมือ:

  • หัวแร้ง
  • ปืนกาว
  • เจาะ
  • เจาะ
  • เจาะรูนำร่อง
  • มีดเครื่องเขียน
  • คอมพิวเตอร์ที่มี Arduino IDE

ขั้นตอนที่ 2: วิธีการทำงานของล็อค

แนวคิดคือฉันสามารถเปิดหรือปิดประตูได้โดยไม่ต้องใช้กุญแจและไม่ต้องเข้าไปเปิดด้วยซ้ำ แต่นั่นเป็นเพียงแนวคิดพื้นฐาน เพราะคุณสามารถเพิ่มเซ็นเซอร์ตรวจจับการเคาะเพื่อตอบสนองต่อการเคาะแบบพิเศษ หรือคุณสามารถเพิ่มระบบจดจำเสียงได้!

คันโยกเซอร์โวที่เชื่อมต่อกับโบลต์จะปิด (0°) และเปิด (60°) โบลต์โดยใช้คำสั่งที่ได้รับผ่านโมดูลบลูทูธ

ขั้นตอนที่ 3: แผนภาพการเดินสายไฟ


มาเชื่อมต่อเซอร์โวกับบอร์ด Arduino ก่อน (โปรดทราบว่าแม้ว่าฉันจะใช้บอร์ด Arduino Nano แต่ pinout ก็เหมือนกันทุกประการบนบอร์ด Uno)

  • สายสีน้ำตาลของเซอร์โวเป็นกราวด์ เราเชื่อมต่อกับกราวด์บน Arduino
  • สายสีแดงเป็นบวกเราเชื่อมต่อกับขั้วต่อ 5V บน Arduino
  • สายสีส้ม - เอาต์พุตเซอร์โว เชื่อมต่อกับพิน 9 บน Arduino

ฉันแนะนำให้คุณทดสอบเซอร์โวก่อนดำเนินการประกอบ ในการทำเช่นนี้ ในโปรแกรม Arduino IDE ให้เลือก Sweep ในตัวอย่าง หลังจากแน่ใจว่าเซอร์โวทำงาน เราก็สามารถเชื่อมต่อโมดูลบลูทูธได้ คุณต้องเชื่อมต่อพิน rx ของโมดูล Bluetooth กับพิน tx ของ Arduino และพิน tx ของโมดูลเข้ากับพิน rx ของ Arduino แต่อย่าเพิ่งทำ! เมื่อบัดกรีการเชื่อมต่อเหล่านี้แล้ว คุณจะไม่สามารถอัปโหลดโค้ดใดๆ ไปยัง Arduino ได้ ดังนั้นให้อัปโหลดโค้ดทั้งหมดของคุณก่อนแล้วจึงบัดกรีการเชื่อมต่อ

นี่คือแผนภาพการเชื่อมต่อของโมดูลและไมโครคอนโทรลเลอร์:

  • โมดูล Rx - บอร์ด Tx Arduino
  • โมดูล Tx - บอร์ด Rx
  • Vcc (ขั้วบวก) ของโมดูล - 3.3v ของบอร์ด Arduino
  • กราวด์เชื่อมต่อกับกราวด์ (กราวด์ถึงกราวด์)

หากคำอธิบายไม่ชัดเจน ให้ปฏิบัติตามแผนภาพการเดินสายที่ให้ไว้

ขั้นตอนที่ 4: ทดสอบ

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

ขั้นตอนที่ 5: สิ่งที่แนบมาสำหรับอุปกรณ์ไฟฟ้า



ฉันตัดสินใจใส่เฉพาะคอนโทรลเลอร์และโมดูล Bluetooth ไว้ในเคส และปล่อยเซอร์โวไว้ข้างนอก ในการทำเช่นนี้ บนกระดาษแข็ง ให้วาดโครงร่างของบอร์ด Arduino Nano และเพิ่มพื้นที่ 1 ซม. รอบปริมณฑลแล้วตัดออก หลังจากนั้นเราก็ตัดอีกห้าด้านของร่างกาย ที่ผนังด้านหน้า คุณจะต้องเจาะรูสำหรับสายไฟของตัวควบคุม

ขนาดด้านข้างของเคส:

  • ก้น - 7.5x4 ซม
  • ฝา - 7.5x4 ซม
  • ผนังด้านซ้าย - 7.5x4 ซม
  • ผนังด้านขวา - 7.5x4 ซม
  • ผนังด้านหน้า - 4x4 ซม. (มีช่องสำหรับสายไฟ)
  • ผนังด้านหลัง - 4x4 ซม

ขั้นตอนที่ 6: การสมัคร

ในการควบคุมคอนโทรลเลอร์ คุณต้องมีแกดเจ็ต Android หรือ Windows ที่มีบลูทูธในตัว ฉันไม่มีโอกาสทดสอบแอปพลิเคชันบนอุปกรณ์ Apple อาจต้องใช้ไดรเวอร์บางตัว

ฉันแน่ใจว่าพวกคุณบางคนมีโอกาสที่จะลองดู สำหรับ Android ให้ดาวน์โหลดแอพ Bluetooth Terminal สำหรับ Windows ดาวน์โหลด TeraTerm จากนั้นคุณต้องเชื่อมต่อโมดูลกับสมาร์ทโฟนของคุณ ชื่อควรเป็น linvor รหัสผ่านควรเป็น 0000 หรือ 1234 เมื่อสร้างการจับคู่แล้ว ให้เปิดแอปพลิเคชันที่ติดตั้ง ป้อนตัวเลือกและเลือก "สร้างการเชื่อมต่อ (ไม่ปลอดภัย)" ตอนนี้สมาร์ทโฟนของคุณคือจอภาพอนุกรมของ Arduino ซึ่งหมายความว่าคุณสามารถสื่อสารกับคอนโทรลเลอร์ได้

หากคุณป้อน 0 ประตูจะปิดและหน้าจอสมาร์ทโฟนจะแสดงข้อความ "Door closed"
หากคุณป้อน 1 คุณจะเห็นประตูเปิดอยู่และข้อความ "Door open" จะปรากฏขึ้นบนหน้าจอ
บน Windows กระบวนการจะเหมือนกัน ยกเว้นว่าคุณต้องติดตั้งแอปพลิเคชัน TeraTerm

ขั้นตอนที่ 7: ติดตั้งสลักเกลียว


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

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

ขั้นตอนที่ 8: โภชนาการ


เพื่อให้อุปกรณ์สมบูรณ์ คุณจะต้องมีแหล่งจ่ายไฟ สายไฟ และปลั๊ก mini usb เพื่อเชื่อมต่อกับ Arduino
เชื่อมต่อขั้วต่อกราวด์ของแหล่งจ่ายไฟเข้ากับขั้วต่อกราวด์ของพอร์ต mini usb ต่อสายสีแดงเข้ากับสายสีแดงของพอร์ต mini usb จากนั้นเดินสายจากตัวล็อคไปที่บานพับประตู และจากที่นั่นไปยังซ็อกเก็ต .

ขั้นตอนที่ 9: รหัส

#รวมถึงเซอร์โว myservo; ตำแหน่ง int = 0; สถานะ int; int ธง = 0; การตั้งค่าเป็นโมฆะ () ( myservo.attach (9); Serial.begin (9600); myservo.write (60); delay (1,000); ) void loop () ( if(Serial.available() > 0) ( state = Serial.read(); flag=0; ) // หากสถานะเป็น "0" มอเตอร์กระแสตรงจะปิดถ้า (สถานะ == "0") ( myservo.write(8); delay(1000); Serial.read(); println("Door Locked"); ) else if (state == "1") ( myservo.write(55); delay(1000); Serial.println("Door UnLocked"); ) )

ขั้นตอนที่ 10: เสร็จสิ้น Arduino Lock

เพลิดเพลินกับการล็อกรีโมทคอนโทรล และอย่าลืม "บังเอิญ" ล็อกเพื่อนในห้อง

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

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

ความคิด

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

เครื่องประดับ

Arduino UNO = 18 เหรียญ
Arduino protoshield + เขียงหั่นขนม = 6 ดอลลาร์
L293D = 1 ดอลลาร์
มัดสายไฟ 30 ชิ้นสำหรับบอร์ดเพาะพันธุ์ = 4 ดอลลาร์
2 ซ็อกเก็ต RJ45 = 4 ดอลลาร์
2 ปลั๊ก RJ45 = 0.5 ดอลลาร์
ตัวกระตุ้นเซ็นทรัลล็อค = 250 รูเบิล
สวิตช์กก = ฉีกขาดฟรีจากหน้าต่างเก่า
Espagnolette โลหะขนาดใหญ่ = ฟรี
เคสจากฮับ D-LINK เก่าที่ทำจากเหล็ก 1.5 มม. = ฟรี
แหล่งจ่ายไฟจากฮับ D-LINK เดียวกันสำหรับ 12 และ 5v = ฟรีด้วย
สกรูและน็อตจำนวนหนึ่งสำหรับติดสิ่งเหล่านี้เข้ากับเคส = 100 รูเบิล
แผงควบคุมจากระบบสัญญาณกันขโมย = ฟรี

ทั้งหมด:$33.5 และ 350 รูเบิล

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

การเตรียมการประกอบ

ฉันอยากจะพูดสองสามคำเกี่ยวกับการซื้อองค์ประกอบหลักของการออกแบบแอคชูเอเตอร์ ที่ร้านขายรถยนต์แถวบ้าน พวกเขาเสนอแอคชูเอเตอร์สองแบบให้ฉัน: "แบบมีสายสองเส้นและแบบห้าเส้น" ตามที่พนักงานขายกล่าวว่าพวกเขาเหมือนกันทุกประการและความแตกต่างของจำนวนสายก็ไม่มีความหมายอะไรเลย อย่างไรก็ตาม เมื่อปรากฎในภายหลัง กลับไม่เป็นเช่นนั้น! ฉันเลือกอุปกรณ์ที่มีสายไฟสองเส้น ใช้ไฟ 12v การออกแบบห้าสายมีลิมิตสวิตช์เพื่อควบคุมการเคลื่อนที่ของคันโยก ฉันรู้ว่าฉันซื้อผิดเมื่อฉันแยกมันออกจากกันและมันก็สายเกินไปที่จะเปลี่ยนมัน จังหวะของคันโยกสั้นเกินไปที่จะดันสลักได้อย่างถูกต้องดังนั้นจึงจำเป็นต้องปรับเปลี่ยนเล็กน้อยกล่าวคือถอดแหวนยางสองตัวที่ทำให้จังหวะของคันโยกแอคชูเอเตอร์สั้นลง ในการทำเช่นนี้ร่างกายจะต้องถูกเลื่อยด้วยเลื่อยธรรมดาเพราะแหวนที่สองอยู่ข้างใน เทปพันสายไฟสีฟ้าที่ส่งมาให้เราช่วยเราในการประกอบกลับในภายหลังเช่นเคย
ในการควบคุมมอเตอร์แอคชูเอเตอร์นั้นใช้ไดรเวอร์มอเตอร์ L293D ซึ่งสามารถทนต่อโหลดสูงสุดได้ถึง 1200 mA ในกรณีของเรา เมื่อมอเตอร์แอคชูเอเตอร์หยุดทำงาน โหลดสูงสุดจะเพิ่มเป็น 600 mA เท่านั้น
หน้าสัมผัสจากแป้นพิมพ์ ลำโพง และไฟ LED สองดวงถูกนำออกจากแผงควบคุมจากสัญญาณเตือนความปลอดภัย ควรเชื่อมต่อรีโมทคอนโทรลและอุปกรณ์หลักโดยใช้สายคู่บิดเกลียวและขั้วต่อ RJ45

การเขียนโปรแกรม

เนื่องจากฉันยังไม่เคยมีประสบการณ์กับการเขียนโปรแกรม Arduino เลยจนถึงตอนนี้ ฉันใช้ประโยชน์จากการพัฒนาและบทความของผู้อื่นจากเว็บไซต์ arduino.cc ใครสนใจสามารถดูรหัสที่น่าเกลียดนี้ :)

ภาพถ่ายและวิดีโอ



Arduino และแอคทูเอเตอร์


หน่วยพลังงาน


คีย์บอร์ด


Espagnolette (เชื่อมต่อกับแอคชูเอเตอร์ด้วยเข็มโลหะและใส่การหดความร้อนเพื่อความสวยงาม)

วิดีโอขั้นตอนการทำงานของอุปกรณ์:

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

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

ความคิด

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

เครื่องประดับ

Arduino UNO = 18 เหรียญ
Arduino protoshield + เขียงหั่นขนม = 6 ดอลลาร์
L293D = 1 ดอลลาร์
มัดสายไฟ 30 ชิ้นสำหรับบอร์ดเพาะพันธุ์ = 4 ดอลลาร์
2 ซ็อกเก็ต RJ45 = 4 ดอลลาร์
2 ปลั๊ก RJ45 = 0.5 ดอลลาร์
ตัวกระตุ้น เซ็นทรัลล็อค= 250 รูเบิล
สวิตช์กก = ฉีกขาดฟรีจากหน้าต่างเก่า
สลักโลหะ ขนาดยักษ์= ฟรี
เคสจากฮับ D-LINK เก่าที่ทำจากเหล็ก 1.5 มม. = ฟรี
แหล่งจ่ายไฟจากฮับ D-LINK เดียวกันสำหรับ 12 และ 5v = ฟรีด้วย
สกรูและน็อตจำนวนหนึ่งสำหรับติดสิ่งเหล่านี้เข้ากับเคส = 100 รูเบิล
แผงควบคุมจาก สัญญาณกันขโมย= ฟรี

ทั้งหมด:$33.5 และ 350 รูเบิล

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

การเตรียมการประกอบ

ฉันอยากจะพูดสองสามคำเกี่ยวกับการซื้อองค์ประกอบหลักของการออกแบบแอคชูเอเตอร์ ที่ร้านขายรถยนต์แถวบ้าน พวกเขาเสนอแอคชูเอเตอร์สองแบบให้ฉัน: "แบบมีสายสองเส้นและแบบห้าเส้น" ตามที่พนักงานขายกล่าวว่าพวกเขาเหมือนกันทุกประการและความแตกต่างของจำนวนสายก็ไม่มีความหมายอะไรเลย อย่างไรก็ตาม เมื่อปรากฎในภายหลัง กลับไม่เป็นเช่นนั้น! ฉันเลือกอุปกรณ์ที่มีสายไฟสองเส้น ใช้ไฟ 12v การออกแบบห้าสายมีลิมิตสวิตช์เพื่อควบคุมการเคลื่อนที่ของคันโยก ฉันรู้ว่าฉันซื้อผิดเมื่อฉันแยกมันออกจากกันและมันก็สายเกินไปที่จะเปลี่ยนมัน จังหวะของคันโยกสั้นเกินไปที่จะดันสลักได้อย่างถูกต้องดังนั้นจึงจำเป็นต้องปรับเปลี่ยนเล็กน้อยกล่าวคือถอดแหวนยางสองตัวที่ทำให้จังหวะของคันโยกแอคชูเอเตอร์สั้นลง ในการทำเช่นนี้ร่างกายจะต้องถูกเลื่อยด้วยเลื่อยธรรมดาเพราะแหวนที่สองอยู่ข้างใน เทปพันสายไฟสีฟ้าที่ส่งมาให้เราช่วยเราในการประกอบกลับในภายหลังเช่นเคย
ในการควบคุมมอเตอร์แอคชูเอเตอร์นั้นใช้ไดรเวอร์มอเตอร์ L293D ซึ่งสามารถทนต่อโหลดสูงสุดได้ถึง 1200 mA ในกรณีของเรา เมื่อมอเตอร์แอคชูเอเตอร์หยุดทำงาน โหลดสูงสุดจะเพิ่มเป็น 600 mA เท่านั้น
หน้าสัมผัสจากแป้นพิมพ์ ลำโพง และไฟ LED สองดวงถูกนำออกจากแผงควบคุมจากสัญญาณเตือนความปลอดภัย ควรเชื่อมต่อรีโมทคอนโทรลและอุปกรณ์หลักโดยใช้สายคู่บิดเกลียวและขั้วต่อ RJ45

การเขียนโปรแกรม

เนื่องจากฉันยังไม่เคยมีประสบการณ์กับการเขียนโปรแกรม Arduino เลยจนถึงตอนนี้ ฉันใช้ประโยชน์จากการพัฒนาและบทความของผู้อื่นจากเว็บไซต์ arduino.cc ใครสนใจสามารถดูรหัสที่น่าเกลียดนี้ :)

ภาพถ่ายและวิดีโอ



Arduino และแอคทูเอเตอร์


หน่วยพลังงาน


คีย์บอร์ด


Espagnolette (เชื่อมต่อกับแอคชูเอเตอร์ด้วยเข็มโลหะและใส่การหดความร้อนเพื่อความสวยงาม)

วิดีโอขั้นตอนการทำงานของอุปกรณ์:

ในบทความนี้ฉันจะแสดงวิธีสร้างรหัสล็อคจาก arduino ในการทำเช่นนี้เราต้องการไฟ LED สีแดงและสีเขียว, ออด, arduino nano, จอ LCD พร้อมตัวแปลง I2C, ไดรฟ์เซอร์โวและแป้นพิมพ์เมทริกซ์ 4x4 เมื่อเปิดเครื่อง หน้าจอจะเขียนว่า "ป้อนรหัส"

ไฟ LED สีแดงจะเปิดขึ้น

และสีเขียวดับลง เซอร์โวจะถูกตั้งค่าเป็น 0° เมื่อป้อนตัวเลข * จะสว่างขึ้นบนหน้าจอ

หากป้อนรหัสไม่ถูกต้อง หน้าจอจะแสดง "ป้อนรหัส" หากรหัสถูกต้อง เสียงบี๊บจะดังขึ้น เซอร์โวจะหมุน 180° หน้าจอจะแสดงข้อความว่า "เปิด"

ไฟ LED สีเขียวจะสว่างขึ้น

และสีแดงจะดับลง หลังจากผ่านไป 3 วินาที เซอร์โวจะกลับสู่ ตำแหน่งเริ่มต้น, ไฟ LED สีแดงจะเปิดขึ้น และไฟ LED สีเขียวจะดับ หน้าจอจะเขียนว่า "ปิด"

จากนั้นหน้าจอจะเขียนว่า "ใส่รหัส" ตอนนี้เกี่ยวกับโครงการ ก่อนอื่นเราเชื่อมต่อ arduino ด้วยสายไฟเข้ากับเขียงหั่นขนม (หน้าสัมผัสพลังงาน)

จากนั้นเราเชื่อมต่อแป้นพิมพ์เมทริกซ์กับผู้ติดต่อ D9 - D2

จากนั้นเซอร์โว เราเชื่อมต่อกับพิน 10

LED สีแดงไปที่พิน 11

สีเขียว - เพื่อปักหมุด 12

ออด - เพื่อตรึง 13

ตอนนี้อัปโหลดร่าง

#รวม #รวม #รวม #รวม iarduino_KB KB(9, 8, 7, 6, 5, 4, 3, 2); จอแอลซีดี LiquidCrystal_I2C (0x27, 16, 2); เซอร์โว เซอร์โว int ผ่าน = (3, 6, 1, 8); int ใน; int r = 11; int g = 12; การตั้งค่าเป็นโมฆะ () ( KB.begin (KB1); pinMode (r, OUTPUT); pinMode (g, OUTPUT); lcd.init (); lcd.backlight (); digitalWrite (g, LOW); digitalWrite (r, สูง ); servo.attach(10); servo.write(0); lcd.setCursor(0, 0); ) void loop() ( lcd.clear(); lcd.print("ป้อนรหัส"); ในขณะที่ ( !KB.check(KEY_DOWN)) ( ความล่าช้า (1); ) ใน = KB.getNum; lcd.clear(); lcd.setCursor(0, 0); lcd.print("*"); ในขณะที่ (!KB. ตรวจสอบ (KEY_DOWN)) ( ล่าช้า (1); ) ใน = KB.getNum; lcd.print ("*"); ในขณะที่ (!KB.check(KEY_DOWN)) ( ล่าช้า (1); ) ใน = KB.getNum; lcd.print("*"); while (!KB.check(KEY_DOWN)) ( delay(1); ) in = KB.getNum; lcd.print("*"); if (in == pass) ( ถ้า (ใน == ผ่าน) ( ถ้า (ใน == ผ่าน) ( ถ้า (ใน == ผ่าน) ( lcd.clear(); lcd.setCursor(0, 0); lcd.print("เปิด"); โทน( 13, 400, 750); servo.write(180); digitalWrite(r, LOW); digitalWrite(g, สูง); delay(3000); lcd.clear(); lcd.setCursor(0, 0); lcd. พิมพ์ ("ปิด"); โทน (13, 300, 700); servo.write (0); digitalWrite (g, ต่ำ); digitalWrite (r, สูง); ล่าช้า (1,000); ) ) ) ) )

นั่นคือทั้งหมด สนุกกับการล็อครหัส!

รายการองค์ประกอบวิทยุ

การกำหนด พิมพ์ นิกาย ปริมาณ บันทึกร้านค้าแผ่นจดบันทึกของฉัน
E1 บอร์ด Arduino

Arduino นาโน 3.0

1 5V ไปที่แผ่นจดบันทึก
E8, E9 ตัวต้านทาน

220 โอห์ม

2 smd ไปที่แผ่นจดบันทึก
E6 ไดโอดเปล่งแสง

AL102G

1 สีแดง ไปที่แผ่นจดบันทึก
E7 ไดโอดเปล่งแสง

AL307G

1 สีเขียว ไปที่แผ่นจดบันทึก
E3 จอ LCDด้วยอินเตอร์เฟส I2C1 ไฟพื้นหลังสีเขียว ไปที่แผ่นจดบันทึก
E5 เซอร์โวเอสจี901 180 องศา ไปที่แผ่นจดบันทึก
E2 ออด5V1 ไปที่แผ่นจดบันทึก
E4 คีย์บอร์ด4x41 เมทริกซ์ ไปที่แผ่นจดบันทึก
เลขที่ เขียงหั่นขนม640 คะแนน1 โดยไม่ต้องบัดกรี