รหัสล็อค Arduino พร้อมการ์ด SD ล็อค "สมาร์ท" อัตโนมัติและ Arduino การพัฒนาต่อไปของโครงการ "ปราสาทสมาร์ท"
ฉันค้นหาตลาดนัดจีนและอีเบย์ฉันไม่พบสิ่งที่ราคาถูกกว่าและจริงจังมากขึ้นหรือน้อยลงและตัดสินใจที่จะทำให้มันเป็นมือของตัวเอง ฉันจะทำการจองทันทีว่าแพลตฟอร์ม Arduino ถูกเลือกเพื่อความเรียบง่ายเนื่องจากประสบการณ์การสื่อสารกับไมโครคอนโทรลเลอร์ไม่ได้เลย
ความคิด
ที่ประตูที่มีด้านนอกของประตูควรมีแป้นพิมพ์ที่ป้อนรหัสผ่านส่วนที่เหลือของการออกแบบได้รับการแก้ไขที่ด้านใน เพื่อควบคุมการปิดประตูเต็มรูปแบบโดย Geron ใช้ ออกไปจากคณะรัฐมนตรีบุคคลนั้นกดแป้นพิมพ์ "*" และโดยไม่ต้องรอจนกว่าประตูจะอยู่ใกล้เข้ามาในกิจการของเขาเมื่อประตูถูกปิดอย่างสมบูรณ์ Geron ปิดและล็อคจะปิด ประตูเปิดขึ้นโดยป้อนรหัสผ่าน 4x หลักและคลิกที่ "#"เครื่องประดับ
Arduino UNO \u003d $ 18Arduino Protoshield + เขียงหั่นขนม \u003d $ 6
L293D \u003d $ 1
Punch of Wires 30 ชิ้นสำหรับ Braddatrad \u003d $ 4
2 ซ็อกเก็ต RJ45 \u003d $ 4
2 ปลั๊ก RJ45 \u003d $ 0.5
Actuator ล็อคกลาง \u003d 250 รูเบิล
Geron \u003d แช่แข็งฟรีจากหน้าต่างเก่า
จักรเย็บผ้าโลหะขนาดยักษ์ \u003d ฟรี
กรณีจากฮับเก่า D-Link จากเหล็กหนึ่งถึงครึ่งล้าน \u003d ฟรี
แหล่งจ่ายไฟจาก D-Link Hub เดียวกันเป็นเวลา 12 และ 5V \u003d ฟรี
สกรูและถังมากมายสำหรับการยึดทั้งหมดที่ดีต่อตัวเรือน \u003d 100 รูเบิล
แผงควบคุม ot สัญญาณเตือนความปลอดภัย \u003d ฟรี
รวม: $ 33.5 และ 350 รูเบิล
ไม่เพียงเล็กน้อยคุณจะพูดและคุณจะถูกต้องแน่นอน แต่เพื่อความสุขที่คุณต้องจ่าย! และคุณก็ดีเสมอที่จะรวบรวมบางสิ่งบางอย่าง ก่อนที่การออกแบบจะชะลอตัวลงหากคุณใช้ MK ที่เปลือยเปล่าโดยไม่มี Arduino
การเตรียมการสำหรับการชุมนุม
ฉันต้องการพูดคำสองสามคำเกี่ยวกับการซื้อองค์ประกอบสำคัญของการออกแบบแอคชูเอเตอร์ ในร้านค้าอัตโนมัติในพื้นที่ฉันได้รับการเสนอแอคชูเอเตอร์สองประเภท: "มีสองสายและห้า" ตามที่พนักงานขายพวกเขาเหมือนกันอย่างแน่นอนและความแตกต่างในจำนวนของสายไฟไม่ได้หมายความว่าไม่มีอะไรเลย อย่างไรก็ตามเมื่อปรากฎในภายหลังมันไม่เป็นเช่นนั้น! ฉันเลือกอุปกรณ์ที่มีสองสายมันได้รับอาหารจาก 12V ในการออกแบบที่มีห้าสายมีการติดตั้งสวิตช์ จำกัด ซึ่งช่วยให้คุณสามารถควบคุมการเคลื่อนไหวของคันโยกได้ ฉันรู้ว่าฉันไม่ได้ซื้อมันเท่านั้นเมื่อฉันถอดชิ้นส่วนเขาและเปลี่ยนสาย เส้นทางของคันโยกกลายเป็นสั้นเกินไปที่จะผลักดันเทปตามปกติดังนั้นจึงจำเป็นต้องปรับเปลี่ยนมันเล็กน้อยคือการถอดเครื่องซักผ้ายางสองตัวสั้นลงก้านคันแอคชูเอเตอร์ สำหรับสิ่งนี้ร่างกายต้องตัดเลคซอกตามปกติเพราะเครื่องซักผ้าที่สองอยู่ข้างใน เทปสีน้ำเงินเราเช่นเดียวกับช่วยเราในอนาคตเมื่อประกอบมันกลับมาในการควบคุมมอเตอร์มอเตอร์มอเตอร์ L293D ถูกนำมาใช้ซึ่งทนต่อการโหลดสูงสุดถึง 1200 mA เมื่อหยุดเครื่องยนต์ของแอคชูเอเตอร์โหลดสูงสุดที่เพิ่มขึ้นถึง 600 mA
การควบคุมจากแป้นพิมพ์พลวัตและไฟ LED สองดวงถูกลบออกจากแผงควบคุมการเตือนภัยควบคุม คอนโซลและอุปกรณ์หลักควรเชื่อมต่อโดยใช้คู่บิดและตัวเชื่อมต่อ RJ45
การเขียนโปรแกรม
ดังนั้นในฐานะที่เป็นประสบการณ์การเขียนโปรแกรม Arduino ฉันยังไม่เคยไปไกล ฉันใช้ประโยชน์จากงานและบทความของคนอื่นจากเว็บไซต์ Arduino.cc ใครสนใจสามารถดูรหัสที่น่าเกลียดนี้ :)ภาพถ่ายและวิดีโอ
Arduino และ Actuator
แหล่งจ่ายไฟ
แป้นพิมพ์
จักรเย็บผ้า (เชื่อมต่อกับแอคชูเอเตอร์ด้วยเข็มโลหะและที่ความร้อนหดตัวเพื่อความงาม)
การใช้งานวิดีโอของอุปกรณ์:
ความคืบหน้าไม่ได้ยืนนิ่งและ "ปราสาทสมาร์ท" กำลังปรากฏตัวมากขึ้นในประตูของอพาร์ทเมนอพาร์ทเมนท์โรงรถและบ้าน
ล็อคที่คล้ายกันจะเปิดขึ้นเมื่อคุณกดปุ่มบนสมาร์ทโฟน โชคดีที่สมาร์ทโฟนและแท็บเล็ตได้ป้อนการใช้งานของเราแล้ว ในบางกรณี "Smart Locks" เชื่อมต่อกับ "บริการคลาวด์" เช่นเดียวกับดิสก์ Google และเปิดจากระยะไกล นอกจากนี้ตัวเลือกนี้ทำให้สามารถเข้าถึงการเปิดประตูกับคนอื่นได้
โครงการนี้จะถูกนำไปใช้โดยรุ่น DIY ของ Smart Lock บน Arduino ซึ่งสามารถจัดการจากระยะไกลจากจุดใด ๆ ของพื้นดิน
นอกจากนี้โครงการเพิ่มความสามารถในการเปิดล็อคหลังจากการระบุลายนิ้วมือ เมื่อต้องการทำเช่นนี้เซ็นเซอร์ลายนิ้วมือจะถูกรวมเข้าด้วยกัน ตัวเลือกทั้งสองสำหรับการเปิดประตูจะทำงานบนพื้นฐานของแพลตฟอร์ม Adafruit IO
ปราสาทที่คล้ายกันอาจเป็นขั้นตอนแรกที่ยอดเยี่ยมในโครงการสมาร์ทโฮมของคุณ
การตั้งค่าเซ็นเซอร์ลายนิ้วมือ
ในการทำงานกับเซ็นเซอร์ลายนิ้วมือมีห้องสมุดที่ยอดเยี่ยมสำหรับ Arduino ซึ่งอำนวยความสะดวกในการปรับเปลี่ยนเซ็นเซอร์อย่างมาก Arduino Uno ใช้ในโครงการนี้ Adafruit CC3000 ใช้เชื่อมต่อกับอินเทอร์เน็ต
เริ่มเชื่อมต่อพลังงานกัน:
- เชื่อมต่อผู้ติดต่อ 5V จากกระดาน Arduino ไปที่ Red Rail;
- การติดต่อ GND กับ Arduino เชื่อมต่อกับรถไฟสีน้ำเงินบนแผงวงจรที่ไม่ธรรมดา
ไปที่การเชื่อมต่อของเซ็นเซอร์ลายนิ้วมือ:
- ก่อนเชื่อมต่อพลังงาน เมื่อต้องการทำเช่นนี้ลวดสีแดงเชื่อมต่อกับราง +5 V และสีดำ - ด้วยราง GND;
- ลวดเซ็นเซอร์สีขาวเชื่อมต่อกับ 4 ถึง Arduino
- กรีนไวร์ไปติดต่อ 3 บนไมโครคอนโทรลเลอร์
ตอนนี้เราจะจัดการกับโมดูล CC3000:
- ติดต่อ IRQ จาก CC3000 การ์ดเชื่อมต่อกับ PIN 2 บน Arduino
- VBAT - เพื่อติดต่อ 5
- CS - เพื่อติดต่อ 10
- หลังจากนั้นคุณต้องเชื่อมต่อผู้ติดต่อ SPI กับ Arduino: Mosi, MISO และ CLK เพื่อติดต่อ 11, 12 และ 13 ตามลำดับ
ในตอนท้ายจำเป็นต้องให้อาหาร: Vin - ถึง Arduino 5V (Red Rail บนกระดานติดตั้งของคุณ) และ GND ถึง GND (Blue Rail บน Laype)
รูปถ่ายของโครงการประกอบอย่างเต็มที่แสดงอยู่ด้านล่าง:
ก่อนที่จะพัฒนาร่างซึ่งจะโหลดข้อมูลใน Adafruit IO คุณต้องถ่ายโอนข้อมูลเกี่ยวกับเซ็นเซอร์ลายนิ้วมือของคุณ มิฉะนั้นในอนาคตเขาไม่รู้จักคุณ;) เราขอแนะนำให้ปรับเทียบเซ็นเซอร์ลายนิ้วมือโดยใช้ Arduino แยกต่างหาก หากคุณทำงานกับเซ็นเซอร์นี้เป็นครั้งแรกเราขอแนะนำให้อ่านกระบวนการสอบเทียบและคำแนะนำโดยละเอียดสำหรับการทำงานกับเซ็นเซอร์ลายนิ้วมือ
หากคุณยังไม่ได้ทำสิ่งนี้คุณจะเริ่มต้นบัญชีใน Adafruit IO
หลังจากนั้นเราสามารถดำเนินการต่อไปยังขั้นต่อไปของการพัฒนา "สมาร์ทล็อค" บน Arduino: ได้แก่ การพัฒนาร่างซึ่งจะส่งข้อมูลใน Adafruit IO เนื่องจากโปรแกรมค่อนข้างยอดเยี่ยมในบทความเราจะเน้นและพิจารณาเฉพาะชิ้นส่วนหลักของมันจากนั้นให้ลิงค์ไปที่ GitHub ซึ่งคุณสามารถดาวน์โหลดร่างเต็มรูปแบบได้
Skatch เริ่มต้นด้วยการโหลดไลบรารีที่จำเป็นทั้งหมด:
#include
#include
#include
#include "adafruit_mqtt.h"
#include "adafruit_mqtt_cc3000.h"
#include
#include
หลังจากนั้นคุณต้องแก้ไขภาพร่างอย่างถูกต้องใส่พารามิเตอร์ของเครือข่าย WiFi ของคุณโดยการระบุ SSID และรหัสผ่าน (รหัสผ่าน):
#define wlan_security wlan_sec_wpa2\u003e
นอกจากนี้คุณต้องป้อนชื่อและคีย์ AIO (คีย์) เพื่อป้อนบัญชี Adafruti IO ของคุณ:
#define aio_serverport 1883
#define aio_username "adafruitic"
#define aio_key "adafruit_io_key"\u003e
บรรทัดต่อไปนี้รับผิดชอบการโต้ตอบและการประมวลผลข้อมูลจากเซ็นเซอร์ลายนิ้วมือ หากเปิดใช้งานเซ็นเซอร์แล้ว (สำนักพิมพ์ของความใกล้เคียง) จะเป็น "1":
const Char Fingerprint_Feed Progmem \u003d AIO_USERNAME "/ Feeds / ลายนิ้วมือ";
adafruit_mqtt_publish ลายนิ้วมือ \u003d adafruit_mqtt_publish (& mqtt, fingerprint_feed);
นอกจากนี้คุณต้องสร้างอินสแตนซ์ของวัตถุ SoftwareSerial สำหรับเซ็นเซอร์ของเรา:
Softwareserial Myserial (3, 4);
หลังจากนั้นเราสามารถสร้างวัตถุสำหรับเซ็นเซอร์ของเรา:
adafruit_fingerprint finger \u003d adafruit_fingerprint (& myserial);
ข้างในร่างเราระบุว่านิ้วที่ควรเปิดใช้งานล็อคในอนาคต ตัวอย่างนี้ใช้ 0 ที่สอดคล้องกับรหัสลายนิ้วมือแรกซึ่งใช้โดยเซ็นเซอร์:
int fingerid \u003d 0;
หลังจากนั้นเริ่มต้นเคาน์เตอร์และความล่าช้า (ล่าช้า) ในโครงการของเรา ในสาระสำคัญเราต้องการให้ล็อคทำงานโดยอัตโนมัติหลังจากเปิด ตัวอย่างนี้ใช้ความล่าช้า 10 วินาที แต่คุณสามารถปรับค่านี้ตามความต้องการของคุณเอง:
int activationcounter \u003d 0;
int lastactivation \u003d 0;
การเปิดใช้งาน int \u003d 10 * 1,000;
ในร่างกายของฟังก์ชั่นการตั้งค่า () เราจะเริ่มต้นเซ็นเซอร์ลายนิ้วมือและตรวจสอบการเชื่อมต่อของชิป CC3000 ไปยังเครือข่าย WiFi ของคุณ
ในร่างกายของวงดนตรี () ฟังก์ชั่นเชื่อมต่อกับ adafruit io บรรทัดต่อไปนี้เป็นผู้รับผิดชอบ:
หลังจากเชื่อมต่อกับแพลตฟอร์ม Adafruit IO ตรวจสอบลายนิ้วมือสุดท้าย ถ้ามันเกิดขึ้นพร้อมกันและล็อคจะไม่เปิดใช้งานเราส่ง "1" สำหรับการประมวลผลใน Adafruit IO:
ถ้า (fingerprintid \u003d\u003d fingerid && lockstate \u003d\u003d false) (
serial.println (f ("การเข้าถึงที่ได้รับ!));
lockstate \u003d true;
serial.println (f ("ล้มเหลว"));
serial.println (f ("ตกลง!"));
lastactivation \u003d Millis ();
หากภายในฟังก์ชั่นลูป () การล็อคถูกเปิดใช้งานและเราถึงค่าความล่าช้าซึ่งถูกระบุไว้ข้างต้นส่ง "0":
ถ้า ((เปิดใช้งานการเปิดใช้งาน - Lastactivation\u003e เวลาเปิดใช้งาน) && lockstate \u003d\u003d true) (
lockstate \u003d false;
ถ้า (! fingerprint.publish (รัฐ)) (
serial.println (f ("ล้มเหลว"));
serial.println (f ("ตกลง!"));
คุณสามารถดาวน์โหลดรหัสเวอร์ชันล่าสุดใน GitHub
ได้เวลาทดสอบโครงการของเราแล้ว! อย่าลืมดาวน์โหลดและติดตั้งไลบรารีที่จำเป็นทั้งหมดสำหรับ Arduino!
ตรวจสอบให้แน่ใจว่าคุณได้ทำการเปลี่ยนแปลงที่จำเป็นทั้งหมดในภาพร่างและดาวน์โหลดไปยัง Arduino ของคุณ หลังจากนั้นเปิดหน้าต่างมอนิเตอร์แบบอนุกรม
เมื่อ Arduino เชื่อมต่อกับเครือข่าย WiFi เซ็นเซอร์ลายนิ้วมือจะกะพริบสีแดง ตำนานนิ้วของคุณไปที่เซ็นเซอร์ หน้าต่าง Monitor Serial ควรปรากฏหมายเลข ID ถ้ามันเกิดขึ้นตรงข้อความจะปรากฏขึ้น "ตกลง!" ซึ่งหมายความว่าข้อมูลถูกส่งไปยังเซิร์ฟเวอร์ Adafruit IO
Scheme และ Sketch สำหรับการตั้งค่าการล็อคเพิ่มเติมบนตัวอย่างของ LED
ตอนนี้เราจะจัดการกับส่วนของโครงการที่รับผิดชอบโดยตรงในการจัดการล็อคประตู ในการเชื่อมต่อกับเครือข่ายไร้สายและเปิดใช้งาน / ปิดใช้งานล็อคคุณจะต้องใช้โมดูล Adafruti ESP8266 ที่เป็นตัวเลือก (โมดูล ESP8266 ไม่จำเป็นต้องมาจาก Adafruit) ในตัวอย่างที่เราจะพิจารณาด้านล่างคุณจะสามารถประเมินว่ามันง่ายแค่ไหนเพื่อให้แน่ใจว่าการแลกเปลี่ยนข้อมูลระหว่างสองแพลตฟอร์ม (Arduino และ ESP8266) โดยใช้ Adafruit IO
ในส่วนนี้เราจะไม่ทำงานโดยตรงกับการล็อค แต่เราเพียงแค่เชื่อมต่อนำไปสู่การติดต่อที่ล็อคจะเชื่อมต่อต่อไปนี้ สิ่งนี้จะให้โอกาสในการทดสอบรหัสของเราโดยไม่ต้องลึกลงไปในคุณสมบัติของการออกแบบปราสาท
โครงการนี้ค่อนข้างง่าย: ตั้งค่า ESP8266 ก่อนบนเขียง หลังจากนั้นให้ตั้งค่า LED อย่าลืมว่าขายาว (บวก) ของ LED เชื่อมต่อผ่านตัวต้านทาน เท้าตัวต้านทานที่สองเชื่อมต่อกับการติดต่อ 5 ในโมดูล ESP8266 ที่สอง (แคโทด) ของ LED เชื่อมต่อกับ PIN GND ใน ESP8266
เต็มที่ รวบรวมโครงการ แสดงในภาพด้านล่าง
ลองคิดดูด้วยภาพร่างที่ใช้สำหรับโครงการนี้ อีกครั้งรหัสค่อนข้างใหญ่และซับซ้อนดังนั้นเราจะพิจารณาเฉพาะชิ้นส่วนหลักเท่านั้น:
เราเริ่มต้นด้วยการเชื่อมต่อของไลบรารีที่จำเป็น:
#include
#include "adafruit_mqtt.h"
#include "adafruit_mqtt_client.h"
กำหนดค่า wifi:
#define wlan_ssid "your_wifi_ssid"
#define wlan_pass "your_wifi_pall"
#define wlan_security wlan_sec_wpa2
นอกจากนี้ยังกำหนดค่าพารามิเตอร์ของ Adafruit IO เช่นเดียวกับในส่วนก่อนหน้า:
#define aio_server "io.adafruit.com"
#define aio_serverport 1883
#define aio_username "adafruit_io_" ผู้ใช้ "
#define aio_key "adafruit_io_key"
เราระบุว่าต้นสนที่เราเชื่อมต่อ LED (ในอนาคตมันจะเป็นล็อคหรือรีเลย์ของเรา):
int relaypin \u003d 5;
การโต้ตอบกับเซ็นเซอร์ลายนิ้วมือเช่นเดียวกับในส่วนก่อนหน้า:
const ถ่าน char_feed progmem \u003d aio_username "/ ฟีด / ล็อค";
adafruit_mqtt_subscribe lock \u003d adafruit_mqtt_subscribe (& mqtt, lock_feed);
ในฟังก์ชั่นของการตั้งค่า () เราระบุว่าหมุดที่ LED เชื่อมต่อควรทำงานในโหมดเอาต์พุต:
pinMode (Relaypin, เอาท์พุท);
ภายในวงจรลูป () ตรวจสอบครั้งแรกว่าเราเชื่อมต่อกับ Adafruit IO:
หลังจากนั้นตรวจสอบว่าสัญญาณใดมา หากส่งสัญญาณ "1" ให้เปิดใช้งานผู้ติดต่อที่เราได้ประกาศก่อนหน้านี้ที่ LED ของเราเชื่อมต่อ ถ้าเราได้รับ "0" เราแปลผู้ติดต่อไปยังสถานะ "ต่ำ":
adafruit_mqtt_subscribe * สมัครสมาชิก;
ในขณะที่ ((การสมัครสมาชิก \u003d mqtt.readsubscription (1000))) (
ถ้า (การสมัครสมาชิก \u003d\u003d & ล็อค) (
Serial.print (F ("ได้รับ:"));
serial.println ((ถ่าน *) lock.lasttread);
// บันทึกคำสั่งไปยังข้อมูลประเภทข้อมูล
string command \u003d string (char *) lock.lasttread);
ถ้า (คำสั่ง \u003d\u003d "0") (
digitalWrite (Relaypin, Low);
ถ้า (คำสั่ง \u003d\u003d "1") (
digitalWrite (Relaypin, High);
การค้นหา รุ่นล่าสุด ร่างที่คุณสามารถทำได้ใน GitHub
ได้เวลาทดสอบโครงการของเราแล้ว อย่าลืมดาวน์โหลดไลบรารีที่จำเป็นทั้งหมดสำหรับ ARDUINO ของคุณและตรวจสอบว่าคุณได้ทำการเปลี่ยนแปลงร่างร่างหรือไม่
ในการตั้งโปรแกรมชิป ESP8266 คุณสามารถใช้ตัวแปลง USB-FTDI ที่เรียบง่าย
โหลด Skatch บน Arduino และเปิดหน้าต่าง Monitor Serial ในขั้นตอนนี้เราเพียงตรวจสอบว่าจะเชื่อมต่อกับ Adafruti IO: ฟังก์ชั่นราคาไม่แพงที่เราจะมองต่อไป
โครงการทดสอบ
ตอนนี้ไปทดสอบต่อไปแล้ว! ไปที่เมนูผู้ใช้ Adafruit IO ของคุณในเมนูฟีด ตรวจสอบสร้างหรือไม่มีช่องทางสำหรับลายนิ้วมือและล็อค (บนหน้าจอพิมพ์ด้านล่างเป็นลายนิ้วมือแถวและล็อค):
หากไม่มีคุณต้องสร้างด้วยตนเอง
ตอนนี้เราจำเป็นต้องให้การแลกเปลี่ยนข้อมูลระหว่าง Fingerprint และช่องล็อค ช่องล็อคต้องทำให้ค่า "1" เมื่อช่องนิ้วลายนิ้วมือใช้ค่า "1" และในทางกลับกัน
ในการทำเช่นนี้ใช้เครื่องมือที่ทรงพลังมาก Adafruit IO: ทริกเกอร์ ทริกเกอร์อยู่ในสภาพสาระสำคัญที่คุณสามารถนำไปใช้กับช่องที่กำหนดค่าได้ นั่นคือพวกเขาสามารถใช้เพื่อประสานสองช่องทาง
สร้างทริกเกอร์ปฏิกิริยาใหม่จากส่วนทริกเกอร์ใน Adafruit IO สิ่งนี้จะให้ความสามารถในการแลกเปลี่ยนข้อมูลระหว่างช่องสัญญาณเซ็นเซอร์ลายนิ้วมือและปราสาท:
นี่คือวิธีที่ควรดูเมื่อทริกเกอร์ทั้งสองถูกปรับแต่ง:
ทุกอย่าง! ตอนนี้เราสามารถทดสอบโครงการของเราได้จริงๆ! ใช้นิ้วของคุณกับเซ็นเซอร์และดูเมื่อ Arduino เริ่มขยิบตาโดย LED ซึ่งสอดคล้องกับการส่งข้อมูล หลังจากนั้น LED จะกะพริบบนโมดูล ESP8266 ซึ่งหมายความว่าเขาเริ่มรับข้อมูลผ่าน MQTT ไฟ LED บนแผงวงจร ณ จุดนี้ควรเปิด
หลังจากความล่าช้าซึ่งคุณติดตั้งในภาพร่าง (ตามค่าเริ่มต้นค่านี้คือ 10 วินาที) LED จะปิด ขอแสดงความยินดี! คุณสามารถควบคุม LED ด้วยลายนิ้วมือได้ที่จุดใดก็ได้ในโลก!
ปรับแต่งปราสาทอิเล็กทรอนิกส์
เราไปถึงส่วนสุดท้ายของโครงการ: การเชื่อมต่อโดยตรงและการควบคุมของล็อคอิเล็กทรอนิกส์โดยใช้ Arduino และเซ็นเซอร์ลายนิ้วมือ โครงการไม่ใช่เรื่องง่ายคุณสามารถใช้แหล่งที่มาทั้งหมดในรูปแบบที่ตั้งค่าสูงขึ้น แต่แทนที่จะเป็นไฟ LED เพื่อเชื่อมต่อรีเลย์
ในการเชื่อมต่อล็อคโดยตรงคุณจะต้องมีส่วนประกอบเพิ่มเติม: แหล่งจ่ายไฟถึง 12 V, แจ็คสำหรับแหล่งจ่ายไฟทรานซิสเตอร์ (ในตัวอย่างนี้ใช้ IRLB8721PBF MOSFET แต่คุณยังสามารถใช้อีกตัวอย่างเช่น TIP102 ทรานซิสเตอร์สองขั้วหากคุณ ใช้ทรานซิสเตอร์ bipolar คุณจะต้องเพิ่มตัวต้านทาน
แสดงด้านล่าง วงจรไฟฟ้า การเชื่อมต่อคอมโพเนนต์ทั้งหมดไปยังโมดูล ESP8266:
โปรดทราบว่าหากคุณใช้ทรานซิสเตอร์ MOSFET คุณจะไม่ต้องการตัวต้านทานระหว่าง PIN 5 ของโมดูล ESP8266 และทรานซิสเตอร์
โครงการประกอบอย่างเต็มที่แสดงอยู่ในภาพด้านล่าง:
คลื่นโมดูล ESP8266 โดยใช้โมดูล FTDI และเชื่อมต่อแหล่งจ่ายไฟ 12 V ถึงแจ็ค หากคุณใช้หมุดที่แนะนำเพื่อเชื่อมต่อคุณไม่จำเป็นต้องเปลี่ยนอะไรในภาพร่าง
ตอนนี้คุณสามารถเชื่อมนิ้วของคุณกับเซ็นเซอร์: ล็อคต้องทำงานตอบสนองลายนิ้วมือของคุณ วิดีโอด้านล่างแสดงโครงการของปราสาท "สมาร์ท" อัตโนมัติในการดำเนินการ:
การพัฒนาต่อไปของโครงการ "ปราสาทสมาร์ท"
ในโครงการของเราเปิดตัวการควบคุมระยะไกลของล็อคประตูโดยใช้ลายนิ้วมือ
คุณสามารถทดสอบอย่างปลอดภัยปรับเปลี่ยนร่างและรัด ตัวอย่างเช่นคุณสามารถแทนที่ล็อคประตูอิเล็กทรอนิกส์บนรีเลย์เพื่อจัดการเครื่องพิมพ์ 3 มิติของคุณหุ่นยนต์หรือ quadcopter ...
คุณสามารถพัฒนา " บ้านอัจฉริยะ"ตัวอย่างเช่นเปิดใช้งานระบบการชลประทานจากระยะไกลบน Arduino หรือรวมถึงแสงในห้อง ... อย่าลืมว่าคุณสามารถเปิดใช้งานอุปกรณ์ที่ไม่ จำกัด จำนวนเกือบไม่ จำกัด โดยใช้ Adafruit IO
แสดงความคิดเห็นคำถามและแบ่งปันของคุณ ประสบการณ์ส่วนตัว ด้านล่าง. ความคิดและโครงการใหม่มักเกิดในการอภิปราย!
เมื่อวันก่อนฉันทบทวนภาพยนตร์เรื่องนี้ "ใหม่เดอร์แมน" และในขั้นตอนเดียว Peter Parker เปิดออกจากระยะไกลและปิดประตูจากแล็ปท็อปของเขา ทันทีที่ฉันเห็นมันฉันรู้ทันทีว่าฉันต้องการล็อคอิเล็กทรอนิกส์ที่ประตูหน้า
แบริ่งฉันรวบรวมแบบจำลองที่ถูกต้องของปราสาทสมาร์ท ในบทความนี้ฉันจะบอกคุณว่าฉันรวบรวมเธออย่างไร
ขั้นตอนที่ 1: รายการวัสดุ
ในการรวบรวมล็อคอิเล็กทรอนิกส์บน Arduino คุณจะต้องใช้วัสดุต่อไปนี้:
อิเล็กทรอนิกส์:
- อะแดปเตอร์ผนัง 5V
ส่วนประกอบ:
- สกรู 6 สกรูสำหรับลำไส้
- กระดาษแข็ง
- สายไฟ
เครื่องมือ:
- หัวแร้ง
- ปืนกาว
- เจาะ
- เจาะ
- เจาะรูไกด์
- มีดเครื่องเขียน
- คอมพิวเตอร์ที่มี Arduino IDE
ขั้นตอนที่ 2: วิธีการทำงานของปราสาท
ความคิดคือฉันสามารถเปิดหรือปิดประตูได้โดยไม่มีกุญแจและแม้กระทั่งไม่เข้ามา แต่นี่เป็นเพียงแนวคิดหลักเพราะคุณยังสามารถเพิ่มเซ็นเซอร์การระเบิดเพื่อให้มันตอบสนองต่อการเคาะพิเศษหรือคุณสามารถเพิ่มระบบจดจำเสียงได้!
คันโยกเซอร์โวที่เชื่อมต่อกับ Scorelet จะปิด (0 °) และเปิด (60 °) โดยใช้คำสั่งที่ได้รับผ่านโมดูลบลูทู ธ
ขั้นตอนที่ 3: รูปแบบการติดตั้งลวด
ก่อนอื่นให้เชื่อมต่อ Servo กับคณะกรรมการ Arduino (ฉันต้องการทราบว่าแม้ว่าฉันจะใช้ค่าธรรมเนียม ARDUINO NANO ในคณะกรรมการ UNO ซึ่งเป็นที่ตั้งของข้อสรุปนั้นเหมือนกัน)
- servo ลวดสีน้ำตาล - ดินเชื่อมต่อกับพื้นดินบน Arduino
- red Wire - Plus เชื่อมต่อกับขั้วต่อ 5B บน Arduino
- ลวดสีส้ม - เอาท์พุทของแหล่งที่มาของเซอร์โวเชื่อมต่อกับข้อสรุปที่ 9 บน Arduino
ฉันแนะนำให้คุณตรวจสอบการทำงานของเซอร์โวก่อนดำเนินการชุมนุมต่อไป ในการทำเช่นนี้ในโปรแกรม Arduino IDE ในตัวอย่างเลือก Sweep ตรวจสอบให้แน่ใจว่างานเซอร์โวเราสามารถเชื่อมต่อโมดูลบลูทู ธ คุณต้องเชื่อมต่อเอาต์พุต RX ของโมดูลบลูทู ธ ด้วยเอาต์พุต TX ARDUINO และเอาต์พุต TX ของโมดูลที่มีเอาต์พุต RX ARDUINO แต่ยังไม่ทำ! เมื่อการเชื่อมต่อเหล่านี้บัดกรีคุณจะไม่สามารถดาวน์โหลดรหัสใด ๆ บน Arduino ได้อีกต่อไปดังนั้นคุณจึงดาวน์โหลดรหัสทั้งหมดของคุณก่อนและหลังจากการเชื่อมต่อบัดกรีนั้น
นี่คือรูปแบบของสารประกอบโมดูลและไมโครคอนโทรลเลอร์:
- โมดูล RX - บอร์ด TX Arduino
- โมดูล TX - บอร์ด Rx
- โมดูล VCC (เอาต์พุตบวก) - 3.3V Arduino Boards
- เชื่อมต่อกับพื้นดิน (พื้นดิน)
หากคำอธิบายดูเหมือนว่าคุณไม่สามารถเข้าใจได้ให้ทำตามรูปแบบของการเชื่อมต่อสายไฟ
ขั้นตอนที่ 4: การทดสอบ
ตอนนี้เรามีชิ้นส่วนการแสดงทั้งหมดให้เราตรวจสอบให้แน่ใจว่าเซอร์โวสามารถเคลื่อนย้ายความมืดได้ ก่อนที่จะติดตั้งคะแนนที่ประตูฉันรวบรวมตัวอย่างทดลองเพื่อให้แน่ใจว่าเซอร์โวค่อนข้างทรงพลัง ตอนแรกดูเหมือนว่า Servo ของฉันอ่อนแอและฉันเพิ่มน้ำมันหยดลงในสีแดงหลังจากนั้นเขาก็ทำงานได้ดี มันสำคัญมากที่กลไกสไลด์จะดีมิฉะนั้นคุณจะเสี่ยงที่จะล็อคในห้องของคุณ
ขั้นตอนที่ 5: เคสสำหรับ Electrocomponets
ฉันตัดสินใจที่จะใส่คอนโทรลเลอร์เฉพาะในกรณีและโมดูลบลูทู ธ และเซอร์โวก็อยู่ด้านนอก ในการทำเช่นนี้บนกระดาษแข็งชิ้นหนึ่งเราจัดหาวงจรวงจรของ Arduino Nano และเพิ่มพื้นที่ 1 ซม. รอบปริมณฑลและตัดออก หลังจากนั้นเราก็ตัดร่างกายอีกห้าด้าน ในผนังด้านหน้ามันจะจำเป็นต้องตัดรูรูสำหรับสายไฟของตัวควบคุม
ขนาดด้านข้างของกรณี:
- ด้านล่าง - 7,5x4 ซม
- ปก - 7,5x4 ซม
- ซ้าย ผนังด้านข้าง - 7.5x4 ซม
- ผนังด้านขวา - 7.5x4 ซม
- ผนังด้านหน้า - 4x4 ซม. (พร้อมสล็อตสำหรับสายไฟ)
- ผนังด้านหลัง - 4x4 ซม
ขั้นตอนที่ 6: ภาคผนวก
ในการควบคุมคอนโทรลเลอร์คุณต้องใช้อุปกรณ์บน Android หรือ Windows ที่มีบลูทู ธ ในตัว ฉันไม่มีโอกาสตรวจสอบการทำงานของแอปพลิเคชันบนอุปกรณ์ Apple บางทีคุณอาจต้องการไดรเวอร์บางอย่าง
ฉันแน่ใจว่าบางคนมีโอกาสที่จะตรวจสอบมัน สำหรับ Android ดาวน์โหลดแอปพลิเคชันบลูทู ธ เทอร์มินัลดาวน์โหลด Teraterm สำหรับ Windows จากนั้นคุณต้องเชื่อมต่อโมดูลกับสมาร์ทโฟนชื่อจะต้องเป็น linvor, รหัสผ่าน - 0000 หรือ 1234 เมื่อตั้งค่าการจับคู่ให้เปิดแอปพลิเคชันที่ติดตั้งป้อนตัวเลือกและเลือก "ติดตั้งการเชื่อมต่อ (ไม่ปลอดภัย)" ตอนนี้สมาร์ทโฟนของคุณเป็นจอภาพอินเตอร์เฟสแบบอนุกรม Arduino นั่นคือคุณสามารถแลกเปลี่ยนข้อมูลกับคอนโทรลเลอร์
หากคุณป้อน 0 ประตูจะปิดและบนหน้าจอของสมาร์ทโฟนจะมีข้อความ "ปิดประตู"
หากคุณป้อน 1 คุณจะเห็นว่าประตูเปิดขึ้นและบนหน้าจอจะมีข้อความ "เปิดประตู"
บน Windows กระบวนการนี้เหมือนกันยกเว้นว่าคุณต้องติดตั้งแอปพลิเคชัน Teraterm
ขั้นตอนที่ 7: Intim the Scorelet
ก่อนอื่นคุณต้องเชื่อมต่อไดรฟ์เซอร์โวที่ดุร้าย ในการทำเช่นนี้ตัดปลั๊กจากรูยึดของที่อยู่อาศัยไดรฟ์ หากเราใส่ไดรฟ์เซอร์โวจะต้องปิดรูติดตั้งด้วยการแตก จากนั้นคุณต้องใส่คันโยกเซอร์โวลงในช่องโหว่สปอตเลตซึ่งมีที่จับแบบสต็อก ตรวจสอบวิธีการล็อคในกรณี หากทุกอย่างเรียบร้อยดีให้ยึดก้านเซอร์โวด้วยกาว
ตอนนี้คุณต้องเจาะรูคู่มือประตูสำหรับสกรู ในการทำเช่นนี้แนบคะแนนไปที่ประตูและดินสอเครื่องหมายที่ประตูหลุมประตูใต้สกรู เจาะในสถานที่ที่สังเกตเห็นหลุมใต้สกรูที่ระดับความลึกประมาณ 2.5 ซม. ใช้ Screehold และรักษาความปลอดภัยด้วยสกรู ตรวจสอบการทำงานของเซอร์โวอีกครั้ง
ขั้นตอนที่ 8: โภชนาการ
ในการเติมอุปกรณ์ให้สมบูรณ์คุณจะต้องใช้แหล่งจ่ายไฟสายไฟและปลั๊กขนาดเล็ก USB เพื่อเชื่อมต่อกับ Arduino
เชื่อมต่อเอาต์พุตพลังงานของแหล่งพลังงานที่มีเอาต์พุตของ Earth ของ Mini-Port USB เชื่อมต่อลวดสีแดงกับลวดสีแดงของ USB Mini-Port จากนั้นยืดลวดจากล็อคไปที่ห่วงประตูและยืด มันจากไปที่เต้าเสียบ
ขั้นตอนที่ 9: รหัส
#include servo myservo; INT POS \u003d 0; สถานะ int; ธง int \u003d 0; การตั้งค่าเป็นโมฆะ () (myservo.attach (9); serial.begin (9600); myservo.write (60); ล่าช้า (1000);) เป็นโมฆะลูป () () () () () () \u003e\u003e) () Serial.read (); flag \u003d 0;) // หากสถานะคือ "0" มอเตอร์ DC จะปิดถ้า (สถานะ \u003d\u003d "0") (myservo.write (8); ความล่าช้า (1000); Println ("ล็อคประตู");) อื่นถ้า (สถานะ \u003d\u003d "1") (myservo.write (55); ล่าช้า (1000); serial.println ("ปลดล็อคประตู");););)
ขั้นตอนที่ 10: ปราสาทที่สมบูรณ์บนพื้นฐานของ Arduino
เพลิดเพลินกับปราสาทของคุณด้วยการควบคุมระยะไกลและอย่าลืมที่จะ "บังเอิญ" เพื่อล็อคเพื่อนในห้อง
โครงการนี้เป็นแบบแยกส่วน I.e. คุณสามารถเชื่อมต่อ / ปิดการใช้งานรายการต่าง ๆ และรับฟังก์ชั่นที่แตกต่างกัน ภาพด้านบนแสดงตัวเลือกที่มีฟังก์ชั่นเต็มรูปแบบคือ:
- กลไกการล็อค. ใช้เพื่อเปิดและปิดประตู โครงการนี้กล่าวถึงการใช้กลไกที่แตกต่างกันสามกลไก:
- เซอร์โว มีขนาดใหญ่มีขนาดเล็ก กะทัดรัดมากและควบคู่ไปกับปลอกที่รุนแรง - ตัวเลือกที่ยอดเยี่ยม
- ประตูรถขับเคลื่อนปราสาทไฟฟ้า สิ่งที่ยิ่งใหญ่และทรงพลัง แต่กินกระแสที่บ้าคลั่ง
- Solenoid Pike ตัวเลือกที่ดีเพราะมันตบตัวเอง
ในการตั้งค่าเฟิร์มแวร์คุณสามารถเลือกสามประเภทใด ๆ (การตั้งค่า lock_type)
- ปุ่มภายใน. มันทำหน้าที่เปิดและปิดประตูจากด้านใน สามารถวางไว้บนมือจับประตู (จากฝ่ามือหรือจากด้านข้างของนิ้วมือ) บนประตูตัวเองหรือบนแยม
- ปุ่มด้านนอก. มันทำหน้าที่ปิดประตูเช่นเดียวกับการปลุกจากการประหยัดพลังงาน สามารถวางไว้บนมือจับประตู (จากฝ่ามือหรือจากด้านข้างของนิ้วมือ) บนประตูตัวเองหรือบนแยม
- บริบท เมื่อปิดประตู ใช้เพื่อปิดล็อคโดยอัตโนมัติเมื่อปิดประตู พวกเขาอาจจะ:
- ปุ่มนาฬิกา
- เซ็นเซอร์ฮอลล์ + แม่เหล็กที่ประตูตัวเอง
- Gercon + แม่เหล็กที่ประตูตัวเอง
- ความลับ ปุ่มรีเซ็ตการเข้าถึง. ใช้เพื่อรีเซ็ตรหัสผ่าน / ป้อนรหัสผ่านใหม่ / การท่องจำของคีย์ / การรวมกันใหม่ ฯลฯ สามารถซ่อนอยู่ที่ไหนสักแห่งในกรณี
- ไดโอดเปล่งแสง เพื่อระบุงาน LED RGB ใช้สีแดงและสีเขียว (เมื่อผสมเป็นสีเหลือง):
- Gorite Green - ปราสาทเปิดอยู่ Gorbs ไม่ลืมที่จะปิดประตู
- สีเหลืองคือการเผาไหม้ - ระบบตื่นขึ้นมาและคาดว่าการป้อนรหัสผ่าน
- กระพริบสีแดง - นั่งลงแบตเตอรี่
องค์ประกอบใด ๆ เหล่านี้สามารถแยกออกจากระบบ:
- เราลบความสับสน ในเฟิร์มแวร์ในการตั้งค่ายังปิด (การตั้งค่า tail_button. ตอนนี้เพื่อปิดล็อคคุณต้องกดปุ่ม
- เราลบปุ่มกลางแจ้ง ในเฟิร์มแวร์ในการตั้งค่ายังปิด (การตั้งค่า wake_button. ตอนนี้ระบบไม่จำเป็นต้องตื่นขึ้นมามันจะทำให้ตัวเองตื่นขึ้นมา (การใช้พลังงานมีขนาดใหญ่กว่าเล็กน้อย) และตอนนี้เราไม่มีปุ่มปิดที่ประตูหน้าและคุณต้องสับสน ทั้งปราสาท - Tickold
- เราลบปุ่มภายใน ตัวเลือกนี้เหมาะสำหรับตู้และตู้นิรภัย คุณไม่จำเป็นต้องเปลี่ยนอะไรในการตั้งค่า
- เราลบไฟ LED คุณไม่จำเป็นต้องเปลี่ยนอะไรในการตั้งค่า
- ปุ่มรีเซ็ตการเข้าถึงสามารถหายไปหลังจากการใช้งานครั้งแรกหรือเขียนรหัสสำหรับตัวเอง
- ประตูถูกปิดคลิกนอก - ตื่นขึ้นรอการป้อนรหัสผ่าน / ป้าย RFID / กุญแจอิเล็กทรอนิกส์ / ลายนิ้วมือ
- ประตูปิดระบบจะตื่นขึ้นรอรหัสผ่าน สามารถกำหนดเวลาเวลา (การตั้งค่า เวลานอน.)
- ประตูถูกปิดรหัสผ่าน / ฉลาก / คีย์ ฯลฯ - เปิด
- ประตูถูกปิดกดภายใน - เปิด
- ประตูเปิดให้คลิกจากภายนอก - ปิด
- ประตูเปิดให้กดภายใน - ปิด
- ประตูเปิดให้กด - ปิด
ล็อคให้การทำงานของแบตเตอรี่ในโหมดประหยัดพลังงานต่ำ (เปิดใช้งานการตั้งค่า: การตั้งค่า sleep_enable) คือ:
- ตื่นทุกสองสามวินาทีให้ทำตามเหตุการณ์ (ตัวเลือกเสริมหากไม่มีปุ่มข้างนอกคุณสามารถเปิดใช้งานในการตั้งค่า wake_button)
- ทุก ๆ สองสามนาทีในการตรวจสอบแรงดันไฟฟ้า Akum (การตั้งค่าเปิด / ปิด battery_Monitor)
- หาก Akum ถูกปล่อยออกมา (มีการตั้งค่าแรงดันไฟฟ้าในการตั้งค่า bat_low):
- เปิดประตู (ไม่จำเป็นสามารถกำหนดค่าได้ในเฟิร์มแวร์ open_bat_low)
- ห้ามการเปิดและปิดเพิ่มเติม
- เมื่อคุณคลิกที่ปุ่มเพื่อแฟลช LED สีแดง
- หยุดดูเหตุการณ์ (I.e. รหัสผ่าน / ฉลาก ฯลฯ )
เมื่อระบบไม่ได้นอนให้กดปุ่มเปลี่ยนรหัสผ่าน (ปุ่มที่ซ่อนอยู่) ค้นหา B. โหมดเปลี่ยนรหัสผ่าน:
เราป้อนรหัสผ่านจากตัวเลข ( สูงสุด 10 หลัก !!!)
- การคลิก * รหัสผ่านจะถูกบันทึกในหน่วยความจำและระบบจะออกจากการเปลี่ยนรหัสผ่าน
- เมื่อคุณคลิกรหัสผ่านจะถูกรีเซ็ต (คุณสามารถป้อนอีกครั้ง)
- หากคุณไม่กดอะไรเลย 10 วินาทีให้เปิดโหมดการเปลี่ยนรหัสผ่านโดยอัตโนมัติรหัสผ่านจะยังคงเก่า
เมื่อระบบไม่หลับ (ฉันตื่นขึ้นมาปุ่มหรือปิดการนอนหลับ) คลิก * เพื่อเข้าสู่โหมดการเข้ารหัสผ่าน
หากระบบกำลังนอนหลับและตื่นขึ้นมาเป็นระยะ ๆ เพื่อตรวจสอบเหตุการณ์จากนั้นกด * แล้วกดค้างไว้จนกระทั่งไฟ LED สีแดงจะสว่างขึ้น
โหมดรายการรหัสผ่าน:
- การประมวลผลรหัสผ่านทำในลักษณะที่รหัสผ่านที่ถูกต้องถูกนับเฉพาะเมื่อตั้งค่าเป็นลำดับของตัวเลขที่ถูกต้องนั่นคือหากรหัสผ่านคือ 345 จากนั้นหมายเลขใดก็ได้สามารถป้อนได้จนกว่าลำดับที่ 345 จะปรากฏขึ้น I.e. 30984570345 จะเปิดล็อคเมื่อสิ้นสุด 345
- หากป้อนรหัสผ่านอย่างถูกต้องประตูจะเปิดขึ้น
- หากคุณไม่กดอะไรหลังจาก 10 วินาทีระบบจะกลับสู่โหมดปกติ (หน้าที่)
- หากคุณคลิก # ออกมาทันทีออกจากโหมดรายการรหัสผ่านทันที
- หากคุณกดปุ่มเปลี่ยนรหัสผ่านลับในโหมดป้อนรหัสผ่านคุณจะออกมาจากนั้น
Arduino คือ ระบบที่ดีที่สุด เพื่อคัดลอกอุปกรณ์ใด ๆ ความคิดส่วนใหญ่จะไม่สามารถเป็นจริงได้หากไม่มีเธอ เป็นเวลานานมีความคิดเช่นนี้สร้างล็อครหัสพิเศษบน Arduino ในการเปิดมันเป็นสิ่งจำเป็นที่จะเสียบคีย์เฉพาะ ในกรณีนี้ไม่ควรเปิดล็อคแม้ว่าคุณจะรู้ว่าปุ่มที่ต้องการ ในการเปิดมันมีความจำเป็นต้องทนต่อช่วงเวลาหนึ่งโดยใช้หน่วยความจำกล้ามเนื้อ อาชญากรดังกล่าวจะไม่สามารถกระทำได้ แต่นี่คือทฤษฎีทั้งหมด
ในการรวบรวมคุณต้องใช้ประโยชน์จากอุปกรณ์พิเศษของพัลส์สี่เหลี่ยมผืนผ้ารวมถึงหลายเมตรและกอง แต่อุปกรณ์ที่เสร็จแล้วจะมีขนาดใหญ่ มิติ และไม่สามารถใช้งานได้ ตามกฎแล้วความคิดดังกล่าวไม่ให้พักผ่อน ขั้นตอนแรกในศูนย์รวมของความฝันคือการสร้างโปรแกรมภายใต้ Arduino เธอเป็นคนที่จะทำหน้าที่เป็นรหัสล็อค เพื่อที่จะเปิดคุณจะต้องกดปุ่มเดียว แต่ไม่กี่คนและทำในเวลาเดียวกัน โครงการสำเร็จรูป ดูเหมือนว่า:
คุณภาพของภาพไม่ดีที่สุด แต่การเชื่อมต่อจะดำเนินการกับพื้นดิน D3, D5, D7, D9 และ D11
รหัสถูกนำเสนอด้านล่าง:
INT INA \u003d 3; INT INB \u003d 5; Const Int Inc \u003d 9; Const Int ledpin \u003d 13; int i \u003d 1,000; ไบต์ a \u003d 0; ไบต์ b \u003d 0; ไบต์ c \u003d 0; ไบต์ d \u003d 0; ไม่ได้ลงนามเป็นเวลานาน \u003d 0; // อย่าลืมทุกสิ่งที่ใช้ค่าของ Millis () อุณหภูมิยาวที่ไม่ได้ลงชื่อ \u003d 0; // เก็บใน keya byte ยาวที่ไม่ได้ลงนาม \u003d (0, 0, 0, 0, 0, 0, 0, 0); // รหัสจริงไบต์ keyb \u003d (1, 1, 1, 1, 0, 1, 0, 0); BYTE KEYC \u003d (1, 0, 1, 0, 1, 1, 1, 0); ไบต์ k \u003d 0; การตั้งค่าเป็นโมฆะ () (PinMode (INA, Input_pullup); // 3 อินพุตที่เชื่อมต่อกับปุ่ม PinMode (inb, input_pullup); PinMode (Inc, Input_pullup); PinMode (Ledpin, เอาท์พุท); // LED ในตัวในวันที่ 13 PINE PINMODE (7, เอาท์พุท); pinmode (11, เอาท์พุท); digital เขียน (7, ต่ำ); // แทนที่ Digital Digital เขียน (11, ต่ำ); time \u003d millis (); // จำเป็นต้องใช้เวลาอ้างอิง) void blinktwice ( ) (// LED DougherWrite DigitalWrite (Ledpin, High); DigitalWrite (Ledpin, Low); DigitalWrite (Ledpin, High); DigitalWrite (Ledpin, Low); ล่าช้า (200);) เป็นโมฆะวน () () (ถ้า (k \u003d\u003d 0) (กะพริบ (); // คำเชิญป้อนรหัส) ถ้า (k \u003d\u003d 8) (digital เขียน (ledpin, high); ล่าช้า (3000); k \u003d 0;) A \u003d DigitalRead (INA); // ระดับสัญญาณถูกอ่านจากปุ่มกด / ไม่กด B \u003d DigitallRead (inb); c \u003d DigitalRead (Inc); ล่าช้า (100); // ถัดไปถ้า - การป้องกัน เทียบกับผลบวกเท็จคุณไม่สามารถใช้ถ้า ((DigitallRead (INA) \u003d\u003d A) && (DigitalRead (inb) \u003d\u003d B) && (DigitalRead (Inc) \u003d\u003d C)) (ถ้า (a \u003d\u003d keya [k] ) (ถ้า (b \u003d\u003d KEYB [K]) (ถ้า (c \u003d\u003d keyc [k]) (k ++; )))) ถ้า (k \u003d\u003d 1) (ถ้า (d \u003d\u003d 0) (เวลา \u003d millis (); d ++;)) temp \u003d millis (); temp \u003d temp - เวลา; ถ้า (temp\u003e 10,000) (k \u003d 0; d \u003d 0; time \u003d millis ();))
เพื่อไม่ให้มีคำถามพิเศษใด ๆ ในรหัสบางช่วงเวลาควรอธิบาย ฟังก์ชั่นการตั้งค่าใช้เพื่อกำหนดพอร์ต ฟังก์ชั่นต่อไปนี้คือ input_pullup ซึ่งจำเป็นต้องเพิ่มแรงดันไฟฟ้าของสนโดย 5 V. สิ่งนี้ดำเนินการโดยใช้ตัวต้านทาน เนื่องจากสิ่งนี้มีการลัดวงจรต่างๆจะไม่เกิดขึ้น เพื่อความสะดวกที่มากขึ้นขอแนะนำให้ใช้คุณสมบัติ BlinkTwice โดยทั่วไปเมื่อสร้างโปรแกรมต่าง ๆ คุณต้องลองใช้งานฟังก์ชั่นอื่น ๆ
หลังจากกำหนดฟังก์ชั่นแล้วสัญญาณจะถูกอ่านจากพอร์ต หากกดปุ่มนี้จะแสดงให้เห็นด้วยหมายเลข 1 และถ้าไม่ - 2. ถัดไปมีการวิเคราะห์ค่าทั้งหมด ตัวอย่างเช่นการรวมกันดังกล่าวปรากฏเป็น 0.1.1 ซึ่งหมายความว่ากดปุ่มแรกและทั้งสองที่เหลือไม่ได้ หากค่าทั้งหมดถูกดำเนินการอย่างถูกต้องเงื่อนไขที่ 8 ก็เป็นจริงเช่นกัน นี่คือหลักฐานโดย LED ที่มีแสงบนแผงด้านหน้า ถัดไปคุณต้องป้อนรหัสเฉพาะที่จะให้บริการเพื่อเปิดประตู
องค์ประกอบรหัสล่าสุดใช้เพื่อวางค่ามิเตอร์ ฟังก์ชั่นนี้จะดำเนินการหากหลังจากการกดแป้นพิมพ์ครั้งสุดท้ายผ่านไปเกินกว่า 10 วินาที หากไม่มีรหัสนี้มันเป็นไปได้ที่จะผ่านทุกอย่าง ตัวเลือกที่เป็นไปได้แม้ว่าจะมีจำนวนมากพอ หลังจากสร้างอุปกรณ์นี้จำเป็นต้องทดสอบ ยัง