Talaan ng mga Nilalaman:

Tagabatid: 17 Mga Hakbang
Tagabatid: 17 Mga Hakbang

Video: Tagabatid: 17 Mga Hakbang

Video: Tagabatid: 17 Mga Hakbang
Video: Замена отопления в новостройке. Подключение. Опрессовка. #17 2024, Hulyo
Anonim
Tagabatid
Tagabatid

Ang aparato ay maaaring konektado halimbawa sa IFTTT system at reaksyon kapag lumitaw ang isang bagong mail. Sa app.remoteme.org makakabuo kami ng isang link pagkatapos tumawag kung aling mga byte ang ipapadala sa Arduino, at ang Arduino ay magpapakita ng ilang light effect at maglaro ng ilang mp3 mula sa SDcard

Hakbang 1: Ano ang Kailangan

Kung ano ang kinakailangan
Kung ano ang kinakailangan
Kung ano ang kinakailangan
Kung ano ang kinakailangan
  • NodeMCU, WemOS o katulad na bagay
  • Dalawang LED ring na may WS2812B diode (Gumamit ako ng 16th leds ring)
  • DFRobotDFPlayerMini - ito ang mp3 player. Nagpe-play ito ng mp3 mula sa SDcard, at nakikipag-usap sa Arduino ng RX / TX
  • Tagapagsalita
  • SDcard
  • Logic converter -Gamit ko ang isang ito, ang mp3 player ay gumagamit ng 5V at Arduino 3.3 kaya nga kailangan namin ng converter na ito
  • Kaalaman at kasanayan upang makagawa ng simpleng PCB ng ating mga sarili

Ang tore:

  • karton - dalawang magkakaibang kapal
  • Pagsubaybay sa papel
  • aluminyo palara

Hakbang 2: Pagbuo ng Tower

Tower Building
Tower Building
Tower Building
Tower Building
Tower Building
Tower Building
Tower Building
Tower Building

Sa itaas ng plano ng tower sa view ng gilid (ang aking pakikipagsapalaran sa pagguhit ng panteknikal ay natapos sa pangunahing paaralan), lahat ng mga sukat sa millimeter.

Prinsipyo ng pagpapatakbo

  1. singsing ng LEDs na nagbibigay ng ilaw sa
  2. Pagsubaybay sa papel
  3. Ang pinutol na kono, gawa sa karton at tinakpan ng aluminyo palara, kaya sumasalamin ito ng mga ilaw mula sa mga pinangunahang singsing, sa pigura na 3 ‘= ang pinutol na mata
  4. karton tube - hinahawakan ang mga tower nang patayo, sa loob ng tubo ay mga cable para sa mga leds
  5. Ang taas nakasalalay sa iyo mayroon akong 85mm
  6. Ang Stand sa loob ng lahat ng mga bahagi ng electronics

Ang lahat ng mga pahalang na elemento ay dapat gawin ng mas makapal na karton.

Hakbang 3: Diagram ng Mga Kable

Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable

Ang mp3 player ay ibinibigay ng 5V boltahe at nakikipag-usap sa Arduino sa pamamagitan ng TX / RX, kailangan ng isang converter ng lohika sapagkat ang Arduino mismo ay gumagana sa 3.3V boltahe. Ang pagkontrol ng mga singsing ay konektado din sa Arduino (D5, D6) sa pamamagitan ng converter ng lohika.

Sa lalagyan, Makakakita ka ng mga file ng agila na may mga plano sa PCB

Iminumungkahi ko na huwag solder permanenteng Arduino at ang mp3 player lamang na gumamit ng mga babaeng goldpins

Hakbang 4: Prinsipyo ng Pagpapatakbo

Ang aming Arduino ay kumokonekta sa app.remoteme.org system na gumagamit ng WebSockets (may mga handa na mga aklatan) sa pamamagitan ng koneksyon na ito 5-byte na mensahe ay ipinadala:

  • ang unang byte ng light effect para sa itaas na singsing na LED
  • pangalawang byte light effect para sa ilalim na singsing na LED
  • ang bilang ng file na mp3 na ipe-play
  • ang bilang ng mga segundo kung gaano katagal i-play ang ilaw na epekto at ang mp3
  • kung ang mp3 ay dapat i-play nang isang beses o sa isang loop

source code

Buong source code Maaari mong makita dito

sa mga file na SingleRing.cpp at SingleRing.h mayroong isang klase upang makontrol ang mga epekto ng mga singsing na LED. Iminumungkahi kong magsimula ka sa pamamagitan ng pagtingin sa pagpapaandar ng setMode (int m):

walang bisa ang SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); masira; // off = 0 kaso 1: setConfiguration (6, 0, 50, 0, 0, 20); masira; // solid standard green case 2: setConfiguration (6, 0, 0, 50, 0, 20); masira; // solid standard na asul na kaso 3: setConfiguration (6, 50, 0, 0, 0, 20); masira; // solid standard red case 4: setConfiguration (6, 50, 10, 0, 0, 20); masira; // solid standard orange case 5: setConfiguration (1, 0, 100, 0, 5, 2); masira; // pulisya na liko sa lindol na kaso 6: setConfiguration (1, 0, 100, 0, 5, -2); masira; // ibalik ng pulisya ang berdeng kaso 7: setConfiguration (1, 0, 0, 100, 5, 2); masira; // pulisya asul pataas na asul na kaso 8: setConfiguration (1, 0, 0, 100, 5, -2); masira; // ibalik ng pulisya ang asul na kaso 9: setConfiguration (1, 100, 0, 0, 5, 2); masira; // pamantayan ng pulisyang pulang kaso 10: setConfiguration (1, 100, 0, 0, 5, -2); masira; // ibalik ng pulisya ang pulang kaso 11: setConfiguration (1, 100, 20, 0, 5, 2); masira; // pamantayan ng pulisya kahel na kaso 12: setConfiguration (1, 100, 20, 0, 5, -2); masira; // ibalik ng pulisya ang kahel na kaso 13: setConfiguration (2, 0, 0, 50, 8, 10); basagin; // cross standard blue case 14: setConfiguration (2, 0, 0, 50, 8, -10); masira; // cross revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); masira; // blink standard green case 16: setConfiguration (5, 0, 50, 0, 0, -20); masira; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); masira; // blink standard blue case 18: setConfiguration (5, 0, 0, 50, 0, -20); masira; // blink ibalik ang asul na kaso 19: setConfiguration (5, 50, 0, 0, 0, 20); masira; // blink standard red case 20: setConfiguration (5, 50, 0, 0, 0, -20); masira; // blink ibalik ang pulang kaso 21: setConfiguration (5, 50, 10, 0, 0, 20); masira; // blink standard orange case 22: setConfiguration (5, 50, 10, 0, 0, -20); masira; // blink ibalik ang orange na default: setConfiguration (0, 0, 50, 0, 5, 1); masira; // off = 0}}

depende sa ibinigay na parameter, ipapakita ng singsing ang epekto. Maaari kang magdagdag ng iyong sariling epekto sa pamamagitan ng pagtawag sa setting ng pag-configure gamit ang mga bagong parameter (pagbabago ng kulay, bilis ng pagpapakita) sa pamamagitan ng pagdaragdag ng isang bagong mode, o pagdaragdag ng isang ganap na bagong epekto - o ipaalam sa akin sa mga komento kung gusto ko ito ay magdagdag ako ng bagong epekto

arduino.ino:

# isama ang "Arduino.h" # isama ang "SoftwareSerial.h" # isama ang "DFRobotDFPlayerMini.h"

# isama

#include #include #include "SingleRing.h"

# isama

# isama ang # isama

# isama

#define WIFI_NAME ""

#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "siren" #define TOKEN ""

# tukuyin ang DIODES_COUNT 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing ilalim = 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);

kung (! myDFPlayer.begin (mySoftwareSerial)) {// Gumamit ng softwareSerial upang makipag-usap sa mp3.

Serial.println (F ("Hindi masimulan:")); Serial.println (F ("1. Mangyaring suriin muli ang koneksyon!")); Serial.println (F ("2. Mangyaring ipasok ang SD card!")); habang (totoo); } Serial.println (F ("DFPlayer Mini online."));

myDFPlayer.setTimeOut (500); // Itakda ang serial komunictaion time out 500ms

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); habang (WiFiMulti.run ()! = WL_CONNected) {pagkaantala (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

tuktok.setup ();

ilalim.setup (); tuktok.malinis (); ilalim. malinaw (); }

boolean turnOff = totoo;

unsigned mahabang turnOffMillis = 0;

walang bisa saUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (data, pos);

ilalim.setMode (ilalimMode);

top.setMode (topMode); kung (mode == 1) {myDFPlayer.loop (trackNumber); } iba pa {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * oras; }

walang bisa loop ()

{remoteMe.loop (); tuktok.loop (); ilalim.loop (); kung (turnOffMillis

}

paliwanag:

#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificator" #define TOKEN ""

Kailangan naming magbigay ng data sa itaas, mga detalyadong tagubilin dito sa link na ipinakita ko rin kung paano magparehistro sa remoteme.org at makabuo ng token, walang bisa saUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (data, pos);

ilalim.setMode (ilalimMode);

top.setMode (topMode); kung (mode == 1) {myDFPlayer.loop (trackNumber); } iba pa {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * oras; }

Tatawagan ang pagpapaandar na ito pagdating sa mensahe sa Arduino at ipinapakita ang abiso. Napakalinaw ng code na inilalarawan nito ang sarili. Sumangguni ako sa mga detalye ng mga klase sa dokumentasyon dito at dito

void loop () {remoteMe.loop (); tuktok.loop (); ilalim.loop (); kung (turnOffMillis <millis ()) {

kung (! turnOff) {

tuktok.malinis ();

ilalim. malinaw (); myDFPlayer.stop (); nakaOff = totoo; }}

Sa loop, tinawag namin ang mga pag-andar ng loop ng mga bagay, at din kung ang oras ng pagpapakita ng mga abiso ay lumipas, pinapatay namin ang mga diode at tunog.

Hakbang 5: Mp3 Player

Mp3 Player
Mp3 Player

Nakikipag-usap ito sa Arduino sa pamamagitan ng TX / RX - Mga detalye ng mismong manlalaro dito, at ang silid-aklatan dito

Nag-upload kami ng mga mp3 file sa SD card. Ang mga file sa card ay pinagsunod-sunod ayon sa alpabeto at pagkatapos ay sa pamamagitan ng pagtawag:

myDFPlayer.play (5);

Pinatugtog namin ang pang-limang file mula sa SD card mula sa root Directory. Iyon ang dahilan kung bakit magandang magbigay ng mga file sa mga awas ng SD card 01, 02 atbp Sa aking kaso mukhang sa itaas na printscreen

Upang makabuo ng mga utos ng boses Maaari mong gamitin ang pahinang ito.

Hakbang 6: Pag-upload ng Program sa Arduino

Pag-upload ng Program sa Arduino
Pag-upload ng Program sa Arduino
Pag-upload ng Program sa Arduino
Pag-upload ng Program sa Arduino

Bago mag-upload ng sketch sa Arduino, Kailangan mong mag-download ng mga kinakailangang aklatan dito makikita mo ang mga tagubilin sa detalye

bilang karagdagan, kailangan naming i-install ang DFRobotDFPlayerMini library at Adafruit_NeoPixel

Hakbang 7: Pagkontrol

Kontrolin
Kontrolin
Kontrolin
Kontrolin

Nagpadala kami sa aming Arduino ng limang byte

  • ang unang byte ng light effect para sa itaas na singsing na LED
  • pangalawang byte light effect para sa ilalim na singsing na LED
  • ang bilang ng file na mp3 na ipe-play
  • ang bilang ng mga segundo kung gaano katagal i-play ang ilaw na epekto at ang mp3
  • kung ang mp3 ay dapat i-play nang isang beses o sa isang loop (1 kung dapat itong i-play sa isang loop)

Sa pamamagitan ng pagpapadala ng mga byte

07 0F 01 05 01

Ipinapakita ng tuktok na singsing ang mga ilaw ng pulisya (mode 6) sa ilalim ng isang blink green (mode 15) (tingnan ang pagpapaandar ng setMode sa singleRing.cpp at mga komento sa tabi nito). Ang unang form ng file na SDcard ay i-play sa loob ng 5 segundo. At ang file ay i-play sa loop (suriin ang pagpapaandar saUserMessage sa arduino.ino)

Ipadala natin ang mga byte na ito. Tingnan ang screen sa itaas, at i-click ang mga icon sa pagkakasunud-sunod na nakasulat sa pamamagitan ng 1, 2, 3. Lumilitaw ang window

Pagkatapos ay tingnan ang pangalawang screen - at punan ang window tulad ng sa pangalawang screen

Ang lalabas na window ay ginagamit upang magpadala ng mga mensahe sa aparato. Sa patlang 1, piliin ang aparato ng nagpadala - dahil mayroon lamang kaming isang aparato, pipiliin namin ito (ito ay isang sapilitan na patlang at hindi mahalaga na ito ay ang parehong aparato kung saan kami nagpapadala ng isang mensahe) Sa patlang 2 nagbibigay kami ng mga byte sa ipadala (sa pula ang halagang ipinasok namin sa 2 ay kinakatawan bilang isang string) pagkatapos ay i-click ang Send button.

Matapos maipadala ang mensahe, dapat tumugon ang aming notifier sa pamamagitan ng pagpapakita ng naaangkop na mga epekto sa pag-iilaw at pag-play ng napiling mp3. Hinihimok ko kayo na subukan ang iba't ibang mga epekto sa pamamagitan ng pagbibigay ng unang dalawang byte ng isang numero sa pagitan ng 0 at 22 (tingnan ang paglalarawan sa pagpapaandar ng setMode).

Hakbang 8: Pagpapadala ng Mga Mensahe Gamit ang mga URL

Pagpapadala ng Mga Mensahe Gamit ang mga URL
Pagpapadala ng Mga Mensahe Gamit ang mga URL
Pagpapadala ng Mga Mensahe Gamit ang mga URL
Pagpapadala ng Mga Mensahe Gamit ang mga URL
Pagpapadala ng Mga Mensahe Gamit ang mga URL
Pagpapadala ng Mga Mensahe Gamit ang mga URL
Pagpapadala ng Mga Mensahe Gamit ang mga URL
Pagpapadala ng Mga Mensahe Gamit ang mga URL

Kung nais naming ipakita ang mga abiso mula sa isang panlabas na application hal. Kasama ang IFTTT, kailangan naming magkaroon ng isang URL na gagawin nang eksakto ang parehong bagay tulad ng ginawa namin sa window sa nakaraang hakbang. nagbibigay ang remoteme.org ng REST APi. Pumunta dito sa pamamagitan ng pag-click sa tab ng swagger sa kaliwa (ang huli). Ipapakita ang isang pahina, sa pahinang ito maaari din naming subukan ang aming mga URL.

Sa unang screen Mayroon kang pagpapaandar Kailangan mong palawakin, pagkatapos punan ang data tulad ng sa pangalawang screen.

punan ang data tulad ng nasa screenshot sa itaas. Pagkatapos ng pag-click sa pagpapatupad magpapadala kami ng isang mensahe

070F010501

Ang tatanggap ay ang aparato na may 205 id, ang parehong aparato ay isang nagpadala din. Ang MessageId na may mga setting na "No_RENEVAL" ay hindi nauugnay. At pagkatapos ay i-click ang Ipatupad. Makikilala ang reaksyon sa parehong paraan tulad ng kapag nagpapadala ng mga mensahe mula sa application. Matapos tawagan ang REST sa ibaba ay ang URL na tinawag - tingnan ang pangatlong screen. At ang kopya at i-paste sa browser URL ay minarkahan ng berdeng hangganan. Sa ika-apat na screen ang aking chrome browser pagkatapos na nai-paste ang URL

Sa aking kaso, ang URL ay:

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

Hakbang 9: Anumang URL upang Magpadala ng Mensahe

Anumang URL upang Magpadala ng Mensahe
Anumang URL upang Magpadala ng Mensahe

Sa nakaraang hakbang Mayroon kang isang URL na nagpapadala ng data sa iyong aparato. Sa kasamaang palad, pagkatapos ng pag-log out sa app.remoteme.org, huminto ito sa paggana. Ito ay dahil hindi namin naibigay ang token ng pagpapatotoo, at hindi na kami naka-log in. Kunin ang aming token (o lumikha ng bago) at i-paste ito sa URL sa halip na ang bituin.

Tumingin sa screen at palitan ang * sa URL ng iyong token

sa aking kaso token ay:

~ 267_ZxoWtJ) 0ph & 2c

kaya ang aking panghuling URL ay parang:

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

Ngayon ay maaari na natin itong tawagan kahit na hindi tayo naka-log in. At kapag tinawag ito, isang mensahe ang ipapadala sa aming aparato 205

Hakbang 10: Pagsasama Sa IFTTT 1/7

Pagsasama Sa IFTTT 1/7
Pagsasama Sa IFTTT 1/7

Ang url na nilikha sa hakbang sa itaas ay angkop para sa pagpapatupad ng mga panlabas na application. Paano gamitin ito ay ipapakita ko sa IFTTT. Ise-configure ko ito upang ang notifier ay nakabukas pagdating ng isang email sa email address (Gmail account).

Mag-log in sa IFTTT. Pagkatapos ay pumunta sa tab na My Applets at pagkatapos ay "Bagong Applet" - unang screen

Hakbang 11: Pagsasama Sa IFTTT 2/7

Pagsasama Sa IFTTT 2/7
Pagsasama Sa IFTTT 2/7

Susunod na pag-click sa "+ ito"

Hakbang 12: Pagsasama Sa IFTTT 3/7

Pagsasama Sa IFTTT 3/7
Pagsasama Sa IFTTT 3/7

Pagkatapos sa larangan na "Mga serbisyo sa paghahanap" isulat ang "Gmail"

Pagkatapos "bagong email sa inbox" (Maaaring kailanganin ang ilang pagsasaayos).

Hakbang 13: Pagsasama Sa IFTTT 4/7

Pagsasama Sa IFTTT 4/7
Pagsasama Sa IFTTT 4/7

ngayon nag-click kami sa "+ iyon"

Hakbang 14: Pagsasama Sa IFTTT 5/7

Pagsasama Sa IFTTT 5/7
Pagsasama Sa IFTTT 5/7

hanapin ang "Webhooks" at i-click ito

Hakbang 15: Pagsasama Sa IFTTT 6/7

Pagsasama Sa IFTTT 6/7
Pagsasama Sa IFTTT 6/7

pagkatapos ay "Gumawa ng isang kahilingan sa web"

Hakbang 16: Pagsasama Sa IFTTT 7/7

Pagsasama Sa IFTTT 7/7
Pagsasama Sa IFTTT 7/7

kinumpleto namin ang URL ng aming url gamit ang token. Uri ng nilalaman sa application / json at i-click ang "lumikha ng aksyon" at Tapusin. Ngayon mayroon kaming aming applet:

Hakbang 17: Buod

Sa tutorial na ito, ipinakita ko kung paano magpadala sa aming mga mensahe ng Arduino mula sa mga panlabas na system. Isinasama din namin ang ilang iba pang system pagkatapos ng IFTTT sa katulad na paraan. Hindi ito kinakailangang maging isang "notificator" na nais kong ipakita sa halimbawang ito kung paano magpadala ng mga mensahe mula sa labas ng mga system sa aming Arduino.

sourcecodesFanPage sa Facebook

Cheers, Maciek

Inirerekumendang: