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

Giant LED - تتبع Adam Savage: 13 خطوة (بالصور)
Giant LED - تتبع Adam Savage: 13 خطوة (بالصور)

فيديو: Giant LED - تتبع Adam Savage: 13 خطوة (بالصور)

فيديو: Giant LED - تتبع Adam Savage: 13 خطوة (بالصور)
فيديو: Thronebreaker Witcher Series Gameplay Walkthrough [Full Game Movie - All Cutscenes Longplay] 2024, يوليو
Anonim
الصمام العملاق - تتبع آدم سافاج
الصمام العملاق - تتبع آدم سافاج
الصمام العملاق - تتبع آدم سافاج
الصمام العملاق - تتبع آدم سافاج
الصمام العملاق - تتبع آدم سافاج
الصمام العملاق - تتبع آدم سافاج

ستجد هنا عرضًا لمصباح LED عملاق ، تم إعادة تصميمه ليكون بمثابة مصباح تنبيه على Twitter و YouTube و Twitch. الغرض الأساسي بالنسبة لي هو تقديم تنبيه عندما تكون هناك تغريدات أو مقاطع فيديو أو تدفقات نشل بواسطة آدم سافاج والفريق الذي تم اختباره ، ولكي نكون منصفين ، فإنني أتابع شخصين آخرين مثل روبرت كوان ومارتي الميكانيكي والمزيد.

من الواضح أنه يمكنني استخدام تويتر ، ونشل ، وما إلى ذلك ، على هاتفي أو جهاز الكمبيوتر المحمول ، ولكن هناك العديد من التنبيهات من العديد من الخدمات والإشعارات التي أقوم بإيقافها جميعًا ، بالإضافة إلى أن الهاتف ينتقل إلى الوضع الصامت بعد الساعة 10 مساءً حيث سيعمل أيضًا مع Webhooks لديّ واحد تم تكوينه أيضًا لتلقي التحديثات من بعض جداول Biq Query المرتبطة بالعمل وذلك لإعلامي إذا تم تحديثها بشكل جيد مع عدد كافٍ من السجلات كل يوم.

لدى Adafruit خدمة تسمى Adafruit IO أردت تجربتها وكنت أقصد طوال العام محاولة إعادة معالجة ESP8266 بعد سماع بعض الكلمات الجيدة في إصدار Wemos D1 Mini 3. بدأ كل شيء في الظهور معًا عندما وجدت تصميم لمصباح LED على الكون من قبل Astro73. لقد بدأت بذلك وأعدت صياغته قليلاً من أجل الحجم وأيضًا لإضافة زر ضغط في القاعدة وبعض التغييرات التجميلية الأخرى. يمكنك العثور على الريمكس هنا

بالإضافة إلى أنه يمكن التحكم في الصوت من خلال Alexa الآن أيضًا مع ظهور كلمة تشغيل IFTTT alexa.

الخطوة 1: المكونات

إذا كنت تريد إنشاء أحد هذه الأجزاء ، فإن قائمة الأجزاء صغيرة جدًا وغير مكلفة أيضًا. إذا كنت لا تمانع في الانتظار ، يمكنك الحصول على الأجزاء الرئيسية من الخارج بالإضافة إلى تقليل التكلفة أكثر. ومع ذلك ، فإن المكون الرئيسي هو علبة وقاعدة LED العملاقة. إذا كان لديك طابعة ثلاثية الأبعاد ، فأنت جاهز تمامًا ، وإذا لم يكن هناك عدد قليل من شركات الطابعات عبر الإنترنت التي ستطبع الأجزاء. هناك 3 فقط لذلك يجب أن تكون رخيصة إلى حد ما.

1. Wemos D1 Mini R3

2. Neopixel 8 LED

3. طبعت القاعدة والأرجل باللون الأسود PETG

4. عدسة مطبوعة وحامل ضوء في PLA شفاف

5. زر التبديل 12 مم مربع X1

6. غطاء زر دفع مستدير X1

7. USB الرصاص ومحول للطاقة

8. رأس زر M3x20

9. M3 الجوز

10. M2x8mm الترباس x2

11. M2 البندق x2

12. بعض الأسلاك الأسود والأحمر والأصفر

13. 300-500 أوم المقاوم

14. قطعة صغيرة من heatshrink

يمكنك استخدام أجهزة ESP أخرى ، أو حتى Huzzah ، ولكن الجراب مصمم للميني الذي يحتوي على ثقوب متصاعدة ويتجنب الاضطرار إلى لصقها.

الخطوة 2: الأدوات

لإنشاء وبناء هذا ستحتاج إلى ما يلي

1. طابعة ثلاثية الأبعاد

2. 1.5mm و 2mm مفتاح ألين

3. لحام الحديد ولحام

4.أجهزة كهربائية

5- مكابس

6. روح الدعابة

7. مبضع للتقليم

الخطوة 3: متطلبات الكود

لذلك قبل أن نتعمق في التصميم ، سأقوم بتوضيح بعض المتطلبات التي أردت تضمينها في هذا. كنت أفكر في معظم هذه الأشياء قبل أن أبدأ وقد قمت برسم بعض التدفقات لمعرفة ما كنت سأجربه. مع تقدمي ، اكتشفت بعض المشكلات المتعلقة بالخدمات التي أردت معالجتها.

متطلبات.

أردت أن يظهر لي مؤشر LED عند نشر تغريدة أو مقطع فيديو جديد ، كما يتضح عند بدء تشغيل قناة Twitch محددة. أردت أيضًا أن يستمر التنبيه حتى ألغيته حتى إذا كنت بعيدًا لفترة من الوقت ، فسأعرف ما حدث أثناء غيابي. أردت أيضًا أن يكون قابلاً للتكوين للوصول إلى شبكة Wi-Fi دون الحاجة إلى إعادة تحميل ملفات البرنامج أيضًا. كان الشيء الأخير الذي ظهر أيضًا بالإضافة إلى الاستجابة للأحداث الحية ، كنت بحاجة إليه للتحقق كل 15 دقيقة من حالة البيانات التي يتم تغذيتها بها

لذلك مع وضع الأساسيات ، كان الشيء التالي هو معرفة كيفية تنفيذ كل جزء. يمكنك رؤية أفكاري أدناه حول الجزء الذي سيتم التعامل معه من خلال نوع البرنامج أو النظام الأساسي.

1. Adafruit IO ، يستخدم هذا لإعداد موجز التنبيهات ، يمكنك الحصول على حساب هنا

سأستخدم هذا كخدمة انتظار الرسائل حيث سأرسل لها رسائل من IFTTT ثم يستقبل Giant LED تلك الرسائل حتى يتمكن من العمل عليها.

2. IFTTT ، https://ifttt.com/ ويستخدم هذا لفحص قنوات Twitter و YouTube و Twitch المختارة ثم إرسال الحدث إلى Adafruit IO

3. كود ESP8266 لقراءة هذه الخلاصات ويتم حرقه في ESP8266 باستخدام معيار Arduino IDE (الإصدار 1.8.8)

4. كود Arduino ، تم تحميله على ESP8266 لقراءة موجزات Adafruit IO وإضاءة Neopixel

5. كود اردوينو لقراءة زر ضغط لمسح التنبيه

6. كن قادرًا على تكوين محول WiFi دون الحاجة إلى إعادة تشغيل ESP ، ولهذا استخدمت مكتبة WiFi Manager بواسطة Tzapu ، https://github.com/tzapu/WiFiManager على الرغم من أن خيارات الإعداد احتاجت إلى تغيير بسيط لاستيعاب مكتبات Adafruit IO.

الخطوة 4: إعداد Adafruit IO

إعداد Adafruit IO
إعداد Adafruit IO

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

بدلاً من نسخ أمثلة adafruit ، يمكنك العثور على الأساسيات هنا https://learn.adafruit.com/gmailbox/adafruit-io-se … والتي ستساعدك على الإعداد.

ثم بالنسبة لـ GIANT LED ، ستحتاج أيضًا إلى إضافة الخلاصات التالية إلى القنوات الافتراضية

1. اللون - يتيح لنا هذا تغيير اللون عن بُعد باستخدام شيء مثل Alexa

2. نشل

3. twitterfan

4. youtubefan

ثم تحتاج أيضًا إلى إنشاء مجموعة جديدة إذا لم يكن لديك بالفعل استدعاء للإدخال ، ثم في هذه المجموعة أيضًا قم بإنشاء موجز يسمى رقمي. سيسمح لنا هذا أيضًا برؤية تأثير الضغط على الزر إذا أردنا توسيع استخدام هذا الجهاز لأغراض أخرى.

إذا كنت تريد أيضًا في هذه المرحلة اللعب بلوحة القيادة بحيث يمكنك إضافة هذه الخلاصات إليها للحصول على معلومات وأغراض اكتشاف الأخطاء.

الخطوة الخامسة: إعداد IFTTT

إعداد IFTTT
إعداد IFTTT
إعداد IFTTT
إعداد IFTTT

يمكنك أيضًا اتباع دليل Adafruit هنا ، https://learn.adafruit.com/gmailbox/ifttt-setup. يمكنك بعد ذلك تحديد إجراءات Twitter و youtube و twitch لإعداد قوائم المشاهدة ثم إرسالها إلى الخلاصات ذات الصلة. لقد أرفقت مقطع فيديو بسيطًا حتى تتمكن من معرفة مدى السرعة التي يمكن أن تكون عليه.

بالإضافة إلى ذلك ، إذا كنت تريد التحكم الصوتي في لون LED الخاص بك بواسطة Alexa ، فهناك الآن تطبيق Amazon Alexa الصغير. لتعيين واحد من هؤلاء ، حدد التطبيق واختر الكلمة الزرقاء ، ثم قم بتوصيله بخلاصة Adafruit التي أعددتها اللون المسمى وأدخل 0000ff كبيانات لإرسالها إلى تلك القناة. يمكنك أيضًا تمرير أوامر إضافية بهذه الطريقة إلى GIANT LED مثل إعادة التعيين أو إعادة التشغيل إذا أردت ذلك.

عندما تقوم بإعداد مشغل IFTTT ، تحتاج إلى اختيار البيانات التي يتم إرسالها وهذا ما يسمى "المكونات" في IFTTT. القطعة الأولى التي نحتاجها هي "UserName" ثم مسافة ثم "CreatedAt"

نختار كلا العنصرين حتى نتمكن عند وصول البيانات إلى ESP8266 من اكتشاف ما إذا كانت تغريدة جديدة وأنها مختلفة عن التغريدات السابقة لنفس المستخدمين. يمكنك أن ترى ما يجب أن يكون عليه الحال من الصورة المرفقة.

الخطوة 6: تثبيت لوحات ESP8266 في Arduino IDE

هذا هو المكان الذي تكون فيه الأمور أكثر تعقيدًا وقد تستغرق وقتًا أطول قليلاً لتسويتها. بالإضافة إلى ESP8266 ، فأنت بحاجة أيضًا إلى مكتبات Adafruit IO ويمكنك اتباع هذا الدليل لهؤلاء.

learn.adafruit.com/gmailbox/arduino-setup

يوجد شرح بسيط لكيفية إضافة لوحات ESP8266 هنا أيضًا https://esp8266.github.io/Arduino/versions/2.0.0/do …

لا تنس التأكد من أن Arduino IDE الخاص بك يصل إلى أحدث إصدار أيضًا وكنت أستخدم 1.8.8 في وقت كتابة هذا.

إحدى المكتبات الأخرى التي نستخدمها هي SimpleTimer حيث سيسمح لنا ذلك بإعداد مؤقت للخلفية حتى نتمكن من التحقق بشكل دوري من الخلاصات ، ويمكن العثور على إرشادات حول هذا في الاستخدامات المبسطة https://playground.arduino.cc/Code/SimpleTimer# تحميل

الخطوة 7: تثبيت مكتبة WiFi Manager

لتمكيننا من الحصول على التكوين عن بعد لإعداد WiFi ، سنستخدم Tzapu Wifi Manger ، ويمكن العثور على تفاصيل حول هذا وكيفية تثبيت المكتبات هنا ،

github.com/tzapu/WiFiManager

هذا تثبيت بسيط جدًا للمكتبات الخارجية والخيار موجود بالفعل في قسم إدارة المكتبة في قسم أدوات Arduino IDE.

الخطوة 8: كود ESP8266 - مع طباعة التصحيح

// يحتوي هذا الرمز على عبارات طباعة حتى تتمكن من مراقبة تشغيله عبر الشاشة التسلسلية

// استنادًا إلى مثال إخراج Adafruit IO RGB LED // Adafruit يستثمر الوقت والموارد لتوفير هذا الكود مفتوح المصدر. // الرجاء دعم Adafruit والأجهزة مفتوحة المصدر عن طريق شراء // منتجات من Adafruit! // // كتبه Todd Treece for Adafruit Industries // حقوق الطبع والنشر (c) 2016-2017 Adafruit Industries // مرخصة بموجب ترخيص MIT. // // يجب تضمين كل النص أعلاه في أي إعادة توزيع. // يستخدم أبسط الموقت https://playground.arduino.cc/Code/SimpleTimer#Do… // https://playground.arduino.cc/Code/SimpleTimer#Do… // باقي الكود بواسطة Ajax Jones https:// playground.arduino.cc/Code/SimpleTimer#Do // https://playground.arduino.cc/Code/SimpleTimer#Do… // ******************* ******* التكوين *************************************** / #define IO_USERNAME "IO الخاص بك اسم المستخدم "#define IO_KEY" مفتاح IO الخاص بك "// اتركه فارغًا لأننا سنحصل عليه من خلال Wifi Manager ، ويبدو أنه يعمل بشكل جيد بهذه الطريقة #define WIFI_SSID" "#define WIFI_PASS" "// نحن لا نقوم بتضمين هذا كما سيقوم AdafruitIO تشمل نسختها // # include //https://github.com/esp8266/Arduino // مطلوبة للمكتبة #include #include #include "WiFiManager.h" //https://github.com/tzapu/WiFiManager # تشمل مؤقت SimpleTimer ؛ # تضمين "AdafruitIO_WiFi.h" AdafruitIO_WiFi io (IO_USERNAME، IO_KEY، WIFI_SSID، WIFI_PASS) ؛ // ************************ تكوينات NeoPixel ************************ ********* // # تضمين "Adafruit_NeoPixel.h" # تعريف PIXEL_PIN 5 # تعريف PIXEL_COUNT 8 int NUM_LEDS = PIXEL_COUNT ؛ #define PIXEL_TYPE NEO_GRB + NEO_KHZ800 Adafruit_NeoPixel pixels = Adafruit_NeoPixel (PIXEL_COUNT، PIXEL_PIN، PIXEL_TYPE) ؛ // الألوان الرئيسية واللون الافتراضي long default_color = 865554 ؛ لون أحمر طويل = 2689027 ؛ // أحمر # 290803 طويل GREEN_color = 865554 ؛ // أخضر # 0d3512 طويل BLUE_color = 856117 ؛ // أزرق # 0d1035 طويل PURPLE_color = 2364968 ؛ // أرجواني # 241628 طويل BRIGHTRED_color = 15990784 ؛ // أحمر فاتح # f40000 // ------------------------------------------ ----------------------------------------------- //زمن فكرة مأخوذة من https://www.safaribooksonline.com/library/view/arduino-cookbook-2nd/9781449321185/ch12.html https://playground.arduino.cc/Code/SimpleTimer#Do… https:// playground. arduino.cc/Code/SimpleTimer#Do … const long oneSecond = 1000 ؛ // الثانية هي ألف ميلي ثانية const طويلة واحدة دقيقة = oneSecond * 60 ؛ const long fiveMinutes = oneMinute * 5 ؛ const طويلة خمسة عشر دقيقة = خمس دقائق * 3 ؛ const long oneHour = خمسة عشر دقيقة * 4 ؛ // مستخدمي Twitter الذين نحبهم كثيرًا وسيومضون وستقوم جميع التغريدات الأخرى التي اخترناها بتغيير لون String SuperTweet = {"ajaxjones"، "donttrythis"، "prodnose"، "testcom"}؛ String SuperTuber = {"test"، "cowan"، "marty"}؛ // يعين حالة التنبيه حتى نتمكن من الاستمرار في وميض مصابيح LED في منطقية الحلقة الرئيسية WHIZZY_TWEET = false ؛ منطقي WHIZZY_TUBER = خطأ ، منطقي WHIZZY_TWITCH = خطأ ، // يحفظ آخر تغريدة و youtube حتى نتمكن من نقش الخدمة للتحقق مرة أخرى بين الحين والآخر من String lasttweet = ""؛ سلسلة lasttube = ""؛ سلسلة lasttwitch = "" ؛ // digital pin 5 ، هذا هو الزر الذي نستخدمه لإعادة ضبط ألوان التنبيه #define BUTTON_PIN 4 // حالة الزر ، ليست تلك المستخدمة حقًا لأننا نبحث عن الزر في interupt bool current = false ؛ قيمة منطقية = خطأ ؛ // قم بإعداد موجز "اللون" ، فقط حتى نتمكن من اختبار الألوان وإرسالها عند الطلب أو استخدام مشغل Alexa AdafruitIO_Feed * color = io.feed ("color") ؛ // إعداد موجز "twitterfan" - Blue AdafruitIO_Feed * twitter = io.feed ("twitterfan") ؛ // إعداد موجز "youtubefan" - Red AdafruitIO_Feed * youtube = io.feed ("youtubefan") ؛ // إعداد موجز 'twitch' - Purple AdafruitIO_Feed * twitch = io.feed ("twitch") ؛ // إعداد التغذية "الرقمية" AdafruitIO_Feed * digital = io.feed ("input.digital") ؛ // ------------------------------------------------ ----------------------------------------- إعداد باطل () {// اضبط ملف دبوس الزر كمدخل ، نستخدم INPUT_PULLUP لأننا لسنا مضطرين إلى استخدام pinMode للمقاومات الخارجية (BUTTON_PIN ، INPUT_PULLUP) ؛ // إرفاق مقاطعة لمتجه ISR للزر attachInterrupt (digitalPinToInterrupt (BUTTON_PIN) ، handleInterrupt ، FALLING) ؛ // ابدأ المسلسل وانتظر حتى تفتح الشاشة التسلسلية ثم اتصل بـ io.adafruit.com Serial.begin (115200) ؛ بينما (! المسلسل) ؛ // neopixel start pixels.begin () ؛ // اضبط الحالة الأولية على اللون الأحمر حتى نعرف أننا غير متصلين ونعمل setAll (0xf4 ، 0x00 ، 0x00) ؛ // أحمر // للاختبار ، سيُظهر هذا حالة WiFi WiFi.printDiag (المسلسل) ؛ WiFiManager wifiManager ؛ // تعيين رد الاتصال الذي يتم استدعاؤه عند فشل الاتصال بشبكة WiFi سابقة ، ويدخل في وضع نقطة الوصول wifiManager.setAPCallback (configModeCallback) ؛ // إعادة تعيين الإعدادات المحفوظة ، قم بالتعليق على هذا السطر التالي لفرض اختبار WiFi Manager حتى تتمكن من الاتصال // استخدم هاتفك أو جهازك اللوحي للبحث عن شبكة LED العملاقة التي ستظهر //wifiManager.resetSettings () ؛ // يعين المهلة حتى يتم إيقاف تشغيل بوابة التكوين // مفيدة لإعادة المحاولة بالكامل أو الانتقال إلى وضع السكون // في ثوانٍ wifiManager.setTimeout (240) ؛ إذا (! wifiManager.autoConnect ("GIANT LED")) {Serial.println (F ("فشل الاتصال وضرب المهلة")) ؛ // إعادة تعيين وحاول مرة أخرى تأخير (3000) ؛ ESP.reset () ، تأخير (1000) ؛ } // للاختبار ، يمكننا معرفة ما إذا كان لدينا بيانات الاعتماد الصحيحة للاتصال //Serial.println (WiFi. SSID ()) ؛ //Serial.println(WiFi.psk())؛//WiFi.begin(WIFI_SSID، WIFI_PASS) ؛ // while (WiFi.status ()! = WL_CONNECTED) {// delay (500) ؛ //Serial.print (".") ؛ //} Serial.println () ، Serial.println (F ("WiFi متصل")) ؛ Serial.println (F ("عنوان IP:")) ؛ Serial.println (WiFi.localIP ()) ؛ // الآن نتصل بخدمة IO Serial.print (F ("الاتصال بـ Adafruit IO")) ؛ io.connect () ، // إعداد معالج رسالة لتغذية "اللون". color-> onMessage (handleMessage) ؛ // إعداد معالج رسالة لخلاصة "twitterfan". twitter-> onMessage (twitterMessage) ؛ // إعداد معالج رسالة لخلاصة "youtubefan". youtube-> onMessage (youtubeMessage) ؛ // إعداد معالج رسالة لخلاصة "twitch". نشل-> onMessage (twitchMessage) ؛ // انتظر الاتصال أثناء (io.status () <AIO_CONNECTED) {Serial.print (F (".")) ؛ تأخير (500) ؛ } // نحن متصلون Serial.println () ؛ Serial.println (io.statusText ()) ؛ //Serial.println(sizeof(SuperTweet)) ؛ //Serial.println(sizeof(SuperTweet[0])) ؛ // اطبع قائمة بحسابات Twitter التي ننتظرها (byte idx = 0 ؛ idx <sizeof (SuperTweet) / sizeof (SuperTweet [0]) ؛ idx ++) {Serial.print (F ("SuperTweet [")) ؛ Serial.print (idx) ؛ Serial.print ("] = '") ؛ Serial.print (SuperTweet [idx]) ؛ Serial.println ("" ") ؛ } // اطبع قائمة بحسابات YouTube التي ننتظرها (بايت idx = 0 ؛ idx get () ؛ // اطلب الحالات الحالية للخلاصات ، لذلك ستحتاج إلى الضغط على إعادة التعيين عند بدء تشغيل youtube -> get () ؛ twitter-> get () ؛ twitch-> get () ؛ لـ (int i = 0 ؛ i get () ؛ twitter-> get () ؛ twitch-> get () ؛ Serial.print ("الحصول على بعض التغريدات") ؛ Serial.print ("وقت (فترات)):") ؛ Serial.println (مللي () / 1000) ؛} // ---------------- -------------------------------------------------- ----------------------- void loop () {// io.run () ؛ مطلوب لجميع الرسومات. io.run () ؛ مؤقت. run () ؛ إذا (WHIZZY_TWEET == صحيح) {RunningLights (0x0d، 0x10، 0x35، 250)؛} إذا (WHIZZY_TUBER == true) {RunningLights (0x29، 0x08، 0x03، 250) ؛} إذا (WHIZZY_TWITCH == صحيح) {RunningLights (0x24، 0x16، 0x28، 250)؛}} // --------------------------------- -------------------------------------------------- ------ // اضبط المقاطعة لمسح التنبيه عند الضغط على الزر وتحقق من معالجة باطل الإنترنت InterInterrupt () {WHIZZY_TWEET = خاطئة؛ WHIZZY_TUBER = خطأ ، WHIZZY_TWITCH = خطأ ، التيار = صحيح ؛ // أرسل الحالة الحالية إلى تغذية "input.digital" على adafruit io حتى نتمكن من رؤيتها رقميًا> حفظ (حاليًا) ؛ لـ (int i = 0 ؛ i ")) ؛ Serial.print (current) ؛ Serial.print (F (" واللون الافتراضي ")) ؛ Serial.println (افتراضي_لون) ؛ تيار = خطأ ؛ رقمي-> حفظ (حالي)؛ while (WiFi.status ()! = WL_CONNECTED) {delay (500)؛ setAll (0xeb، 0xfb، 0x03)؛ // Yellow ebfb03}} // -------------- -------------------------------------------------- ------------------------- // يتم استدعاء هذا عندما تصل رسالة "twitter" - اضبط مؤشر LED على Blue void twitterMessage (AdafruitIO_Data * data) {String tweeter = (data-> toString ())؛ tweeter.toLowerCase ()؛ if ((lasttweet! = tweeter) && (tweeter! = "")) {lasttweet = tweeter؛ setAll (0x0d، 0x10، 0x35)؛ // تعيين اللون الأزرق للتغريد Serial.print (F ("Tweet:")) ؛ Serial.print (مكبر الصوت) ؛ // تحقق من مكبر الصوت المفضل لـ (بايت idx = 0 ؛ idx = 0) {// لنجعلها tweets whizzy # 0d1035 WHIZZY_TWEET = true ؛ Serial.print ("by") ؛ Serial.print (SuperTweet [idx]) ؛}} Serial.println ("") ؛}} // --------- -------------------------------------------------- ---------------------------- - // يسمى هذا عندما تصل رسالة "youtube" - اضبط مؤشر LED على RED void youtubeMessage (AdafruitIO_Data * data) {String tuber = (data-> toString ()) ؛ tuber.toLowerCase () ، if ((lasttube! = tuber) && (tuber! = "")) {lasttube = tuber؛ سيتال (0x29 ، 0x08 ،0x03) ؛ // تعيين لون أحمر على موقع youtube 290803 Serial.print (F ("Youtube:")) ؛ Serial.println (درنة) ؛ // تحقق من موقع Youtuber المفضل لـ (byte idx = 0 ؛ idx = 0) {// لنجعل مقاطع الفيديو الخاصة بهم أزيزًا # 0d1035 WHIZZY_TUBER = true ؛ Serial.print ("بواسطة") ؛ Serial.print (SuperTuber [idx]) ؛ }} Serial.println ("") ؛ }} // ---------------------------------------------- ------------------------------------------- // يسمى هذا كلما أ تصل رسالة "twitch" - اضبط مؤشر LED على twitchMessage PURPLE void (AdafruitIO_Data * data) {String twitch = (data-> toString ()) ؛ twitch.toLowerCase () ، إذا ((lasttwitch! = twitch) && (twitch! = "")) {lasttwitch = twitch؛ سيتال (0x24 ، 0x16 ، 0x28) ؛ // Set twitch Purple color # 241628 Serial.print (F ("Twitch:")) ؛ Serial.println (نشل) ؛ // لا يوجد فحص لـ favourtite Twitcher نتبع واحد فقط WHIZZY_TUBER = صحيح ؛ Serial.println ("") ؛ }} // ---------------------------------------------- ------------------------------------------- // يتم استدعاء هذه الوظيفة في أي وقت تم استلام رسالة "ملونة" // والتي ستعمل على تعيين اللون الافتراضي عند بدء التشغيل استنادًا إلى آخر قيمة تغذية اللون void handleMessage (AdafruitIO_Data * data) {// طباعة قيم RGB وقيمة سداسية عشرية Serial.print (F ("قيمة HEX المستلمة: ")) ؛ Serial.println (data-> value ()) ؛ long color = data-> toNeoPixel () ؛ // default_color = color ؛ Serial.print (F ("تلقي HEX طويل:")) ؛ Serial.println (لون) ؛ لـ (int i = 0 ؛ i <PIXEL_COUNT ؛ ++ i) {pixels.setPixelColor (i ، color) ؛ } showStrip () ؛ } // ----------------------------------------------- ------------------------------------------ مصابيح تشغيل باطلة (بايت أحمر ، بايت أخضر ، byte blue، int WaveDelay) {int Position = 0؛ لـ (int j = 0؛ j <NUM_LEDS؛ j ++) {Position ++؛ // = 0 ؛ // المركز + المعدل ؛ لـ (int i = 0 ؛ i <NUM_LEDS ؛ i ++) {setPixel (i ، ((sin (i + Position) * 127 + 128) / 255) * أحمر ، ((sin (i + Position) * 127 + 128) / 255) * أخضر ، ((sin (i + Position) * 127 + 128) / 255) * أزرق) ؛ } showStrip () ؛ تأخير (WaveDelay) ؛ }} // ---------------------------------------------- ------------------------------------------- // إجراءات Neopixel void setAll (البايت الأحمر ، البايت الأخضر ، البايت الأزرق) {لـ (int i = 0 ؛ i getConfigPortalSSID ()) ؛ // دخل في وضع التكوين ، اضبط Neo Pixel على اللون الأرجواني # 241628 = 2364968 // setAll (0x24 ، 0x16 ، 0x28) ؛ setAll (0xeb ، 0xfb ، 0x03) ؛ // أصفر ebfb03}

الخطوة 9: لحام كل شيء معًا

لحام كل شيء معا
لحام كل شيء معا
لحام كل شيء معا
لحام كل شيء معا
لحام كل شيء معا
لحام كل شيء معا

كل شيء في هذا التصميم ملحوم معًا ويجب أن يكون من السهل إدارته. لقد استخدمت 3 أسلاك ملونة مختلفة لتسهيل الأمور وأول شيء هو قياس الأسلاك الخاصة بـ neopixel إلى WEMOS. قمت بضفرهم ووضع قطعة صغيرة من الانكماش الحراري ثم قمت بلحامها كما هو موضح بحيث توضع بشكل مسطح في العدسة.

كان الزر هو التالي وسوف يتناسب بشكل مريح مع القاعدة. يذهب جانب واحد من الزر إلى Gnd وهذا ملتوي مع السلك الأرضي الخاص بـ neopixel. ثم قمت بتعبئتها ولحامها كواحد في الدبوس الأرضي لنظام WEMOS.

يذهب مصدر الطاقة لـ Neopixel إلى 5v PIn. سلك الإشارة ، أو Di (البيانات الواردة) من neopixel ملحوم بدبوس Wemos كـ D1. هناك بعض المواقع التي تقترح إدخال مقاوم 300-500 أوم في سلسلة مع هذا ، ولكن حتى الآن لم أواجه أي مشاكل ، لذا فهي مجرد اتصال مباشر في الوقت الحالي.

لضمان الممارسة الجيدة ، وبناءً على نصيحة مواقع مثل Adafruit ، قمت بوضع مقاوم 330R في سلسلة مع خط Di إلى neopixel. إنه لمنع أول LED في الحلقة من إخراج الجنيات السحرية ويتم ذلك ببساطة عن طريق قطع السلك ووضع المقاوم فيه. قطعة صغيرة من الانكماش الحراري ستوقف أي شورتات ضالة. يمكنك قص المقاوم إلى حد ما ووضع طوق في كل طرف وفعل الشيء نفسه مع السلك.

ينتقل السلك الآخر للزر مباشرة إلى الدبوس D2. ليست هناك حاجة لمقاوم سحب حيث يتم التعامل مع هذا داخل البرنامج عن طريق وضع أمر PULLUP مقابل هذا الدبوس.

هذا كل ما في الأمر.

الخطوة 10: طباعة ثلاثية الأبعاد

مرفق هنا ملفات STL التي نستخدمها لمصباح Giant LED. الملفات عبارة عن ريمكس / إعادة صياغة لـ astro73 ويمكنك الحصول على جميع الملفات من https://www.thingiverse.com/thing:3290837 أيضًا.

بالنسبة للساقين والقاعدة ، استخدمت خيوط Sunlu PETG + التي تعمل جيدًا على Prusa i3 واستخدمت 10 أو 20 ٪ حشو الغدة الدرقية.

بالنسبة لمصباح LED نفسه ، كنت أستخدم مادة PLA الشفافة من Sunlu واستخدمت حشوة بنسبة 10 ٪ تقريبًا مع طبقات علوية وسفلية متحدة المركز.

مع كل منها ، أستخدم فقط إعدادات Prusa PET و Prusa PLA في Slic3r وقد عملوا جميعًا بشكل جيد. أحصل على القليل من الأوتار على الساقين ، لكنني فقط ألقيت بلحم فوقهم ويختفي الوتر:)

الخطوة 11: مجموعة LED العملاقة

الجمعية العملاقة LED
الجمعية العملاقة LED
الجمعية العملاقة LED
الجمعية العملاقة LED
الجمعية العملاقة LED
الجمعية العملاقة LED

تسير جميع القطع معًا بسهولة حقًا ، يجب عليك الضغط على صمولة M3 في القاعدة للسماح للمسمار بتثبيت الشيء معًا. تحتاج أيضًا إلى توصيل NeoPixel بـ WEMOS من خلال الأرجل أولاً أيضًا. كنت أفكر في كيفية وضع بعض الموصلات ، لكنني قررت أنها لن تتفكك في المستقبل.

العدسة مناسبة فقط للدفع على الأرجل ويتم تثبيتها بدورها في القاعدة بمسامير M3x20mm واحدة. قد تحتاج إلى تشغيل سكين حول فتحة الزر من الداخل حتى يتحرك بسلاسة وبحرية. يتم تثبيت Wemos في مكانه باستخدام مسامير ملولبة بمقبس 2 M2x8 مثبتة ببراغي من الأسفل.

للإنهاء ، يمكنك لصق قطعة من اللباد على القاعدة لمنع أي انزلاق إذا لزم الأمر.

الخطوة 12: تعليمات الإعداد والتشغيل

Image
Image
تعليمات الإعداد والتشغيل
تعليمات الإعداد والتشغيل
تعليمات الإعداد والتشغيل
تعليمات الإعداد والتشغيل

مع كل شيء جاهز والبرنامج الذي تم تحميله ، يطبق بعض الطاقة على USB ويجب أن يظهر GIANT LED وسيتحول مؤشر LED إلى اللون الأحمر ثم يتحول إلى اللون الأصفر. هذا يدل على أنه خارج الخط وينتظر تكوين wifi. باستخدام هاتف أو مظهر مشابه لشبكة wifi GIANT LED والاتصال وستحصل على شاشة WiFi Manager. سيكون قد قام بمسح منطقتك المحلية وقمت فقط بإدخال تفاصيل wifi الخاصة بك ، وستتم إعادة تشغيل ESP وستكون الآن متصلاً بالإنترنت بضوء أخضر. سيتصل أيضًا في هذه المرحلة بـ IO وستظهر أضواء التنبيه لأنه لم ير أي رسائل سابقة بعد. اضغط على الزر بضع مرات وأصبح GIANT LED جاهزًا الآن لوصول التحديثات.

يمكنك الانتقال إلى لوحة معلومات Adafruit IO في هذه المرحلة وإضافة بعض البيانات إلى كل موجز ورؤية الأضواء تنتقل إلى وضع التنبيه.

استمتع !

الخطوة 13: ما الذي يمكن أن يفعله مصباح LED العملاق

ما الذي يمكن أن يفعله مصباح LED العملاق
ما الذي يمكن أن يفعله مصباح LED العملاق
ما الذي يمكن أن يفعله مصباح LED العملاق
ما الذي يمكن أن يفعله مصباح LED العملاق

بمجرد حصولك على أساسيات تصميم مثل هذا ومع IFTTT ، يمكنك استخدامه لأشياء كثيرة. يعد تنبيه البريد الوارد في Gmail أحد التنبيهات السهلة ، وبما أن Adafruit يعمل أيضًا مع Webhooks ، يمكن للبرامج الأخرى إرسال البيانات إليه أيضًا. لدي واحد قيد الإعداد في الوقت الحالي لتتبع بعض عمليات تحميل بيانات Big Query كجزء من مشروع عمل.

أيضًا باستخدام الزر ، يمكنك استخدامه للإشارة إلى مصابيح GIANT LED الأخرى أيضًا ، يمكنك الحصول على واحد في منازل مختلفة واستخدامه كمؤشر عن بعد لجعل الطرف الآخر يضغط على الزر لإلغاء الضوء.

فيما يلي رابط مفيد على طريقة webhook لإرسال البيانات إلى الخلاصة. في هذه الحالة ، يستخدم التطبيق الصغير IFTTT ولكن يمكنك بسهولة استخدام طريقة CURL مع python.

io.adafruit.com/blog/notebook/2018/11/26/f …

في الواقع ، من الممكن أيضًا احتواء OLED 128x32 في القاعدة لتكملة LED ببعض المحتوى النصي وأنا أعمل حاليًا على ذلك وسوف أقوم بتحديث STL وتزويد الكود لاستخدام IO مع هذا أيضًا.

موصى به: