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

آموزش ساخت ساعت عقربه‌ای با حلقه LED NoePixel Ring و برد wemos D1 Mini

Wemos-d1-mini-lED-ring-Clock-Digispark
نوشته شده توسط اروند طباطبایی

تکنولوژی ال ای دی از حدود دهه ۸۰ میلادی شروع شد و مداوم در حال پیشرفت بوده‌است. امروزه ال ای دی LED و نورپردازی بسیار پر مصرف و جذاب شده است. در نمای ساختمان، نورپردازی داخلی و ایجاد حس‌های زنده بودن اشیاء با نور و حقه‌های نورپردازی بسیار کاربرد دارد. یکی از این دسته ابزارها ال ای دی های نئوپیکسل NeoPixel LED هستند. این مدل ال ای دی ها از آنجایی که توانایی تولید چندن نور مختلف را دارند به عنوان پیکسل شناخته می‌شوند. حلقه ال ای دی Led Ring از قطعات ال ای دی RGB نوع SMD ساخته شده است. کارهای جالب و جذابی با این مدل ال ای دی‌ها میتوان انجام داد. در ادامه آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

شیوه عملکرد ساعت حلقه LED NeoPixel Ring

قانون اصلی در این ساعت به این صورت است که ثانیه با نور آبی، دقیقه با نور سبز و ساعت با نور قرمز مشخص می‌شود. بنابراین هر کدام از LED ال ای دی ها که به رنگ قرمز روشن شده بود، نشان دهنده ساعت است. در این آموزش من از حلقه ال ای دی ۲۴ پیکسل NeoPixel 24 Pixel Ring LED استفاده کرده‌ام. فرمت نمایش ساعت به صورت ۲۴ ساعته می‌باشد. در این حالت اگر عدد ۶۰ را که نمایان گر دقیقه و ثانیه است، به عدد ۲۴ تقسیم کنیم، با مقدار ۲٫۵ مواجه خواهیم بود. یعنی هر ۲٫۵ ثانیه موقعیت ثانیه شمار مدار ساعت یعنی نور آبی عوض می‌شود. همچنین هر ۲٫۵ دقیقه موقعیت دقیقه شمار مدار ساعت دیجیتال یعنی نور سبز عوض می‌شود. نکته بسیار جالب در این مدار، اتصال فقط ۳ پین می‌باشد. برد اصلی هم که یک Wemos D1 Mini بر پایه ESP8266 است. بنابراین با مصرف انرژی ناچیز میتوان یک باتری

 

وسایل مورد نیاز:

حلقه ال ای دی Neo Pixel

برد Wemos D1 mini

۳ رشته سیم

باتری li-po

 

اتصال به برد Wemos D1 mini

ماژول‌های ال ای دی Neopixel با یک پین دیجیتال قابل مدیریت هستند. برای اتصالات علاوه بر برقراری تغذیه مثبت و منفی به برد Wemos نیاز است که پایه DI ماژول حلقه ال ای دی را به پین D5 برد اتصال دهید. همانند تصویر زیر، اتصالات بسیار ساده است.

آموزش ساخت ساعت عقربه‌ای با حلقه LED NoePixel Ring و برد wemos D1 Mini -دیجی اسپارک

 

فراخوانی کتابخانه، مهم‌ترین قسمت

در این آموزش من از کتابخانه نئوپیکسل آدافروت استفاده کرده‌ام. کتابخانه Adafruit_NeoPixel برای مدیریت ماژول‌های نئوپیکسل توسعه داده شده است. برای دانلود کافیست به صفحه کالا حلقه ال ای دی ۱۲ تایی LED Neo Pixel Ring RGB مراجعه کرده و از قسمت دانلودها، فایل مربوطه را دانلود کنید. اگر با شیوه آپلود کتابخانه در نرم افزار آردوینو آشنا نیستید، از آموزش نصب کتابخانه در نرم افزار آردوینو Arduino IDE که توسط همکارم نوشته شده است؛ استفاده کنید. کتابخانه بعدی TimeClient می‌باشد. البته این کتابخانه به صورت پیش‌فرض و مستقل نمی‌باشد. بلکه بخشی از کتابخانه جامع Squix Weather Station می‌باشد. برای نصب این کتابخانه دو روش دارید، اول دانلود کتابخانه Squix Weather Station و سپس کپی کردن فایل TimeClient.h و TimeClient.cpp و قرار دادن در فولدر Sketch برنامه می‌باشد. روش دوم هم دانلود این دو فایل به صورت مجزا از صفحه کالا حلقه ال ای دی ۱۲ تایی LED Neo Pixel Ring RGB و سپس آدرس دهی در مسیر برنامه آردوینو می‌باشد. کتابخانه دیگر استفاده شده در این آموزش ESP8266WIFI.h می‌باشد، که در آموزش‌های قبلی از این کتابخانه استفاده کرده‌ام. برای نصب هم علاوه بر دانلود از صفحه کالا برد کنترلی اینترنت اشیاء IOT Wemos Mini D1 همچنین می‌توانید از مسیر دانلود کتابخانه در نرم افزار آردوینو این کار را انجام دهید.

 

کدهای برنامه

پس از وارد کردن کدها جهت کامپایل روی آردوینو Arduino IDE، یوزنیم و پسورد وای فای را در کدها وارد کنید. سپس روی برد آپلود کنید. پس از آن از طریق سریال مانیتور نرم افزار آردوینو اتصال برد به وای فای را بررسی کنید. سپس از سرور گوگل، اطلاعات را می‌خواند و ساعت و دقیقه و ثانیه را نمایش می‌دهد. با این روش می‌توانید عددهای ساعت را در حلقه ال ای دی مشخص کنید.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

 

پروژه

اخیرا تصمیم گرفته‌ایم برای تعامل بیشتر با شما کاربران و ایجاد موقعیتی در راستای رقابت دانش کاربران، در انتهای هر آموزش یک پروژه تعریف می‌کنیم. به اولین کاربری که به پروژه تعریف شده پاسخ صحیح بدهد، بن خرید به ارزش ۳۰ هزار تومان از فروشگاه دانشجو کیت ارایه خواهد شد. و اما پروژه این آموزش، کاری کنید که ساعت نمایش داده شده به وقت منطقه‌ای تغییر کند. یهی منطقه‌ای که در آن این ساعت به اینترنت متصل می‌شود، ساعت همان منتظقه را نمایش دهد.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۲ دیدگاه

  • سلام استاد عزیز و زحمت کش
    ببخشید برای پروژه ای که تعریف کردید باید از نو کد بنویسیم یا اینکه همینارو تغییر بدیم؟

  • سلام چطوری میشه برد رو جوری تنظیم کرد که راس ساعت خاص یه پیام از طریق تلگرام به یه شماره تعریف شده بفرسته؟
    و میشه برای ارتباط با تلگرام به جای برد wemos D1 mini از برد uno با شیلد اینترنت یا از uno با شیلد sim900a استفاده کرد که در موارد اضطراری از طریق پیامک و در بعضی موارد از طریق تلگرام پیام ارسال کند؟

    • با سلام
      ضمن تشکر از توجه شما، در خصوص سوال اول نیازی به این آموزش نیست میتوانید هم از طریق ساعت سرور استفاده کنید که از طریق وای فای و اینترنت ساعت را دریافت کند و هم اینکه میتوانید از طریق ماژول‌های ساعت این کار را انجام دهید که در این خصوص از دیگر بردها هم میتوانید استفاده کنید. در خصوص سوال دوم هم بله میشود، تمامی این کارها قابل اجراست.

  • من وقتی برای برنامه نوسی ندارم فقط راهکارو ارایه میدم برای دریافت کارت هدیه ۳۰ تمنی :ِd

    خب به این برنامه دو کتاب خانه TimeLib.h و کتاب خانه Timezone.h رو اضافه میکنیم و بعد

    efine NTP_OFFSET 60 * 60
    #define NTP_INTERVAL 60 * 1000
    #define NTP_ADDRESS “ca.pool.ntp.org”
    و بعد از این کلاینت رو و آپ تایم رو مشخص میکنیم
    WiFiUDP ntpUDP;
    NTPClient timeClient(ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);

    و بعد از این متغیر هارو در قالب رشته و کاراکتر تعریف میکنیم
    const char * days[] = {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”} ;
    const char * months[] = {“Jan”, “Feb”, “Mar”, “Apr”, “May”, “June”, “July”, “Aug”, “Sep”, “Oct”, “Nov”, “Dec”} ;
    const char * ampm[] = {“AM”, “PM”} ;

    حال نحوه گفتن زمان منطقه ای در حلقه لوپ
    ابتدا
    date = “”;
    t = “”;
    سپس
    آپدیت کلاینت متصل به سرور ان تی پی
    timeClient.update();
    unsigned long epochTime = timeClient.getEpochTime();
    و بعد تبدیل زمان دریافتی به زمان جهانی هماهنگ شده یا یو تی سی = بعلت تاخیر و زمان شناور منطقه
    time_t local, utc;
    utc = epochTime;
    حال تبدیل این زمان به زمان منطقه ای
    TimeChangeRule usEDT = {“EDT”, Second, Sun, Mar, 2, -300};
    TimeChangeRule usEST = {“EST”, First, Sun, Nov, 2, -360};
    Timezone usEastern(usEDT, usEST);
    local = usEastern.toLocal(utc);
    حال ایجاد فرمت زمان و تاریخ در اطلاعات دریافتی
    date += days[weekday(local)-1];
    date += “, “;
    date += months[month(local)-1];
    date += ” “;
    date += day(local);
    date += “, “;
    date += year(local);
    و زمان

    t += hourFormat12(local);
    t += “:”;
    if(minute(local) < 10)
    t += "0";
    t += minute(local);
    t += " ";
    t += ampm[isPM(local)];

    و بعد از این میتوان کد ها ی ال ای دی ار جی بی رای جهت نمایش متغیر های بالا قرار داد

    • با سلام
      بابت توضیحات دقیق و ریز به ریز شما تشکر میکنم. در خصوص پروژه همانطور که نوشته شده است، بایستی کدها را تغییر دهید و در یک فایل متنی ارسال کنید. در این صورت بن شما فعال خواهد شد.