قفل کد آردوینو با کارت SD. قفل هوشمند اتوماتیک و آردوینو. کد زیر است

در این درس یاد خواهیم گرفت که چگونه این کار را انجام دهیم سیستم ساده، که قفل را باز می کند کلید الکترونیکی(علامت گذاری).

در آینده، می توانید عملکرد را اصلاح و گسترش دهید. به عنوان مثال، تابع "افزودن کلیدهای جدید و حذف آنها از حافظه" را اضافه کنید. در حالت پایه، بیایید یک مثال ساده را در نظر بگیریم که در آن یک شناسه کلید یکتا در کد برنامه از پیش تنظیم شده است.

در این آموزش به موارد زیر نیاز خواهیم داشت:

برای اجرای پروژه باید کتابخانه های زیر را نصب کنیم:

2) اکنون باید یک Buzzer را وصل کنید که در صورت کارکرد کلید و باز شدن قفل یک سیگنال و با بسته شدن قفل سیگنال دوم به صدا در می آید.

زنگ را به ترتیب زیر وصل می کنیم:

آردوینو زنگ
5 ولت 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. void setup() (Serial.begin(9600); Serial.println("در انتظار کارت..."); SPI.begin(); // مقدار دهی اولیه SPI / گذرگاه SPI Init. mfrc522.PCD_Init(); // مقداردهی اولیه MFRC522 / Init MFRC522 servo.attach(0) servo.write(0)) void loop() ( return; ) // یک برچسب را انتخاب کنید اگر (! 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 کارت (برچسب) را پیدا کنید، باید این طرح را در آردوینو بنویسید، مدار ذکر شده در بالا را جمع آوری کنید و کنسول (Serial Port Monitoring) را باز کنید. وقتی تگ RFID را لمس می کنید، کنسول یک عدد نمایش می دهد

UID حاصل باید در خط زیر وارد شود:

اگر (uidDec == 3763966293) // Uid تگ را مقایسه کنید، اگر برابر با داده شده باشد، درایو سروو دریچه را باز می کند.

هر کارت یک شناسه منحصر به فرد دارد و تکرار نمی شود. بنابراین، هنگامی که کارتی را که شناسه آن را در برنامه تنظیم کرده اید ارائه می کنید، سیستم با استفاده از درایو سروو دسترسی را باز می کند.

ویدئو:

پیشرفت متوقف نمی شود و "قفل های هوشمند" به طور فزاینده ای بر روی درهای آپارتمان ها، گاراژها و خانه ها ظاهر می شوند.

قفل مشابهی با فشار دادن دکمه ای روی گوشی هوشمند خود باز می شود. خوشبختانه گوشی‌های هوشمند و تبلت‌ها وارد زندگی روزمره ما شده‌اند. در برخی موارد، "قفل های هوشمند" به "سرویس های ابری" مانند Google Drive متصل می شوند و از راه دور باز می شوند. علاوه بر این، این گزینه امکان دسترسی به باز کردن درب را به افراد دیگر نیز می دهد.

این پروژه یک نسخه DIY از یک قفل هوشمند را در آردوینو پیاده‌سازی می‌کند که می‌توان آن را از راه دور از هر کجای دنیا کنترل کرد.

علاوه بر این، این پروژه قابلیت باز کردن قفل را پس از شناسایی اثر انگشت اضافه کرده است. برای این منظور یک حسگر اثر انگشت یکپارچه خواهد شد. هر دو گزینه باز شدن درب توسط پلت فرم Adafruit IO تامین می شوند.

قفلی مانند این می تواند اولین قدم عالی در پروژه خانه هوشمند شما باشد.

راه اندازی حسگر اثر انگشت

برای کار با حسگر اثر انگشت، یک کتابخانه عالی برای آردوینو وجود دارد که فرآیند راه اندازی سنسور را بسیار ساده می کند. این پروژه از Arduino Uno استفاده می کند. برای اتصال به اینترنت از برد Adafruit CC3000 استفاده می شود.

بیایید با اتصال برق شروع کنیم:

  • پایه 5 ولت را از برد آردوینو به ریل برق قرمز وصل کنید.
  • پین GND آردوینو به ریل آبی روی لحیم کاری متصل است تخته مدار.

بیایید به اتصال حسگر اثر انگشت ادامه دهیم:

  • ابتدا برق را وصل کنید. برای انجام این کار، سیم قرمز به ریل +5 ولت و سیم مشکی به ریل GND متصل می شود.
  • سیم سفیدسنسور به پایه 4 آردوینو متصل است.
  • سیم سبزبه پین ​​3 روی میکروکنترلر می رود.

حال به سراغ ماژول CC3000 می رویم:

  • پایه IRQ را از برد CC3000 به پایه 2 آردوینو وصل می کنیم.
  • VBAT - به پین ​​5.
  • CS - به پین ​​10.
  • پس از این، شما باید پایه های SPI را به آردوینو متصل کنید: MOSI، MISO و CLK - به ترتیب به پایه های 11، 12 و 13.

خوب، در پایان باید برق را تامین کنید: Vin - به آردوینو 5 ولت (ریل قرمز روی برد مدار شما) و GND به GND (راه آهن آبی روی تخته نان).

عکسی از پروژه کاملا مونتاژ شده در زیر نشان داده شده است:

قبل از ایجاد طرحی که داده ها را روی Adafruit IO بارگذاری می کند، باید داده های مربوط به اثر انگشت خود را به حسگر منتقل کنید. در غیر این صورت در آینده شما را نمی شناسد؛). توصیه می کنیم سنسور اثر انگشت را با استفاده از آردوینو به طور جداگانه کالیبره کنید. اگر اولین بار است که با این سنسور کار می کنید، توصیه می کنیم با فرآیند کالیبراسیون و دستورالعمل های دقیق کار با حسگر اثر انگشت آشنا شوید.

