فهرست مطالب:

اعلان کننده: 17 مرحله
اعلان کننده: 17 مرحله

تصویری: اعلان کننده: 17 مرحله

تصویری: اعلان کننده: 17 مرحله
تصویری: اعلان نتایج ۸ بهترین - فصل چهاردهم ستاره افغان / Top 8 Elimination - Afghan Star S14 - Episode 17 2024, نوامبر
Anonim
اعلان کننده
اعلان کننده

می توان دستگاه را برای مثال به سیستم IFTTT متصل کرد و در صورت ظاهر شدن نامه جدید واکنش نشان داد. در app.remoteme.org پس از تماس پیوندی ایجاد می کنیم که بایت ها به Arduino ارسال می شوند و Arduino جلوه ای نوری نشان می دهد و mp3 را از SDcard پخش می کند

مرحله 1: آنچه مورد نیاز است

چیزی که لازم است
چیزی که لازم است
چیزی که لازم است
چیزی که لازم است
  • NodeMCU ، WemOS یا موارد مشابه
  • دو حلقه LED با دیودهای WS2812B (من از حلقه های led 16 استفاده کردم)
  • DFRobotDFPlayerMini - این پخش کننده mp3 است. mp3 را از SDcard پخش می کند و با RX/TX با Arduino ارتباط برقرار می کند
  • گوینده
  • کارت SD
  • مبدل منطقی -من از این دستگاه استفاده کرده ام ، پخش کننده mp3 از 5 ولت و آردوینو 3.3 استفاده می کند ، به همین دلیل ما به این مبدل نیاز داریم
  • دانش و مهارت ساخت PCB ساده توسط خود ما

برج:

  • مقوا - دو ضخامت متفاوت
  • ردیابی مقاله
  • ورقه ی آلومینیومی

مرحله 2: ساختمان برج

ساختمان برج
ساختمان برج
ساختمان برج
ساختمان برج
ساختمان برج
ساختمان برج
ساختمان برج
ساختمان برج

در بالای پل در نمای جانبی (ماجراجویی من با طراحی فنی در مدرسه ابتدایی به پایان رسید) ، همه ابعاد بر حسب میلی متر است.

اصل کارکرد

  1. حلقه LED هایی که نور را روشن می کنند
  2. ردیابی مقاله
  3. مخروط کوتاه ، ساخته شده از مقوا و پوشیده از فویل آلومینیومی ، بنابراین نورهای حلقه های led را منعکس می کند ، در شکل 3 "= مش برش خورده
  4. لوله کارتن - برج ها را به صورت عمودی نگه می دارد ، داخل لوله کابل هایی برای چراغ ها وجود دارد
  5. ارتفاع بستگی به شما دارد من 85 میلی متر دارم
  6. پایه در تمام قطعات الکترونیکی

همه عناصر افقی باید از مقوا ضخیم تر ساخته شوند.

مرحله 3: نمودار سیم کشی

نمودار سیم کشی
نمودار سیم کشی
نمودار سیم کشی
نمودار سیم کشی
نمودار سیم کشی
نمودار سیم کشی
نمودار سیم کشی
نمودار سیم کشی

پخش کننده mp3 با ولتاژ 5 ولت تغذیه می شود و از طریق TX / RX با آردوینو ارتباط برقرار می کند ، مبدل منطقی مورد نیاز است زیرا خود آردوینو روی ولتاژ 3.3 ولت کار می کند. کنترل حلقه ها نیز از طریق مبدل منطقی به آردوینو (D5 ، D6) متصل می شود.

در مخزن ، فایلهای عقاب با طرح های PCB را خواهید یافت

من پیشنهاد می کنم که آردوینو و دستگاه پخش کننده 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؛ // case standard green solid 2: setConfiguration (6، 0، 0، 50، 0، 20)؛ break؛ // case blue standard standard 3: setConfiguration (6 ، 50 ، 0 ، 0 ، 0 ، 20) ؛ break؛ // مورد استاندارد قرمز جامد 4: setConfiguration (6، 50، 10، 0، 0، 20)؛ شکستن؛ // مورد استاندارد نارنجی استاندارد جامد 5: setConfiguration (1، 0، 100، 0، 5، 2)؛ break؛ // case green green case 6: setConfiguration (1، 0، 100، 0، 5، -2)؛ شکستن ؛ // پلیس پرونده سبز را برگرداند 7: setConfiguration (1 ، 0 ، 0 ، 100 ، 5 ، 2) ؛ break؛ // case blue case case blue 8: setConfiguration (1، 0، 0، 100، 5، -2)؛ break؛ // police case blue 9 را برگرداند: setConfiguration (1، 100، 0، 0، 5، 2)؛ break؛ // استاندارد مورد قرمز پلیس 10: setConfiguration (1، 100، 0، 0، 5، -2)؛ break؛ // پلیس پرونده قرمز 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 case blue case 14: setConfiguration (2 ، 0 ، 0 ، 50 ، 8 ، -10) ؛ break؛ // cross revert case blue 15: setConfiguration (5، 0، 50، 0، 0، 20)؛ break؛ // چشمک زدن مورد سبز استاندارد 16: setConfiguration (5، 0، 50، 0، 0، -20)؛ break؛ // چشمک زدن odwyrtka green case 17: setConfiguration (5، 0، 0، 50، 0، 20)؛ break؛ // چشمک زدن مورد استاندارد آبی رنگ 18: setConfiguration (5 ، 0 ، 0 ، 50 ، 0 ، -20) ؛ break؛ // چشمک زدن برگرداندن مورد آبی 19: setConfiguration (5 ، 50 ، 0 ، 0 ، 0 ، 20) ؛ break؛ // چشمک زدن مورد قرمز استاندارد 20: setConfiguration (5، 50، 0، 0، 0، -20)؛ break؛ // چشمک زدن برگرداندن مورد قرمز 21: setConfiguration (5 ، 50 ، 10 ، 0 ، 0 ، 20) ؛ break؛ // چشمک زدن حالت استاندارد نارنجی 22: setConfiguration (5 ، 50 ، 10 ، 0 ، 0 ، -20) ؛ break؛ // چشمک زدن بازگشت نارنجی پیش فرض: setConfiguration (0، 0، 50، 0، 5، 1)؛ break؛ // off = 0}}

بسته به پارامتر داده شده ، حلقه جلوه را نشان می دهد. شما می توانید جلوه خود را با فراخوانی تابع set پیکربندی با پارامترهای جدید (تغییر رنگ ، سرعت نمایش) با افزودن یک حالت جدید یا افزودن یک جلوه کاملا جدید اضافه کنید - یا اگر دوست داشتم در نظرات به من اطلاع دهید جلوه جدیدی اضافه خواهم کرد

arduino.ino:

#شامل "Arduino.h" #شامل "SoftwareSerial.h" #شامل "DFRobotDFPlayerMini.h"

#عبارتند از

#شامل #شامل #شامل #SingleRing.h

#عبارتند از

#شامل #شامل شود

#عبارتند از

#تعریف WIFI_NAME ""

#تعریف WIFI_PASSWORD "" #تعریف DEVICE_ID 205 #تعریف آژیر "" تعریف TOKEN "DEVICE_NAME"

#DIODES_COUNT 16 تعریف کنید

SingleRing بالا = SingleRing (DIODES_COUNT ، D5) ؛

SingleRing bottom = 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 را وارد کنید!")) ؛ در حالی که (درست) ؛ } Serial.println (F ("DFPlayer Mini online.")) ؛

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 ()؛ }

boolean turnOff = true؛

turnOffMillis طولانی بدون امضا = 0؛

void onUserMessage (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 = RemoteMeMessagesUtils:: getUint8 (data، pos)؛

bottom.setMode (bottomMode) ؛

top.setMode (topMode) ؛ if (حالت == 1) {myDFPlayer.loop (trackNumber) ؛ } else {myDFPlayer.play (trackNumber) ؛ } turnOff = false؛ turnOffMillis = millis () + 1000 * زمان ؛ }

حلقه خالی ()

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

}

توضیح:

#تعریف WIFI_NAME "" #تعریف WIFI_PASSWORD "" #تعریف DEVICE_ID 205 #تعریف DEVICE_NAME "اعلان کننده" #تعریف TOKEN ""

ما باید داده های بالا را ارائه دهیم ، دستورالعمل های دقیق در اینجا در پیوند نیز نشان داده شده است که چگونه می توان در remoteme.org ثبت نام کرد و توکن را ایجاد کرد ،

void onUserMessage (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)؛

bottom.setMode (bottomMode) ؛

top.setMode (topMode) ؛ if (حالت == 1) {myDFPlayer.loop (trackNumber) ؛ } else {myDFPlayer.play (trackNumber) ؛ } turnOff = false؛ turnOffMillis = millis () + 1000 * زمان ؛ }

هنگامی که پیام به آردوینو می آید و اعلان را نمایش می دهد ، این تابع فراخوانی می شود. کد آنقدر واضح است که خودش را توصیف می کند. من به جزئیات کلاسها به اسناد و مدارک اینجا و اینجا اشاره می کنم

حلقه خالی () {remoteMe.loop ()؛ top.loop ()؛ bottom.loop ()؛ if (turnOffMillis <millis ()) {

اگر (! turnOff) {

top.clear ()؛

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

در حلقه ، ما توابع حلقه اشیاء را فراخوانی می کنیم و همچنین اگر زمان نمایش اعلان ها به پایان رسیده باشد ، دیودها و صدا را خاموش می کنیم.

مرحله 5: پخش کننده Mp3

پخش کننده Mp3
پخش کننده Mp3

از طریق TX / RX با Arduino ارتباط برقرار می کند - جزئیات مربوط به خود پخش کننده در اینجا ، و کتابخانه در اینجا

فایل های mp3 را روی کارت SD بارگذاری می کنیم. فایلهای روی کارت به ترتیب حروف الفبا مرتب شده و سپس با تماس زیر تماس می گیرند:

myDFPlayer.play (5) ؛

ما پنجمین فایل را از کارت SD از فهرست اصلی پخش می کنیم. به همین دلیل بهتر است فایل هایی را روی پیشوند کارت SD 01 ، 02 و غیره قرار دهید. در مورد من به نظر می رسد مانند صفحه چاپ بالا

برای ایجاد فرمان های صوتی می توانید از این صفحه استفاده کنید.

مرحله 6: بارگذاری برنامه در Arduino

بارگذاری برنامه بر روی آردوینو
بارگذاری برنامه بر روی آردوینو
بارگذاری برنامه بر روی آردوینو
بارگذاری برنامه بر روی آردوینو

قبل از بارگذاری طرح در Arduino ، باید کتابخانه های مورد نیاز را بارگیری کنید در اینجا دستورالعمل های دقیق را خواهید یافت

علاوه بر این ، ما باید کتابخانه DFRobotDFPlayerMini و Adafruit_NeoPixel را نصب کنیم

مرحله 7: کنترل

کنترل
کنترل
کنترل
کنترل

ما پنج بایت به Arduino خود ارسال می کنیم

  • اولین بایت جلوه نور برای حلقه LED بالا
  • اثر نور بایت دوم برای حلقه LED پایین
  • تعداد فایل mp3 که باید پخش شود
  • چند ثانیه تا چه مدت جلوه نور و mp3 پخش می شود
  • آیا mp3 باید یک بار پخش شود یا در یک حلقه (1 اگر باید در یک حلقه پخش شود)

با ارسال بایت

07 0F 01 05 01

حلقه بالا نشان دهنده چراغ های پلیس (حالت 6) پایین یکی سبز چشمک می زند (حالت 15) (عملکرد setMode را در singleRing.cpp و نظرات کنار آن را بررسی کنید). اولین فایل از کارت SD به مدت 5 ثانیه پخش می شود. و فایل در حلقه پخش می شود (تابع onUserMessage را در arduino.ino بررسی کنید)

بیایید این بایت ها را ارسال کنیم. به صفحه بالا نگاه کنید و روی آیکون ها به ترتیب نوشته شده توسط 1 ، 2 ، 3 کلیک کنید. پنجره ظاهر می شود

سپس به صفحه دوم نگاه کنید - و پنجره را مانند صفحه دوم پر کنید

پنجره ای که ظاهر می شود برای ارسال پیام به دستگاه استفاده می شود. در قسمت 1 ، دستگاه فرستنده را انتخاب کنید - زیرا ما فقط یک دستگاه داریم ، آن را انتخاب می کنیم (این یک فیلد اجباری است و مهم نیست که همان دستگاهی است که ما به آن پیام ارسال می کنیم) در قسمت 2 ما بایت را به send (با رنگ قرمز مقدار وارد شده در 2 به صورت یک رشته نشان داده می شود) سپس روی دکمه ارسال کلیک کنید.

پس از ارسال پیام ، اعلان کننده ما باید با نمایش جلوه های نورپردازی مناسب و پخش mp3 انتخاب شده واکنش نشان دهد. من شما را تشویق می کنم که با دادن دو بایت اول یک عدد بین 0 تا 22 جلوه های مختلف را امتحان کنید (توضیحات را در تابع setMode ببینید).

مرحله 8: ارسال پیام با استفاده از URL ها

ارسال پیام با استفاده از آدرس های اینترنتی
ارسال پیام با استفاده از آدرس های اینترنتی
ارسال پیام با استفاده از آدرس های اینترنتی
ارسال پیام با استفاده از آدرس های اینترنتی
ارسال پیام با استفاده از آدرس های اینترنتی
ارسال پیام با استفاده از آدرس های اینترنتی
ارسال پیام با استفاده از آدرس های اینترنتی
ارسال پیام با استفاده از آدرس های اینترنتی

اگر می خواهیم اعلان های یک برنامه خارجی مانند IFTTT را نمایش دهیم ، باید URL داشته باشیم که دقیقاً همان کاری را انجام دهد که در مرحله قبل در پنجره انجام دادیم. remoteme.org REST APi را ارائه می دهد. با کلیک روی برگه swagger در سمت چپ (آخرین مورد) به آن بروید. صفحه ای نمایش داده می شود ، در این صفحه ما همچنین می توانیم آدرس های اینترنتی خود را امتحان کنیم.

در صفحه اول شما عملکردی را دارید که باید گسترش دهید ، سپس داده ها را مانند صفحه دوم پر کنید.

داده ها را مانند تصویر بالا پر کنید. پس از کلیک بر روی اجرا پیامی ارسال می کنیم

070F010501

گیرنده دستگاهی با شناسه 205 است ، همان دستگاه نیز فرستنده است. MessageId با تنظیمات "No_RENEVAL" بی ربط است. و سپس روی Execute کلیک کنید. Notificator همانند ارسال پیام از برنامه واکنش نشان می دهد. پس از فراخوانی REST در زیر نشانی اینترنتی وجود دارد - به صفحه سوم نگاه کنید. و کپی و چسباندن به URL مرورگر با حاشیه سبز مشخص شده است. در صفحه چهارم مرورگر کروم من پس از چسباندن URL

در مورد من ، آدرس اینترنتی زیر است:

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

مرحله 9: نشانی اینترنتی متحرک برای ارسال پیام

آدرس متحرک برای ارسال پیام
آدرس متحرک برای ارسال پیام

در مرحله قبل شما یک آدرس اینترنتی دارید که داده ها را به دستگاه شما ارسال می کند. متأسفانه ، پس از خروج از برنامه app.remoteme.org ، عملکرد آن متوقف می شود. این به این دلیل است که ما توکن احراز هویت را ارائه نکرده ایم و دیگر وارد سیستم نشده ایم. بیایید توکن خود را دریافت کنیم (یا یک کد جدید ایجاد کنیم) و آن را به جای ستاره در نشانی اینترنتی بچسبانیم.

به صفحه نگاه کنید و نشان * خود را در 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

آدرس اینترنتی ایجاد شده در مرحله بالا برای اجرای برنامه های خارجی مناسب است. نحوه استفاده از آن را در IFTTT نشان خواهم داد. من آن را طوری پیکربندی می کنم که وقتی یک ایمیل به آدرس ایمیل (حساب Gmail) می آید اعلان کننده روشن شود.

وارد IFTTT شوید. سپس به برگه My Applets و سپس "New Applet"- صفحه اول بروید

مرحله 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

اکنون روی "+ that" کلیک می کنیم

مرحله 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 تایپ کنید و روی “create action” و Finish کلیک کنید. اکنون ما اپلت خود را داریم:

مرحله 17: خلاصه

در این آموزش ، نحوه ارسال پیام های Arduino از سیستم های خارجی را نشان دادم. ما همچنین برخی از سیستم های دیگر و سپس IFTTT را به روشی مشابه ادغام می کنیم. لزوماً لازم نیست یک "اعلان کننده" باشد که من می خواستم در این مثال نحوه ارسال پیام از سیستم های خارجی به آردوینو را نشان دهم.

sourcecodesFanPage در فیس بوک

به سلامتی ، مسیک

توصیه شده: