فهرست مطالب:

Hue Magic: 4 Step (همراه با تصاویر)
Hue Magic: 4 Step (همراه با تصاویر)

تصویری: Hue Magic: 4 Step (همراه با تصاویر)

تصویری: Hue Magic: 4 Step (همراه با تصاویر)
تصویری: سریع ترین کودک جهان❗️اعجوبه روبیک جهان🔥 #shorts 2024, ژوئن
Anonim
Image
Image

جادوگران خوش آمدید!

چند ماه پیش من یک جعبه جادویی کوچک با عصا برای پسر 3 ساله ام ایجاد کردم. هنگامی که او جعبه را با چوب دستی لمس می کند ، نور تغییر رنگی از جعبه شروع به انتشار می کند. وقتی رنگی را که به خصوص دوست دارد می بیند ، می تواند عصا را به سمت چراغ میز (با لامپ فیلیپس Hue در داخل) نشان دهد ، طلسم کند و رنگ جعبه به طرز جادویی به لامپ پرتاب شود! چراغ و نور جعبه ناگهان رنگ یکسانی دارند…

پس از چند ثانیه ، رنگ محو می شود و چراغ میز قبل از طلسم به حالت قبل باز می گردد. تا یک طلسم جدید پخش شود…

مرحله 1: آنچه برای ایجاد این پروژه نیاز دارید

آنچه شما برای ایجاد این پروژه نیاز دارید
آنچه شما برای ایجاد این پروژه نیاز دارید
آنچه شما برای ایجاد این پروژه نیاز دارید
آنچه شما برای ایجاد این پروژه نیاز دارید
آنچه شما برای ایجاد این پروژه نیاز دارید
آنچه شما برای ایجاد این پروژه نیاز دارید

برای ایجاد این پروژه ، به مواد زیر نیاز دارید:

    • 1 لامپ رنگی Philips Hue و یک پل Hue
    • 1 Wemos D1 mini یا مشابه میکروکنترلر مبتنی بر esp8266
    • سنسور لمسی 1 (آردوینو) (به عنوان مثال TTP223R)
    • 1 (آردوینو) دکمه لحظه ای
    • 1 خازن 10uF
    • 1 رهبری RGB (نوع آند معمولی)
    • 5 مقاومت (10 ، 22 و 47 اهم ، 2x 10 کیلو اهم)
    • 2 PCB نمونه اولیه (2x3 اینچ یا حدود 5x7 سانتی متر باید به اندازه کافی بزرگ باشد)
    • چند سیم (جهنده)
    • آهن لحیم کاری
    • یک چوب جادویی (می توانید آن را به صورت آماده در فروشگاه اسباب بازی خریداری کنید ، یا می توانید خودتان آن را تهیه کنید)
    • یک جعبه کوچک ساخته شده از مقوا یا چوب (می تواند یک جعبه موجود باشد ، البته می توانید یک جعبه را از ابتدا بسازید)
    • مقداری نوار
    • مقداری چسب و/یا مهره و پیچ برای اتصال PCB ها در جعبه.
    • اختیاری: کاغذ بسته بندی برای جعبه

نکته: هنگام مطالعه این دستورالعمل کمی تجربه در خواندن نمودارهای مدار مفید است. نمودار من خیلی پیچیده نیست: اگر بتوانید یک خازن را از یک مقاومت متمایز کنید ، احتمالاً خوب خواهید بود.

برخی از تجربه های برنامه نویسی Arduino با استفاده از Arduino IDE نیز مفید است. تجربه اولیه باید کافی باشد ، زیرا من کد کامل را برای کپی/چسباندن به شما ارائه می کنم. با این حال ، برای کارکردن در تنظیمات خاص خود (به عنوان مثال تنظیمات شبکه و برخی از جزئیات مربوط به پیکربندی Hue) ، باید چند مورد را تطبیق دهید. اگر این کمی ترسناک به نظر می رسد ، نگران نباشید ، من به شما کمک می کنم تا تمام اطلاعات مورد نیاز خود را بازیابی کنید.

مرحله 2: جعبه و عصا

جعبه و عصا
جعبه و عصا
جعبه و عصا
جعبه و عصا

معمولاً اولین مراحل سخت ترین هستند ، اما در این دستورالعمل نیست! برای یک شروع آسان ، شما فقط می توانید یک چوب جادویی را از یک فروشگاه اسباب بازی خریداری کنید و برای جعبه می توانید به راحتی از یک جعبه کوچک موجود که قبلاً در آن قرار داشتید دوباره استفاده کنید. فقط مطمئن شوید جعبه از فلز ساخته نشده باشد ، زیرا سیگنال های wifi را مسدود می کند و ما برای جادو به آنها نیاز داریم ؛-).

هنگامی که مجدداً از یک جعبه موجود استفاده می کنید ، تنها کاری که باید انجام دهید این است که دو سوراخ در بالای جعبه ایجاد کنید: 1 سوراخ کوچک (اندازه 5 میلی متر = 0.2 اینچ) برای رهبری RGB و یک سوراخ بزرگتر (حدود 12- 14 میلی متر یا حدود 0.5 اینچ) برای سنسور لمسی.

محل دقیق سوراخ ها مهم نیست ، فقط آنها را با توجه به حس زیبایی شناسی خود قرار دهید ، اما چند نکته را در نظر داشته باشید:

  • فاصله بین هر دو سوراخ را حفظ کنید تا مطمئن شوید اجزایی که در زیر سوراخ ها نصب می شوند (چراغ RGB و سنسور لمسی) هر دو اجازه دارند فضای کافی برای نصب و سیم کشی را اشغال کنند.
  • بزرگترین حفره مربوط به سنسور لمسی است. این سنسور درست در زیر سوراخ نصب می شود ، به گونه ای که می توان آن را با عصا لمس کرد (و حتی کمی فشار داد). بنابراین مطمئن شوید که عصایی که می خرید خیلی ضخیم نباشد!

در صورت تمایل می توانید از (اسپری) رنگ یا کاغذ بسته بندی و پلاستیک بپوشید تا جعبه شما کمی زیبا تر شود و از آن در برابر ریختن غذا و دست های کثیف محافظت شود.

اگر این اولین قدم به نظر شما بسیار غیر بلندپروازانه است ، لطفاً پیش بروید و یک جعبه ایجاد کنید و کاملاً از ابتدا بچرخید! چندین دستورالعمل وجود دارد که به شما در ایجاد یک عصای زیبا کمک می کند

هر مسیری را که انتخاب می کنید ، اکنون وقت آن است که داخل جعبه را کاوش کنید.

مرحله 3: سخت افزار داخلی

سخت افزار داخل
سخت افزار داخل
سخت افزار داخل
سخت افزار داخل
سخت افزار داخل
سخت افزار داخل

برای اتصال قطعات الکترونیکی مطابق نمودار مدار بالا ، از آهن لحیم کاری استفاده کنید. به چند نکته باید توجه ویژه ای داشت:

  • سیم بین Wemos D1 Mini و RGB led باید به اندازه کافی بلند باشد تا led RGB در سوراخی که در درب جعبه ایجاد کرده اید نصب شود.
  • سیم های متصل به سوئیچ لحظه ای و سنسور لمسی نیز همانطور که باید از طریق سوراخ دیگر درب قابل دسترسی است.
  • دکمه سوئیچ لحظه ای باید به قسمت زیرین (قسمت غیر حساس) سنسور لمسی چسبانده شود ، به گونه ای که بتوانید با سنسور لمسی که در بالا چسبانده شده است ، دکمه را روی سوئیچ لحظه ای قرار دهید (تصویر را ببینید). سنسور لمسی در بالای سوئیچ لحظه ای نصب شده است تا فشار دکمه های انجام شده توسط یک انگشت را تشخیص دهد ، در این صورت فشار دکمه نادیده گرفته می شود. فقط وقتی دکمه را با چوب جادویی فشار دهید (که نباید رسانا باشد ، بنابراین پلاستیک و چوب خوب هستند) ، چرخه جادویی آغاز می شود.
  • دکمه لحظه ای را با سنسور لمسی در بالا نه چندان عمیق در زیر سوراخ درپوش ، سوار کنید ، زیرا برای حرکت جادویی باید با چوب جادویی به آن دسترسی داشته باشید.
  • هنگام لحیم کاری خازن ، حتماً قطبیت آن را رعایت کنید. اگر خطوط مثبت و منفی را معکوس کنید ، به احتمال زیاد خازن دودی جادویی از خود ساطع می کند و مدار شما را در خواب ابدی قرار می دهد.
  • نگهدارنده باتری و PCB (ها) را در محل خود بچسبانید ، چسب بزنید و یا پیچ کنید. لازم نیست مرتب باشد ، زیرا در چشم نخواهد بود. فقط باید اثبات قطره باشد.

بریم سراغ نرم افزار!

مرحله 4: نرم افزار

مطمئن شوید جدیدترین ویرایشگر نرم افزار Arduino (رایگان) را در اختیار دارید که می توانید آن را در https://www.arduino.cc/fa/Main/Software بارگیری کنید. برای افزودن پشتیبانی از Wemos D1 mini و سایر بردهای مبتنی بر ESP8266 ، مراحل زیر را انجام دهید:

  • پس از نصب ، نرم افزار Arduino را راه اندازی کرده و پنجره Preferences را باز کنید.
  • https://arduino.esp8266.com/stable/package_esp8266com_index.json را در قسمت "نشانی های اینترنتی مدیران هیئت مدیره اضافی" وارد کنید. می توانید چندین نشانی اینترنتی اضافه کنید و آنها را با کاما جدا کنید.
  • مدیر ابزارها را از منوی Tools> Board باز کرده و پلت فرم esp8266 را نصب کنید (و فراموش نکنید که بعد از نصب ، برد ESP8266 خود را از منوی Tools> Board انتخاب کنید. "LOLIN (WEMOS) D1 R2 & mini" برای Wemos D1 mini v2 و v3 بهترین کار را می کند. تخته

اگر به نصب بیشتر Arduino و راه اندازی درایور نیاز دارید ، می توانید به https://www.instructables.com/id/Wemos-ESP8266-Getting-Started-Guide-Wemos-101/ نگاهی بیندازید.

در ویرایشگر Arduino ، یک فایل جدید (File> New) باز کنید و کد زیر را در پنجره ای که باز شد کپی/جایگذاری کنید. فقط خطوط موجود در پنجره جدید را بازنویسی کنید (void setup و void loop).

اکنون تقریباً آماده هستید ، اما باید چند قطعه کد را برای تنظیمات خاص خود تطبیق دهید.

اولین کاری که باید انجام دهید تغییر آدرس IP در خط 34 است (در ویرایشگر Arduino خطوط کد شماره گذاری شده است) به آدرس ip پل Hue شما. اگر آدرس IP Hue Bridge خود را نمی دانید ، از https://discovery.meethue.com/ دیدن کنید و آدرس IP مناسب آن بلافاصله در مرورگر شما ظاهر می شود. آدرس IP شماره نقطه ای است که قبل از آن "interioripaddress" آمده است.

برای ارتباط با چراغ های Hue ، باید یک کاربر Hue API برای Wemos D1 mini ایجاد کنید تا Wemos بتواند از طریق API Hue با نور Hue ارتباط برقرار کند. برای انجام این کار ، دستورالعمل های https://developers.meethue.com/develop/get-started-2/ را دنبال کنید و نام کاربری ایجاد شده (بسیار طولانی) را در پنجره کد Arduino کپی/جایگذاری کنید. فقط هر "YUUR HUE API USERNAME" را با نام کاربری API ایجاد شده جایگزین کنید.

سپس باید نور Hue مناسب را برای تغییر رنگ انتخاب کنید. در Hue API هر چراغ دارای یک عدد است ، بنابراین باید عددی را که با نوری که می خواهید برای این پروژه استفاده کنید ، مطابقت دهید. یکی از ساده ترین راه ها برای فهمیدن این که چراغ خاصی دارای چه عددی است ، بارگیری برنامه Hue Viewer برای Android یا iOS است. متن "شماره نور خود را" با عدد صحیح در همه جا در پنجره کد آردوینو جایگزین کنید.

آخرین کاری که باید انجام دهید این است که Wemos را برای اتصال به شبکه wifi خود راه اندازی کنید. این کار با بارگذاری کد در Wemos و روی لپ تاپ به شبکه wifi دیگر انجام می شود: به "AutoConnectAP". سپس مرورگر شما صفحه ای را نمایش می دهد که در آن می توانید SSID (نام) و رمز عبور شبکه wifi خود را که کنترل Wemos برای اتصال به شبکه wifi شما (و به پل Hue) استفاده می کند ، اضافه کنید.

توجه: اگر بارگذاری کد در Wemos D1 mini ما از طریق USB کار نمی کند ، ممکن است لازم باشد درایور تراشه USB را در Wemos بارگیری کنید. درایور پلت فرم شما (Windows ، Mac) را می توانید در https://sparks.gogo.co.nz/ch340.html بارگیری کنید

اکنون شما آماده اید تا خلقت خود را آزمایش کنید!

// ESP8266 Hue Magic Wand // Richard van Kampen - 2018 // این کد بر روی Wemos D1 mini آزمایش شده است ، اما احتمالاً بر روی سایر بردهای توسعه مبتنی بر ESP8266 نیز کار می کند // برای افزودن پشتیبانی از Wemos D1 mini و سایر بردهای ESP8266 برای ویرایشگر Arduino ، مراحل زیر را انجام دهید: // - Arduino را راه اندازی کرده و پنجره Preferences را باز کنید. // - https://arduino.esp8266.com/stable/package_esp8266com_index.json را در قسمت URL های Additional Board Manager وارد کنید. می توانید چندین نشانی اینترنتی اضافه کنید و آنها را با کاما جدا کنید. // - مدیر بردها را از منوی Tools> Board باز کرده و پلتفرم esp8266 را نصب کنید (و فراموش نکنید که بعد از نصب ، برد ESP8266 خود را از منوی Tools> Board انتخاب کنید). // کتابخانه های مورد استفاده: #شامل "ESP8266WiFi.h" // ESP8266 کتابخانه اصلی WiFi #شامل "DNSServer.h" // سرور DNS محلی که برای هدایت همه درخواستها به پورت پیکربندی WiFiManager استفاده می شود ، در صورت عدم وجود تنظیمات WIFI (SSID ، رمز عبور) هنوز تنظیم نشده است #شامل "ESP8266WebServer.h" // WebServer محلی برای سرویس دهی به پورت پیکربندی WiFiManager #شامل "WiFiManager.h" // کتابخانه Magic Configuration WiFi ، اگر هنوز نصب نشده است لطفاً به https://github.com/tzapu/WiFiManager مراجعه کنید #install-through-library-manager #شامل "RestClient.h" // https://github.com/fabianofranca/ESP8266RestClient ، مورد نیاز برای استفاده از API Philips Hue (به https://developers.meethue.com/develop/ مراجعه کنید) hue-api/). #شامل "ArduinoJson.h" // https://github.com/bblanchon/ArduinoJson ، برای تجزیه و تحلیل پاسخ API Hue ، لطفاً نسخه 5.x را از طریق مدیر کتابخانه در Arduino نصب کنید (منو "طرح"> شامل کتابخانه> مدیریت کتابخانه ها> ArduinoJson را جستجو کرده و نسخه را به آخرین 5.x تغییر دهید). نسخه 6 (در حال حاضر در حالت بتا) خطایی ایجاد می کند. // متغیرها و init: پاسخ رشته ای ؛ const int redPin = 13؛ // در Wemos این d7 const int greenPin = 12؛ // در Wemos این d6 const int bluePin = 14؛ // در Wemos این d5 const int touch است سنسور = 5 ؛ // در Wemos این is d1 const int activPPin = 4؛ // در Wemos این d2 bool activation = HIGH است؛ bool touch = LOW؛ const char* aan_restore؛ int bri_restore؛ دوبار x_restore ؛ y_restore مضاعف ؛ double x_magic؛ دو y_magic؛ bool first = true؛ شروع طولانی بدون امضا Millis؛ جریان طولانی بدون امضا مدت طولانی بدون امضا Milis؛ مشتری RestClient = RestClient ("192.168.178.23") ؛ // "آدرس IP Hue Bridge شما" // اگر آدرس IP Hue Bridge خود را نمی دانید ، از https://discovery.meethue.com دیدن کنید و بلافاصله در مرورگر شما ظاهر می شود. آدرس IP شماره نقطه ای است که قبل از آن "interioripaddress" void setup () {analogWriteRange (255)؛ Serial.begin (9600)؛ // با LED خاموش شروع کنید. pinMode (activationPin ، INPUT_PULLUP) ؛ pinMode (سنسور لمسی ، ورودی) ؛ startMillis = millis ()؛ checkWand ()؛ } void loop () {// هیچ کاری در اینجا انجام ندهید ، خالی بگذارید …} void checkWand () {int rgbColour [3]؛ // کد رنگ RGB توسط جیمز هارتون ، https://gist.github.com/jamesotron/766994 // با رنگ قرمز شروع کنید. rgbColour [0] = 255 ؛ rgbColour [1] = 0 ؛ rgbColour [2] = 0 ؛ activation = digitalRead (activationPin) ؛ // LOW به معنی استفاده از چوب است. touch = digitalRead (touchSensor) ؛ // HIGH به این معنی است که انگشت به جای چوب استفاده می شود ، که نباید چنین باشد. while (فعالسازی == LOW && touch == LOW) {// رنگهای افزایش و کاهش را انتخاب کنید. برای (int decColour = 0 ؛ decColour <3 ؛ decColour += 1) {int incColour = decColour == 2؟ 0: decColour + 1 ؛ // = اپراتور سه گانه ، یعنی: int incColour ؛ if (decColour == 2) {incColour = 0؛} else {incColour = decColour +1؛} // دو رنگ را به صورت متقاطع محو کنید. برای (int i = 0 ؛ i <255 ؛ i += 1) {rgbColour [decColour] -= 1 ؛ rgbColour [incColour] += 1؛ // همانطور که led RGB ما دارای یک آند معمولی به جای کاتد است (بنابراین باید به جای 3.3 ولت به +3 ولت متصل شویم) ، برای RGB به مقادیر معکوس نیاز داریم: int red = 255 - rgbColour [0]؛ int سبز = 255 - rgbColour [1] ؛ int آبی = 255 - rgbColour [2] ؛ analogWrite (redPin ، قرمز) ؛ analogWrite (greenPin ، سبز) ؛ analogWrite (bluePin ، آبی) ؛ تأخیر (8) ؛ activation = digitalRead (activationPin) ؛ if (activation == HIGH) {// HIGH به معنی بلند شدن چوب است. goto stopColorCycling؛ }}}} stopColorCycling: currentMillis = millis ()؛ durationMillis = (currentMillis - startMillis) ؛ if (durationMillis> 1000) {RGBtoxy (rgbColour [0] ، rgbColour [1] ، rgbColour [2]) ؛ } else {// Wemos را در حالت خواب قرار دهید: ESP.deepSleep (0)؛ }} void RGBtoxy (قرمز قرمز ، سبز سبز ، آبی آبی) {// مشاهده https://developers.meethue.com/documentation/color-conversions-rgb-xy double R = map (قرمز ، 0 ، 255 ، 0 ، 1000) ؛ R /= 1000 ؛ double G = map (سبز ، 0 ، 255 ، 0 ، 1000) ؛ G /= 1000 ؛ دو B = نقشه (آبی ، 0 ، 255 ، 0 ، 1000) ؛ B /= 1000 ؛ R = (R> 0.04045f)؟ توان ((R + 0.055f) / (1.0f + 0.055f) ، 2.4f): (R / 12.92f) ؛ G = (G> 0.04045f)؟ توان ((G + 0.055f) / (1.0f + 0.055f) ، 2.4f): (G / 12.92f) ؛ B = (B> 0.04045f)؟ توان ((B + 0.055f) / (1.0f + 0.055f) ، 2.4f): (B / 12.92f) ؛ دو برابر X = R * 0.649926f + G * 0.103455f + B * 0.197109f ؛ دو برابر Y = R * 0.234327f + G * 0.743075f + B * 0.022598f ؛ دو برابر Z = R * 0.0000000f + G * 0.053077f + B * 1.035763f ؛ دو برابر x = X / (X + Y + Z) ؛ دو برابر y = Y / (X + Y + Z) ؛ // تبدیل به طور کامل انجام نشده است ، اما احتمالاً به اندازه کافی برای آنچه می خواهیم به آن برسیم خوب است ، بنابراین آن را رها کرده و مقادیر XY را به لامپ ارسال کنید: sendtoHue (x ، y) ؛ } void sendtoHue (double a، double b) {// تغییر رنگ واقعی از جادوی چوب اگر (اولین) {// اولین پاسپورت: دریافت وضعیت فعلی لامپ getCurrentValues ()؛ } // سپس رنگ های عصای جادویی را ارسال کنید: // منتظر طلسم باشید: منتظر بمانید ؛ x_magic = a؛ y_magic = b ؛ // چراغ در رنگ عصای جادویی روشن می شود: respond = ""؛ int temp = تصادفی (2 ، 9) ؛ const char* state = "true"؛ for (int i = 1؛ i <= temp؛ i ++) {// ایجاد آرایه char برای ارسال به Bridge: String temp_body1 = "{" on / ":" + String (state) + "، \" bri / ": 220 ، / "xy \": [" + رشته (x_magic) +" ، " + رشته (y_magic) +"] ، / "زمان انتقال \": 1} "؛ int str_len1 = temp_body1.length () + 1؛ char post_body1 [str_len1]؛ temp_body1.toCharArray (post_body1، str_len1) ؛ // اکنون post_body1 را به عنوان آرایه char داریم ؛ // برقراری تماس استراحت: int statusCodePut1 = client.put ("/api/نام کاربری HUE API شما/روشن/شماره چراغ شما/وضعیت" ، post_body1 ، & reply) ؛ صبر کنید = تصادفی (100 ، 600) ؛ تأخیر (صبر) ؛ if (state == "true") {state = "false"؛ } else {state = "true"؛ }} // کاهش روشنایی …: respond = ""؛ temp = تصادفی (4 ، 17) ؛ // ایجاد آرایه char برای ارسال به Bridge: String temp_body2 = "{" on / ": true ، \" bri / ": 154 ، \" transfertime / ":" + رشته (temp) + "}"؛ int str_len2 = temp_body2.length () + 1؛ char post_body2 [str_len2]؛ temp_body2.toCharArray (post_body2، str_len2) ؛ // اکنون post_body2 را به عنوان آرایه char داریم ؛ // برقراری تماس استراحت: int statusCodePut2 = client.put ("/api/نام کاربری HUE API شما/روشن/شماره چراغ/وضعیت شما" ، post_body2 ، & reply) ؛ انتظار = تصادفی (1000 ، 2500) ؛ تأخیر (صبر) ؛ //..و دوباره روشن تر کنید: reply = ""؛ temp = تصادفی (4 ، 17) ؛ // ایجاد آرایه char برای ارسال به Bridge: String temp_body3 = "{" bri_inc / ": 100 ، \" انتقال زمان / ":}"؛ int str_len3 = temp_body3.length () + 1؛ char post_body3 [str_len3]؛ temp_body3.toCharArray (post_body3، str_len3) ؛ // اکنون post_body3 را به عنوان آرایه char داریم ؛ // تماس استراحت کنید: int statusCodePut3 = client.put ("/api/نام کاربری HUE API شما/روشن/شماره چراغ شما/وضعیت" ، post_body3 ، & reply) ؛ انتظار = تصادفی (2500 ، 5000) ؛ // منتظر 2-5 ثانیه تأخیر (صبر) ؛ // و محو شدن به مقدار قبلی: reply = ""؛ // ایجاد آرایه char برای ارسال به Bridge: String temp_body4 = "{" on / ":" + String (aan_restore) + "، \" bri / ":" + String (bri_restore) + "، \" xy / ":

توصیه شده: