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

NodeMCU -тай алсын удирдлагатай таймер: 14 алхам
NodeMCU -тай алсын удирдлагатай таймер: 14 алхам

Видео: NodeMCU -тай алсын удирдлагатай таймер: 14 алхам

Видео: NodeMCU -тай алсын удирдлагатай таймер: 14 алхам
Видео: Как запрограммировать модуль реле Wi-Fi ESP8266 ESP-01 2024, Арваннэгдүгээр
Anonim
NodeMCU -тай алсын удирдлагатай таймер
NodeMCU -тай алсын удирдлагатай таймер

Энд бид NodeMCU болон Adafruit ашиглан таймер үүсгэх болно. Бид таймерыг LED туузаар харуулах гэж байгаа бөгөөд үүнийг утас эсвэл компьютер ашиглан хянах боломжтой болно.

Бидний зорилго:

LED зурвас ашиглан таймер үүсгээрэй. Бид үүнийг утас, компьютер ашиглан эхлүүлж, түр зогсоож, дахин тохируулж болно.

Хангамж

Техник хангамж:

  • NodeMCU ESP 8266
  • Adafruit NeoPixel LED зурвас

Номын сан:

  • Adafruit_NeoPixel.h
  • AdafruitIO_WiFi.h

Бусад:

Тохиромжтой WiFi холболт

Алхам 1: Adafruit дээр тэжээл үүсгэцгээе

Adafruit дээр тэжээл үүсгэцгээе!
Adafruit дээр тэжээл үүсгэцгээе!

Бидэнд хэрэгтэй бүх зүйл байгаа тул бид барилгын ажлыг эхлүүлэхэд бэлэн байна! Юуны өмнө бид Адафрутад тэжээл бий болгох ёстой. Adafruit бол бидний Arduino -г интернетэд холбож, алсын удирдлагатай ашигтай шинж чанаруудыг бий болгоход үнэхээр хялбар болгодог үйлчилгээ юм. Хэрэв та хараахан амжаагүй бол Adafruit -д бүртгүүлнэ үү.

Одоо шинэ тэжээл үүсгэе

Бид тэжээлээ хүссэнээрээ нэрлэж болно, би үүнийг "цаг хэмжигч" гэж нэрлэдэг.

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

Алхам 2: Одоо хяналтын самбар хийцгээе

Одоо хяналтын самбар хийцгээе
Одоо хяналтын самбар хийцгээе
Одоо хяналтын самбар хийцгээе
Одоо хяналтын самбар хийцгээе
Одоо хяналтын самбар хийцгээе
Одоо хяналтын самбар хийцгээе

Одоо бид тэжээл хийсэнтэй адилаар бид шинэ хяналтын самбар үүсгэх болно. Би хяналтын самбараа "таймерын интерфейс" гэж нэрлэнэ, учир нь энэ нь үндсэндээ бидний хяналтын самбар байх болно: таймерыг удирдах товчлуур бүхий интерфейс.

Алхам 3: Бидний түлхүүрийг аваарай

Бидний түлхүүрийг аваарай
Бидний түлхүүрийг аваарай

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

Adafruit дээрх дэлгэцийнхээ баруун дээд хэсэгт байрлах шар өнгийн AIO товчлуур дээр дарж түлхүүрээ авах боломжтой.

Энэ түлхүүрийг хаа нэг газар хадгалаарай, дараа нь бидэнд хэрэгтэй болно.

Түлхүүрээ бүү хуваалцаарай! Үгүй бол муу санаатай хүмүүс таны хангамж болон төхөөрөмжид холбогдох боломжтой.

Алхам 4: Feed унших жишээг нээнэ үү

Feed унших жишээг нээнэ үү
Feed унших жишээг нээнэ үү

Одоо Arduino IDE -ээ нээж кодлох процессыг эхлүүлцгээе. Юуны өмнө бид Adafruit IO Arduino номын санг суулгах ёстой.

Номын санг хэрхэн суулгахаа мэдэхгүй байна уу? Энэ бол Adafruit: Arduino Libraries -ийн гайхалтай гарын авлага юм

Adafruit нь бидэнд ашиглах, суралцах олон урьдчилан бэлтгэсэн жишээг санал болгодог. Эдгээр жишээний нэг нь: adafruitio_21_feed_read. Та энэ жишээг эндээс олж болно: Файл - Жишээ Adafruit IO Arduino adafruitio_21_feed_read

(зураг дээрх Голланд интерфейсийг уучлаарай)

Алхам 5: Холболтоо тохируулцгаая

Хэрэв та adafruitio_21_feed_read ноорогыг амжилттай нээсэн бол таны ноорог дээр adafruitio_21_feed_read болон config.h гэсэн 2 таб харагдах ёстой. Энэхүү тоймыг бид 1 -р алхам дээр хийсэн тэжээлтэйгээ холбох боломжтой болгох үүднээс хийсэн болно.

Энэхүү тэжээлд холбогдохын тулд бид WiFi болон Adafruit дансныхаа талаар цөөн хэдэн мэдээллийг бөглөх шаардлагатай болно.

Config.h руу аялцгаая, энд бид дараах дэлгэрэнгүй мэдээллийг бөглөх болно

Таны Adafruit хэрэглэгчийн нэр:

IO_USERNAME "joopert" -ийг #тодорхойлох

Таны Adafruit түлхүүр:

#тодорхойлох IO_KEY "1234567890abcdefghijklmnop"

Таны WiFi нэр:

WIFI_SSID "MyWifi" -г #тодорхойлох

Мөн таны WiFi нууц үг:

#aFerySecretPassword WIFI_PASS -ийг тодорхойлох

Одоо adafruitio_21_feed_read таб руу буцаж ороод:

Таны Adafruit хэрэглэгчийн нэр … дахин:

FEED_OWNER "joopert" -ийг #тодорхойлох

Эцэст нь таны тэжээлийн нэр (1 -р алхам дээр хийсэн тэжээлээс):

AdafruitIO_Feed *sharedFeed = io.feed ("таймер", FEED_OWNER);

Алхам 6: Adafruit IO -ийн холболтыг шалгана уу

Adafruit IO -ийн холболтыг шалгана уу
Adafruit IO -ийн холболтыг шалгана уу

Бидний өмнө хийсэн алхмууд зөв хийгдсэн эсэхийг шалгахын тулд бид ноорогоо NodeMCU дээр байршуулах гэж байна. Хэрэв та цуваа дэлгэцээ нээвэл дээрх зураг шиг харагдах ёстой. Эхлээд цуваа дэлгэц нь таны WiFi болон Adafruit -тэй холбогдохыг оролдож байгааг харуулж байна. Хэрэв энэ нь бүрэн бол дараахь зүйлийг хэлэх ёстой.

Adafruit IO холбогдсон байна

Энэ бол гайхалтай мэдээ! Одоо бид цаг хэмжигчдээ функцийг нэмж эхлүүлж болно …

Алхам 7: LED -ийг оруулна уу

LED -ийг зөвшөөрнө үү
LED -ийг зөвшөөрнө үү
LED -ийг зөвшөөрнө үү
LED -ийг зөвшөөрнө үү

Одоо бидний LED зурвасыг асаах цаг боллоо!

LED зурвасаа D5 PIN -тэй холбоно уу (хэрэв та D5 -ийг олж чадахгүй бол өөр ПИН -тэй холбож кодын LED_PIN -ийг өөрчилнө үү).

LED туузыг тодорхойлох

Дараах код нь NeoPixel номын санг нэмж оруулах болно (энэ номын сангийн талаар эндээс илүү ихийг мэдэж аваарай: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) мөн манай Arduino манай LED зурвас хаана байгааг мэддэг эсэхийг шалгаарай. хичнээн гэрэл асдаг вэ. Хэрэв таны LED зурвас өөр өөр үзүүлэлттэй бол үүнийг кодоор солино уу.

Хоосон тохиргооны дээд хэсэгт дараах кодыг нэмнэ үү ():

// NeoPixel холболтыг тохируулах #include #ifdef _AVR_ #include #endif

#define LED_PIN D5 // LED зурвас хаана холбогдсон бэ?

#тодорхойлох LED_COUNT 30 // Хэдэн пикселтэй вэ?

#BRIGHTNESS 50 -ийг тодорхойлох // NeoPixel тод байдал, 0 (мин) -ээс 255 (хамгийн их)

Adafruit_NeoPixel тууз (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

LED туузыг эхлүүлэх

Одоо бид LED зурвасаа асааж, гэрэлтүүлгийг тохируулах болно (тод байдал нь 0 мин -аас 255 хүртэл байна, гэхдээ 50… 255 нь үнэхээр тод байхыг зөвлөж байна).

Void setup () хэсэгт дараах кодыг нэмнэ үү.

strip.begin (); // NeoPixel зурвасын объектыг INITIALIZE (REQUIRED) strip.show (); // Бүх пикселийг аль болох хурдан унтраах strip.setBrightness (50); // BRIGHTNESS -ийг ойролцоогоор 1/5 болгож тохируулна уу (хамгийн ихдээ = 255)

ledsOn (); // LED бүрийг нэг нэгээр нь асаах функцийг дуудна

Гэрлийг асаана уу

Бид хараахан байхгүй функцийг дуудаж байгааг кодын дараагийн хэсэг болох болно гэдгийг та аль хэдийн анзаарсан байх. Хэрэв бид гэрлээ асаахыг хүсвэл LED тус бүрийг нэг нэгээр нь асаах 'for loop' үүсгэх ёстой (for давталт гэж юу болохыг мэдэхгүй байна уу? Эндээс үзнэ үү: www.arduino.cc/reference/ en/хэл/бүтэц/хяналтын бүтэц/for/).

Одоо бид функцийг үүсгэх болно: ledsOn ();

Дараах кодыг доороос нь void handleMessage () нэмнэ үү.

void ledsOn () {for (int i = 0; i <strip.numPixels (); i ++) {// Туузан дахь пиксел бүрийн хувьд… strip.setPixelColor (i, 0, 0, 255); // Пикселийн өнгийг цэнхэр зурвас болгож тохируулна уу.show (); // Туузыг тааруулахаар шинэчлэх}}

Байршуулах

Энэ бол хөгжилтэй хэсэг, кодоо NodeMCU -д байршуулцгаая. Хэрэв бүх зүйл зөв хийгдсэн бол таны LED зурвас бүрэн цэнхэр болж хувирна!

Пикселүүд харагдахгүй байна уу ?: Та туузыг зөв ПИН кодтой холбосон уу? Эсвэл таны интернет холболт тасарсан байж магадгүй.

Зөвхөн зарим пикселүүд харагдахгүй байна уу?: Та пикселийн хэмжээг зөв тохируулсан эсэхийг шалгаарай!

Алхам 8: Хугацааг таймер дээр нэмнэ үү

Одоо бид цаг хэмжигч маань үнэхээр … ямар нэгэн зүйл, ямар нэгэн зүйл байгаа эсэхийг шалгах болно.

Arduino дээр цаг гаргах өөр өөр аргууд байдаг, нэг нь delay () бөгөөд энэ нь манай самбарыг боловсруулалтыг тодорхой хугацаанд зогсооно. Манай Arduino саатал гарахад хөлддөг тул бид үүнийг ашиглахгүй бөгөөд самбараа байнга шинэчилж байхыг хүсч байна. Тиймээс бид Millis () -ийг ашиглах гэж байна, энэ бол Arduino -д цаг гаргах илүү гоёмсог арга бөгөөд Millis () -ийн тусламжтайгаар бид интервалын хооронд кодыг ажиллуулах боломжтой хэвээр байна.

Хэрэв та энэ хэрхэн ажилладаг талаар сонирхож байгаа бол энэ нийтлэлийг үзнэ үү:

Millis () кодыг нэмье:

Энэ кодыг хоосон тохиргооны дээр тавь ()

гарын үсэг зураагүй урт өмнөхMillis = 0; // LED зурвасыг хамгийн сүүлд шинэчлэх үед хадгалах болно интервал = 1000; // манай таймерын интервал (миллисекунд)

Энэ кодыг void loop () -д оруулъя:

тэмдэггүй урт гүйдэлMillis = millis ();// TIMER RYTHM эхлүүлэх ******************************************* ********* if (currentMillis - previousMillis> = интервал) {previousMillis = currentMillis;

// TIMER RYTHM -ийг дуусгах ******************************************* ***********

Бидний хийсэн зүйл бол бидний LED зурвасыг LED -ийг унтраах үг хэллэгийг бий болгох явдал байсан бөгөөд дараагийн алхамд бид үүнийг хийх кодыг нэмж оруулах болно.

Алхам 9: Тоололт

Энэ алхамд: бид функц хийх бөгөөд энэ нь секунд тутамд (эсвэл таны тохируулсан интервал) туузны төгсгөлд нэг LED -ийг унтрааж, бидний бүх LED унтрах хүртэл хийх болно.

Бид дээд талд 'leds' гэж нэрлэгддэг 'int' үүсгэх болно. Энэ нь хожим нь хичнээн ледийг унтраах ёстойг манай таймерд хэлэх болно.

Хоосон тохиргооны дээд хэсэгт дараах кодыг нэмнэ үү ():

int leds = LED_COUNT-1; // хэдэн пиксел асаах ёстойг зааж өгнө

Одоо 'timer ();' функцийг нэмье, энэ нь секунд тутамд гэрлийг унтрааж байх болно

Дараах кодыг veds ledsOn () дээр нэмнэ үү.

void timer () {strip.setPixelColor (leds, 0, 0, 0);

if (leds> -1) {leds--; } өөр {blinkie (); }}

Бүх гэрэл шатсаны дараа цаг хэмжигч хийгддэг талаар хэрэглэгчдэд санал өгөхийг хүсч байна. 'Blinkie ();' хамт таймер дууссаны дараа LED нь улаан анивчих болно.

Хоосон тохиргооны дээд хэсэгт дараах кодыг нэмнэ үү ():

int blinkStatus = 1; // blinkie -д хэлдэг (); гэрэл асах эсвэл унтраасан байх ёстой

Void timer () доорх кодыг нэмнэ үү.

void blinkie () {if (blinkStatus == 1) {

blinkStatus = 0; strip.clear (); } өөр {blinkStatus = 1; for (int i = 0; i <strip.numPixels (); i ++) {// Туузан дахь пиксел бүрийн хувьд… strip.setPixelColor (i, 255, 0, 0); // пикселийн өнгийг тохируулах (RAM дээр) strip.show (); // Туузыг тааруулахаар шинэчлэх}}}}

Эцэст нь бид void loop дахь функцийг дуудах ёстой ();, 8 -р алхам дээр бидний оруулсан TIMER RYTHM -ийг санаж байна уу? Хэрэв энэ мэдэгдэлд бид функцийг timer ();

TIMER RYTHM одоо иймэрхүү харагдах ёстой.

// TIMER RYTHM эхлүүлэх ******************************************* *********

if (currentMillis - previousMillis> = интервал) {өмнөхMillis = currentMillis; таймер (); strip.show ();} // TIMER RYTHM -ийг дуусгах ************************************ ******************

Одоо энэ кодыг байршуулна уу!

Яг одоо таны LED зурвас секунд тутамд 1 LED унтрааж, дуусаад улаан анивчсан байх ёстой.

Одоо энэ эхийн хайртыг алсын удирдлагатай болгоё!

Алхам 10: Үүнийг алсын удирдлагатай болгох: I хэсэг

Үүнийг алсын удирдлагатай болгох: I хэсэг
Үүнийг алсын удирдлагатай болгох: I хэсэг
Үүнийг алсын удирдлагатай болгох: I хэсэг
Үүнийг алсын удирдлагатай болгох: I хэсэг

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

Adafruit табаа нээсэн хэвээр байна уу? Io.adafruit.com руу буцаж очоод таймерын интерфейсийн хяналтын самбар руу ороод шинэ блок үүсгэе: TOGGLE

  1. Шилжүүлэгчийг TIMER тэжээлд холбоно уу
  2. ON утгыг дараах болгож тохируулна уу: 1
  3. OFF утгыг тохируулна уу: 0

Үүний шалтгаан нь Adafruit нь манай NodeMCU руу текст өгөгдөл илгээдэггүй, гэхдээ зөвхөн тоонууд юм.

Хэрэв та хүсвэл Toggle -д нэр өгч болно, магадгүй: 'On/Off switch'

Одоо Arduino IDE руу буцъя

Манай код шинэчлэгдсэн эсэхийг шалгахын тулд кодоо дахин нэг удаа АЧАЦГААЯ.

ЦЭВЭРИЙН ХЯНАЛТЫГ нээж дуусаад нээгээд манай Adafruit хяналтын самбарт TOGGLE дарна уу. Цуваа дэлгэц дээр ийм зүйл гарч ирэхийг бид одоо харах ёстой.

хүлээн авсан <- 0 хүлээн авсан <- 1 хүлээн авсан <- 0 хүлээн авсан <- 1 хүлээн авсан <- 0

Энэ нь бид хяналтаа NodeMCU руу илгээх боломжтой гэсэн үг юм!

Хэрэв та эдгээр мессежийг хүлээж авахгүй байгаа бол таны config.h дахь Adafruit дата зөв хэвээр байгаа эсэхийг шалгаарай.

Алхам 11: Үүнийг алсын удирдлагатай болгох: II хэсэг

Одоо бидний хүлээж авсан удирдлагаар ямар нэгэн зүйл хийх л үлдлээ.

Үүнийг хийхийн тулд бид void давталтад байгаа таймерын таймерыг өөрчлөх ёстой (); бага зэрэг.

Бид Adafruit -ээс '1' (ON гэсэн утгатай) хүлээн авсны дараа л таймерыг эхлүүлэх ёстой гэж NodeMCU -д хэлэх болно.

Эхлээд Adafruit -ийн бидэнд илгээсэн өгөгдлийг цуглуулцгаая

Хоосон тохиргооны дээд хэсэгт дараах кодыг нэмнэ үү ():

int adaData; // AdaFruit бидэнд илгээсэн өгөгдлийг цуглуулдаг

Одоо энэ өгөгдлийг цуглуулъя

Void handleMessage () дотор дараах кодыг нэмнэ үү.

adaData = data-> toInt ();

Void давталтаа өөрчилье ();

TIMER RYTHM одоо иймэрхүү харагдах ёстой.

// TIMER RYTHM эхлүүлэх ******************************************* ********* if (currentMillis - previousMillis> = интервал) {previousMillis = currentMillis; if (adaData == 0) {Serial.println ("би ажиллахгүй байна"); } if if (adaData == 1) {timer (); } strip.show (); } // TIMER RYTHM -ийг дуусгах ****************************************** ************

Кодыг ачаалах …

Одоо та Adafruit дахь унтраалгыг ашиглан таймерыг асаах, унтраах боломжтой байх ёстой!

Алхам 12: Эргэн тойрон тогло! Бид дууссан … эсвэл бид үү?

Яг одоо та бүрэн ажиллагаатай алсын таймертай байх ёстой! Хэрэв энэ нь танд зориулагдсан бол энэ төслийг хэрэгжүүлж байгаад баярлалаа!

Хэрэв та жаахан удаан үргэлжлүүлэхийг хүсч байвал дараагийн хэдэн алхамд бид цаг хэмжигчийнхээ RESET товчийг нэмж оруулах болно.

Алхам 13: Нэмэлт: Түр зуурын товчлуур үүсгэх

Нэмэлт: Түр зуурын товчлуур үүсгэх
Нэмэлт: Түр зуурын товчлуур үүсгэх

Хяналтын самбартаа буцаж орцгооё. Одоо бид дахин шинэ блок үүсгэхийг хүсч байна.

  1. Түр зуурын товчлуур үүсгэх
  2. Үүнийг 'таймер' тэжээлд холбоно уу
  3. Хэвлэлийн утгыг дараах байдлаар тохируулна уу: 2
  4. Хувилбарын утгыг арилгана уу
  5. Сайхан өнгө өгөөрэй!

Түр зуурын товчлуурыг аль хэдийн "Дахин тохируулах" гэж нэрлэдэг.

Та энэ блокыг үүсгэсний дараа үүнийг туршиж үзнэ үү.

хүлээн авсан <- 2

Таны цуваа монитор дээр.

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

Алхам 14: Нэмэлт: Дахин тохируулах функцийг нэмнэ үү

Дахин тохируулах товчлуурыг хийхийн тулд бид бүх LED -ийг анхны төлөвт нь буцаах функцийг нэмэх хэрэгтэй.

Void blinkie () доорх кодыг нэмнэ үү.

хүчингүй давтах () {leds = LED_COUNT; ledsOn (); }

Одоо бидний функцийг дуудах л үлдлээ, үүний тулд бид TIMER RYTHM -ийг сүүлчийн удаа өөрчлөх ёстой

TIMER RYTHM одоо иймэрхүү харагдах ёстой.

// TIMER RYTHM эхлүүлэх ******************************************* ********* if (currentMillis - previousMillis> = интервал) {өмнөхMillis = currentMillis if (adaData == 0) {Serial.println ("би ажиллахгүй байна"); } if if (adaData == 1) {timer (); } if if (adaData == 2) {rerun (); } strip.show (); } // TIMER RYTHM -ийг дуусгах ****************************************** ************

Кодыг ачаалах …

Одоо та товчлуур дээр дарж таймерыг дахин тохируулах боломжтой болно.

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