Arduino дээрх ухаалаг цахим цоож, Bluetooth-ээр ажилладаг - Spiderman шиг урд хаалга. Arduino дээрх автомат "ухаалаг" цоож болон Arduino электрон хосолсон түгжээ

Энэ төсөл нь модульчлагдсан, i.e. идэвхжүүлэх/идэвхгүй болгох боломжтой өөр өөр элементүүдмөн өөр өөр функцтэй болно. Дээрх зургууд нь бүрэн ажиллагаатай хувилбарыг харуулж байна, тухайлбал:

  • түгжих механизм. Хаалгыг НЭЭХ, ХАхад ашигладаг. Энэхүү төсөл нь гурван өөр механизмыг ашиглахыг авч үздэг.
    • Серво. Том нь ч байна, жижиг нь ч байна. Маш авсаархан, хүнд боолттой хослуулсан нь маш сайн сонголт юм
    • Цахилгаан машины хаалганы түгжээ. Том бөгөөд хүчирхэг зүйл, гэхдээ энэ нь зүгээр л галзуу урсгалыг иддэг
    • Соленоид түгжээ. Сайн сонголт, энэ нь өөрөө хаагддаг

    Програм хангамжийн тохиргооноос та аль нэгийг нь сонгож болно гурван төрөл(тохиргоо түгжээний_төрөл)

  • Дотор товчлуур. Хаалгыг дотроос нь онгойлгож, ХАхад ашигладаг. Хаалганы бариул (алгааны тал эсвэл хурууны тал), хаалганы өөрөө эсвэл түгжээ дээр байрлуулж болно
  • Гаднах товчлуур. Хаалгыг ХААХ, мөн эрчим хүч хэмнэхээс сэрээх үйлчилгээтэй. Хаалганы бариул (алгааны тал эсвэл хурууны тал), хаалганы өөрөө эсвэл түгжээ дээр байрлуулж болно
  • чиргүүлхаалгыг хаасны төлөө. Хаалга хаагдсан үед түгжээг автоматаар хаахад үйлчилнэ. Тэд байж болно:
    • Товчлуур
    • Холл мэдрэгч + хаалган дээрх соронз
    • Зэгс шилжүүлэгч + хаалган дээрх соронз
  • нууц хандах дахин тохируулах товч. Нууц үгээ шинэчлэх / шинэ нууц үг оруулах / шинэ түлхүүр цээжлэх / хослол гэх мэт. Биеийн хаа нэгтээ нуугдаж болно
  • Гэрэл ялгаруулах диодүйл ажиллагааг харуулах. RGB LED, улаан ба ногоон өнгө(холимог үед шар өнгөтэй болдог):
    • Ногоон асаалттай - цоож НЭЭЛТТЭЙ. Хаалга хаахаа санахын тулд асаав
    • Тогтмол шар - систем сэрүүн, нууц үг хүлээж байна
    • Улаан анивчсан - зай бага

Эдгээр элементүүдийн аль нэгийг системээс хасаж болно:

  • Бид чиргүүлийг арилгадаг. Тохиргооны програм хангамжид бид үүнийг бас унтраадаг (тохиргоо сүүлний_товч). Одоо түгжээг хаахын тулд товчлуурыг дарах хэрэгтэй
  • Гаднах товчлуурыг ав. Тохиргооны програм хангамжид бид үүнийг бас унтраадаг (тохиргоо сэрээх_товч). Одоо системийг сэрээх шаардлагагүй, өөрөө сэрдэг (цахилгаан эрчим хүчний хэрэглээ бага зэрэг өндөр). Мөн бид хаалганы урд талд хаах товчлуургүй болсон бөгөөд бидэнд хязгаар солих хэрэгтэй. Аль ч шилтгээн бол аймаар юм
  • Бид дотоод товчлуурыг арилгадаг. Энэ сонголт нь кабинет болон сейфэнд тохиромжтой. Та тохиргоонд юу ч өөрчлөх шаардлагагүй.
  • Бид LED-ийг арилгадаг. Та тохиргоонд юу ч өөрчлөх шаардлагагүй.
  • Хандалтыг дахин тохируулах товчийг эхний хэрэглээний дараа гагнаж болно, эсвэл та өөрөө кодыг дахин бичиж болно
  • Хаалга хаалттай, ГАДААД дарагдсан - сэрж, нууц үг оруулахыг хүлээнэ үү/RFID шошго/цахим түлхүүр/хурууны хээ
  • Хаалга хаалттай, систем сэрж, нууц үг оруулахыг хүлээж байна. Цагийг тохируулж болно (тохиргоо унтах цаг)
  • Хаалга хаагдсан, нууц үг/шошго/түлхүүр оруулсан гэх мэт. - нээлттэй
  • Хаалга хаалттай, INSIDE дарагдсан - нээлттэй
  • Хаалга онгорхой, ГАДААД дарагдсан - хаах
  • Хаалга онгорхой, ДОТОР дарагдсан - хаах
  • Хаалга нээлттэй, LIMIT унтраалга дарагдсан - хаах

Түгжээ нь бага эрчим хүч хэмнэх горимд батерейгаар ажиллах зориулалттай (идэвхжүүлэх: тохиргоо унтах_идэвхжүүлэх), тухайлбал:

  • Хэдэн секунд тутамд сэрж, EVENT-ийг дагаарай (заавал биш, хэрэв гадаа товчлуур байхгүй бол. Та үүнийг тохиргооноос идэвхжүүлж болно. сэрээх_товч)
  • Зайны хүчдэлийг хэдэн минут тутамд хянах (асаах/унтраах тохиргоо). зай_монитор)
  • Хэрэв зай цэнэггүй бол (хүчдэл нь тохиргоонд тохируулагдсан болно сарьсан багваахай бага):
    • хаалгыг онгойлгох (заавал биш, програм хангамж дээр тохируулж болно нээлттэй_бат_бага)
    • цаашид нээх, хаахыг хориглох
    • товчлуурыг дарах үед улаан LED анивчдаг
    • ҮЙЛ ЯВДАЛ (жишээ нь нууц үг оруулах/шошго гэх мэт) дагахыг зогсоох

Систем сэрүүн байх үед нууц үг солих товчийг дарна уу (далд товч). Бид унадаг нууц үг солих горим:
Тооноос нууц үг оруулна уу ( ДЭЭД 10 ДУГААР!!!)

  • * товчийг дарахад нууц үг санах ойд бичигдэх ба систем нууц үг солихоос гарна
  • Та # дарахад нууц үг шинэчлэгдэнэ (та дахин оруулж болно)
  • Хэрэв та 10 секундын турш юу ч дарахгүй бол бид нууц үг солих горимоос автоматаар гарах бөгөөд нууц үг хуучин хэвээр үлдэнэ.

Систем унтаагүй үед (товчлуураар сэрсэн эсвэл унтах идэвхгүй болсон) * товчийг дарж нууц үг оруулах горимд орно.
Хэрэв систем унтаж, үе үе сэрж EVENT-ийг шалгадаг бол * товчийг дараад улаан LED асах хүртэл удаан дарна уу.
Нууц үг оруулах горим:

  • Нууц үгтэй харьцах нь зөв нууц үгийг зөвхөн шивэх үед тоолох байдлаар хийгддэг зөв дараалалцифрүүд, өөрөөр хэлбэл нууц үг нь 345 бол 345 дараалал гарч ирэх хүртэл та ямар ч тоог оруулж болно, өөрөөр хэлбэл. 30984570345 345-аар төгссөн тул цоож онгойлгоно.
  • Хэрэв нууц үг зөв бол хаалга нээгдэнэ
  • Хэрэв та юу ч дарахгүй бол 10 секундын дараа систем хэвийн (зогсоол) горимд буцаж ирнэ
  • Хэрэв та # дарвал бид нууц үг оруулах горимоос шууд гарах болно
  • Хэрэв та нууц үг оруулах горимд нууц үгээ солихын тулд нууц товчийг дарвал бид үүнээс гарах болно

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

Ухаалаг утасны товчлуурыг дарахад ижил төстэй түгжээ нээгдэнэ. Аз болоход ухаалаг утас, таблетууд бидний өдөр тутмын амьдралд аль хэдийн нэвтэрсэн. Зарим тохиолдолд "ухаалаг цоож" нь " үүлэн үйлчилгээ"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 ашиглан бараг хязгааргүй тооны төхөөрөмжийг нэгэн зэрэг идэвхжүүлж болно гэдгийг бүү мартаарай.

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

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

Хятадын бүүргийн захууд болон 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 (хөдөлгүүрт металл зүүгээр холбогдож, гоо сайхны зориулалтаар дулаан агшаагч зүүдэг)

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

Өнөөдрийн заавар нь энгийн түгжих системийг бий болгохын тулд Arduino-тэй RFID уншигчийг хэрхэн ашиглах тухай юм. энгийн үгээр- RFID түгжээ.

RFID (Англи хэлээр радио давтамжийг таних, радио давтамжийг тодорхойлох) нь транспондер гэж нэрлэгддэг RFID шошгонд хадгалагдсан өгөгдлийг радио дохио ашиглан уншиж, бичих объектуудыг автоматаар таних арга юм. Аливаа RFID систем нь уншигч (уншигч, уншигч эсвэл байцаагч) ба дамжуулагч (RFID шошго, заримдаа RFID шошго гэсэн нэр томъёо) -аас бүрдэнэ.

Энэхүү заавар нь Arduino-тэй RFID шошгыг ашиглах болно. Уг төхөөрөмж нь уншигчийн хажууд байрлуулсан RFID шошго бүрийн өвөрмөц танигчийг (UID) уншиж, OLED дэлгэц дээр харуулдаг. Хэрэв шошгоны UID нь Arduino санах ойд хадгалагдсан урьдчилан тодорхойлсон утгатай тэнцүү бол бид дэлгэц дээр "Түгжээг тайлсан" гэсэн мессежийг харах болно. Хэрэв өвөрмөц танигч нь урьдчилан тодорхойлсон утгатай тэнцүү биш бол "Түгжээг тайлсан" гэсэн мессеж гарч ирэхгүй - доорх зургийг үзнэ үү.

Цайз хаалттай байна

Цайз нээлттэй байна

Энэ төслийг бий болгоход шаардлагатай дэлгэрэнгүй мэдээлэл:

  • RFID уншигч RC522
  • OLED дэлгэц
  • Талхны хавтан
  • утаснууд

Нэмэлт мэдээлэл:

  • Батерей (powerbank)

Төслийн бүрэлдэхүүн хэсгүүдийн нийт өртөг нь ойролцоогоор 15 доллар байв.

Алхам 2: RFID уншигч RC522

RFID шошго бүр жижиг чиптэй (зураг дээрх цагаан карт). Хэрэв та энэ RFID карт руу гар чийдэн чиглүүлбэл жижиг чип болон түүнийг хүрээлсэн ороомог харагдах болно. Энэ чип нь эрчим хүч үйлдвэрлэх зайгүй. Энэ том ороомгийг ашиглан уншигчаас утасгүй цахилгаан авдаг. Ийм RFID картыг 20 мм хүртэлх зайнаас унших боломжтой.

Үүнтэй ижил чип нь RFID түлхүүрийн шошгонд байдаг.

RFID шошго бүр нь түүнийг таних өвөрмөц дугаартай байдаг. Энэ бол OLED дэлгэц дээр харагдах UID юм. Энэ UID-ээс бусад шошго бүр өгөгдөл хадгалах боломжтой. Энэ төрлийн карт нь 1000 хүртэлх мэдээлэл хадгалах боломжтой. Гайхалтай, тийм үү? Энэ функцийг өнөөдөр ашиглахгүй. Өнөөдөр хамгийн сонирхолтой зүйл бол тухайн картыг UID-ээр нь тодорхойлох явдал юм. RFID уншигч болон эдгээр хоёр RFID карт нь ойролцоогоор 4 долларын үнэтэй.

Алхам 3OLED дэлгэц

Уг зааварт 0.96" 128x64 I2C OLED дэлгэц ашигладаг.

Энэ бол Arduino дээр ашиглахад маш сайн дэлгэц юм. Энэ нь OLED дэлгэц бөгөөд энэ нь бага эрчим хүч зарцуулдаг гэсэн үг юм. Энэ дэлгэцийн эрчим хүчний хэрэглээ нь ойролцоогоор 10-20 мА бөгөөд энэ нь пикселийн тооноос хамаарна.

Дэлгэц нь 128х64 пикселийн нягтаршилтай бөгөөд жижиг хэмжээтэй. Дэлгэцийн хоёр сонголт байдаг. Тэдгээрийн нэг нь монохром, нөгөө нь зааварт ашигласан шиг шар, цэнхэр гэсэн хоёр өнгийг харуулах боломжтой. Дээд хэсэгдэлгэц нь зөвхөн шар өнгөтэй байж болно, мөн Доод хэсэг- цэнхэр.

Энэхүү OLED дэлгэц нь маш тод бөгөөд Adafruit-ийн энэхүү дэлгэцэнд зориулж бүтээсэн гайхалтай, маш сайхан номын сантай. Нэмж дурдахад дэлгэц нь I2C интерфэйсийг ашигладаг тул Arduino-д холбогдох нь үнэхээр хялбар юм.

Vcc болон GND-ээс бусад хоёр утсыг холбоход л хангалттай. Хэрэв та Arduino-г шинээр ашиглаж байгаа бөгөөд төсөлдөө хямд, энгийн дэлгэц ашиглахыг хүсвэл эндээс эхлээрэй.

Алхам 4: Бүх эд ангиудыг нэгтгэх

Arduino Uno самбартай харилцах нь маш энгийн. Эхлээд цахилгааныг уншигч болон дэлгэцтэй холбоно уу.

Болгоомжтой байгаарай, RFID уншигч нь Arduino Uno-ийн 3.3V гаралттай холбогдсон байх ёстой, эс тэгвээс энэ нь гэмтэх болно.

Дэлгэц нь 3.3V дээр ажиллах боломжтой тул бид хоёр модулийн VCC-ийг эерэг хавтангийн төмөр замд холбодог. Энэ төмөр замыг дараа нь Arduino Uno-ийн 3.3V гаралттай холбоно. Дараа нь бид хоёр үндэслэлийг (GND) breadboard газрын автобус руу холбоно. Дараа нь бид breadboard-ийн GND автобусыг Arduino GND-тэй холбоно.

OLED дэлгэц → Arduino

SCL → Аналог зүү 5

SDA → Аналог зүү 4

RFID уншигч → Arduino

RST → Дижитал зүү 9

IRQ → Холбогдоогүй

MISO → Дижитал зүү 12

MOSI → Дижитал зүү 11

SCK → Дижитал зүү 13

SDA → Дижитал зүү 10

RFID уншигч модуль нь Arduino-тай холбогдохын тулд SPI интерфэйсийг ашигладаг. Тиймээс бид Arduino UNO тоног төхөөрөмжийн SPI зүүг ашиглах гэж байна.

RST зүү нь дижитал зүү 9-д очдог. IRQ зүү салгагдсан хэвээр байна. MISO зүү нь дижитал зүү 12 руу ордог. MOSI зүү нь дижитал зүү 11 рүү очдог. SCK зүү нь дижитал зүү 13 руу ордог бөгөөд эцэст нь SDA зүү нь дижитал зүү 10 руу ордог. Ингээд л болоо.

RFID уншигч холбогдсон. Одоо бид I2C интерфейсийг ашиглан OLED дэлгэцийг Arduino-д холбох хэрэгтэй. Тиймээс дэлгэц дээрх SCL зүү нь аналог Pin 5 руу, SDA нь аналог Pin 4 рүү шилждэг. Хэрэв бид одоо төслийг асааж, уншигчийн хажууд RFID картыг байрлуулбал төсөл сайн ажиллаж байгааг харж болно.

Алхам 5: Төслийн код

Төслийн кодыг эмхэтгэхийн тулд бид зарим номын сангуудыг оруулах хэрэгтэй. Юуны өмнө бидэнд MFRC522 Rfid номын сан хэрэгтэй.

Үүнийг суулгахын тулд дараах руу очно уу Sketch -> Include Libraries -> Номын санг удирдах(Номын сангийн менежмент). MFRC522-г олоод суулгана уу.

Мөн бидэнд Adafruit SSD1306 номын сан болон Adafruit GFX номын сан хэрэгтэй.

Хоёр номын санг суулгана уу. Adafruit SSD1306 номын санд бага зэрэг өөрчлөлт хэрэгтэй. Фолдер руу оч Arduino -> Номын сангууд, Adafruit SSD1306 хавтсыг нээж, номын санг засварлана уу Adafruit_SSD1306.h. Учир нь 70-р мөрөнд тайлбар, 69-р мөрөнд тайлбарыг арилга Дэлгэц нь 128x64 нягтралтай.

Нэгдүгээрт, бид Arduino-ийн таних ёстой RFID хаягийн утгыг зарладаг. Энэ бол бүхэл тоонуудын массив юм:

int код = (69,141,8,136); // UID

Дараа нь бид RFID уншигчийг эхлүүлж, харуулна:

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

Үүний дараа давталтын функцэд бид 100 мс тутамд уншигч дээрх шошгыг шалгадаг.

Уншигчид шошготой бол бид түүний UID-г уншаад дэлгэц дээр хэвлэнэ. Дараа нь бид саяхан уншсан шошгоны UID-г кодын хувьсагчид хадгалагдсан утгатай харьцуулна. Хэрэв утгууд ижил байвал бид UNLOCK мессежийг харуулах бөгөөд эс тэгвээс бид энэ мессежийг харуулахгүй.

If(match) ( Serial.println("\nБи энэ картыг мэднэ!"); printUnlockMessage(); )else ( Serial.println("\nҮл мэдэгдэх карт"); )

Мэдээжийн хэрэг, та энэ кодыг 1-ээс илүү UID утгыг хадгалахын тулд өөрчилж болно, ингэснээр төсөл илүү олон RFID шошгыг таних болно. Энэ бол зүгээр л жишээ.

Төслийн код:

#оруулна #оруулна #оруулна #оруулна #OLED_RESET 4 Adafruit_SSD1306 дэлгэцийг тодорхойлох(OLED_RESET); #SS_PIN 10-г тодорхойлох #RST_PIN 9-г тодорхойлох MFRC522 rfid(SS_PIN, RST_PIN); // MFRC522 ангийн жишээ::MIFARE_Key түлхүүр; int код = (69,141,8,136); //Энэ бол хадгалагдсан UID int codeRead = 0; uidString мөр; void setup() ( Serial.begin(9600); SPI.begin(); // SPI автобусыг rfid.PCD_Init(); // MFRC522 display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // I2C addr 0x3D ашиглан эхлүүлнэ үү. (128x64 хувьд) // buffer.display.clearDisplay(); display.display(); display.setTextColor(WHITE); // эсвэл ХАР); display.setTextSize(2); display.setCursor(10,0); display.print("RFID түгжээ"); display.display(); ) хүчингүй давталт() (if(rfid.PICC_IsNewCardPresent()) (readRFID(); ) саатал(100); ) хүчингүй readRFID() ( rfid.PICC_ReadCardSerial(); Serial.print(F("\nPICC төрөл: ") ); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); // Шалгах нь Сонгодог MIFARE төрлийн PICC бөгөөд хэрэв (piccType: MINMFRC5TYPE_2!=MINMFRC5TYPE2! && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) ( Serial.println(F("Таны шошго MIFARE Classic төрлийн биш байна.")); буцах; () erial.UIDl("print); Сканнердсан PICC-ийн UID:"); printDec(rfid.uid.uidByte, rfid.uid.size); uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+ String(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte); printUID(); int i = 0; логик тохирох = үнэн; while(i)

Алхам 6: Эцсийн үр дүн

Хичээлээс харж байгаагаар - бага мөнгөөр ​​та төслүүддээ RFID уншигч нэмж болно. Та энэ уншигчтай аюулгүй байдлын системийг хялбархан үүсгэж эсвэл илүү сонирхолтой төслүүдийг үүсгэж болно, жишээлбэл, USB драйв дээрх өгөгдлийг зөвхөн түгжээг тайлсны дараа унших боломжтой.

Энэ нийтлэлд би arduino-аас хосолсон түгжээг хэрхэн хийхийг танд үзүүлэх болно. Үүнийг хийхийн тулд бидэнд улаан, ногоон LED, дуугарагч, arduino нано, I2C хувиргагчтай LCD дэлгэц, серво хөтөч, 4х4 матрицтай гар хэрэгтэй. Асаах үед дэлгэц дээр "Код оруулна уу." гэж бичнэ.

улаан LED асна,

мөн ногоон унтарвал серво 0°-д тохируулагдана. Тоо оруулах үед * дэлгэц дээр асна.

Хэрэв кодыг буруу оруулсан бол дэлгэц дээр "Сагамхай оруулна уу." гэсэн бичиг гарч ирнэ. Хэрэв код зөв бол дохио дуугарах болно, серво 180 ° эргэх болно, дэлгэц дээр "Нээлттэй" гэсэн бичиг гарна.

ногоон LED асна,

мөн улаан унтарна. 3 секундын дараа серво үндсэн байрлалдаа буцаж, улаан LED асч, ногоон LED унтарч, дэлгэц дээр "Хаах" гэж бичнэ.

Дараа нь дэлгэц дээр "Код оруулна уу." гэж бичнэ. Одоо схемийн талаар. Эхлээд бид arduino-г утсаар талхны самбарт (цахилгаан контактууд) холбодог.

Дараа нь бид матрицын гарыг D9 - D2 контактуудтай холбоно.

Дараа нь серво. Бид үүнийг 10-р зүү рүү холбодог.

11-р зүү рүү улаан LED.

Ногоон - 12-р зүү.

Дуу чимээ - 13-р зүү.

Одоо ноорог байршуулна уу.

#оруулна #оруулна #оруулна #оруулна iarduino_KB KB(9, 8, 7, 6, 5, 4, 3, 2); LiquidCrystal_I2C lcd(0x27, 16, 2); Серво серво int pass = (3, 6, 1, 8); int in; int r = 11; int g = 12; хүчингүй тохиргоо() ( KB.begin(KB1); pinMode(r, OUTPUT); pinMode(g, OUTPUT); lcd.init(); lcd.backlight(); digitalWrite(g, LOW); digitalWrite(r, HIGH); ); servo.attach(10); servo.write(0); lcd.setCursor(0, 0); ) хүчингүй давталт() ( lcd.clear(); lcd.print("Код оруулна уу."); while ( !KB.check(KEY_DOWN)) ( саатал(1); )-д = KB.getNum; lcd.clear(); lcd.setCursor(0, 0); lcd.print("*"); while (!KB. check(KEY_DOWN)) ( delay(1); ) in = KB.getNum; lcd.print("*"); while (!KB.check(KEY_DOWN)) ( delay(1); ) in = KB.getNum; lcd.print("*"); while (!KB.check(KEY_DOWN)) ( саатал(1); ) in = KB.getNum; lcd.print("*"); if (in == pass) ( бол (== дамжуулалтаар) ( хэрэв (хэрэв (== дамжуулж)) ( хэрэв (хэрэв == дамжуулж) ( lcd.clear(); lcd.setCursor(0, 0); lcd.print("Нээлттэй."); tone( 13, 400, 750); servo.write(180); digitalWrite(r, LOW); digitalWrite(g, HIGH); саатал(3000); lcd.clear(); lcd.setCursor(0, 0); lcd. print("Хаах"); ая(13, 300, 700); servo.write(0); digitalWrite(g, БАГА); digitalWrite(r, HIGH); саатал(1000); ))) )))

Тэгээд л болоо. Кодын түгжээг сайхан өнгөрүүлээрэй!

Радио элементүүдийн жагсаалт

Зориулалт Төрөл Номлол Тоо хэмжээ Анхаарна ууДэлгүүрМиний дэвтэр
E1 Arduino самбар

Arduino Nano 3.0

1 5V Тэмдэглэлийн дэвтэр рүү
E8, E9 Эсэргүүцэл

220 ом

2 smd Тэмдэглэлийн дэвтэр рүү
E6 Гэрэл ялгаруулах диод

AL102G

1 Улаан Тэмдэглэлийн дэвтэр рүү
E7 Гэрэл ялгаруулах диод

AL307G

1 Ногоон Тэмдэглэлийн дэвтэр рүү
E3 LCD дэлгэцI2C интерфейстэй1 Ногоон арын гэрэлтүүлэг Тэмдэглэлийн дэвтэр рүү
E5 СервоSG901 180 градус Тэмдэглэлийн дэвтэр рүү
E2 Базер5V1 Бу Тэмдэглэлийн дэвтэр рүү
E4 Гар4х41 матриц Тэмдэглэлийн дэвтэр рүү
Үгүй Талхны самбар640 оноо1 гагнуургүйгээр