Мазмуну:

Билдирүүчү: 17 кадам
Билдирүүчү: 17 кадам

Video: Билдирүүчү: 17 кадам

Video: Билдирүүчү: 17 кадам
Video: Замена отопления в новостройке. Подключение. Опрессовка. #17 2024, Июль
Anonim
Кабарчы
Кабарчы

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

1 -кадам: Эмне керек

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

Мунара:

  • картон - эки башка жоондугу
  • Кагаз
  • алюминий фольга

2 -кадам: мунара имараты

Мунара имараты
Мунара имараты
Мунара имараты
Мунара имараты
Мунара имараты
Мунара имараты
Мунара имараты
Мунара имараты

Мунаранын планынын үстү жагында (техникалык сүрөт менен болгон укмуштуу окуям башталгыч класста аяктаган), бардык өлчөмдөр миллиметрде.

Иштөө принциби

  1. жарык берүүчү LED диоддорунун шакеги
  2. Кагаз
  3. Картондон жасалган жана алюминий фольга менен капталган кесилген конус, андыктан ал шакектердин жарыгын чагылдырат, 3-сүрөттө '= кесилген тор
  4. картон түтүк - мунараларды тигинен кармап турат, түтүктүн ичинде леддер үчүн кабельдер бар
  5. Бийиктик сизге көз каранды, менде 85 мм
  6. Электрониканын бардык бөлүктөрүнүн ичиндеги стенд

Бардык горизонталдык элементтер калыңыраак картондон жасалышы керек.

3 -кадам: Кабелдик диаграмма

Кабелдик диаграмма
Кабелдик диаграмма
Кабелдик диаграмма
Кабелдик диаграмма
Кабелдик диаграмма
Кабелдик диаграмма
Кабелдик диаграмма
Кабелдик диаграмма

Mp3 плеер 5V чыңалуусу менен камсыздалган жана TX / RX аркылуу Arduino менен байланышат, логикалык конвертер керек, анткени 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 case 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); break; // cross blue blue case 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // cross revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // blink standard green case 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); тыныгуу; // стандарттуу көк корпусту өчүрүү 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // blink revert blue case 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; // blink standard standard case 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // blink revert апельсин демейки: setConfiguration (0, 0, 50, 0, 5, 1); тыныгуу; // өчүрүү = 0}}

берилген параметрге жараша, шакек эффектти көрсөтөт. Сиз жаңы эффектти кошуу менен setConfiguration функциясына жаңы параметрлерди (түсүн өзгөртүү, дисплей ылдамдыгын) кошуу менен өзүңүздүн эффектти кошо аласыз - же мага жакса комментарийлерде мага билдириңиз, мен жаңы эффект кошом

arduino.ino:

#кошуу "Arduino.h" #кошуу "SoftwareSerial.h" #кошуу "DFRobotDFPlayerMini.h"

#кошуу

#кошуу #кошуу #кошуу "SingleRing.h"

#кошуу

#кошуу #кошуу

#кошуу

#Define WIFI_NAME ""

#WIFI_ПАРОЛУН аныктоо "" #DEVICE_ID 205ди аныктоо #DEVICE_NAME "сиренасын" аныктоо #TOKENди аныктоо ""

#аныктоо DIODES_COUNT 16

SingleRing чокусу = 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;

void setup () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// mp3 менен байланышуу үчүн softwareSerial колдонуңуз.

Serial.println (F ("Баштоо мүмкүн эмес:")); Serial.println (F ("1. Байланышты кайра текшериңиз!")); Serial.println (F ("2. SD картаны салыңыз!"))); while (true); } 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 (); bottom.clear (); }

логикалык turnOff = true;

белгисиз узак 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 = false; turnOffMillis = millis () + 1000 * убакыт; }

боштук цикл ()

{remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis

}

түшүндүрмө:

#аныктоо WIFI_NAME "" #WIFI_ПАРОЛУН аныктоо "" #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 = false; turnOffMillis = millis () + 1000 * убакыт; }

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

void loop () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {

if (! turnOff) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); turnOff = true; }}

Укурукта биз объекттердин циклдык функцияларын атайбыз, ошондой эле эгерде билдирмелерди көрсөтүү убактысы өтүп кеткен болсо, диоддорду жана үндү өчүрөбүз.

5 -кадам: Mp3 Player

Mp3 Player
Mp3 Player

Бул Arduino менен TX / RX аркылуу байланышат - бул жерде оюнчунун өзү жөнүндө маалымат жана бул жердеги китепкана

Биз mp3 файлдарды SD картага жүктөйбүз. Картадагы файлдар алфавиттик тартипте иргелет, анан чалуу аркылуу:

myDFPlayer.play (5);

Биз SD картадан бешинчи файлды түп каталогдон ойнойбуз. Ошол себептен, файлдарды SD картка 01, 02 ж.б. префикстерине берүү жакшы. Менин учурда ал жогорудагы экранда окшош

Үн буйруктарын түзүү үчүн Сиз бул баракты колдоно аласыз.

6 -кадам: Программаны Arduinoго жүктөө

Программаны Arduinoго жүктөө
Программаны Arduinoго жүктөө
Программаны Arduinoго жүктөө
Программаны Arduinoго жүктөө

Эскизди Arduinoго жүктөөдөн мурун, керектүү китепканаларды жүктөп алышыңыз керек, бул жерде сиз деталдуу көрсөтмөлөрдү таба аласыз

кошумча, биз DFRobotDFPlayerMini китепканасын жана Adafruit_NeoPixel орнотушубуз керек

7 -кадам: Башкаруу

Control
Control
Control
Control

Биз Arduinoго беш байтты жөнөтөбүз

  • жогорку LED шакеги үчүн жарык эффектинин биринчи байты
  • төмөнкү LED шакеги үчүн экинчи байт жарык таасири
  • ойнотула турган mp3 файлдын номери
  • жарык эффекти канча убакытта жана mp3 ойнотула турган секунддардын саны
  • mp3 бир жолу же циклда ойнотулушу керекпи (эгерде 1 циклде ойнотулса)

Байт жөнөтүү менен

07 0F 01 05 01

Жогорку ринг полиция жарыгын көрсөтөт (6 -режим) асты бир жашыл (15 -режим) (setRode функциясын singleRing.cppтен текшериңиз жана анын жанындагы комментарийлер). SDcard түрүндөгү биринчи файл 5 секунд ойнотулат. Жана файл укурукта ойнотулат (arduino.ino дарегиндеги onUserMessage функциясын текшериңиз)

Бул байттарды жөнөтөлү. Жогорудагы экранды караңыз жана 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'ден кийин менин Chrome браузерим

Менин учурда, 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ге кириңиз. Анан Менин Апплеттерим өтмөгүнө, андан кийин "Жаңы Апплетке" өтүңүз- биринчи экран

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'ибиздин URL дарегин токен менен толтурабыз. Application / jsonго мазмундун түрүн коюп, "Аракет түзүү" жана "Аяктоо" баскычын чыкылдатыңыз. Эми бизде апплет бар:

17 -кадам: Жыйынтык

Бул үйрөткүчтө мен тышкы системалардан Arduino билдирүүлөрүбүздү кантип жөнөтүүнү көрсөттүм. Биз дагы башка системаны, андан кийин IFTTTди ушундай жол менен интеграциялайбыз. Бул "билдирүүчү" болушу шарт эмес, мен бул мисалда тышкы системалардан биздин Arduinoго билдирүүлөрдү кантип жөнөтүүнү көрсөткүм келди.

sourcececodesFanPage on Facebook

Салам, Макиек

Сунушталууда: