SD картаас Arduino код түгжээ. Автомат "ухаалаг" цоож болон Arduino. Код нь доор байна

Энэ хичээлээр бид цахим түлхүүр (Шошго) ашиглан түгжээг тайлах энгийн системийг хэрхэн хийхийг сурах болно.

Ирээдүйд та функцийг сайжруулж, өргөжүүлэх боломжтой. Жишээлбэл, "шинэ түлхүүр нэмэх, санах ойноос устгах" функцийг нэмнэ үү. Үндсэн тохиолдолд, програмын кодонд өвөрмөц түлхүүр танигчийг урьдчилан тодорхойлсон энгийн жишээг авч үзье.

Энэ зааварт бидэнд хэрэгтэй болно:

Төслийг хэрэгжүүлэхийн тулд бид номын сангуудыг суулгах хэрэгтэй:

2) Одоо та дуут дохиог холбох хэрэгтэй бөгөөд энэ нь түлхүүр ажиллаж, түгжээ нээгдэх үед дохио өгөх ба түгжээ хаагдах үед хоёр дахь дохио өгөх болно.

Бид дуугаралтыг дараах дарааллаар холбоно.

Arduino Базер
5V VCC
GND GND
зүү 5 IO

3) Түгжээг тайлах механизм болгон servo ашиглана. Хүссэн хэмжээ болон серво үүсгэж буй хүчнээс хамааран ямар ч сервог сонгож болно. Серво нь 3 зүүтэй:

Доорх зурган дээрх бүх модулиудыг хэрхэн холбосоныг та илүү тодорхой харж болно.

Одоо бүх зүйл холбогдсон бол та програмчлалыг үргэлжлүүлж болно.

Ноорог:

#оруулна #оруулна #оруулна // "RFID" номын сан. #SS_PIN 10-г тодорхойлох #RST_PIN 9-г тодорхойлох MFRC522 mfrc522(SS_PIN, RST_PIN); гарын үсэг зураагүй урт uidDec, uidDecTemp; // шошгын дугаарыг аравтын форматаар хадгалах Servo servo; void setup() ( Serial.begin(9600); Serial.println("Картыг хүлээж байна..."); SPI.begin(); // SPI эхлүүлэх / Init SPI автобус. mfrc522.PCD_Init(); // эхлүүлэх MFRC522 / Init MFRC522 card.servo.attach(6); servo.write(0); // servo-г хаалттай төлөвт тохируулах ) void loop() ( // Хэрэв (! mfrc522.PICC_IsNewCardPresent()) ( буцах; ) // Хэрэв (! mfrc522.PICC_ReadCardSerial()) ( буцах; ) 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-г дараах мөрөнд оруулах ёстой.

Хэрэв (uidDec == 3763966293) // Шошгоны Uid-г харьцуулж үзвэл энэ нь заасантай тэнцүү бол servo хавхлагыг нээнэ.

Карт бүрийн хувьд энэ танигч нь өвөрмөц бөгөөд давтагдахгүй. Тиймээс, таны ID-г хөтөлбөрт оруулсан картаа үзүүлэх үед систем нь серво ашиглан хандалтыг нээх болно.

Видео:

Ахиц дэвшил зогсохгүй, орон сууц, гараж, байшингийн үүдэнд "Ухаалаг цоож" улам бүр гарч байна.

Ухаалаг утасны товчлуурыг дарахад ижил төстэй түгжээ нээгдэнэ. Аз болоход ухаалаг утас, таблетууд бидний өдөр тутмын амьдралд аль хэдийн нэвтэрсэн. Зарим тохиолдолд "ухаалаг түгжээ" нь Google Drive гэх мэт "үүл үйлчилгээ" -тэй холбогдож алсаас нээгддэг. Үүнээс гадна, энэ сонголт нь бусад хүмүүст хаалгыг онгойлгох боломжийг олгодог.

Энэхүү төсөлд дэлхийн хаанаас ч алсаас удирдах боломжтой Arduino дээрх ухаалаг цоожны DIY хувилбарыг хэрэгжүүлэх болно.

Түүнчлэн хурууны хээ танигдсаны дараа цоож онгойлгох боломжийг төсөлд нэмж оруулсан байна. Үүний тулд хурууны хээ мэдрэгчийг нэгтгэх болно. Хаалга нээх хоёр сонголт нь Adafruit IO платформ дээр суурилсан болно.

Ийм түгжээ нь таны Ухаалаг гэр төслийн анхны сайн алхам байж болох юм.

Хурууны хээ мэдрэгчийг тохируулж байна

Хурууны хээ мэдрэгчтэй ажиллахын тулд Arduino-д зориулсан маш сайн номын сан байдаг бөгөөд энэ нь мэдрэгчийг тохируулах үйл явцыг ихээхэн хялбаршуулдаг. Энэ төсөл нь Arduino Uno ашигладаг. Adafruit CC3000 хавтанг интернетэд холбоход ашигладаг.

Эрчим хүчийг холбож эхэлье:

  • Arduino самбараас 5V зүүг улаан цахилгаан төмөр замд холбоно;
  • Arduino-ийн GND зүү нь гагнуургүй хэлхээний самбар дээрх цэнхэр төмөр замд холбогддог.

Хурууны хээ мэдрэгчийг холбох руу шилжье:

  • Эхлээд цахилгааныг холбоно уу. Үүнийг хийхийн тулд улаан утсыг +5 В төмөр замд, хар утсыг GND төмөр замд холбосон;
  • Цагаан мэдрэгч утас нь Arduino дээрх 4-р зүүтэй холбогддог.
  • Ногоон утас нь микроконтроллерийн 3-р зүү рүү очдог.

Одоо CC3000 модулийг харцгаая.

  • CC3000 самбараас IRQ зүүг Arduino дээрх 2-р зүү рүү холбоно уу.
  • 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 болон нууц үгээ (нууц үг) оруулан ноорог бага зэрэг засах хэрэгтэй.

#WLAN_SECURITY WLAN_SEC_WPA2> тодорхойлох

Нэмж хэлэхэд, та Adafruit IO дансаа оруулахын тулд нэр болон AIO түлхүүр (түлхүүр) оруулах ёстой:

#AIO_SERVERPORT 1883-г тодорхойлох

#AIO_USERNAME "adafruit_io_name"-г тодорхойлох

#AIO_KEY "adafruit_io_key"-г тодорхойлох>

Дараах мөрүүд нь хурууны хээ мэдрэгчээс өгөгдөл боловсруулах, харилцан үйлчлэх үүрэгтэй. Хэрэв мэдрэгч идэвхжсэн бол (хурууны хээ таарч) "1" болно:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/хурууны хээ";

Adafruit_MQTT_Publish хурууны хээ = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

Нэмж дурдахад бид мэдрэгчдээ SoftwareSerial объектын жишээг үүсгэх хэрэгтэй:

SoftwareSerial mySerial(3, 4);

Үүний дараа бид мэдрэгчдээ зориулж объект үүсгэж болно:

Adafruit_Хурууны хээ хуруу = Adafruit_Fingerprint(&mySerial);

Ноорог дотор бид ирээдүйд аль хурууны ID нь түгжээг идэвхжүүлэхийг зааж өгдөг. Энэ жишээнд мэдрэгчийн ашигласан анхны хурууны хээний ID-тай тохирч буй 0-г ашигласан болно.

int хурууны ID = 0;

Үүний дараа бид тоолуур болон төслийн саатал (саатал) -ыг эхлүүлдэг. Үндсэндээ бид онгойлгосны дараа түгжээ автоматаар ажиллахыг хүсч байна. Энэ жишээнд 10 секундын саатал ашигласан боловч та энэ утгыг өөрийн хэрэгцээнд тохируулан өөрчилж болно:

int activationCounter = 0;

int lastActivation = 0;

int activationTime = 10 * 1000;

Setup() функцын үндсэн хэсэгт бид хурууны хээ мэдрэгчийг эхлүүлж, CC3000 чип таны WiFi сүлжээнд холбогдсон эсэхийг баталгаажуулдаг.

Loop() функцийн биед бид Adafruit IO-той холбогддог. Дараах мөр нь үүнийг хариуцна.

Adafruit IO платформд холбогдсоны дараа бид сүүлийн хурууны хээг шалгана. Хэрэв энэ нь таарч, түгжээг идэвхжүүлээгүй бол бид Adafruit IO-д боловсруулахаар "1" илгээнэ:

хэрэв (хурууны хээ ID == хурууны ID && lockState == худал) (

Serial.println(F("Хандалт олгосон!"));

lockState=үнэн;

Serial.println(F("Бүтэлгүйтсэн"));

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

lastActivation = миллис();

Хэрэв loop() функц дотор түгжээ идэвхжсэн бөгөөд бид дээр заасан саатлын утгад хүрсэн бол бид "0" илгээнэ:

хэрэв ((activationCounter - lastActivation > activationTime) && lockState == үнэн) (

lockState=false;

хэрэв (! хурууны хээ.publish(төлөв)) (

Serial.println(F("Бүтэлгүйтсэн"));

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

Та GitHub дээр кодын хамгийн сүүлийн хувилбарыг татаж авах боломжтой.

Манай төслийг турших цаг боллоо! Шаардлагатай бүх Arduino сангуудыг татаж аваад суулгахаа бүү мартаарай!

Та ноорог дээр шаардлагатай бүх өөрчлөлтийг хийж, Arduino дээрээ байршуулсан эсэхээ шалгаарай. Дараа нь цуваа дэлгэцийн цонхыг нээнэ үү.

Arduino WiFi сүлжээнд холбогдох үед хурууны хээ мэдрэгч улаан анивчина. Мэдрэгч дээр хуруугаа тавь. Цуваа дэлгэцийн цонх нь ID дугаарыг харуулах ёстой. Хэрэв таарч байвал "За!" гэсэн мессеж гарч ирнэ. Энэ нь өгөгдлийг Adafruit IO серверүүд рүү илгээсэн гэсэн үг юм.

LED-ийн жишээг ашиглан түгжээг цаашид тохируулах схем ба ноорог

Одоо төслийн хаалганы түгжээг хянах шууд үүрэгтэй хэсгийг авч үзье. Утасгүй сүлжээнд холбогдож, түгжээг идэвхжүүлэх / идэвхгүй болгохын тулд танд нэмэлт Adafruit ESP8266 модуль хэрэгтэй болно (ESP8266 модуль нь Adafruit-ээс байх албагүй). Доорх жишээнд Adafruit IO ашиглан хоёр платформ (Arduino болон ESP8266) хооронд харилцах нь хэр хялбар болохыг харуулах болно.

Энэ хэсэгт бид шууд цоожтой ажиллахгүй. Үүний оронд бид зүгээр л LED-ийг дараа нь түгжээг холбох зүү рүү холбоно. Энэ нь цоожны дизайны онцлогийг судлахгүйгээр манай кодыг шалгах боломжтой болно.

Хэлхээ нь маш энгийн: эхлээд талхны самбар дээр ESP8266 суулгана. Дараа нь LED суулгана. LED-ийн урт (эерэг) хөл нь резистороор холбогддог гэдгийг бүү мартаарай. Резисторын хоёр дахь хөл нь ESP8266 модулийн 5-р зүү дээр холбогдсон. Хоёр дахь (катод) LED нь ESP8266 дээрх GND зүүтэй холбогдсон.

Бүрэн угсарсан хэлхээг доорх зурагт үзүүлэв.


Одоо энэ төсөлд ашиглаж буй ноорог зургийг харцгаая. Дахин хэлэхэд, код нь нэлээд том бөгөөд төвөгтэй тул бид зөвхөн үндсэн хэсгүүдийг авч үзэх болно:

Бид шаардлагатай номын сангуудыг оруулснаар эхэлдэг:

#оруулна

#"Adafruit_MQTT.h"-г оруулах

#"Adafruit_MQTT_Client.h"-г оруулах

WiFi тохиргоог хийх:

#WLAN_SSID "өөрийн_wifi_ssid"-г тодорхойлох

#WLAN_PASS "өөрийн_wifi_нууц үг"-г тодорхойлох

#WLAN_SECURITY WLAN_SEC_WPA2-г тодорхойлох

Бид мөн Adafruit IO параметрүүдийг тохируулдаг. Өмнөх хэсэгтэй адил:

#AIO_SERVER "io.adafruit.com"-г тодорхойлох

#AIO_SERVERPORT 1883-г тодорхойлох

#AIO_USERNAME "adafruit_io_username"-г тодорхойлох

#AIO_KEY "adafruit_io_key"-г тодорхойлох

Бид LED-ийг аль зүү дээр холбосоныг зааж өгнө (ирээдүйд энэ нь бидний цоож эсвэл реле байх болно):

int relayPin = 5;

Өмнөх хэсэгт байгаа шиг хурууны хээ мэдрэгчтэй харилцах:

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

Adafruit_MQTT_Subscribe түгжээ = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

Setup() функцийн үндсэн хэсэгт LED холбогдсон зүү нь OUTPUT горимд ажиллах ёстойг зааж өгсөн болно.

pinMode(relayPin, OUTPUT);

Loop() гогцоонд бид эхлээд Adafruit IO-д холбогдсон эсэхээ шалгана.

Үүний дараа бид ямар дохио ирж байгааг шалгана. Хэрэв "1" дамжуулагдсан бол бид өмнө нь зарласан, бидний LED холбогдсон зүүг идэвхжүүлдэг. Хэрэв бид "0"-ийг хүлээн авбал бид харилцагчийг "бага" төлөвт оруулна.

Adafruit_MQTT_Subscribe *захиалга;

байхад ((захиалга = mqtt.readSubscription(1000)))) (

хэрэв (захиалга == &түгжих) (

Serial.print(F("Одоо: "));

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

// Командыг мөрийн өгөгдөл болгон хадгална

Мөр команд = String((char *)lock.lastread);

хэрэв (команд == "0") (

digitalWrite(relayPin, LOW);

хэрэв (команд == "1") (

digitalWrite(relayPin, HIGH);

Та зургийн хамгийн сүүлийн хувилбарыг GitHub дээрээс олох боломжтой.

Төслөө турших цаг боллоо. Arduino-доо шаардлагатай бүх сангуудыг татаж аваад зураг дээр зөв өөрчлөлт оруулсан эсэхээ шалгахаа бүү мартаарай.

ESP8266 чипийг програмчлахад энгийн USB-FTDI хөрвүүлэгчийг ашиглаж болно.

Зургийг Arduino-д байршуулж, цуваа дэлгэцийн цонхыг нээнэ үү. Энэ үе шатанд бид Adafruit IO-д холбогдох боломжтой эсэхийг шалгасан: бид боломжтой функцуудыг цаашид авч үзэх болно.

Төслийг туршиж байна

Одоо туршилтаа эхлүүлцгээе! Feeds цэсэн дэх Adafruit IO-ийн хэрэглэгчийн цэс рүү очно уу. Хурууны хээ болон түгжээний сувгууд үүсгэгдсэн эсэхийг шалгана уу (доорх хэвлэх дэлгэц дээр эдгээр нь хурууны хээ болон түгжээний шугамууд юм):


Хэрэв тэдгээр нь байхгүй бол та гараар үүсгэх хэрэгтэй болно.

Одоо бид хурууны хээ болон цоожны сувгуудын хооронд өгөгдөл солилцохыг хангах хэрэгтэй. Хурууны хээний сувгийг "1" болон эсрэгээр тохируулах үед түгжих сувгийг "1" болгож тохируулах ёстой.

Үүнийг хийхийн тулд бид маш хүчирхэг Adafruit IO хэрэгслийг ашигладаг: триггер. Өдөөгч нь үндсэндээ тохируулсан сувгуудад хэрэглэж болох нөхцөлүүд юм. Өөрөөр хэлбэл, тэдгээрийг хоёр сувгийг хооронд нь холбоход ашиглаж болно.

Adafruit IO дахь Triggers хэсгээс шинэ реактив гох үүсгээрэй. Энэ нь хурууны хээ мэдрэгч болон түгжээний сувгуудын хооронд өгөгдөл солилцох боломжийг олгоно.


Хоёр триггерийг тохируулсан үед иймэрхүү харагдах ёстой:

Бүгд! Одоо бид төслийг үнэхээр туршиж үзэх боломжтой! Бид хуруугаа мэдрэгч дээр тавиад Arduino нь өгөгдөл дамжуулахтай тохирох LED-ээр хэрхэн нүд ирмэж эхэлснийг харна. Үүний дараа ESP8266 модуль дээрх LED нь анивчиж эхлэх ёстой. Энэ нь тэрээр MQTT-ээр дамжуулан мэдээлэл авч эхэлсэн гэсэн үг юм. Энэ үед хэлхээний самбар дээрх LED нь бас асах ёстой.

Таны зурган дээр тавьсан саатлын дараа (өгөгдмөл нь 10 секунд) LED унтрах болно. Баяр хүргэе! Та дэлхийн хаанаас ч хурууны хээгээр LED-г удирдах боломжтой!

Цахим түгжээг тохируулах

Бид төслийн хамгийн сүүлийн хэсэгт хүрлээ: Arduino болон хурууны хээ мэдрэгч ашиглан цахим түгжээг шууд холбож, удирдах. Төсөл нь амаргүй, та бүх эх сурвалжийг дээр дурдсан хэлбэрээр ашиглаж болно, гэхдээ LED-ийн оронд реле холбоно уу.

Түгжээг шууд холбохын тулд танд нэмэлт бүрэлдэхүүн хэсгүүд хэрэгтэй болно: 12V тэжээлийн хангамж, тэжээлийн залгуур, транзистор (энэ жишээнд IRLB8721PbF MOSFET ашиглаж байгаа боловч TIP102 хоёр туйлт транзистор гэх мэт өөр нэгийг ашиглаж болно. Хэрэв. Хэрэв та хоёр туйлт транзистор ашиглаж байгаа бол резистор нэмэх шаардлагатай болно.

Бүх бүрэлдэхүүн хэсгүүдийг ESP8266 модульд холбох диаграммыг доор үзүүлэв.


Хэрэв та MOSFET ашиглаж байгаа бол ESP8266 зүү 5 болон транзисторын хооронд резистор хэрэггүй болно гэдгийг анхаарна уу.

Бүрэн угсарсан төслийг доорх зурагт үзүүлэв.


FTDI модулийг ашиглан ESP8266 модулийг асааж, 12V тэжээлийн хангамжийг үүрэнд холбоно уу. Хэрэв та дээр дурдсан зүүг холбохдоо ашигласан бол зураг дээрх ямар нэг зүйлийг өөрчлөх шаардлагагүй болно.

Одоо та хуруугаа мэдрэгч дээр тавьж болно: түгжээ нь таны хурууны хээний дагуу ажиллах ёстой. Доорх видео нь автомат ухаалаг цоожны төслийг хэрхэн хэрэгжүүлж байгааг харуулж байна:

Smart Lock төслийн цаашдын хөгжил

Манай төсөлд хурууны хээ ашиглан хаалганы түгжээг алсаас удирддаг.

Туршилт хийж, ноорог, оосорыг өөрчлөх боломжтой. Жишээлбэл, та 3D принтер, робот гар, квадрокоптерийнхээ хүчийг хянахын тулд хаалганы цахим түгжээг релегээр сольж болно...

Та "ухаалаг гэр"-ээ хөгжүүлж чадна. Жишээлбэл, Arduino дээр усалгааны системийг алсаас идэвхжүүлэх эсвэл өрөөнд гэрэл асаах ... Adafruit IO ашиглан бараг хязгааргүй тооны төхөөрөмжийг нэгэн зэрэг идэвхжүүлэх боломжтой гэдгийг санаарай.

Доор сэтгэгдэл, асуултаа үлдээж, хувийн туршлагаа хуваалцаарай. Хэлэлцүүлгийн үеэр шинэ санаа, төслүүд ихэвчлэн төрдөг!

Arduino бол ямар ч төрлийн төхөөрөмжийг хуулбарлах хамгийн сайн систем юм. Түүнгүйгээр ихэнх санаанууд хэрэгжих боломжгүй байсан. Ардуино дээр тусгай хосолсон түгжээг бий болгох гэсэн ийм санаа эртнээс гарч ирсэн. Үүнийг нээхийн тулд та тодорхой товчлуурыг удаан дарах хэрэгтэй. Энэ тохиолдолд та зөв товчлуурыг мэддэг байсан ч түгжээ нээгдэхгүй байх ёстой. Үүнийг нээхийн тулд та булчингийн санах ойг ашиглан тодорхой интервалыг хадгалах ёстой. Гэмт хэрэгтэн ийм зүйл хийж чадахгүй. Гэхдээ энэ бүхэн зүгээр л онол юм.

Үүнийг угсрахын тулд та тэгш өнцөгт импульсийн тусгай төхөөрөмж, түүнчлэн хэд хэдэн тоолуур, овоо ашиглах хэрэгтэй. Гэхдээ бэлэн төхөөрөмж нь том хэмжээтэй байх бөгөөд ашиглахад тохиромжгүй байх болно. Дүрмээр бол ийм бодол санаа амрахгүй. Мөрөөдлөө биелүүлэх эхний алхам бол Arduino-д зориулсан програм бүтээх явдал байв. Энэ нь хосолсон цоожны үүрэг гүйцэтгэх болно. Үүнийг нээхийн тулд та нэг товчлуур биш, хэд хэдэн товчлуур дээр дарж, нэгэн зэрэг хийх хэрэгтэй болно. Дууссан хэлхээ дараах байдалтай байна.

Зургийн чанар нь хамгийн сайн биш боловч D3, D5, D7, D9, D11 гэсэн газардуулгатай холболт хийгдсэн.

Кодыг доор үзүүлэв.

Const intina = 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; //mils() unsigned long temp = 0 утгыг авахыг бүү мартаарай; // тэмдэггүй урт байтаар хадгалах keya = ( 0, 0, 0, 0, 0, 0, 0, 0); //кодууд нь үнэндээ байт keyb = ( 1, 1, 1, 1, 0, 1, 0, 0); байт түлхүүр = ( 1, 0, 1, 0, 1, 1, 1, 0); байт k = 0; хүчингүй тохиргоо() ( pinMode(ina, INPUT_PULLUP); //3 оролт pinMode товчлууруудтай холбогдсон (7, OUTPUT); pinMode(11, OUTPUT); digitalWrite(7, LOW); //ground digitalWrite(11, LOW); цаг = миллис(); //хугацаа тогтооход шаардлагатай ) void blinktwice() ( // LED дижитал бичих(ledPin, HIGH); саатал(100); дижитал бичих(ledPin, LOW); саатал(100); digitalWrite(ledPin, HIGH); саатал(100); digitalWrite(ledPin, LOW); саатал( 200); ) хүчингүй давталт() ( if(k==0) ( blinktwice(); // код оруулахыг хүсэх ) if (k == 8) ( digitalWrite(ledPin, HIGH); саатал (3000); k = 0 ; ) a = digitalRead(ina); //товчлуураас дохионы түвшинг унших - дарагдсан/дараагүй b = digitalRead(inb); c = digitalRead(inc); саатал(100); //дараа нь хэрэв - хамгаалалт худал эерэг, if((digitalRead(ina) == a)&&(digitalRead(inb) ==b)&&(digitalRead(inc)==c)) ( if (a == keya[k]) ( if (b) == keyb[k]) ( хэрэв (c == keyc[k]) ( k++; ) ) ) ) хэрэв (k==1) ( хэрэв (d ==0) ( цаг = миллис (); d++; ) ) температур = миллис(); temp = temp - цаг хугацаа; хэрэв (температур > 10000) ( k= 0; d=0; цаг = миллис (); ) )

Кодын талаар шаардлагагүй асуултаас зайлсхийхийн тулд зарим зүйлийг тодруулах хэрэгтэй. Тохируулгын функцийг портуудыг хуваарилахад ашигладаг. Дараагийн функц нь Input_Pullup бөгөөд зүү хүчдэлийг 5 В-оор нэмэгдүүлэхэд шаардлагатай. Үүнийг резистор ашиглан хийдэг. Үүнээс болж янз бүрийн богино холболт үүсэхгүй. Илүү хялбар болгохын тулд blinktwice функцийг ашиглахыг зөвлөж байна. Ерөнхийдөө янз бүрийн программ үүсгэхдээ бусад функцуудыг туршиж үзэх хэрэгтэй.

Функцийг хуваарилсны дараа дохиог портуудаас уншина. Хэрэв товчлуур дарвал энэ нь 1-ээр, хэрэв үгүй ​​бол - 2-оор тэмдэглэгдэх болно. Дараа нь бүх утгыг шинжилнэ. Жишээлбэл, 0,1,1 гэх мэт хослол байдаг. Энэ нь эхний товчлуур дарагдсан, нөгөө хоёр нь дарагдсангүй гэсэн үг юм. Хэрэв бүх утга үнэн бол 8-р нөхцөл мөн үнэн болно. Үүнийг урд талын самбар дээрх гэрэлтүүлэгтэй LED-ээр илэрхийлнэ. Дараа нь та хаалгыг онгойлгох тусгай кодыг оруулах хэрэгтэй.

Кодын сүүлийн элементүүд нь тоолуурын утгыг дахин тохируулахад ашиглагддаг. Сүүлийн товчлуур дарснаас хойш 10 секундээс илүү хугацаа өнгөрсөн бол энэ функцийг гүйцэтгэнэ. Энэ кодгүйгээр бүх боломжит хувилбаруудыг ялгах боломжтой байсан, гэхдээ тэдгээр нь нэлээд олон байдаг. Энэ төхөөрөмжийг үүсгэсний дараа та үүнийг туршиж үзэх хэрэгтэй. Илүү

Ажил дээрээ бид хаалгандаа хосолсон түгжээ суурилуулахаар шийдсэн тул бид байнга гүйж байхдаа оффисоо гарч гүйж, оршин суугчид байхгүй үед хаалга нь байнга хаалттай байх ёстой. Түлхүүрийг ихэвчлэн дотроо мартдаг. Ерөнхийдөө бид хосолсон түгжээ нь маш сайн гарц гэж шийдсэн.

Хятадын бүүргийн захууд болон ebay-г гүйлгээд би хямд, ноцтой юм олж чадаагүй тул өөрөө хийхээр шийдсэн. Микроконтроллерийн талаар огт туршлагагүй байсан тул Arduino платформ нь энгийн байдлаар сонгогдсон гэж би шууд захиалга өгөх болно.

Санаа

Хаалган дээр, хаалганы гадна талд нууц үг оруулах товчлуур байх ёстой бөгөөд бүтцийн үлдсэн хэсэг нь дотор талд бэхлэгдсэн байна. Хаалганы бүрэн хаалтыг хянахын тулд зэгсэн унтраалга ашигладаг. Оффисоос гарангуут ​​гар дээрх "*" дээр дарж, хаалга хаагдахыг хүлээлгүй хаалга ойртож, хаалга бүрэн хаагдахад зэгсэн унтраалга хаагдаж, түгжээ хаагдана. 4 оронтой нууц үг оруулаад "#" товчийг дарснаар хаалга нээгдэнэ.

Дагалдах хэрэгсэл

Arduino UNO = 18 доллар
Arduino protoshield + breadboard = 6 доллар
L293D = 1 доллар
Боодолтой утаснууд 30 ширхэг = 4 доллар
2 RJ45 залгуур = 4 доллар
2 RJ45 залгуур = 0.5 доллар
төв түгжээний идэвхжүүлэгч = 250 рубль.
Зэгс шилжүүлэгч = хуучин цонхноос үнэ төлбөргүй урагдсан.
Espagnolette металл аварга том хэмжээтэй = үнэ төлбөргүй
1.5 мм төмрөөр хийсэн хуучин D-LINK зангилааны хайрцаг = үнэгүй
Нэг D-LINK төвөөс 12 ба 5v-ийн цахилгаан хангамж = бас үнэгүй
Энэ бүх зүйлийг хайрцагт бэхлэх хэд хэдэн эрэг, самар = 100 рубль.
Аюулгүй байдлын дохиоллын системээс хяналтын самбар = үнэ төлбөргүй.

Нийт: 33.5 доллар ба 350 рубль.

Тийм ч бага биш гэж та хэлж байгаа бөгөөд та мэдээж зөв байх болно, гэхдээ та таашаал авахын тулд төлөх ёстой! Мөн өөрийн гараар ямар нэгэн зүйл цуглуулах нь үргэлж сайхан байдаг. Нэмж дурдахад, хэрэв та Arduino-гүйгээр нүцгэн MK ашигладаг бол дизайныг ихээхэн хэмжээгээр бууруулж болно.

Угсралтын бэлтгэл

Би идэвхжүүлэгчийн дизайны гол элементийг худалдан авах талаар хэдэн үг хэлмээр байна. Орон нутгийн авто дэлгүүрт тэд надад "хоёр утастай, тавтай" гэсэн хоёр төрлийн идэвхжүүлэгч санал болгосон. Худалдагчийн хэлснээр тэдгээр нь яг адилхан байсан бөгөөд утаснуудын тооны зөрүү нь юу ч биш гэсэн үг юм. Гэсэн хэдий ч хожим нь энэ нь тийм биш юм! Би хоёр утастай төхөөрөмжийг сонгосон, энэ нь 12v-ээр тэжээгддэг. Таван утастай загвар нь хөшүүргийн хөдөлгөөнийг хянах хязгаарын унтраалгатай. Буруу авснаа салгаж аваад солиход оройтсон үед л ойлгосон. Хөшүүргийн цохилт нь түгжээг зөв дарахад хэтэрхий богино болсон тул түүнийг бага зэрэг өөрчлөх, тухайлбал хөшүүргийн хөшүүргийн цохилтыг богиносгодог хоёр резин угаагчийг зайлуулах шаардлагатай болсон. Үүнийг хийхийн тулд биеийг энгийн хөрөөтэй хамт хөрөөдөх шаардлагатай байсан, учир нь хоёр дахь угаагч дотор нь байсан. Цэнхэр наалдамхай тууз нь бидэнд урьдын адил дараа нь буцааж угсрахад тусалсан.
Хөдөлгүүрийн моторыг удирдахын тулд 1200 мА хүртэлх оргил ачааллыг тэсвэрлэх чадвартай L293D мотор драйверийг ашигласан бол манай тохиолдолд идэвхжүүлэгчийн мотор зогссон үед оргил ачаалал ердөө 600 мА хүртэл нэмэгддэг.
Аюулгүй байдлын дохиоллын хяналтын самбараас гар, чанга яригч, хоёр LED-ийн контактуудыг устгасан. Алсын удирдлага болон үндсэн төхөөрөмжийг эрчилсэн хос болон RJ45 холбогч ашиглан холбох ёстой байв.

Програмчлал.

Тиймээс би одоог хүртэл Arduino програмчлалын талаар ямар ч туршлагагүй байсан. Би arduino.cc вэбсайтаас бусад хүмүүсийн хөгжүүлэлт, нийтлэлийг ашигласан. Хэнд хамаатай юм бэ, энэ муухай кодыг харж болно :)

Фото болон видео



Arduino ба идэвхжүүлэгч


Цахилгаан хангамж


Гар


Espagnolette (хөдөлгүүрт металл зүүгээр холбогдож, гоо сайхны зориулалтаар дулаан агшаагч зүүдэг)

Төхөөрөмжийн үйл ажиллагааны видео:

Үүнтэй төстэй нийтлэлүүд

2022 parki48.ru. Бид хүрээ байшин барьж байна. Тохижилт. Барилга. Суурь.