اگر قبلاً این کار را نکرده‌اید، یک حساب کاربری با Adafruit IO ایجاد کنید.

پس از این می توانیم به ادامه مطلب برویم مرحله بعدتوسعه یک "قفل هوشمند" در آردوینو: یعنی توسعه طرحی که داده ها را به Adafruit IO منتقل می کند. از آنجایی که این برنامه بسیار حجیم است، در این مقاله فقط قسمت های اصلی آن را برجسته می کنیم و در نظر می گیریم و سپس پیوندی به GitHub ارائه می دهیم که می توانید طرح کامل را از آنجا دانلود کنید.

طرح با بارگیری تمام کتابخانه های لازم آغاز می شود:

#عبارتند از

#عبارتند از

#عبارتند از

#شامل "Adafruit_MQTT.h"

#شامل "Adafruit_MQTT_CC3000.h"

#عبارتند از

#عبارتند از >

پس از این، باید با وارد کردن پارامترهای شبکه WiFi خود، مشخص کردن SSID و رمز عبور، طرح را کمی تصحیح کنید:

#define WLAN_SECURITY WLAN_SEC_WPA2>

علاوه بر این، برای ورود به حساب Adafruit IO خود باید نام و کلید AIO خود را وارد کنید:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_name"

#define AIO_KEY "adafruit_io_key">

خطوط زیر وظیفه تعامل و پردازش داده های حسگر اثر انگشت را بر عهده دارند. اگر سنسور فعال شده باشد (اثر انگشت مطابقت دارد)، "1" وجود خواهد داشت:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/fingerprint";

Adafruit_MQTT_Publish اثر انگشت = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

علاوه بر این، ما باید یک نمونه از شی SoftwareSerial برای سنسور خود ایجاد کنیم:

SoftwareSerial mySerial(3, 4);

پس از این می توانیم یک شی برای سنسور خود ایجاد کنیم:

انگشت Adafruit_Fingerprint = Adafruit_Fingerprint(&mySerial);

در داخل طرح، نشان می‌دهیم که کدام شناسه انگشت باید قفل را در آینده فعال کند. این مثال از 0 استفاده می کند که با شناسه اولین اثر انگشت استفاده شده توسط سنسور مطابقت دارد:

int انگشت ID = 0;

پس از این، شمارنده را مقداردهی اولیه می کنیم و در پروژه خود تاخیر می دهیم. اساساً ما می خواهیم که قفل پس از باز شدن به طور خودکار درگیر شود. این مثال از 10 ثانیه تاخیر استفاده می کند، اما می توانید این مقدار را مطابق با نیاز خود تنظیم کنید:

int activationCounter = 0;

int lastActivation = 0;

int activationTime = 10 * 1000;

در بدنه تابع setup()، حسگر اثر انگشت را مقداردهی اولیه می کنیم و اطمینان حاصل می کنیم که تراشه CC3000 به شبکه WiFi شما متصل است.

در بدنه تابع loop() به Adafruit IO متصل می شویم. خط زیر مسئول این است:

پس از اتصال به پلتفرم Adafruit IO، آخرین اثر انگشت را بررسی می کنیم. اگر مطابقت داشته باشد و قفل فعال نشود، "1" را برای پردازش به Adafruit IO ارسال می کنیم:

اگر (شناسه اثرانگشت == شناسه انگشت && lockState == نادرست) (

Serial.println(F("دسترسی داده شد!"));

lockState = true;

Serial.println(F("ناموفق"));

Serial.println(F("OK!"));

lastActivation = millis();

اگر در تابع loop() قفل فعال شود و به مقدار تاخیر نشان داده شده در بالا رسیده باشیم، "0" را ارسال می کنیم:

if ((activationCounter - lastActivation > activationTime) && lockState == true) (

lockState = نادرست;

if (! fingerprint.publish(state)) (

Serial.println(F("ناموفق"));

Serial.println(F("OK!"));

می توانید آخرین نسخه کد را در GitHub دانلود کنید.

وقت آن است که پروژه خود را آزمایش کنیم! فراموش نکنید که تمام کتابخانه های لازم برای آردوینو را دانلود و نصب کنید!

مطمئن شوید که همه چیز را وارد کرده اید تغییرات لازمداخل اسکچ و آن را در آردوینو آپلود کنید. پس از آن، پنجره Serial Monitor را باز کنید.

هنگامی که آردوینو به شبکه وای فای متصل می شود، حسگر اثر انگشت شروع به چشمک زدن قرمز می کند. انگشت خود را روی سنسور قرار دهید. شماره شناسه باید در پنجره نمایشگر سریال نمایش داده شود. اگر مطابقت داشته باشد، پیام "OK!" ظاهر می شود. این بدان معنی است که داده ها به سرورهای 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 "Your_wifi_ssid"

#define WLAN_PASS "Your_wifi_password"

#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 relayPin = 5;

تعامل با حسگر اثر انگشت، مانند بخش قبل:

const char LOCK_FEED PROGMEM = AIO_USERNAME "/feeds/lock";

Adafruit_MQTT_قفل اشتراک = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

در بدنه تابع setup() نشان می‌دهیم که پینی که LED به آن متصل است باید در حالت OUTPUT کار کند:

pinMode (RelayPin، OUTPUT)؛

در حلقه ()loop، ابتدا بررسی می کنیم که آیا به Adafruit IO متصل هستیم یا خیر:

پس از این، بررسی می کنیم که چه سیگنالی دریافت می شود. اگر "1" مخابره شود، پینی را که قبلاً اعلام کرده بودیم، که LED ما به آن متصل است، فعال می کنیم. اگر "0" را دریافت کنیم، مخاطب را به حالت "کم" منتقل می کنیم:

Adafruit_MQTT_Subscribe *subscription;

در حالی که ((اشتراک = mqtt.readSubscription(1000))) (

اگر (اشتراک == & قفل) (

Serial.print(F("Got:"));

Serial.println((char *)lock.lastread);

// دستور را در داده های رشته ای ذخیره کنید

دستور رشته = String((char *)lock.lastread);

اگر (فرمان == "0") (

digitalWrite (relayPin، LOW)؛

اگر (فرمان == "1") (

digitalWrite (relayPin، HIGH);

پیدا کردن آخرین نسخهمی توانید طرح را در GitHub دانلود کنید.

وقت آن است که پروژه خود را آزمایش کنیم. فراموش نکنید که تمام کتابخانه های مورد نیاز برای آردوینو خود را دانلود کنید و بررسی کنید که آیا تغییرات درستی در طرح ایجاد کرده اید یا خیر.

برای برنامه ریزی تراشه ESP8266 می توانید از یک مبدل ساده USB-FTDI استفاده کنید.

طرح را در آردوینو آپلود کنید و پنجره سریال مانیتور را باز کنید. در این مرحله، ما به سادگی بررسی کردیم که آیا می‌توانیم به Adafruit IO متصل شویم: عملکردهای موجود را بیشتر بررسی خواهیم کرد.

تست پروژه

حالا بیایید شروع به آزمایش کنیم! به منوی کاربری Adafruit IO خود در زیر منوی Feeds بروید. بررسی کنید که آیا کانال های اثر انگشت و قفل ایجاد شده اند یا خیر (در صفحه چاپ زیر این خطوط اثر انگشت و قفل هستند):


اگر آنها وجود ندارند، باید آنها را به صورت دستی ایجاد کنید.

اکنون باید از تبادل داده بین اثر انگشت و کانال قفل اطمینان حاصل کنیم. هنگامی که کانال اثر انگشت مقدار "1" را می گیرد، کانال قفل باید مقدار "1" را بگیرد و بالعکس.

برای این کار از ابزار بسیار قدرتمند Adafruit IO استفاده می کنیم: triggers. تریگرها اساساً شرایطی هستند که می توانید برای کانال های پیکربندی شده اعمال کنید. یعنی می توان از آنها برای اتصال دو کانال استفاده کرد.

یک تریگر واکنشی جدید از بخش Triggers در Adafruit IO ایجاد کنید. این امکان تبادل داده بین سنسور اثر انگشت و کانال های قفل را فراهم می کند:


زمانی که هر دو تریگر پیکربندی می شوند باید به این شکل باشد:

همه! حالا ما واقعاً می توانیم پروژه خود را آزمایش کنیم! انگشت خود را روی سنسور گذاشتیم و دیدیم که چگونه آردوینو با یک LED که مربوط به انتقال داده است شروع به چشمک زدن کرد. پس از این، LED روی ماژول ESP8266 باید شروع به چشمک زدن کند. این بدان معناست که شروع به دریافت داده از طریق MQTT کرده است. LED روی برد مدار نیز باید در این لحظه روشن شود.

پس از تاخیری که در طرح تعیین کرده اید (پیش فرض 10 ثانیه است)، LED خاموش می شود. تبریک می گویم! شما می توانید LED را با اثر انگشت خود از هر کجای دنیا کنترل کنید!

راه اندازی قفل الکترونیکی

ما به آخرین بخش پروژه رسیدیم: اتصال مستقیم و کنترل. قفل الکترونیکیبا استفاده از آردوینو و حسگر اثر انگشت این پروژه آسان نیست، می توانید از تمام منابع به شکلی که در بالا ارائه شده است استفاده کنید، اما به جای LED، یک رله را وصل کنید.

برای اتصال مستقیم قفل، به اجزای اضافی نیاز دارید: منبع تغذیه 12 ولت، جک برای اتصال برق، ترانزیستور (V در این مثالماسفت IRLB8721PbF استفاده می‌شود، اما می‌توان از یکی دیگر برای مثال ترانزیستور دوقطبی TIP102 استفاده کرد. اگر از ترانزیستور دوقطبی استفاده می کنید، باید یک مقاومت اضافه کنید.

در ذیل نشان داده شده است نمودار الکتریکیاتصال همه اجزا به ماژول ESP8266:


توجه داشته باشید که اگر از ترانزیستور ماسفت استفاده می کنید، نیازی به مقاومت بین پایه 5 ماژول ESP8266 و ترانزیستور ندارید.

پروژه به طور کامل مونتاژ شده در عکس زیر نشان داده شده است:


ماژول ESP8266 را با استفاده از ماژول FTDI تغذیه کنید و منبع تغذیه 12 ولت را به جک وصل کنید. اگر از پین های توصیه شده در بالا برای اتصال استفاده کرده اید، نیازی به تغییر چیزی در طرح نخواهید داشت.

اکنون می توانید انگشت خود را روی سنسور قرار دهید: قفل باید در پاسخ به اثر انگشت شما کار کند. ویدئوی زیر پروژه قفل هوشمند خودکار را در عمل نشان می دهد:

توسعه بیشتر پروژه Smart Lock

در پروژه ما منتشر شد کنترل از راه دورقفل درب با استفاده از اثر انگشت شما

با خیال راحت آزمایش کنید، طرح و صحافی را اصلاح کنید. به عنوان مثال، می توانید یک قفل الکترونیکی درب را با یک رله برای کنترل قدرت چاپگر سه بعدی، بازوی رباتیک یا کوادکوپتر خود جایگزین کنید.

شما می توانید خود را توسعه دهید خانه هوشمندمثلاً یک سیستم آبیاری را در آردوینو از راه دور فعال کنید یا چراغ‌های اتاق را روشن کنید... فراموش نکنید که می‌توانید به طور همزمان تعداد تقریباً نامحدودی از دستگاه‌ها را با استفاده از Adafruit IO فعال کنید.

نظرات، سوالات خود را بنویسید و به اشتراک بگذارید تجربه شخصیزیر ایده ها و پروژه های جدید اغلب در بحث ها متولد می شوند!

آردوینو است بهترین سیستمبرای کپی کردن هر وسیله ای اکثر ایده ها بدون او نمی توانستند محقق شوند. این ایده مدت هاست وجود داشته است: ایجاد یک قفل ترکیبی خاص در آردوینو. برای باز کردن آن، باید کلید خاصی را نگه دارید. در این مورد، حتی اگر می دانید، قفل نباید باز شود دکمه مورد نظر. برای باز کردن آن، باید فواصل خاصی را با استفاده از حافظه عضلانی حفظ کنید. مجرم نمی تواند چنین کاری را انجام دهد. اما همه اینها فقط یک نظریه است.

برای جمع آوری آن باید استفاده کنید دستگاه خاصپالس های مستطیلی، و همچنین چندین شمارنده و یک دسته. ولی دستگاه تمام شدهعالی خواهد داشت ابعادو استفاده از آن ناخوشایند خواهد بود. به عنوان یک قاعده، چنین افکاری شما را آزار می دهد. اولین قدم برای تحقق رویای من، ایجاد یک برنامه برای آردوینو بود. این به عنوان یک قفل ترکیبی عمل خواهد کرد. برای باز کردن آن، باید نه یک کلید، بلکه چندین کلید را فشار دهید و این کار را همزمان انجام دهید. طرح آمادهبه نظر می رسد این است:

کیفیت تصویر بهترین نیست، اما اتصال به زمین، D3، D5، D7، D9 و D11 انجام می شود.

کد زیر است:

Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; بایت a = 0; بایت b = 0; بایت c = 0; بایت d = 0; زمان طولانی بدون امضا = 0; //هر چیزی را که یک مقدار می گیرد را فراموش نکنید. //ذخیره در بایت طولانی بدون علامت keya = ( 0, 0, 0, 0, 0, 0, 0, 0); //کدهای خود بایت کلید = ( 1, 1, 1, 1, 0, 1, 0, 0); کلید بایت = ( 1، 0، 1، 0، 1، 1، 1، 0)؛ بایت k = 0; void setup() (pinMode(ina, INPUT_PULLUP)؛ //3 ورودی متصل به دکمه‌ها pinMode (inb, INPUT_PULLUP)؛ pinMode (inc, INPUT_PULLUP)؛ pinMode (ledPin, OUTPUT)؛ // LED داخلی در سیزدهم pinMode(7, OUTPUT) (11, OUTPUT) DigitalWrite (11, LOW ) void blinktwice() ; DigitalWrite(ledPin, HIGHWrite) DigitalWrite(ledPin, LOW ) void loop() ; // اعلان برای وارد کردن کد ) اگر (k == 8) ( digitalWrite(ledPin, HIGH)؛ delay(3000)؛ k = 0 ; ) a = digitalRead(ina //سطوح سیگنال از روی دکمه ها خوانده می شود - فشار داده می شود). /not pressed b = digitalRead(inb) delay(100) //next if - محافظت در برابر موارد مثبت کاذب، لازم نیست از if((digitalRead(ina) == a)&&(digitalRead(inb) =); =b)&&(digitalRead(inc)==c)) ( if (a == keya[k]) ( if (b == keyb[k]) ( if (c == keyc[k]) (k++; ) ) ) ) اگر (k==1) (اگر (d ==0) (زمان = میلی (); d++؛ ) ) دما = میلیس(); temp = temp - time; اگر (دمای > 10000) (k= 0؛ d=0؛ زمان = میلی‌سی (; ))

برای پرهیز از سوالات غیرضروری در مورد کد، نکاتی باید روشن شود. تابع setup برای اختصاص پورت ها استفاده می شود. تابع بعدی– Input_Pullup که برای افزایش ولتاژ پین به میزان 5 ولت لازم است این کار با استفاده از یک مقاومت انجام می شود. با تشکر از این، مختلف اتصال کوتاه. برای راحتی بیشتر، توصیه می شود از عملکرد blinktwice استفاده کنید. به طور کلی، هنگام ایجاد برنامه های مختلفباید توابع دیگر را امتحان کنید.

پس از تخصیص عملکردها، سیگنال از پورت ها خوانده می شود. اگر دکمه فشار داده شود، با عدد 1 نشان داده می شود، و اگر نه - 2. سپس، تمام مقادیر مورد تجزیه و تحلیل قرار می گیرند. به عنوان مثال، ترکیبی مانند 0،1،1 ظاهر شد. این بدان معناست که کلید اول فشار داده می شود، اما دو کلید دیگر فشار داده نمی شود. اگر همه مقادیر درست باشند، شرط 8 نیز درست است. این موضوع با چراغ LED روشن روی پنل جلویی نشان داده می شود. در مرحله بعد، باید کد خاصی را وارد کنید که برای باز کردن درب استفاده می شود.

آخرین عناصر کد برای تنظیم مجدد مقادیر شمارنده استفاده می شود. این عملکرد در صورتی انجام می شود که بیش از 10 ثانیه از آخرین فشار کلید گذشته باشد. بدون این کد امکان تکرار در همه چیز وجود داشت گزینه های ممکن، اگرچه تعداد آنها بسیار زیاد است. پس از ساخت این دستگاه، باید آن را تست کنید. بیشتر

اتفاقاً این اتفاق افتاد که در محل کار تصمیم گرفتیم یک قفل ترکیبی را روی درب خود نصب کنیم، زیرا دائماً وارد می شویم - از دفتر خارج می شویم که درب آن باید به طور مداوم در غیاب ساکنان بسته شود. کلیدها اغلب در داخل فراموش می شوند. به طور کلی، ما تصمیم گرفتیم که قفل ترکیبی یک راه حل عالی است.

با گشت و گذار در بازارهای کوچک چینی و ebay، چیزی ارزان و کم و بیش جدی پیدا نکردم و تصمیم گرفتم خودم آن را بسازم. فوراً می گویم که پلتفرم آردوینو به دلیل سادگی آن انتخاب شده است ، زیرا من اصلاً تجربه ای با میکروکنترلرها نداشتم.

اندیشه

روی در، در قسمت بیرونی در، باید یک صفحه کلید وجود داشته باشد که رمز عبور روی آن وارد شده باشد، با داخلبقیه ساختار ثابت است. یک سوئیچ نی برای کنترل بسته شدن کامل درب استفاده می شود. هنگام خروج از دفتر، شخص "*" را روی صفحه کلید فشار می دهد و بدون اینکه منتظر بماند درب بسته شود، به دنبال کار خود می رود، وقتی در کاملا بسته شد، سوئیچ نی بسته می شود و قفل بسته می شود. . درب با وارد کردن رمز 4 رقمی و فشار دادن "#" باز می شود.

تجهیزات جانبی

آردوینو UNO = 18 دلار
پروتوشیلد آردوینو + برد برد = 6 دلار
L293D = 1 دلار
بسته سیمی 30 عدد برای بردبرد = 4 دلار
2 سوکت RJ45 = 4 دلار
2 شاخه RJ45 = 0.5 دلار
محرک قفل مرکزی = 250 روبل.
سوئیچ نی = آزادانه از پنجره قدیمی پاره شده است.
چفت فلزی غول پیکر = رایگان
مسکن از هاب قدیمی D-LINK ساخته شده از آهن یک و نیم میلی متری = رایگان
منبع تغذیه از همان هاب D-LINK برای 12 و 5 ولت = نیز رایگان
یک دسته پیچ و مهره برای اتصال همه این موارد به بدن = 100 روبل.
کنترل از راه دور از دزدگیر= رایگان

جمع: 33.5 دلار و 350 روبل.

نه چندان کم، می گویید و قطعا حق با شماست، اما برای لذت باید هزینه کنید! و همیشه خوب است که چیزی را با دستان خود جمع کنید. علاوه بر این، اگر از MK بدون آردوینو استفاده کنید، می توان هزینه طراحی را تا حد زیادی کاهش داد.

آماده شدن برای مونتاژ

من می خواهم چند کلمه در مورد خرید بگویم عنصر کلیدیطرح های محرک یک فروشگاه خودروی محلی به من دو نوع محرک پیشنهاد داد: "با دو سیم و با پنج." به گفته خانم فروشنده، آنها کاملاً یکسان بودند و تفاوت در تعداد سیم ها هیچ معنایی نداشت. با این حال، همانطور که بعدا مشخص شد، این چنین نیست! من یک دستگاه با دو سیم انتخاب کردم، آن را با 12 ولت تغذیه می کرد. طراحی پنج سیم دارای کلیدهای محدود کننده برای کنترل حرکت اهرم است. فهمیدم که اشتباه خریدم فقط وقتی آن را جدا کردم و برای تعویضش خیلی دیر شده بود. حرکت اهرم برای جمع کردن صحیح چفت خیلی کوتاه بود، بنابراین لازم بود کمی آن را اصلاح کنید، یعنی دو واشر لاستیکی را که حرکت اهرم محرک را کوتاه می کردند، بردارید. برای این کار باید بدنه را با یک اره معمولی از طول اره می کردند، زیرا واشر دوم داخل آن بود. نوار برق آبی، مانند همیشه، در آینده به ما در هنگام مونتاژ آن کمک کرد.
برای کنترل موتور محرک، ما از یک درایور موتور L293D استفاده کردیم که می تواند بار اوج تا 1200 میلی آمپر را تحمل کند، هنگامی که موتور محرک را متوقف کردیم، اوج بار به تنها 600 میلی آمپر افزایش یافت.
مخاطبین صفحه کلید، بلندگو و دو ال ای دی از پنل کنترل هشدار امنیتی حذف شدند. کنترل از راه دور و دستگاه اصلی قرار بود با استفاده از جفت پیچ خورده و کانکتورهای RJ45 متصل شوند.

برنامه نويسي.

بنابراین، من تا به حال هیچ تجربه ای در برنامه نویسی آردوینو نداشتم. من از کارها و مقالات دیگران از سایت arduino.cc استفاده کردم. هر کسی که علاقه مند است می تواند به این کد زشت نگاه کند :)

عکس و فیلم



آردوینو و محرک


واحد قدرت


صفحه کلید


اسپانیولت (با یک پره فلزی به محرک متصل شده و برای زیبایی با هیت شرینک پوشانده شده است)

ویدئویی از روند عملکرد دستگاه:



مقالات مشابه

parki48.ru 2024. ما در حال ساخت یک خانه قاب هستیم. طراحی منظر. ساخت و ساز. پایه.