جدول المحتويات:

المحضر: 17 خطوة
المحضر: 17 خطوة

فيديو: المحضر: 17 خطوة

فيديو: المحضر: 17 خطوة
فيديو: مسلسل القضية 6008 الحلقة 17 السابعة عشر | بطولة صفاء سلطان و فاديا خطاب 2024, شهر نوفمبر
Anonim
المفكر
المفكر

يمكن توصيل الجهاز على سبيل المثال بنظام IFTTT والرد عند ظهور بريد جديد. في app.remoteme.org ، سننشئ رابطًا بعد الاتصال الذي سيتم إرسال البايتات إلى Arduino ، وسيعرض Arduino بعض التأثيرات الضوئية وتشغيل بعض ملفات mp3 من SDcard

الخطوة الأولى: ما هو المطلوب

ما هو المطلوب
ما هو المطلوب
ما هو المطلوب
ما هو المطلوب
  • NodeMCU أو WemOS أو شيء مشابه
  • حلقتا LED مع ثنائيات WS2812B (لقد استخدمت حلقات المصابيح السادسة عشرة)
  • DFRobotDFPlayerMini - هذا مشغل mp3. يقوم بتشغيل mp3 من SDcard ، والتواصل مع Arduino بواسطة RX / TX
  • مكبر الصوت
  • بطاقة الذاكرة
  • محول المنطق - لقد استخدمت هذا ، مشغل mp3 يستخدم 5 فولت و Arduino 3.3 ولهذا السبب نحتاج إلى هذا المحول
  • المعرفة والمهارات اللازمة لصنع ثنائي الفينيل متعدد الكلور بسيط بأنفسنا

البرج:

  • كرتون - سمكان مختلفان
  • ورق الإستشفاف
  • ورق ألومنيوم

الخطوة الثانية: بناء البرج

بناء البرج
بناء البرج
بناء البرج
بناء البرج
بناء البرج
بناء البرج
بناء البرج
بناء البرج

فوق مخطط البرج في منظر جانبي (انتهت مغامرتي بالرسم الفني في المدرسة الابتدائية) ، جميع الأبعاد بالمليمترات.

مبدأ التشغيل

  1. حلقة من المصابيح تسليط الضوء على
  2. ورق الإستشفاف
  3. المخروط المقطوع ، المصنوع من الورق المقوى والمغطى بورق الألمنيوم ، بحيث يعكس الأضواء من حلقات الصمام ، في الشكل 3 '= الشبكة المقطوعة
  4. أنبوب كرتوني - يحمل الأبراج عموديًا ، يوجد داخل الأنبوب كبلات للمصابيح
  5. الارتفاع يعتمد عليك لدي 85 ملم
  6. الاستاند داخل جميع قطع الإلكترونيات

يجب أن تكون جميع العناصر الأفقية مصنوعة من الورق المقوى السميك.

الخطوة 3: مخطط الأسلاك

الاسلاك الرسم البياني
الاسلاك الرسم البياني
الاسلاك الرسم البياني
الاسلاك الرسم البياني
الاسلاك الرسم البياني
الاسلاك الرسم البياني
الاسلاك الرسم البياني
الاسلاك الرسم البياني

يتم تزويد مشغل mp3 بجهد 5 فولت ويتصل بـ Arduino عبر TX / RX ، يلزم وجود محول منطقي لأن Arduino نفسه يعمل بجهد 3.3 فولت. يرتبط التحكم في الحلقات أيضًا بـ Arduino (D5 ، D6) من خلال المحول المنطقي.

في المستودع ، ستجد ملفات النسر مع خطط PCB

أقترح عدم لحام Arduino ومشغل mp3 بشكل دائم فقط لاستخدام دبابيس الذهب النسائية

الخطوة 4: مبدأ العملية

يتصل Arduino الخاص بنا بنظام app.remoteme.org باستخدام WebSockets (توجد مكتبات جاهزة) من خلال هذا الاتصال ، يتم إرسال رسائل 5 بايت:

  • البايت الأول من تأثير الضوء لحلقة LED العلوية
  • تأثير ضوء البايت الثاني لحلقة LED السفلية
  • رقم ملف mp3 المراد تشغيله
  • عدد الثواني كم من الوقت سيتم تشغيل تأثير الضوء و mp3
  • ما إذا كان ينبغي تشغيل mp3 مرة واحدة أو في حلقة

مصدر الرمز

كود المصدر الكامل يمكنك أن تجده هنا

في ملفي SingleRing.cpp و SingleRing.h توجد فئة للتحكم في تأثيرات حلقات LED. أقترح أن تبدأ بالنظر في وظيفة setMode (int m):

باطل SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0، 0، 50، 0، 5، 1) ؛ استراحة ؛ // إيقاف = 0 حالة 1: setConfiguration (6 ، 0 ، 50 ، 0 ، 0 ، 20) ؛ استراحة ؛ // حالة خضراء قياسية صلبة 2: setConfiguration (6 ، 0 ، 0 ، 50 ، 0 ، 20) ؛ كسر ؛ // حالة زرقاء صلبة قياسية 3: setConfiguration (6 ، 50 ، 0 ، 0 ، 0 ، 20) ؛ كسر ؛ // حالة حمراء قياسية صلبة 4: setConfiguration (6 ، 50 ، 10 ، 0 ، 0 ، 20) ؛ كسر ؛ // حالة برتقالية صلبة قياسية 5: setConfiguration (1 ، 0 ، 100 ، 0 ، 5 ، 2) ؛ استراحة ؛ // حالة الشرطة الخضراء في اتجاه عقارب الساعة 6: setConfiguration (1 ، 0 ، 100 ، 0 ، 5 ، -2) ؛ استراحة ؛ // عودة الشرطة للحالة الخضراء 7: setConfiguration (1 ، 0 ، 0 ، 100 ، 5 ، 2) ؛ كسر ؛ // حالة الشرطة الزرقاء في اتجاه عقارب الساعة 8: setConfiguration (1 ، 0 ، 0 ، 100 ، 5 ، -2) ؛ استراحة ؛ // عودة الشرطة للحالة الزرقاء 9: setConfiguration (1 ، 100 ، 0 ، 0 ، 5 ، 2) ؛ كسر ؛ // الحالة الحمراء المعيارية للشرطة 10: setConfiguration (1 ، 100 ، 0 ، 0 ، 5 ، -2) ؛ استراحة ؛ // عودة الشرطة للحالة الحمراء 11: setConfiguration (1 ، 100 ، 20 ، 0 ، 5 ، 2) ؛ كسر ؛ // الحالة البرتقالية المعيارية للشرطة 12: setConfiguration (1 ، 100 ، 20 ، 0 ، 5 ، -2) ؛ استراحة ؛ // عودة الشرطة للحالة البرتقالية 13: setConfiguration (2 ، 0 ، 0 ، 50 ، 8 ، 10) ؛ استراحة ؛ // عبور الحالة الزرقاء القياسية 14: setConfiguration (2 ، 0 ، 0 ، 50 ، 8 ، -10) ؛ استراحة ؛ // عبر إرجاع الحالة الزرقاء 15: setConfiguration (5 ، 0 ، 50 ، 0 ، 0 ، 20) ؛ كسر ؛ // وميض الحالة الخضراء القياسية 16: setConfiguration (5 ، 0 ، 50 ، 0 ، 0 ، -20) ؛ كسر ؛ // وميض الحالة الخضراء odwyrtka 17: setConfiguration (5 ، 0 ، 0 ، 50 ، 0 ، 20) ؛ كسر ؛ // وميض الحالة الزرقاء القياسية 18: setConfiguration (5 ، 0 ، 0 ، 50 ، 0 ، -20) ؛ كسر ؛ // وميض إعادة الحالة الزرقاء 19: setConfiguration (5 ، 50 ، 0 ، 0 ، 0 ، 20) ؛ كسر ؛ // وميض الحالة الحمراء القياسية 20: setConfiguration (5 ، 50 ، 0 ، 0 ، 0 ، -20) ؛ كسر ؛ // وميض إعادة الحالة الحمراء 21: setConfiguration (5 ، 50 ، 10 ، 0 ، 0 ، 20) ؛ كسر ؛ // وميض الحالة البرتقالية القياسية 22: setConfiguration (5 ، 50 ، 10 ، 0 ، 0 ، -20) ؛ break ؛ // وميض الرجوع إلى اللون البرتقالي الافتراضي: setConfiguration (0 ، 0 ، 50 ، 0 ، 5 ، 1) ؛ استراحة ؛ // إيقاف = 0}}

اعتمادًا على المعلمة المحددة ، ستعرض الحلقة التأثير. يمكنك إضافة التأثير الخاص بك عن طريق استدعاء وظيفة setConfiguration مع معلمات جديدة (تغيير اللون ، وسرعة العرض) عن طريق إضافة وضع جديد ، أو إضافة تأثير جديد تمامًا - أو أخبرني في التعليقات إذا أعجبتني سأضيف تأثيرًا جديدًا

اردوينو:

# تضمين "Arduino.h" # تضمين "SoftwareSerial.h" # تضمين "DFRobotDFPlayerMini.h"

#يشمل

# تضمين # تضمين # تضمين "SingleRing.h"

#يشمل

# تضمين # تضمين

#يشمل

#define WIFI_NAME ""

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

# تعريف DIODES_COUNT 16

SingleRing top = SingleRing (DIODES_COUNT، D5) ؛

SingleRing bottom = SingleRing (DIODES_COUNT، D6) ؛

SoftwareSerial mySoftwareSerial (D4 ، D3) ؛ // RX ، TX

DFRobotDFPlayerMini myDFPlayer ؛ RemoteMe & remoteMe = RemoteMe:: getInstance (رمز مميز ، DEVICE_ID) ؛

ESP8266WiFiMulti WiFi متعدد ؛

إعداد باطل () {mySoftwareSerial.begin (9600) ؛ Serial.begin (115200) ؛

if (! myDFPlayer.begin (mySoftwareSerial)) {// استخدم softwareSerial للتواصل مع mp3.

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

remoteMe.setUserMessageListener (onUserMessage) ،

remoteMe.setupTwoWayCommunications () ،

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME) ،

top.setup () ،

bottom.setup () ، top.clear () ؛ bottom.clear () ؛ }

منطقية TurnOff = صحيح ؛

turnOffMillis طويلة بدون توقيع = 0 ؛

باطل onUserMessage (uint16_t senderDeviceId، uint16_t dataSize، uint8_t * data) {

uint16_t نقاط البيع = 0 ؛ uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛ uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛ uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛ uint8_t time = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛ uint8_t mode = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛

bottom.setMode (bottomMode) ،

top.setMode (topMode) ؛ إذا (الوضع == 1) {myDFPlayer.loop (trackNumber) ؛ } else {myDFPlayer.play (trackNumber)؛ } turnOff = خطأ ؛ turnOffMillis = مللي () + 1000 * مرة ؛ }

حلقة فارغة()

{remoteMe.loop () ، top.loop () ؛ bottom.loop () ، إذا (turnOffMillis

}

تفسير:

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

نحتاج إلى تقديم البيانات أعلاه ، والتعليمات التفصيلية هنا على الرابط ، كما أوضحت كيفية التسجيل في remoteme.org وإنشاء الرمز المميز ،

باطل onUserMessage (uint16_t senderDeviceId، uint16_t dataSize، uint8_t * data) {uint16_t pos = 0 ؛ uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛ uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛ uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛ uint8_t time = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛ uint8_t mode = RemoteMeMessagesUtils:: getUint8 (البيانات ، نقاط البيع) ؛

bottom.setMode (bottomMode) ،

top.setMode (topMode) ؛ إذا (الوضع == 1) {myDFPlayer.loop (trackNumber) ؛ } else {myDFPlayer.play (trackNumber)؛ } turnOff = خطأ ؛ turnOffMillis = مللي () + 1000 * مرة ؛ }

سيتم استدعاء هذه الوظيفة عندما تصل الرسالة إلى Arduino وتعرض الإشعار. الشفرة واضحة لدرجة أنها تصف نفسها. أشير إلى تفاصيل الفصول إلى الوثائق هنا وهنا

حلقة باطلة () {remoteMe.loop () ، top.loop () ؛ bottom.loop () ، إذا (turnOffMillis <مللي ()) {

إذا (! تحولت) {

top.clear () ؛

bottom.clear () ؛ myDFPlayer.stop () ، تحولت = صحيح ؛ }}

في الحلقة ، نسمي وظائف الحلقة للكائنات ، وأيضًا إذا مر وقت عرض الإشعارات ، نقوم بإيقاف تشغيل الثنائيات والصوت.

الخطوة 5: مشغل MP3

مشغل MP3
مشغل MP3

يتواصل مع Arduino عبر TX / RX - تفاصيل المشغل نفسه هنا والمكتبة هنا

نقوم بتحميل ملفات mp3 على بطاقة SD. يتم فرز الملفات الموجودة على البطاقة أبجديًا ثم الاتصال بـ:

myDFPlayer.play (5) ،

نقوم بتشغيل الملف الخامس من بطاقة SD من الدليل الجذر. هذا هو السبب في أنه من الجيد إعطاء الملفات على بادئات بطاقة SD 01 ، 02 وما إلى ذلك. في حالتي ، يبدو الأمر على شاشة الطباعة أعلاه

لإنشاء أوامر صوتية يمكنك استخدام هذه الصفحة.

الخطوة 6: تحميل البرنامج على Arduino

تحميل البرنامج على Arduino
تحميل البرنامج على Arduino
تحميل البرنامج على Arduino
تحميل البرنامج على Arduino

قبل تحميل الرسم التخطيطي إلى Arduino ، يجب عليك تنزيل المكتبات المطلوبة هنا وستجد إرشادات تفصيلية

بالإضافة إلى ذلك ، نحتاج إلى تثبيت مكتبة DFRobotDFPlayerMini و Adafruit_NeoPixel

الخطوة 7: التحكم

مراقبة
مراقبة
مراقبة
مراقبة

نرسل إلى Arduino خمسة بايت

  • البايت الأول من تأثير الضوء لحلقة LED العلوية
  • تأثير ضوء البايت الثاني لحلقة LED السفلية
  • رقم ملف mp3 المراد تشغيله
  • عدد الثواني كم من الوقت سيتم تشغيل تأثير الضوء و mp3
  • ما إذا كان يجب تشغيل mp3 مرة واحدة أو في حلقة (1 إذا كان يجب تشغيلها في حلقة)

عن طريق إرسال بايت

07 0F 01 05 01

ستعرض الحلقة العلوية أضواء الشرطة (الوضع 6) وميض أخضر أسفل واحد (الوضع 15) (تحقق من وظيفة setMode في singleRing.cpp والتعليقات المجاورة لها). سيتم تشغيل الملف الأول من SDcard لمدة 5 ثوانٍ. وسيتم تشغيل الملف في الحلقة (تحقق من الوظيفة onUserMessage at arduino.ino)

دعونا نرسل هذه البايتات. انظر إلى الشاشة أعلاه ، وانقر على الأيقونات بالترتيب المكتوب بـ 1 ، 2 ، 3. تظهر النافذة

ثم انظر إلى الشاشة الثانية - واملأ النافذة كما في الشاشة الثانية

يتم استخدام النافذة التي تظهر لإرسال رسائل إلى الجهاز. في الخانة 1 ، حدد جهاز المرسل - نظرًا لأن لدينا جهازًا واحدًا فقط ، فنحن نختاره (هذا حقل إلزامي ولا يهم أنه نفس الجهاز الذي نرسل إليه رسالة) في الحقل 2 نعطي بايت إلى أرسل (باللون الأحمر ، سيتم تمثيل القيمة التي أدخلناها في 2 كسلسلة) ثم انقر فوق الزر إرسال.

بعد إرسال الرسالة ، يجب أن يتفاعل المخطر لدينا من خلال عرض تأثيرات الإضاءة المناسبة وتشغيل ملف mp3 المحدد. أنا أشجعك على تجربة تأثيرات مختلفة من خلال إعطاء أول وحدتي بايت من رقم بين 0 و 22 (انظر الوصف في وظيفة setMode).

الخطوة 8: إرسال الرسائل باستخدام عناوين URL

إرسال الرسائل باستخدام عناوين المواقع
إرسال الرسائل باستخدام عناوين المواقع
إرسال الرسائل باستخدام عناوين المواقع
إرسال الرسائل باستخدام عناوين المواقع
إرسال الرسائل باستخدام عناوين المواقع
إرسال الرسائل باستخدام عناوين المواقع
إرسال الرسائل باستخدام عناوين المواقع
إرسال الرسائل باستخدام عناوين المواقع

إذا أردنا عرض الإشعارات من تطبيق خارجي على سبيل المثال مع IFTTT ، فنحن بحاجة إلى عنوان URL يقوم بنفس الشيء تمامًا كما فعلنا في النافذة في الخطوة السابقة. يوفر remoteme.org REST APi. انتقل إليها من خلال النقر فوق علامة التبويب Swagger في اليسار (آخر علامة). سيتم عرض صفحة ، في هذه الصفحة يمكننا أيضًا تجربة عناوين URL الخاصة بنا.

في الشاشة الأولى لديك الوظيفة التي تحتاج إلى توسيعها ، ثم ملء البيانات كما في الشاشة الثانية.

املأ البيانات كما في الصورة أعلاه. بعد النقر فوق التنفيذ ، سنرسل رسالة

070F010501

المتلقي هو الجهاز مع 205 معرف ، نفس الجهاز هو أيضا المرسل. MessageId مع إعدادات "No_RENEVAL" غير ذي صلة. ثم انقر فوق Execute. Notificator سوف يتفاعل بنفس طريقة إرسال الرسائل من التطبيق. بعد استدعاء REST أدناه هو عنوان URL الذي تم استدعاؤه - انظر إلى الشاشة الثالثة. والنسخ واللصق في عنوان URL للمتصفح تم تمييزه بحد أخضر. في الشاشة الرابعة ، متصفح Chrome الخاص بي بعد لصق عنوان URL

في حالتي ، عنوان URL هو:

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

الخطوة 9: عنوان URL غير معروف لإرسال رسالة

مجهول URL لإرسال الرسالة
مجهول URL لإرسال الرسالة

في الخطوة السابقة لديك عنوان URL يرسل البيانات إلى جهازك. لسوء الحظ ، بعد تسجيل الخروج من app.remoteme.org ، يتوقف عن العمل. هذا لأننا لم نقدم رمز المصادقة المميز ، ولم نعد مسجلين الدخول. دعنا نحصل على رمزنا (أو ننشئ رمزًا جديدًا) ولصقه في عنوان URL بدلاً من النجمة.

انظر إلى الشاشة واستبدل * في 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

عنوان Url الذي تم إنشاؤه في الخطوة أعلاه مناسب للتنفيذ بواسطة تطبيقات خارجية. كيفية استخدامه سوف أعرض على IFTTT. سأقوم بتكوينه بحيث يتم تشغيل المخطر عندما يأتي بريد إلكتروني إلى عنوان البريد الإلكتروني (حساب Gmail).

سجّل الدخول إلى IFTTT ، ثم انتقل إلى علامة التبويب تطبيقاتي الصغيرة ثم "تطبيق صغير جديد" - الشاشة الأولى

الخطوة 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

الآن نضغط على "+ ذلك"

الخطوة 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 الخاص بعنوان url الخاص بنا مع الرمز المميز. نوع المحتوى للتطبيق / json وانقر على "إنشاء إجراء" ثم إنهاء. الآن لدينا الصغير لدينا:

الخطوة 17: الملخص

في هذا البرنامج التعليمي ، أوضحت كيفية إرسال رسائل Arduino الخاصة بنا من الأنظمة الخارجية. نقوم أيضًا بدمج نظام آخر ثم IFTTT بطريقة مماثلة. لا يجب بالضرورة أن يكون "المرشد" الذي أردت أن أوضح في هذا المثال كيفية إرسال الرسائل من الأنظمة الخارجية إلى Arduino.

أكواد المصادر

في صحتك ، ماسيك

موصى به: