Агуулгын хүснэгт:

Мэдэгдэл: 17 алхам
Мэдэгдэл: 17 алхам
Anonim
Мэдэгдэгч
Мэдэгдэгч

Төхөөрөмжийг жишээ нь IFTTT системд холбож, шинэ имэйл гарч ирэхэд хариу үйлдэл үзүүлэх боломжтой. App.remoteme.org дээр бид дуудлага хийсний дараа холбоос үүсгэх бөгөөд байтыг Arduino руу илгээх бөгөөд Arduino гэрлийн эффект үзүүлж SDcard -аас mp3 тоглуулах болно.

Алхам 1: Шаардлагатай зүйл

Юу хэрэгтэй байна
Юу хэрэгтэй байна
Юу хэрэгтэй байна
Юу хэрэгтэй байна
  • NodeMCU, WemOS эсвэл үүнтэй төстэй зүйл
  • WS2812B диодтой хоёр LED цагираг (би 16 -р лед цагираг ашигласан)
  • DFRobotDFPlayerMini - энэ бол mp3 тоглуулагч юм. Энэ нь SDcard -аас mp3 тоглодог бөгөөд RX/TX -ээр Arduino -той харилцдаг
  • Илтгэгч
  • SD карт
  • Логик хөрвүүлэгч -Би үүнийг ашигласан, mp3 тоглуулагч нь 5V ба Arduino 3.3 ашигладаг тул бидэнд энэ хөрвүүлэгч хэрэгтэй байна.
  • Энгийн ПХБ хийх мэдлэг, чадвар

Цамхаг:

  • картон - хоёр өөр зузаантай
  • Мөрдөх цаас
  • хөнгөн цагаан тугалган цаас

Алхам 2: Цамхагийн барилга

Цамхагийн барилга
Цамхагийн барилга
Цамхагийн барилга
Цамхагийн барилга
Цамхагийн барилга
Цамхагийн барилга
Цамхагийн барилга
Цамхагийн барилга

Цамхагийн төлөвлөгөөний дээгүүр (техникийн зургаар хийсэн адал явдал маань бага сургуульд төгссөн), бүх хэмжээ нь миллиметрээр.

Үйл ажиллагааны зарчим

  1. гэрэл асаах LED цагираг
  2. Мөрдөх цаас
  3. Картоноор хийсэн, хөнгөн цагаан тугалган цаасаар бүрсэн тайрсан конус нь LED цагиргуудын гэрлийг тусгасан болно, зураг 3 ‘= хайчилж авсан тор
  4. хайрцаг хоолой - цамхагуудыг босоо байдлаар барьдаг, хоолой дотор LED -ийн кабель байдаг
  5. Өндөр нь танаас хамаарна, би 85 мм байна
  6. Цахилгаан хэрэгслийн бүх эд анги дотор байрлах тавиур

Бүх хэвтээ элементүүдийг зузаан картоноор хийсэн байх ёстой.

Алхам 3: Утасны диаграм

Утас диаграмм
Утас диаграмм
Утас диаграмм
Утас диаграмм
Утас диаграмм
Утас диаграмм
Утас диаграмм
Утас диаграмм

Mp3 тоглуулагч нь 5V хүчдэлээр хангагдсан бөгөөд Arduino -тай TX / RX -ээр холбогддог тул Arduino өөрөө 3.3V хүчдэл дээр ажилладаг тул логик хөрвүүлэгч хэрэгтэй болно. Бөгжний хяналтыг мөн логик хөрвүүлэгчээр дамжуулан Arduino (D5, D6) -тэй холбодог.

Репозитороос та ПХБ -ийн төлөвлөгөөтэй бүргэд файлуудыг олох болно

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

Алхам 4: Үйл ажиллагааны зарчим

Манай Arduino нь WebSockets (бэлэн номын сан байдаг) ашиглан app.remoteme.org системд холбогддог бөгөөд энэ холболтоор 5 байт мессеж илгээгддэг.

  • дээд LED цагирагийн гэрлийн эффектийн эхний байт
  • доод LED бөгжний хоёр дахь байтын гэрлийн эффект
  • тоглуулах mp3 файлын дугаар
  • гэрлийн эффект болон mp3 -ийг хэр удаан тоглуулах секундын тоо
  • mp3 -ийг нэг удаа эсвэл давталтаар тоглуулах уу

эх код

Бүх эх кодыг эндээс олж болно

SingleRing.cpp ба SingleRing.h файлуудад LED цагирагуудын нөлөөллийг хянах анги байдаг. Би setMode (int m) функцийг харахыг зөвлөж байна.

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 тохиолдол 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // хатуу стандарт ногоон хайрцаг 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // хатуу стандарт цэнхэр кейс 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // хатуу стандарт улаан кейс 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // хатуу стандарт улбар шар өнгийн кейс 5: setConfiguration (1, 0, 100, 0, 5, 2); завсарлага; // цагдаа нар цагийн зүүний дагуу ногоон хайрцаг 6: setConfiguration (1, 0, 100, 0, 5, -2); завсарлага; // цагдаа нар ногоон хэргийг 7 буцаана: setConfiguration (1, 0, 0, 100, 5, 2); завсарлага; // цагдаа нар цагийн зүүний дагуу цэнхэр хайрцаг 8: setConfiguration (1, 0, 0, 100, 5, -2); завсарлага; // цагдаа цэнхэр хэргийг 9 буцаана: setConfiguration (1, 100, 0, 0, 5, 2); завсарлага; // цагдаагийн стандарт улаан кейс 10: setConfiguration (1, 100, 0, 0, 5, -2); завсарлага; // цагдаа улаан хэргийг 11 рүү буцаана: setConfiguration (1, 100, 20, 0, 5, 2); завсарлага; // цагдаагийн стандарт улбар шар хэрэг 12: setConfiguration (1, 100, 20, 0, 5, -2); завсарлага; // цагдаа нар улбар шар хэргийг буцаана 13: setConfiguration (2, 0, 0, 50, 8, 10); завсарлага; // хөндлөн стандарт цэнхэр хайрцаг 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // blue revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // анивчих стандарт ногоон хайрцаг 16: setConfiguration (5, 0, 50, 0, 0, -20); завсарлах; // анивчих odwyrtka ногоон хайрцаг 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // анивчих стандарт цэнхэр кейс 18: setConfiguration (5, 0, 0, 50, 0, -20); завсарлага; // цэнхэр кейсийг буцаах 19: setConfiguration (5, 50, 0, 0, 0, 20); завсарлага; // анивчих стандарт улаан кейс 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // blink revert red case 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // анивчих стандарт улбар шар өнгийн хайрцаг 22: setConfiguration (5, 50, 10, 0, 0, -20); завсарлага; // анивчих, улбар шар өнгө рүү буцаах: setConfiguration (0, 0, 50, 0, 5, 1); завсарлага; // унтраах = 0}}

өгөгдсөн параметрээс хамааран бөгж нь эффектийг харуулна. Та өөрийн функцийг setConfiguration -ийг шинэ параметрүүдээр (өнгө өөрчлөгдөх, дэлгэцийн хурд) шинэ горим нэмж оруулах эсвэл цоо шинэ эффект нэмж дуудах замаар өөрийн эффектийг нэмж болно, эсвэл надад таалагдсан бол би шинэ эффект нэмэх болно.

arduino.ino:

#"Arduino.h" оруулах #"SoftwareSerial.h" оруулах #"DFRobotDFPlayerMini.h" оруулах

#оруулах

#include #include #include "SingleRing.h"

#оруулах

#оруулах #оруулах

#оруулах

#"WIFI_NAME" -г тодорхойлох

#WIFI_PASSWORD -ийг тодорхойлох "" #DEVICE_ID 205 -ийг тодорхойлох #DEVICE_NAME "сиренийг тодорхойлох" #TOKEN -ийг тодорхойлох ""

#DIODES_COUNT -ийг тодорхойлох 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing ёроол = SingleRing (DIODES_COUNT, D6);

SoftwareSerial mySoftwareSerial (D4, D3); // RX, TX

DFRobotDFPlayerMini myDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);

ESP8266WiFiMulti WiFiMulti;

хүчингүй тохиргоо () {mySoftwareSerial.begin (9600); Цуваа.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// mp3 -тай холбогдохын тулд softwareSerial ашиглана уу.

Serial.println (F ("Эхлэх боломжгүй:")); Serial.println (F ("1. Холболтыг дахин шалгана уу!")); Serial.println (F ("2. SD картыг оруулна уу!")); байхад (үнэн); } Serial.println (F ("DFPlayer Mini онлайн."));

myDFPlayer.setTimeOut (500); // Цуваа харилцааны цагийг 500 мс болгох

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); while (WiFiMulti.run ()! = WL_CONNECTED) {саатал (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

bottom.setup (); top.clear (); доод. цэвэр (); }

boolean turnOff = үнэн;

гарын үсэг зураагүй урт turnOffMillis = 0;

хүчингүй onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *өгөгдөл) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос); uint8_t time = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос); uint8_t горим = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос);

bottom.setMode (bottomMode);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } өөр {myDFPlayer.play (trackNumber); } turnOff = худал; turnOffMillis = millis () + 1000 * цаг; }

хоосон давталт ()

{remoteMe.loop (); top.loop (); доод. гогцоо (); хэрэв (turnOffMillis

}

тайлбар:

#тодорхойлох WIFI_NAME "" #WIFI_PASSWORD -ийг тодорхойлох "" DEVICE_ID 205 -ийг тодорхойлох #DEVICE_NAME "мэдэгдэгчийг тодорхойлох" #тодорхойлох TOKEN ""

Бид дээр дурдсан өгөгдөл, дэлгэрэнгүй зааврыг линк дээр өгөх ёстой бөгөөд мөн remoteme.org дээр хэрхэн бүртгүүлэх, жетон үүсгэх талаар би зааж өгсөн болно.

хүчингүй onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *өгөгдөл) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос); uint8_t time = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос); uint8_t горим = RemoteMeMessagesUtils:: getUint8 (өгөгдөл, пос);

bottom.setMode (bottomMode);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } өөр {myDFPlayer.play (trackNumber); } turnOff = худал; turnOffMillis = millis () + 1000 * цаг; }

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

void loop () {remoteMe.loop (); top.loop (); доод. гогцоо (); if (turnOffMillis <millis ()) {

if (! turnOff) {

top.clear ();

доод. цэвэр (); myDFPlayer.stop (); turnOff = үнэн; }}

Гогцоонд бид обьектуудын давталтын функцийг нэрлэдэг бөгөөд хэрэв мэдэгдэл харуулах хугацаа өнгөрсөн бол диод, дууг унтраана.

Алхам 5: Mp3 тоглуулагч

Мп3 тоглуулагч
Мп3 тоглуулагч

Энэ нь TX / RX -ээр дамжуулан Arduino -той харилцдаг - Тоглогчийн талаархи дэлгэрэнгүй мэдээлэл, энд байгаа номын сан

Бид mp3 файлуудыг SD карт руу байршуулдаг. Карт дээрх файлуудыг цагаан толгойн үсгийн дарааллаар эрэмбэлээд дараа нь дуудлага хийнэ үү.

myDFPlayer.play (5);

Бид SD картнаас тав дахь файлыг үндсэн директороос тоглуулдаг. Тиймээс SD карт дээр 01, 02 гэх мэт угтваруудыг өгөх нь зүйтэй юм. Миний хувьд энэ нь дээр дурдсан хэвлэх дэлгэц шиг харагдаж байна.

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

Алхам 6: Хөтөлбөрийг Arduino руу байршуулах

Хөтөлбөрийг Arduino руу байршуулж байна
Хөтөлбөрийг Arduino руу байршуулж байна
Хөтөлбөрийг Arduino руу байршуулж байна
Хөтөлбөрийг Arduino руу байршуулж байна

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

Нэмж хэлэхэд бид DFRobotDFPlayerMini номын сан болон Adafruit_NeoPixel -ийг суулгах хэрэгтэй.

Алхам 7: Хяналт

Хяналт
Хяналт
Хяналт
Хяналт

Бид Arduino руугаа таван байт илгээдэг

  • дээд LED цагирагийн гэрлийн эффектийн эхний байт
  • доод LED бөгжний хоёр дахь байтын гэрлийн эффект
  • тоглуулах mp3 файлын дугаар
  • гэрлийн эффект болон mp3 -ийг хэр удаан тоглуулах секундын тоо
  • mp3 -ийг нэг удаа эсвэл давталтаар тоглуулах уу (давталтаар тоглуулах ёстой бол 1)

Байт илгээх замаар

07 0F 01 05 01

Дээд цагираг дээр цагдаагийн гэрэл (6 -р горим), доод талд нь ногоон (15 -р горим) харагдах болно (singleRing.cpp дээрх setMode функцийг шалгаж, хажууд байгаа тайлбарыг үзнэ үү). SDcard -ийн анхны файлыг 5 секундын турш тоглуулах болно. Файлыг гогцоонд тоглуулах болно (arduino.ino дээрх UserMessage функцийг шалгана уу)

Эдгээр байтуудыг илгээе. Дээрх дэлгэцийг хараад 1, 2, 3 гэсэн дарааллаар дүрсүүдийг дарна уу. Цонх гарч ирнэ

Дараа нь хоёр дахь дэлгэцийг хараад хоёр дахь дэлгэц дээрх шиг цонхыг бөглөнө үү

Гарч ирсэн цонхыг төхөөрөмж рүү мессеж илгээхэд ашигладаг. 1 -р талбарт илгээгчийн төхөөрөмжийг сонгоно уу - бидэнд зөвхөн нэг төхөөрөмж байгаа тул бид үүнийг сонгоно (энэ нь заавал байх ёстой талбар бөгөөд энэ нь бидний зурвас илгээж байгаа төхөөрөмжтэй ижил байх нь хамаагүй) 2 -р талбарт бид байт өгдөг. илгээх (бидний 2 -т оруулсан утга улаан хэлбэрээр тэмдэгт хэлбэрээр илэрхийлэгдэх болно), дараа нь Илгээх товчийг дарна уу.

Зурвас илгээсэний дараа манай мэдэгдэгч холбогдох гэрэлтүүлгийн эффектийг үзүүлж, сонгосон mp3 -г тоглуулах замаар хариу үйлдэл үзүүлэх ёстой. 0 -ээс 22 хүртэлх тооны эхний хоёр байтыг өгч өөр эффект туршиж үзэхийг танд зөвлөж байна (setMode функцын тайлбарыг үзнэ үү).

Алхам 8: URL ашиглан мессеж илгээх

URL ашиглан мессеж илгээх
URL ашиглан мессеж илгээх
URL ашиглан мессеж илгээх
URL ашиглан мессеж илгээх
URL ашиглан мессеж илгээх
URL ашиглан мессеж илгээх
URL ашиглан мессеж илгээх
URL ашиглан мессеж илгээх

Хэрэв бид IFTTT гэх мэт гадны програмын мэдэгдлийг харуулахыг хүсч байвал өмнөх алхам дахь цонхонд хийсэнтэй яг ижил зүйлийг хийх URL байх шаардлагатай. remoteme.org нь REST APi -ийг өгдөг. Зүүн талд байгаа swagger таб дээр дарж үүнд очно уу (сүүлийнх нь). Хуудсыг харуулах болно, энэ хуудсан дээр бид URL хаягаа туршиж үзэх боломжтой.

Эхний дэлгэц дээр та өргөжүүлэх шаардлагатай функцтэй бөгөөд өгөгдлийг хоёр дахь дэлгэцэн дээр бөглөнө үү.

дээрх дэлгэцийн агшинд байгаа шиг өгөгдлийг бөглөнө үү. Гүйцэтгэх дээр дарсны дараа бид мессеж илгээх болно

070F010501

Хүлээн авагч нь 205 id бүхий төхөөрөмж бөгөөд мөн адил төхөөрөмж нь илгээгч юм. "No_RENEVAL" тохиргоотой MessageId нь хамаагүй. Дараа нь Execute дээр дарна уу. Мэдэгдэл нь програмаас мессеж илгээхтэй адил хариу үйлдэл үзүүлэх болно. REST руу залгасны дараа доорх URL гэж нэрлэгдсэн болно - гурав дахь дэлгэцийг харна уу. Хөтчийн URL руу хуулж, буулгахыг ногоон хилээр тэмдэглэв. Дөрөв дэх дэлгэц дээр URL -г буулгасны дараа миний хром хөтөч

Миний хувьд URL нь:

app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

Алхам 9: Зурвас илгээх URL

Зурвас илгээх гайхалтай URL
Зурвас илгээх гайхалтай URL

Өмнөх алхам дээр танд төхөөрөмж рүү өгөгдөл илгээдэг URL байна. Харамсалтай нь app.remoteme.org -аас гарсны дараа ажиллахаа больсон. Учир нь бид баталгаажуулах жетон өгөөгүй байгаа бөгөөд бид нэвтрэхээ больсон байна. Токеноо аваад (эсвэл шинээр үүсгэж) одны оронд URL хаягаар оруулна уу.

Дэлгэцийг хараад URL дахь * тэмдгийг токеноороо солино уу

Миний хувьд токен нь:

~ 267_ZxoWtJ) 0ph & 2c

Тиймээс миний эцсийн URL дараах байдлаар харагдаж байна.

app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

Одоо бид нэвтэрээгүй байсан ч гэсэн үүнийг дуудаж болно. Үүнийг дуудах үед манай төхөөрөмж 205 руу мессеж илгээх болно.

Алхам 10: IFTTT 1/7 -тэй нэгтгэх

IFTTT 1/7 -тэй нэгтгэх
IFTTT 1/7 -тэй нэгтгэх

Дээрх алхам дээр үүсгэсэн url нь гадны програмуудаар гүйцэтгэхэд тохиромжтой. Үүнийг хэрхэн ашиглах талаар би IFTTT дээр харуулах болно. Имэйл хаяг (Gmail данс) руу имэйл ирэхэд мэдэгдэгч асаахаар би үүнийг тохируулах болно.

IFTTT-д нэвтэрсний дараа My Applets таб руу очоод дараа нь "Шинэ апплет" руу очно уу

Алхам 11: IFTTT 2/7 -тэй нэгтгэх

IFTTT 2/7 -тэй нэгтгэх
IFTTT 2/7 -тэй нэгтгэх

Дараа нь "+энэ" дээр дарна уу

Алхам 12: IFTTT 3/7 -тэй нэгтгэх

IFTTT 3/7 -тэй нэгтгэх
IFTTT 3/7 -тэй нэгтгэх

Дараа нь "Хайлтын үйлчилгээ" талбарт "Gmail" гэж бичнэ үү.

Дараа нь "ирсэн имэйл дэх шинэ имэйл" (Зарим тохиргоо шаардлагатай байж магадгүй).

Алхам 13: IFTTT 4/7 -тэй нэгтгэх

IFTTT 4/7 -тэй нэгтгэх
IFTTT 4/7 -тэй нэгтгэх

Одоо бид "+ тэр" дээр дарна уу

Алхам 14: IFTTT 5/7 -тэй нэгтгэх

IFTTT 5/7 -тэй нэгтгэх
IFTTT 5/7 -тэй нэгтгэх

"Webhooks" -ийг олоод дарна уу

Алхам 15: IFTTT 6/7 -тэй нэгтгэх

IFTTT 6/7 -тэй нэгтгэх
IFTTT 6/7 -тэй нэгтгэх

дараа нь "вэб хүсэлт гаргах"

Алхам 16: IFTTT 7/7 -тэй нэгтгэх

IFTTT 7/7 -тэй нэгтгэх
IFTTT 7/7 -тэй нэгтгэх

бид ток -ийн хамт URL хаягаа бөглөнө. Application / json руу агуулгын төрлийг оруулаад "Үйлдэл үүсгэх" дээр дарж Finish -ийг дарна уу. Одоо бидэнд апплет байна:

Алхам 17: Дүгнэлт

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

sourcececodesFanPage фэйсбүүк дээр

Баяртай, Макиек

Зөвлөмж болгож буй: