فهرست مطالب:
- تدارکات
- مرحله 1: بیایید یک خوراک در Adafruit ایجاد کنیم
- مرحله 2: حالا بیایید یک داشبورد بسازیم
- مرحله 3: کلید ما را دریافت کنید
- مرحله 4: مثال خواندن Feed را باز کنید
- مرحله 5: بیایید اتصال خود را تنظیم کنیم
- مرحله 6: اتصال به Adafruit IO را بررسی کنید
- مرحله 7: اجازه دهید LED
- مرحله 8: زمان بندی را به تایمر اضافه کنید
- مرحله 9: شمارش معکوس
- مرحله 10: آن را از راه دور کنترل کنید: قسمت اول
- مرحله 11: آن را از راه دور کنترل کنید: قسمت دوم
- مرحله 12: بازی در اطراف! ما تمام شدیم … یا داریم؟
- مرحله 13: EXTRA: ایجاد دکمه لحظه ای
- مرحله 14: EXTRA: عملکرد Reset را اضافه کنید
تصویری: تایمر کنترل از راه دور با NodeMCU: 14 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
در اینجا ما قصد داریم یک تایمر با استفاده از NodeMCU و Adafruit ایجاد کنیم. ما قصد داریم تایمر خود را با یک نوار LED نمایش دهیم و می توانیم آن را با استفاده از تلفن یا رایانه خود کنترل کنیم!
هدف ما:
با استفاده از یک نوار LED یک تایمر ایجاد کنید که می توانیم: با استفاده از تلفن یا رایانه خود شروع ، مکث و تنظیم مجدد کنیم.
تدارکات
سخت افزار:
- NodeMCU ESP 8266
- نوار LED Adafruit NeoPixel
کتابخانه ها:
- Adafruit_NeoPixel.h
- AdafruitIO_WiFi.h
دیگر:
اتصال وای فای مناسب
مرحله 1: بیایید یک خوراک در Adafruit ایجاد کنیم
اکنون که همه چیز مورد نیاز خود را تهیه کرده ایم ، آماده شروع ساخت و ساز هستیم! اول از همه ما باید یک خوراک در Adafruit ایجاد کنیم. Adafruit سرویسی است که ما را برای اتصال آردوینو به اینترنت و ایجاد ویژگی های مفید از راه دور بسیار آسان می کند. اگر قبلاً ثبت نام نکرده اید ، برای Adafruit ثبت نام کنید.
حالا بیایید یک فید جدید ایجاد کنیم
ما می توانیم نام خوراک خود را هر چیزی که می خواهیم بگذاریم ، من آن را "تایمر" می نامم.
کاری که یک فید انجام می دهد این است که همه کارهایی را که ما در داشبورد خود انجام می دهیم (که در عرض یک دقیقه ایجاد می کنیم) ثبت کرده و این داده ها را به برد ما ارسال می کند ، اما این چیزی است که ما در صورت داشتن داده ها برای ارسال به آن نگاه می کنیم.
مرحله 2: حالا بیایید یک داشبورد بسازیم
اکنون به همان روشی که یک فید ایجاد کردیم ، یک داشبورد جدید ایجاد می کنیم. داشبورد خود را "رابط تایمر" می نامم زیرا اساساً داشبورد ما این خواهد بود: رابطی با دکمه ها برای کنترل تایمر ما.
مرحله 3: کلید ما را دریافت کنید
اگر می خواهیم Arduino خود را به خوراک خود متصل کنیم ، باید کلید Adafruit خود را دریافت کنیم ، این رمز عبور مخفی شماست که مطمئن می شوید فقط شما می توانید به فیدهای خود متصل شوید.
می توانید کلید خود را با کلیک روی دکمه زرد AIO Key در سمت راست بالای صفحه خود در Adafruit دریافت کنید.
این کلید را در جایی ذخیره کنید ، بعداً به آن نیاز خواهیم داشت.
کلید خود را به اشتراک نگذارید! در غیر این صورت افرادی با نیت بد می توانند به فیدها و دستگاه های شما متصل شوند.
مرحله 4: مثال خواندن 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 را با موفقیت باز کرده اید ، باید 2 زبانه در طرح خود مشاهده کنید: adafruitio_21_feed_read و config.h. این طرح به گونه ای ساخته شده است که بتوانیم به خوراکی که در مرحله 1 ساخته بودیم متصل شویم.
برای اتصال به این فید ، ما باید جزئیات مربوط به WiFi و حساب Adafruit خود را وارد کنیم ،
بیایید به config.h سفر کنیم ، در اینجا جزئیات زیر را پر می کنیم:
نام کاربری Adafruit شما:
#تعریف IO_USERNAME "joopert"
کلید Adafruit شما:
#تعریف IO_KEY "1234567890abcdefghijklmnop"
نام وای فای شما:
#تعریف WIFI_SSID "MyWifi"
و رمز وای فای شما:
#تعریف WIFI_PASS "aVerySecretPassword"
حالا بیایید به برگه adafruitio_21_feed_read برگردیم و موارد زیر را پر کنیم:
نام کاربری Adafruit شما… دوباره:
#تعریف FEED_OWNER "joopert"
و در نهایت نام فید شما (از فید که در مرحله 1 ایجاد کردیم):
AdafruitIO_Feed *sharedFeed = io.feed ("تایمر" ، FEED_OWNER) ؛
مرحله 6: اتصال به Adafruit IO را بررسی کنید
برای بررسی اینکه آیا مراحل قبل ما به درستی اجرا شده است یا خیر ، ما قصد داریم طرح خود را در NodeMCU بارگذاری کنیم. اگر مانیتور سریال خود را باز کنید ، باید شبیه تصویر بالا باشد. ابتدا مانیتور سریال به شما نشان می دهد که سعی دارد به WiFi شما و Adafruit متصل شود. اگر کامل است باید بگوید:
Adafruit IO متصل شد
این یک خبر عالی است! اکنون می توانیم عملکرد را به تایمر خود اضافه کنیم…
مرحله 7: اجازه دهید LED
اکنون وقت آن است که نوار LED را روشن کنیم!
نوار LED خود را به پین D5 وصل کنید (اگر D5 را پیدا نکردید آن را به یک پین دیگر وصل کنید و LED_PIN را در کد تغییر دهید).
نوار LED را تعریف کنید
کد زیر کتابخانه NeoPixel را اضافه می کند (در مورد این کتابخانه اینجا بیشتر بدانید: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) و مطمئن شوید که Arduino ما می داند نوار LED ما کجاست و چند چراغ دارد اگر نوار LED شما مشخصات متفاوتی دارد ، آن را در کد تغییر دهید.
کد زیر را در بالا (void setup) اضافه کنید:
// راه اندازی اتصال NeoPixel #شامل #ifdef _AVR_ #شامل #endif
#تعریف 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 () اضافه کنید:
strip.begin ()؛ // INITIALIZE NeoPixel strip object (REQUIRED) strip.show ()؛ // خاموش کردن همه پیکسل ها ASAP strip.setBrightness (50) ؛ // روشنایی را روی حدود 1/5 تنظیم کنید (حداکثر = 255)
ledsOn ()؛ // با عملکرد تماس می گیرد تا هر LED را یکی یکی روشن کند
چراغ ها را روشن کنید
شاید قبلاً متوجه شده اید که ما یک تابع را فرا می خوانیم که هنوز وجود ندارد ، که قسمت بعدی برنامه نویسی ما خواهد بود. اگر می خواهیم چراغ های خود را روشن کنیم باید یک "برای حلقه" ایجاد کنیم که تک تک LED ها را یک به یک روشن می کند (نمی دانم حلقه for چیست؟ آن را اینجا ببینید: www.arduino.cc/reference/ fa/زبان/ساختار/کنترل-ساختار/برای/).
اکنون ما قصد داریم تابع را ایجاد کنیم: ledsOn ()؛
کد زیر را BOWOW void handleMessage () اضافه کنید:
void ledsOn () {for (int i = 0؛ i <strip.numPixels ()؛ i ++) {// برای هر پیکسل در نوار… strip.setPixelColor (i، 0، 0، 255)؛ // رنگ پیکسل را روی blue strip.show () تنظیم کنید؛ // نوار را برای مطابقت به روز کنید}}
بارگذاری
در حال حاضر بخش سرگرم کننده است ، اجازه دهید کد خود را در NodeMCU بارگذاری کنیم … اگر همه چیز درست کار می کند ، نوار LED شما اکنون باید کاملاً آبی شود!
آیا پیکسلی نمایش داده نمی شود ؟: آیا نوار را به پین سمت راست وصل کرده اید؟ یا شاید اتصال اینترنت شما قطع شده باشد.
آیا فقط برخی از پیکسل ها نشان داده نمی شوند ؟: بررسی کنید که آیا مقدار مناسب پیکسل را تنظیم کرده اید!
مرحله 8: زمان بندی را به تایمر اضافه کنید
اکنون ما مطمئن می شویم که زمان سنج ما در واقع … خوب … زمان ، چیزی است.
روش های مختلفی برای انجام زمان بندی با آردوینو وجود دارد ، یکی تأخیر است () ، این امر پردازش برد ما را برای مدت زمان معینی متوقف می کند. ما قصد نداریم از این استفاده کنیم زیرا آردوینو ما اساساً در طول تاخیر یخ می زند و ما می خواهیم تخته ما به طور مرتب به روز شود. بنابراین ما قصد داریم از Millis () استفاده کنیم ، این یک روش ظریف تر برای انجام زمان بندی در آردوینو است ، با Millis () ما هنوز می توانیم کد را بین فواصل اجرا کنیم.
اگر به نحوه عملکرد این برنامه علاقه دارید ، می توانید این مقاله را بررسی کنید:
بیایید کد Millis () را اضافه کنیم:
این کد را در بالای تنظیمات void قرار دهید ()
امضا نشده longMillis = 0؛ // آخرین باری که نوار LED به روز شد ذخیره می شود </ b> فاصله زمانی = 1000؛ // فاصله زمان سنج ما (میلی ثانیه)
و اجازه دهید این کد را در حلقه void () قرار دهیم:
جریان طولانی بدون امضا Millis = millis ()؛// شروع TIMER RYTHM ****************************************** ********* if (currentMillis - previousMillis> = فاصله) {previousMillis = currentMillis؛
// پایان TIMER RYTHM ****************************************** ************
کاری که ما انجام دادیم این بود که یک نوار LED برای خاموش کردن LED ها ایجاد کنیم ، در مرحله بعد ما کد را برای انجام این کار اضافه می کنیم.
مرحله 9: شمارش معکوس
در این مرحله: ما عملکردی را ایجاد می کنیم که مطمئن می شود هر ثانیه (یا هر بازه ای که تنظیم کرده اید) یک LED را در انتهای نوار خاموش می کنیم تا زمانی که همه LED های ما خاموش شوند.
ما یک "int" در بالا به نام "leds" ایجاد می کنیم. این بعداً به تایمر ما می گوید که چند led هنوز باید خاموش شود.
کد زیر را در بالا (void setup) اضافه کنید:
int leds = LED_COUNT-1؛ // تعداد پیکسل ها را روشن می کند
حالا بیایید تابع 'timer ()؛' را اضافه کنیم ، در این صورت هر ثانیه یک چراغ خاموش می شود
کد زیر را در زیر () void ledsOn () اضافه کنید:
void timer () {strip.setPixelColor (leds، 0، 0، 0)؛
if (leds> -1) {leds--؛ } else {blinkie ()؛ }}
ما می خواهیم بازخوردی به کاربر بدهیم که زمان سنج بعد از تمام شدن چراغ ها تمام شده است. با 'blinkie ()؛' پس از اتمام تایمر ، LED ها قرمز چشمک می زنند!
کد زیر را در بالا (void setup) اضافه کنید:
int blinkStatus = 1؛ // به blinkie () می گوید؛ عملکرد در شرایطی که چراغ باید روشن یا خاموش باشد
کد زیر را در زیر تایمر خلاء () اضافه کنید:
void blinkie () {if (blinkStatus == 1) {
blinkStatus = 0؛ strip.clear ()؛ } else {blinkStatus = 1؛ برای (int i = 0؛ i <strip.numPixels ()؛ i ++) {// برای هر پیکسل در نوار… strip.setPixelColor (i، 255، 0، 0)؛ // تنظیم رنگ پیکسل (در RAM) strip.show ()؛ // نوار را برای مطابقت به روز کنید}}}}
سرانجام ما باید تابع را در حلقه void خود فراخوانی کنیم () ،،
TIMER RYTHM را که در مرحله 8 اضافه کردیم به خاطر دارید؟ در این دستور if ما تابع timer () ؛.
TIMER RYTHM اکنون باید شبیه این باشد:
// شروع TIMER RYTHM ****************************************** *********
if (currentMillis - previousMillis> = فاصله) {previousMillis = currentMillis ؛ تایمر ()؛ strip.show ()؛} // پایان TIMER RYTHM ************************************ *******************
حالا این کد را بارگذاری کنید!
در حال حاضر نوار LED شما باید 1 LED را در هر ثانیه خاموش کند و وقتی کار تمام شد قرمز چشمک می زند…
حالا بیایید این دوستدار مادر را از راه دور کنترل کنیم!
مرحله 10: آن را از راه دور کنترل کنید: قسمت اول
ما تایمر خود را داریم ، همه چیز خوب و عالی است ، اما من به شما قول دادم که می توانید آن را با تلفن خود کنترل کنید ، درست است؟ بیایید وارد آخرین مرحله پروژه خود شویم: کنترل از راه دور تایمر خود را.
هنوز برگه Adafruit شما باز است؟ بیایید به io.adafruit.com برگردیم و به داشبورد رابط تایمر خود برویم و یک بلوک جدید ایجاد کنیم: TOGGLE
- ضامن را به فید TIMER وصل کنید
- مقدار ON را روی: 1 تنظیم کنید
- مقدار OFF را روی: 0 تنظیم کنید
دلیل این امر این است که Adafruit داده های متنی را به NodeMCU ما ارسال نمی کند ، بلکه فقط شماره ها را ارسال می کند.
در صورت تمایل می توانید نامی را برای Toggle بگذارید ، شاید: "روشن/خاموش"
حالا بیایید به سراغ IDE آردوینو برویم
فقط برای اطمینان از به روز بودن کد ما ، بیایید یکبار دیگر کد خود را آپلود کنیم.
پس از اتمام بارگذاری ، مانیتور سریال را باز کنید و TOGGLE را در داشبورد Adafruit ما چند بار فشار دهید. اکنون باید چیزی شبیه به این را در مانیتور سریال خود مشاهده کنیم:
دریافت <- 0 دریافت <- 1 دریافت <- 0 دریافت <- 1 دریافت <- 1 دریافت <- 0
این بدان معناست که ما در واقع می توانیم کنترل ها را به NodeMCU خود ارسال کنیم!
اگر این پیام ها را دریافت نمی کنید ، بررسی کنید که آیا اطلاعات Adafruit شما در config.h هنوز صحیح است.
مرحله 11: آن را از راه دور کنترل کنید: قسمت دوم
اکنون تنها چیزی که باقی مانده این است که با کنترل های دریافتی ما کاری انجام دهیم.
برای انجام این کار باید دستور TIMER RYTHM if خود را در حلقه void () تغییر دهیم. کمی.
ما به NodeMCU خود می گوییم که فقط زمانی باید تایمر را شروع کنیم که "1" (که به معنی: روشن است) را از Adafruit دریافت کرده باشیم.
ابتدا اجازه دهید داده هایی را که Adafruit برای ما ارسال می کند ، جمع آوری کنیم
کد زیر را در بالا (void setup) اضافه کنید:
int adaData؛ // داده هایی را که AdaFruit برای ما ارسال می کند جمع آوری می کند
حالا بیایید در واقع آن داده ها را جمع آوری کنیم
کد زیر را INSIDE void handleMessage () اضافه کنید:
adaData = data-> toInt ()؛
حلقه خالی خود را تغییر دهیم ()؛
TIMER RYTHM اکنون باید شبیه این باشد:
// شروع TIMER RYTHM ****************************************** ********* if (currentMillis - previousMillis> = فاصله) {previousMillis = currentMillis؛ if (adaData == 0) {Serial.println ("در حال اجرا نیستم")؛ } else if (adaData == 1) {timer ()؛ } strip.show ()؛ } // پایان TIMER RYTHM ***************************************** *************
کد خود را آپلود کنید…
اکنون باید بتوانید با استفاده از سوئیچ در Adafruit تایمر را روشن و خاموش کنید!
مرحله 12: بازی در اطراف! ما تمام شدیم … یا داریم؟
در حال حاضر شما باید یک تایمر از راه دور کاملاً کارآمد داشته باشید! اگر این برای شما مناسب است ، از شما برای همراهی با این پروژه متشکرم!
اگر می خواهید کمی بیشتر ادامه دهید ، در چند مرحله بعدی ما یک دکمه RESET برای تایمر خود اضافه می کنیم!
مرحله 13: EXTRA: ایجاد دکمه لحظه ای
بیایید به داشبورد خود بازگردیم. حالا می خواهیم دوباره یک بلاک جدید بسازیم.
- یک دکمه Momentary ایجاد کنید
- آن را به فید "تایمر" وصل کنید
- مقدار مطبوعات را روی: 2 تنظیم کنید
- حذف مقدار انتشار
- رنگ زیبایی به آن بدهید!
به راحتی دکمه لحظه ای "Reset" نامیده می شود!
هنگامی که این بلوک را ایجاد کردید آن را آزمایش کنید ، اگر دریافت کنید دکمه کار می کند:
دریافت کرد <- 2
در مانیتور سریال شما
اگر این پیام را نمی بینید ، طرح را دوباره بارگذاری کنید
مرحله 14: EXTRA: عملکرد Reset را اضافه کنید
برای اینکه دکمه تنظیم مجدد هر کاری را انجام دهد ، باید عملکردی را اضافه کنیم که همه LED ها را به حالت اولیه بازگرداند.
کد زیر را در زیر () void blinkie () اضافه کنید:
void rerun () {leds = LED_COUNT؛ ledsOn ()؛ }
اکنون تنها چیزی که باقی مانده این است که عملکرد ما را فراخوانی کنیم ، برای این کار باید آخرین بار TIMER RYTHM را تغییر دهیم
TIMER RYTHM اکنون باید شبیه این باشد:
// شروع TIMER RYTHM ****************************************** ********* if (currentMillis - previousMillis> = فاصله) {previousMillis = currentMillis if (adaData == 0) {Serial.println ("در حال اجرا نیستم") ؛ } else if (adaData == 1) {timer ()؛ } else if (adaData == 2) {rerun ()؛ } strip.show ()؛ } // پایان TIMER RYTHM ***************************************** *************
کد خود را آپلود کنید…
حالا شما همچنین باید بتوانید با فشار دادن دکمه تایمر را تنظیم مجدد کنید!
توصیه شده:
ESP8266 - سوکت کنترل از راه دور و از راه دور (امنیت سالمندان): 6 مرحله
ESP8266 - سوکت کنترل از راه دور و از راه دور (امنیت سالمندان): اطلاعات: این مونتاژ در صورت فراموشی وسایل وصل شده (عمدتا توسط افراد مسن مبتلا به آلزایمر) به منظور جلوگیری از گرم شدن بیش از حد ، آتش سوزی و حوادث است. پس از فعال شدن دکمه ، سوکت 110/220 VAC را به مدت 5 دقیقه دریافت می کند (دیگری
کنترل از راه دور جهانی از راه دور با Node-MCU: 12 مرحله
کنترل از راه دور جهانی با Node-MCU: سلام به همه و به این پروژه خوش آمدید! من یک شخص تنبل هستم و کابوس یک تنبل این است که وقتی متوجه می شوید که راه دور خیلی دور است ، تلویزیون تماشا کنید! متوجه شدم که اگر ریموتم را در دست داشته باشم هرگز خیلی دور نخواهد بود
IRduino: کنترل از راه دور Arduino - تقلید از راه دور از دست رفته: 6 مرحله
IRduino: کنترل از راه دور Arduino - تقلید از راه دور گمشده: اگر تا به حال کنترل از راه دور تلویزیون یا دستگاه پخش DVD خود را گم کرده اید ، می دانید که مجبور هستید به دکمه های خود دستگاه بروید ، از آن استفاده کنید و از آن استفاده کنید. گاهی اوقات ، این دکمه ها عملکرد مشابهی با ریموت ندارند. دریافت
ESP8266 RGB LED STRIP WIFI کنترل - NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi - کنترل تلفن هوشمند RGB LED STRIP: 4 مرحله
ESP8266 RGB LED STRIP WIFI کنترل | NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi | RGB LED STRIP Smartphone Control: سلام بچه ها در این آموزش می آموزیم که چگونه از nodemcu یا esp8266 به عنوان ریموت IR برای کنترل نوار LED RGB استفاده کنید و Nodemcu توسط تلفن هوشمند از طریق وای فای کنترل می شود. بنابراین اساساً می توانید RGB LED STRIP را با تلفن هوشمند خود کنترل کنید
کنترل از راه دور سایه/کنترل از راه دور: 5 مرحله
Shadow/Remote Control Activated Leds: آیا تا به حال خواسته اید یک نور فعال شده در شب یا سایه ایجاد کنید؟ خوب .. در اینجا یک دستورالعمل وجود دارد ، اما یک مورد اضافی وجود دارد: می توانید آن را با کنترل RF از راه دور فعال کنید. این بسیار قدرتمند است ، من می توانم اتاق سوراخ خود را روشن کنم