รหัสล็อคทำเองบน Arduino arduino ล็อคอิเล็กทรอนิกส์

ความคืบหน้าไม่หยุดนิ่งและ "ล็อคอัจฉริยะ" ปรากฏขึ้นที่ประตูอพาร์ทเมนท์ โรงรถ และบ้านมากขึ้นเรื่อยๆ

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

ในโครงการนี้ จะมีการนำเวอร์ชัน DIY มาใช้งาน สมาร์ทล็อคบน Arduino ซึ่งสามารถควบคุมจากระยะไกลได้จากทุกที่ในโลก

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

การล็อคแบบนี้อาจเป็นก้าวแรกที่ดีในโครงการบ้านอัจฉริยะของคุณ

การตั้งค่าเซ็นเซอร์ลายนิ้วมือ

ในการทำงานกับเซ็นเซอร์ลายนิ้วมือ มีห้องสมุดที่ยอดเยี่ยมสำหรับ Arduino ซึ่งทำให้ขั้นตอนการตั้งค่าเซ็นเซอร์ง่ายขึ้นมาก โครงการนี้ใช้ Arduino Uno. บอร์ด Adafruit CC3000 ใช้สำหรับเชื่อมต่ออินเทอร์เน็ต

เริ่มต้นด้วยการเชื่อมต่อพลังงาน:

  • เชื่อมต่อพิน 5V จากบอร์ด Arduino เข้ากับรางไฟสีแดง
  • พิน GND จาก Arduino เชื่อมต่อกับรางสีน้ำเงินบนแผงวงจรแบบบัดกรี

ไปที่การเชื่อมต่อเซ็นเซอร์ลายนิ้วมือ:

  • ต่อไฟก่อน. เมื่อต้องการทำเช่นนี้ สายสีแดงเชื่อมต่อกับราง +5 V และสายสีดำกับราง GND
  • สายเซ็นเซอร์สีขาวเชื่อมต่อกับพิน 4 บน Arduino
  • สายเขียวไปที่พิน 3 บนไมโครคอนโทรลเลอร์

ทีนี้มาดูโมดูล CC3000:

  • เชื่อมต่อพิน IRQ จากบอร์ด CC3000 เข้ากับพิน 2 บน Arduino
  • VBAT - เพื่อตรึง 5
  • CS - เพื่อตรึง 10
  • หลังจากนั้นคุณต้องเชื่อมต่อพิน SPI กับ Arduino: MOSI, MISO และ CLK - กับพิน 11, 12 และ 13 ตามลำดับ

และสุดท้าย คุณต้องจัดหาพลังงาน: Vin - ถึง Arduino 5V (รางสีแดงบนแผงวงจรของคุณ) และ GND ถึง GND (รางสีน้ำเงินบนเขียงหั่นขนม)

ภาพของโครงการที่ประกอบเสร็จแล้วแสดงไว้ด้านล่าง:

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

หากคุณยังไม่ได้ดำเนินการ ให้ลงชื่อสมัครใช้บัญชี Adafruit IO

หลังจากนั้น เราสามารถไปยังขั้นตอนต่อไปของการพัฒนา "ล็อคอัจฉริยะ" บน Arduino กล่าวคือ การพัฒนาร่างที่จะส่งข้อมูลไปยัง Adafruit IO เนื่องจากโปรแกรมมีขนาดใหญ่มาก ในบทความเราจะเน้นและพิจารณาเฉพาะส่วนหลักๆ จากนั้นเราจะให้ลิงก์ไปยัง GitHub ซึ่งคุณสามารถดาวน์โหลดภาพร่างแบบเต็มได้

สเก็ตช์เริ่มต้นด้วยการโหลดไลบรารีที่จำเป็นทั้งหมด:

#รวม

#รวม

#รวม

#รวม "Adafruit_MQTT.h"

#รวม "Adafruit_MQTT_CC3000.h"

#รวม

#รวม >

หลังจากนั้น คุณต้องแก้ไขภาพร่างเล็กน้อยโดยแทรกพารามิเตอร์ของเครือข่าย WiFi ของคุณ โดยระบุ SSID และรหัสผ่าน (รหัสผ่าน):

#define WLAN_SECURITY WLAN_SEC_WPA2>

นอกจากนี้ คุณต้องป้อนชื่อและคีย์ AIO (คีย์) เพื่อเข้าสู่บัญชี Adafruit IO ของคุณ:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_name"

#define AIO_KEY "adafruit_io_key">

บรรทัดต่อไปนี้มีหน้าที่รับผิดชอบในการโต้ตอบและการประมวลผลข้อมูลจากเซ็นเซอร์ลายนิ้วมือ หากเปิดใช้งานเซ็นเซอร์ (จับคู่ลายนิ้วมือ) จะเป็น "1":

อักขระ const FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/fingerprint";

Adafruit_MQTT_เผยแพร่ลายนิ้วมือ = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

นอกจากนี้ เราจำเป็นต้องสร้างอินสแตนซ์ของอ็อบเจ็กต์ SoftwareSerial สำหรับเซ็นเซอร์ของเรา:

ซอฟต์แวร์Serial mySerial(3, 4);

หลังจากนั้น เราสามารถสร้างวัตถุสำหรับเซ็นเซอร์ของเราได้:

นิ้ว Adafruit_Fingerprint = Adafruit_Fingerprint (&mySerial);

ภายในภาพสเก็ตช์ เราระบุว่ารหัสนิ้วใดที่จะเปิดใช้งานการล็อกในอนาคต ในตัวอย่างนี้ ใช้ 0 ซึ่งสอดคล้องกับ ID ของลายนิ้วมือแรกที่เซ็นเซอร์ใช้:

int fingerID = 0;

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

int enableCounter = 0;

int lastActivation = 0;

int การเปิดใช้งานเวลา = 10 * 1,000;

ในส่วนของฟังก์ชัน setup() เราเริ่มต้นเซ็นเซอร์ลายนิ้วมือและตรวจสอบให้แน่ใจว่าชิป CC3000 เชื่อมต่อกับเครือข่าย WiFi ของคุณ

ในเนื้อความของฟังก์ชัน loop() เราเชื่อมต่อกับ Adafruit IO บรรทัดต่อไปนี้รับผิดชอบสิ่งนี้:

หลังจากเชื่อมต่อกับแพลตฟอร์ม Adafruit IO เราจะตรวจสอบลายนิ้วมือสุดท้าย หากตรงกันและไม่ได้เปิดใช้งานการล็อก เราจะส่ง "1" ไปยัง Adafruit IO เพื่อดำเนินการ:

ถ้า (fingerprintID == fingerID && lockState == false) (

Serial.println(F("การเข้าถึงที่ได้รับ!"));

lockState=จริง;

Serial.println(F("ล้มเหลว"));

Serial.println(F("ตกลง!"));

LastActivation = มิลลิวินาที ();

หากภายในฟังก์ชัน loop() การล็อกถูกเปิดใช้งาน และเรามาถึงค่าการหน่วงเวลาที่ระบุข้างต้นแล้ว เราจะส่ง "0":

ถ้า ((activationCounter - lastActivation > enableTime) && lockState == true) (

lockState=เท็จ;

ถ้า (! fingerprint.publish(สถานะ)) (

Serial.println(F("ล้มเหลว"));

Serial.println(F("ตกลง!"));

คุณสามารถดาวน์โหลดโค้ดเวอร์ชันล่าสุดได้ที่ GitHub

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

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

เมื่อ Arduino เชื่อมต่อกับ เครือข่าย WiFi, เซ็นเซอร์ลายนิ้วมือจะกะพริบเป็นสีแดง วางนิ้วของคุณบนเซ็นเซอร์ หน้าต่างมอนิเตอร์ซีเรียลควรแสดงหมายเลข ID หากตรงกัน จะมีข้อความปรากฏขึ้นว่า "ตกลง!" ซึ่งหมายความว่าข้อมูลถูกส่งไปยังเซิร์ฟเวอร์ Adafruit IO แล้ว

แบบแผนและแบบร่างสำหรับการตั้งค่าล็อคเพิ่มเติมโดยใช้ตัวอย่างของ LED

ตอนนี้เรามาจัดการกับส่วนของโครงการที่รับผิดชอบโดยตรงในการจัดการ ล็อคประตู. ในการเชื่อมต่อกับเครือข่ายไร้สายและเปิด/ปิดการล็อค คุณจะต้องมีโมดูล Adafruit ESP8266 เพิ่มเติม (โมดูล ESP8266 ไม่จำเป็นต้องมาจาก Adafruit) ตัวอย่างด้านล่างจะแสดงให้เห็นว่าการสื่อสารระหว่างสองแพลตฟอร์ม (Arduino และ ESP8266) นั้นง่ายเพียงใดโดยใช้ Adafruit IO

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

วงจรค่อนข้างง่าย: ก่อนอื่นให้ติดตั้ง ESP8266 บนเขียงหั่นขนม จากนั้นติดตั้ง LED อย่าลืมว่าขา LED ยาว (บวก) เชื่อมต่อผ่านตัวต้านทาน ขาที่สองของตัวต้านทานเชื่อมต่อกับพิน 5 บนโมดูล ESP8266 LED (แคโทด) ดวงที่สองเชื่อมต่อกับพิน GND บน ESP8266

อย่างเต็มที่ วงจรประกอบแสดงในภาพด้านล่าง


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

เราเริ่มต้นด้วยการรวมไลบรารีที่จำเป็น:

#รวม

#รวม "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

กำหนดการตั้งค่า WiFi:

#define WLAN_SSID "ของคุณ_wifi_ssid"

#define WLAN_PASS "รหัสผ่านของคุณ"

#define WLAN_SECURITY WLAN_SEC_WPA2

นอกจากนี้เรายังกำหนดค่าพารามิเตอร์ Adafruit IO เช่นเดียวกับในส่วนก่อนหน้า:

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_username"

#define AIO_KEY "adafruit_io_key"

เราระบุพินที่เราเชื่อมต่อ LED (ในอนาคตจะเป็นล็อคหรือรีเลย์ของเรา):

int รีเลย์พิน = 5;

การโต้ตอบกับเซ็นเซอร์ลายนิ้วมือ เช่นเดียวกับในส่วนก่อนหน้า:

อักขระ const LOCK_FEED PROGMEM = AIO_USERNAME "/feeds/lock";

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

ในเนื้อความของฟังก์ชัน setup() เราระบุว่าพินที่เชื่อมต่อ LED ควรทำงานในโหมด OUTPUT:

โหมดพิน (รีเลย์พิน, เอาต์พุต);

ภายในลูปลูป () ก่อนอื่นให้ตรวจสอบว่าเราเชื่อมต่อกับ Adafruit IO หรือไม่:

หลังจากนั้นเราตรวจสอบสัญญาณที่กำลังมา หากส่ง "1" เราจะเปิดใช้งานพินที่เราประกาศไว้ก่อนหน้านี้ซึ่ง LED ของเราเชื่อมต่ออยู่ หากเราได้รับ "0" เราจะใส่ผู้ติดต่อในสถานะ "ต่ำ":

Adafruit_MQTT_Subscribe *สมัครสมาชิก;

ในขณะที่ ((สมัครสมาชิก = mqtt.readSubscription(1000)))) (

ถ้า (สมัครสมาชิก == &ล็อค) (

Serial.print(F("ได้:"));

Serial.println((ถ่าน *)lock.lastread);

// บันทึกคำสั่งเป็นข้อมูลสตริง

คำสั่งสตริง = สตริง ((ถ่าน *) lock.lastread);

ถ้า (คำสั่ง == "0") (

digitalWrite (รีเลย์พิน ต่ำ);

if (คำสั่ง == "1") (

digitalWrite (รีเลย์พิน สูง);

การค้นหา รุ่นล่าสุดคุณสามารถดูภาพสเก็ตช์ได้ที่ GitHub

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

ตัวแปลง USB-FTDI แบบธรรมดาสามารถใช้เพื่อตั้งโปรแกรมชิป ESP8266 ได้

อัปโหลดภาพร่างไปยัง Arduino และเปิดหน้าต่างมอนิเตอร์แบบอนุกรม ในขั้นตอนนี้ เราเพิ่งตรวจสอบว่าเราสามารถเชื่อมต่อกับ Adafruit IO ได้หรือไม่: เราจะพิจารณาฟังก์ชันที่พร้อมใช้งานเพิ่มเติม

ทดสอบโครงการ

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


หากไม่มีอยู่ คุณจะต้องสร้างด้วยตนเอง

ตอนนี้เราต้องตรวจสอบให้แน่ใจว่ามีการแลกเปลี่ยนข้อมูลระหว่างลายนิ้วมือและช่องล็อค ช่องล็อคต้องตั้งค่าเป็น "1" เมื่อตั้งค่าช่องลายนิ้วมือเป็น "1" และในทางกลับกัน

ในการทำเช่นนี้ เราใช้เครื่องมือ Adafruit IO ที่ทรงพลังมาก: ทริกเกอร์ ทริกเกอร์คือเงื่อนไขพื้นฐานที่คุณสามารถนำไปใช้กับแชนเนลที่กำหนดค่าได้ นั่นคือสามารถใช้เชื่อมต่อสองช่องสัญญาณเข้าด้วยกัน

สร้างทริกเกอร์ปฏิกิริยาใหม่จากส่วนทริกเกอร์ใน Adafruit IO สิ่งนี้จะช่วยให้สามารถแลกเปลี่ยนข้อมูลระหว่างช่องสัญญาณของเซ็นเซอร์ลายนิ้วมือกับการล็อค:


นี่คือสิ่งที่ควรมีลักษณะเมื่อกำหนดค่าทริกเกอร์ทั้งสอง:

ทั้งหมด! ตอนนี้เราสามารถทดสอบโครงการของเราได้แล้ว! เราวางนิ้วลงบนเซ็นเซอร์และดูว่า Arduino เริ่มกระพริบด้วย LED ซึ่งสอดคล้องกับการถ่ายโอนข้อมูลอย่างไร หลังจากนั้น LED บนโมดูล ESP8266 ควรเริ่มกะพริบ ซึ่งหมายความว่าเขาเริ่มรับข้อมูลผ่าน MQTT ไฟ LED บนแผงวงจรควรเปิดขึ้น ณ จุดนี้

หลังจากหน่วงเวลาที่คุณตั้งค่าไว้ในแบบร่าง (ค่าเริ่มต้นคือ 10 วินาที) ไฟ LED จะดับลง ยินดีด้วย! คุณสามารถควบคุม LED ด้วยลายนิ้วมือได้จากทุกที่ในโลก!

การตั้งค่าล็อคอิเล็กทรอนิกส์

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

ในการเชื่อมต่อล็อคโดยตรง คุณจะต้องมีส่วนประกอบเพิ่มเติม: แหล่งจ่ายไฟ 12 V, แจ็คไฟ, ทรานซิสเตอร์ (in ตัวอย่างนี้ใช้ IRLB8721PbF MOSFET แต่อีกอันหนึ่ง เช่น ทรานซิสเตอร์สองขั้ว TIP102 สามารถใช้ได้ หากคุณใช้ทรานซิสเตอร์แบบไบโพลาร์ คุณจะต้องเพิ่มตัวต้านทาน

แสดงด้านล่าง แผนภูมิวงจรรวมเชื่อมต่อส่วนประกอบทั้งหมดเข้ากับโมดูล ESP8266:


โปรดทราบว่าหากคุณใช้ทรานซิสเตอร์ MOSFET คุณไม่จำเป็นต้องมีตัวต้านทานระหว่าง ESP8266 พิน 5 กับทรานซิสเตอร์

โครงการที่ประกอบเสร็จแล้วแสดงในภาพด้านล่าง:


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

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

การพัฒนาเพิ่มเติมของโครงการ Smart Lock

ในโครงการของเราเปิดตัว รีโมทล็อคประตูด้วยลายนิ้วมือ

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

คุณสามารถพัฒนา สมาร์ทเฮาส์" ตัวอย่างเช่น เปิดใช้งานระบบชลประทานจากระยะไกลบน Arduino หรือเปิดไฟในห้อง ... อย่าลืมว่าคุณสามารถเปิดใช้งานอุปกรณ์ได้เกือบไม่ จำกัด จำนวนโดยใช้ Adafruit IO

แสดงความคิดเห็นคำถามและแบ่งปันของคุณ ประสบการณ์ส่วนตัวด้านล่าง. ในการอภิปราย มักมีแนวคิดและโครงการใหม่ๆ เกิดขึ้น!

กุญแจรหัส DIY บน Arduino


พื้นหลัง

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

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

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

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

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

รวม: $33.5 และ 350 rubles

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

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

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

ในการควบคุมมอเตอร์แอคชูเอเตอร์ ไดรเวอร์มอเตอร์ L293D ถูกใช้ ซึ่งสามารถทนต่อโหลดสูงสุดได้ถึง 1200 mA ในกรณีของเรา เมื่อมอเตอร์แอคทูเอเตอร์หยุด โหลดสูงสุดเพิ่มขึ้นเป็น 600 mA เท่านั้น

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

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

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

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

โฮสต์ของช่อง youtube "AlexGyver" ถูกขอให้ทำล็อคอิเล็กทรอนิกส์ด้วยมือของเขาเอง ยินดีต้อนรับสู่วงจรวิดีโอเกี่ยวกับการล็อคอิเล็กทรอนิกส์บน Arduino ที่ ในแง่ทั่วไปอาจารย์จะอธิบายความคิด

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

ทุกสิ่งที่คุณต้องการสำหรับปราสาทมีอยู่ในร้านค้าจีนแห่งนี้

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

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

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

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

ส่วนที่สอง

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

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

ความคิด

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

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

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

รวม: 33.5 ดอลลาร์และ 350 รูเบิล

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

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

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

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

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

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



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


พาวเวอร์ซัพพลาย


แป้นพิมพ์


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

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

ในบทนี้เราจะมาเรียนรู้วิธีการทำ ระบบง่ายๆซึ่งจะปลดล็อคโดย กุญแจอิเล็กทรอนิกส์(เม็ทเคะ).

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

ในบทช่วยสอนนี้ เราจะต้อง:

ในการดำเนินโครงการ เราจำเป็นต้องติดตั้งไลบรารี:

2) ตอนนี้ คุณต้องเชื่อมต่อ Buzzer ซึ่งจะให้สัญญาณหากกุญแจทำงานและล็อคเปิดขึ้น และสัญญาณที่สองเมื่อล็อคปิด

เราเชื่อมต่อออดตามลำดับต่อไปนี้:

Arduino Buzzer
5V VCC
GND GND
พิน 5 IO

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

ชัดเจนยิ่งขึ้น คุณสามารถดูว่าเราเชื่อมต่อโมดูลทั้งหมดในภาพด้านล่างได้อย่างไร:

ตอนนี้ หากทุกอย่างเชื่อมต่อแล้ว คุณสามารถดำเนินการตั้งโปรแกรมได้

ร่าง:

#รวม #รวม #รวม // ห้องสมุด "RFID" #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); uidDec แบบยาวที่ไม่ได้ลงนาม, uidDecTemp; // เพื่อจัดเก็บหมายเลขแท็กในรูปแบบทศนิยม Servo servo; การตั้งค่าเป็นโมฆะ () ( Serial.begin (9600); Serial.println ("กำลังรอการ์ด ... "); SPI.begin (); // การเริ่มต้น SPI / Init SPI บัส mfrc522.PCD_Init (); // การเริ่มต้น MFRC522 / Init MFRC522 card.servo.attach(6); servo.write(0); // set servo to closed state ) void loop() ( // ค้นหาป้ายกำกับใหม่ if (! mfrc522.PICC_IsNewCardPresent()) ( return; ) // เลือกแท็ก if (! mfrc522.PICC_ReadCardSerial()) ( return; ) uidDec = 0; // การออกหมายเลขซีเรียลของแท็กสำหรับ (ไบต์ i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

มาวิเคราะห์ร่างในรายละเอียดเพิ่มเติม:

ในการค้นหา UID ของการ์ด (ป้ายกำกับ) คุณต้องเขียนแบบร่างนี้ไปยัง Arduino ประกอบวงจรที่อธิบายข้างต้น และเปิดคอนโซล (การตรวจสอบพอร์ตอนุกรม) เมื่อคุณนำแท็กไปที่ RFID ตัวเลขจะปรากฏในคอนโซล

ต้องป้อน UID ที่เป็นผลลัพธ์ในบรรทัดต่อไปนี้:

If (uidDec == 3763966293) // เปรียบเทียบ Uid ของป้ายกำกับ หากเท่ากับค่าที่ระบุ เซอร์โวจะเปิดวาล์ว

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

วิดีโอ:

มีอะไรให้อ่านอีกบ้าง