فهرست مطالب:
- مرحله 1: آنچه مورد نیاز است
- مرحله 2: ساختمان برج
- مرحله 3: نمودار سیم کشی
- مرحله 4: اصل عملکرد
- مرحله 5: پخش کننده Mp3
- مرحله 6: بارگذاری برنامه در Arduino
- مرحله 7: کنترل
- مرحله 8: ارسال پیام با استفاده از URL ها
- مرحله 9: نشانی اینترنتی متحرک برای ارسال پیام
- مرحله 10: ادغام با IFTTT 1/7
- مرحله 11: ادغام با IFTTT 2/7
- مرحله 12: ادغام با IFTTT 3/7
- مرحله 13: ادغام با IFTTT 4/7
- مرحله 14: ادغام با IFTTT 5/7
- مرحله 15: ادغام با IFTTT 6/7
- مرحله 16: ادغام با IFTTT 7/7
- مرحله 17: خلاصه
تصویری: اعلان کننده: 17 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
می توان دستگاه را برای مثال به سیستم 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: ساختمان برج
در بالای پل در نمای جانبی (ماجراجویی من با طراحی فنی در مدرسه ابتدایی به پایان رسید) ، همه ابعاد بر حسب میلی متر است.
اصل کارکرد
- حلقه LED هایی که نور را روشن می کنند
- ردیابی مقاله
- مخروط کوتاه ، ساخته شده از مقوا و پوشیده از فویل آلومینیومی ، بنابراین نورهای حلقه های led را منعکس می کند ، در شکل 3 "= مش برش خورده
- لوله کارتن - برج ها را به صورت عمودی نگه می دارد ، داخل لوله کابل هایی برای چراغ ها وجود دارد
- ارتفاع بستگی به شما دارد من 85 میلی متر دارم
- پایه در تمام قطعات الکترونیکی
همه عناصر افقی باید از مقوا ضخیم تر ساخته شوند.
مرحله 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
از طریق 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 نشان خواهم داد. من آن را طوری پیکربندی می کنم که وقتی یک ایمیل به آدرس ایمیل (حساب Gmail) می آید اعلان کننده روشن شود.
وارد IFTTT شوید. سپس به برگه My Applets و سپس "New Applet"- صفحه اول بروید
مرحله 11: ادغام با IFTTT 2/7
سپس روی "+این" کلیک کنید
مرحله 12: ادغام با IFTTT 3/7
سپس در قسمت "خدمات جستجو" "Gmail" را بنویسید
سپس "ایمیل جدید در صندوق ورودی" (ممکن است به پیکربندی مورد نیاز باشد).
مرحله 13: ادغام با IFTTT 4/7
اکنون روی "+ that" کلیک می کنیم
مرحله 14: ادغام با IFTTT 5/7
"Webhooks" را پیدا کرده و روی آن کلیک کنید
مرحله 15: ادغام با IFTTT 6/7
سپس "درخواست وب" کنید
مرحله 16: ادغام با IFTTT 7/7
ما آدرس url خود را با توکن تکمیل می کنیم. محتوا را در application / json تایپ کنید و روی “create action” و Finish کلیک کنید. اکنون ما اپلت خود را داریم:
مرحله 17: خلاصه
در این آموزش ، نحوه ارسال پیام های Arduino از سیستم های خارجی را نشان دادم. ما همچنین برخی از سیستم های دیگر و سپس IFTTT را به روشی مشابه ادغام می کنیم. لزوماً لازم نیست یک "اعلان کننده" باشد که من می خواستم در این مثال نحوه ارسال پیام از سیستم های خارجی به آردوینو را نشان دهم.
sourcecodesFanPage در فیس بوک
به سلامتی ، مسیک
توصیه شده:
هنگامی که یک کانال در ThingSpeak مدتی به روز نشد ، یک ایمیل اعلان دریافت کنید: 16 مرحله
دریافت یک ایمیل اعلان هنگامی که یک کانال در ThingSpeak مدتی به روز نشد با استفاده از یک برنامه تلفن همراه سفارشی ، می توانم از راه دور ویژگی های خودکار هر گلخانه را رصد کرده و با آنها تعامل داشته باشم. من می توانم دستی پیروزی را باز / بسته کنم
ماژول آردوینو + GPS - اعلان کننده مقصد: 6 مرحله
ماژول آردوینو + GPS - اعلان کننده مقصد: چقدر زمان را در ترافیک هدر می دهیم؟ من یک اعلان کننده مقصد با قدرت آردوینو تهیه کردم تا از این زمان به نحو احسن استفاده کنم. همه می دانند که ترافیک می تواند زمان زیادی را هدر دهد. و نمی توان پیش بینی کرد که چقدر طول می کشد
اعلان کننده گوشت تازه: 7 مرحله
Fresh Meat Notifier: وسیله ای برای تازه نگه داشتن ملاقات. این پروژه به این دلیل ادامه پیدا کرد که من در یکی از کلاسهایم برای حل مشکل با استفاده از مهارتهایی که در کلاس آموخته بودیم ، به چالش کشیده شد. بلافاصله به چیزی فکر کردم که چند سال پیش برای خانواده ام اتفاق افتاد. یک مبلغ
شبیه دشمن خود باشید: نشانه هایی ایجاد کنید که گیج کننده ، مبهوت کننده و تقلید کننده باشد!: 6 مرحله (همراه با تصاویر)
شبیه دشمن خود باشید: نشانه هایی ایجاد کنید که باعث گیج شدن ، حیرت و تقلید می شود !: در این مقاله آموزشی طراحی استتار را خواهید آموخت. در پروژه های گذشته ، من تکنیک های مختلفی را برای تقلید از علائم دولتی یا شرکتی اختصاص داده و اصلاح کرده ام. استفاده از روش هایی که در مراحل زیر بیان شده است به شما امکان می دهد به طور موقت
چگونه می توان یک تیرکمان بچه گانه جیغ کننده ThinkGeek را به یک تست کننده تداوم سرگرم کننده تبدیل کرد: 6 مرحله
چگونه می توان یک تیرکمان بچه گانه جیغ کننده ThinkGeek را به یک تست کننده تداوم مفرح تبدیل کرد: آیا تا به حال شده است که از صدای بوق استاندارد تسترهای پیوستگی خسته شده باشید؟ من دارم ، بنابراین از بقایای تیرکمان بچه میمون جیغی استفاده کردم که به یک هدست بلوتوث در https://www.instructables.com/id/How_to_turn_a_ThinkGeek_Screamin