فهرست مطالب:

Scoreboard Scoreboard با استفاده از NodeMCU: 9 مرحله (همراه با تصاویر)
Scoreboard Scoreboard با استفاده از NodeMCU: 9 مرحله (همراه با تصاویر)

تصویری: Scoreboard Scoreboard با استفاده از NodeMCU: 9 مرحله (همراه با تصاویر)

تصویری: Scoreboard Scoreboard با استفاده از NodeMCU: 9 مرحله (همراه با تصاویر)
تصویری: Using HT16K33 4 digit seven segment display with ESP8266 NodeMCU and D1 Mini 2024, جولای
Anonim
Image
Image
طرح
طرح

سلام! من به تازگی با دنیای اینترنت اشیا (اینترنت اشیاء) آشنا شدم زیرا با محبوب ترین دستگاه در این زمینه ، ESP8266 روبرو شدم. من از تعداد نهایی امکاناتی که توسط این دستگاه کوچک و ارزان باز شده بود شگفت زده شدم. از آنجا که من در این زمینه تازه کار هستم ، تصمیم گرفتم با استفاده از آن پروژه ای بسازم و در طول راه یاد بگیرم. بنابراین ، من جستجوی اینترنت را برای پروژه ها و ایده ها شروع کردم.

من با یک پروژه شگفت انگیز به نام Arduino Cricket Score Ticker توسط W. A. Smith برخورد کردم. در این پروژه از آردوینو به همراه Ethernet Shield و کارت SD برای نمایش نمرات زنده کریکت از Cricbuzz استفاده می شود. این پروژه مرا به فکر فرو برد.

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

طرفدار کریکت نیستید؟ مشکلی نیست! کد شامل تجزیه کننده XML است که می تواند برای دریافت داده از هر فایل XML استفاده شود. فقط برای به دست آوردن داده ها از توابع صحیح استفاده کنید.

مرحله 1: برنامه

طرح
طرح

برنامه این است که از تابلوی توسعه NodeMCU (با ماژول ESP-12E) برای دسترسی به اینترنت و درخواست کد XML از Cricbuzz استفاده کنید که حاوی تمام اطلاعات مربوط به مسابقات جاری یا آینده است. این کد بر روی کارت SD به عنوان یک فایل.xml ذخیره می شود. سپس فایل از کارت SD خوانده می شود تا داده های مورد نیاز از کد XML تجزیه شود. من از کد W. A. Smith برای تجزیه و تحلیل اطلاعات استفاده خواهم کرد. با تشکر از تلاش های او. در صورت تمایل به استفاده از Arduino و Ethernet Shield پروژه او را بررسی کنید.

ایده من این است که تا آنجا که ممکن است آن را کوچک کرده ، یک PCB سفارشی بسازید و برای آن کیف کنید. فعلا بیایید یک نمونه اولیه بسازیم. اما ابتدا اجازه دهید با اجزای مورد استفاده در این پروژه آشنا شویم.

بیایید شروع کنیم

مرحله 2: صفحه نمایش OLED

صفحه نمایش OLED
صفحه نمایش OLED
صفحه نمایش OLED
صفحه نمایش OLED

من تصمیم گرفتم از صفحه نمایش OLED استفاده کنم زیرا اندازه کوچک آن ارزان است. من از صفحه نمایش 0.96 اینچی استفاده می کنم که برای نمایش اطلاعات مطابقت کافی است. شما می توانید از هر اندازه صفحه نمایش استفاده کنید.

صفحه نمایشی که من استفاده می کنم یک صفحه نمایش تک رنگ با درایور SSD1306 و رابط I2C (2 سیم) است. نسخه های SPI صفحه نمایش نیز موجود است. اجرای آنها کار آسانی است. کتابخانه های SSD1306 و GFX مورد نیاز برای اجرای نمایشگرها را بارگیری کنید. با تشکر از Adafruit برای نوشتن این کتابخانه ها.

اتصالات بسیار ساده هستند.

  • GND به GND
  • VCC تا 3.3V
  • SCL تا D1
  • SDA تا D2

مرحله 3: کارت SD و آداپتور

کارت SD و آداپتور
کارت SD و آداپتور

کارت SD فایل XML را از Cricbuzz تا زمانی که تمام اطلاعات تجزیه شود ذخیره می کند. پس از نمایش اطلاعات لازم ، فایل حذف می شود. استفاده از یک کارت SD برای ذخیره یک فایل XML 10 - 20 کیلوبایت کمی مازاد است ، اما فهم آن را بسیار ساده تر و آسان تر می کند.

از هر کارت حافظه ای می توان استفاده کرد. من کارت حافظه micro SD را برای شکل کوچک آن انتخاب کردم. شما می توانید سیم ها را مستقیماً به کارت SD بچسبانید ، اما استفاده از برد شکستن کار را آسان می کند. لازم به ذکر است که همه کارت های SD با ولتاژ 3.3 ولت کار می کنند. این بدان معناست که نه تنها باید با استفاده از 3.3V تغذیه شود بلکه ارتباط بین میکروکنترلر و کارت SD باید در سطح منطقی 3.3V باشد. ولتاژ بالای 3.3 ولت آن را می کشد! ما تا آنجا که مربوط به NodeMCU است در مورد آن مزاحم نخواهیم شد زیرا NodeMCU خود با 3.3 ولت کار می کند که خوب است. اگر قصد دارید از هر میکروکنترلر دیگری با سطح منطقی 5 ولت استفاده کنید ، اطمینان حاصل کنید که برد بریکت شما دارای یک دنده تعویض سطح است (همانطور که در تصویر نشان داده شده است). این دستگاه اساساً 5 ولت را از میکروکنترلر به کارت SD 3.3 ولت تبدیل یا "تغییر" می دهد. استفاده از تغییر سطح همراه با 3.3V (همانطور که من انجام دادم) بر عملکرد آن تأثیر نمی گذارد.

کارت SD از رابط SPI برای ارتباط استفاده می کند. پین CS یا Chip Select را می توان به هر یک از پین های GPIO متصل کرد. من GPIO15 (D8) را انتخاب کردم. اگر از پینی غیر از GPIO15 استفاده کرده اید ، فقط تغییرات لازم را در کد ایجاد کنید

  • SCK تا D5
  • MISO تا D6
  • MOSI تا D7
  • CS تا D8
  • VCC تا 3.3V
  • GND به GND

کارت SD خود را فرمت کنید

کتابخانه ای که از آن استفاده خواهیم کرد از سیستم فایل های FAT16 یا FAT32 پشتیبانی می کند. مطمئن شوید که کارت SD را به فرمت صحیح قالب بندی کرده اید.

مرحله 4: ساخت صفحه کلید

ساخت صفحه کلید
ساخت صفحه کلید
ساخت صفحه کلید
ساخت صفحه کلید
ساخت صفحه کلید
ساخت صفحه کلید

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

یک ماتریس کلید آماده می توان خرید ، اما من دکمه های فشاری را در اطراف داشتم. همچنین ، می خواستم آن را تا آنجا که ممکن است کوچک کنم. یک آرایش معمولی از ردیف ها و ستون ها به 6 پین GPIO برای ماتریس 3 * 3 نیاز دارد. این بسیار زیاد است با توجه به اینکه صفحه نمایش OLED و کارت SD نیز متصل می شوند.

در صورت شک ، آن را در گوگل حذف کنید! این همان کاری است که من کردم و راهی پیدا کردم که برای کنترل کل ماتریس فقط به 1 پین نیاز دارد. این امر با استفاده از ماتریس تقسیم ولتاژ امکان پذیر است. مقاومتها بین هر سطر و ستون متصل می شوند. هنگامی که کلید را فشار می دهید ، ترکیب خاصی از مقاومت ها به صورت سری به هم متصل می شوند که یک تقسیم کننده ولتاژ ایجاد می کند. به نمودار مدار مراجعه کنید. ولتاژ متغیر توسط میکروکنترلر خوانده می شود. هر کلید ولتاژ متفاوتی ایجاد می کند و بنابراین می توان به راحتی متوجه شد که کدام کلید با خواندن ولتاژ خروجی ماتریس فشار داده شده است. از آنجا که ما می خواهیم سطوح مختلف ولتاژ و در حال حاضر فقط بالا و پایین را بخوانیم ، به یک پین آنالوگ نیاز داریم. خوشبختانه یک پین آنالوگ با برچسب A0 در NodeMCU وجود دارد. مشکل حل شد!

اگر مایل به خرید ماتریس هستید ، اتصالات داخلی نشان داده شده در نمودار را بررسی کنید. از ماتریسی با هر ابعاد می توان استفاده کرد. اطمینان حاصل کنید که از یک مقاومت 2.2kΩ بین ردیف ها و مقاومت 680Ω بین ستون ها استفاده کنید.

اتصال دکمه های فشاری

پین 1 و 2 به صورت داخلی متصل هستند. با پین های 3 و 4 مشابه است. وقتی دکمه فشار داده می شود ، همه پین ها به هم متصل می شوند. برای دریافت ایده اتصال کلیدها روی یک تخته چوبی به تصویر مراجعه کنید.

من یک سربرگ مردانه 3 پین را وصل کرده ام تا بعداً به صفحه اصلی متصل شود.

مرحله 5: همه چیز را کنار هم قرار دهید

همه چیز را کنار هم قرار دادن
همه چیز را کنار هم قرار دادن
همه چیز را کنار هم قرار دادن
همه چیز را کنار هم قرار دادن
همه چیز را کنار هم قرار دادن
همه چیز را کنار هم قرار دادن

می توانید برای قرار دادن اجزاء در هر کجا که دوست دارید برنامه ریزی کنید. هیچ محدودیتی برای آن وجود ندارد. من به شما نشان می دهم که چگونه این کار را برای جمع و جور کردن انجام دادم زیرا می خواستم چیزی که در کف قرار می گیرد. ممکن است کمی کثیف شود بنابراین اگر با لحیم کاری راحت هستید راه من را امتحان کنید. تصمیم گرفتم هر دو طرف تخته را مانند یک PCB دو لایه پر کنم. برد شکست NodeMCU و کارت SD در یک طرف و OLED و صفحه کلید در طرف دیگر.

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

من پین های یک سربرگ زن 4 پین را با زاویه راست خم کردم و آن را در سمت مس روی صفحه تخته چسباندم ، همانطور که در تصویر نشان داده شده است.

اتصالات لحیم کاری را در زیر صفحه کلید بپوشانید تا از اتصال کوتاه جلوگیری شود. یک قطعه نازک از فوم سخت (با ضخامت حدود 5 میلی متر) بین صفحه کلید و صفحه اصلی برای محافظت و سفتی بیشتر اضافه کنید. در نهایت ، صفحه کلیدی را که قبلاً ساخته بودیم لحیم کنید. داشتن آهن لحیم کاری با نوک نوک تیز مطمئناً کار شما را آسان می کند. این یک کار آشفته بود که باعث شد تا حد ممکن فشرده شود اما در نهایت موفق به انجام آن شد.

قبل از روشن کردن دستگاه ، همه اتصالات خود را برای اتصال کوتاه بررسی کنید

مرحله 6: تنظیم صفحه کلید

راه اندازی صفحه کلید
راه اندازی صفحه کلید

هنگامی که همه اتصالات را بررسی کردید ، برای اولین بار آماده تغذیه دستگاه خود هستید. انگشتان به هم چسبیده! دود جادویی ندارد؟ تبریک می گویم!

اکنون ما آماده تنظیم صفحه کلید هستیم. عملکرد صفحه کلید را به یاد بیاورید. هر فشار کلید ولتاژ متفاوتی را ایجاد می کند که به پین آنالوگ NodeMCU تغذیه می شود. ESP-12E دارای مبدل آنالوگ به دیجیتال (ADC) با وضوح 10 بیت است. 2 که به توان 10 افزایش می یابد 1024 می دهد. این بدان معناست که ما برای هر کلید فشرده بین 0 تا 1024 قرائت می کنیم. بگذارید ببینیم چه قرائتی به دست می آوریم. اما ابتدا ، ما باید یک برنامه کوچک بنویسیم تا این مقادیر را بدست آوریم. Arduino IDE را باز کنید ، کد زیر را کپی کرده و در NodeMCU بارگذاری کنید.

int keypadPin = A0؛

void setup () {Serial.begin (115200)؛ } void loop () {int r = analogRead (keypadPin) ؛ Serial.println (r)؛ }

  • مانیتور سریال را باز کنید. نرخ باود را روی 115200 تنظیم کنید.
  • حالا هر دکمه ای را فشار دهید. شما باید به طور مداوم در مانیتور سریال بخوانید. نوسانات کوچک اشکالی ندارد. در کد اصلی به آنها توجه می شود. همین کار را برای هر کلید انجام دهید.
  • هر کلید باید قرائت متفاوتی داشته باشد.
  • تمام مقادیر را یادداشت کنید. بعداً به آنها نیاز خواهیم داشت.

مرحله 7: بیایید کدگذاری کنیم

بیایید کدگذاری کنیم
بیایید کدگذاری کنیم
بیایید کدگذاری کنیم
بیایید کدگذاری کنیم
بیایید کدگذاری کنیم
بیایید کدگذاری کنیم

فایل Scoreboard.ino ارائه شده در زیر را در رایانه خود بارگیری کرده و با استفاده از Arduino IDE آن را باز کنید.

قبل از بارگذاری

1) زمان بازخوانی صفحه امتیاز را تنظیم کنید. به عنوان مثال ، 15 لیتر برای 15 ثانیه.

2) برای تمایل به اتصال ، SSID و رمز عبور روتر را وارد کنید.

3) در صورت انتخاب اتصال CS پین کارت SD به پینی غیر از GPIO15 ، تغییرات لازم را اعمال کنید.

4) مقادیری را که برای همه کلیدها ذکر کرده ایم به خاطر دارید؟ ما باید یک عدد کلیدی برای هر مقدار اختصاص دهیم. در مورد نوسانات خواندن نیز به شما گفته بودم. این به این دلیل است که مخاطبین سوئیچ کامل نیستند. در دراز مدت ، این مقدار می تواند به دلیل پیری مخاطبین از مقدار فعلی منحرف شود که مقاومت بیشتری را در مدار اضافه می کند و در نتیجه ولتاژ را تغییر می دهد. ما می توانیم این مشکل را در کد برطرف کنیم.

ما یک محدوده فوقانی و یک حد پایین مقدار با حاشیه 5 اضافه می کنیم. به عنوان مثال ، من عدد 617 را برای کلید 1 دریافت کردم.

  • 5 را از آن کم کنید. 617 - 5 = 612. این حد پایین است.
  • حالا 5 عدد به آن اضافه کنید. 617 + 5 = 622. این حد بالایی است.
  • به انتهای کد بروید. مطابق تصویر ، فضای ارائه شده برای دو مقدار را در کد پر کنید.
  • این کار را برای هر 9 مقدار انجام دهید.

if (r> 612 && r <622) {keyNumber = 1؛ }

این یعنی چی؟

اگر مقدار (r) بیشتر از 612 و کمتر از 622 باشد ، کلید 1 را فشار می دهیم. هر مقدار بین 612 و 622 به عنوان کلید 1 تلقی می شود. این مسئله نوسان خواندن را حل می کند.

مرحله 8: ساختن پرونده

ساخت پرونده
ساخت پرونده
ساخت پرونده
ساخت پرونده
ساخت پرونده
ساخت پرونده
ساخت پرونده
ساخت پرونده

این کاملا اختیاری است. من فکر می کردم پروژه مرتب و کامل با یک قاب در اطراف آن به نظر می رسد. بدون ابزار مناسب برای این کار ، این کار برای من یک کار بزرگ بود. بدنه با استفاده از اکریلیک ساخته شده است.

با صاف کردن لبه ها با استفاده از کاغذ سنباده ، قطعات را برای چسبندگی آماده کنید. من از Fevi Kwik (Super Glue) برای اتصال همه قطعات به هم استفاده کردم. چسب فوق العاده پس از سفت شدن بقایای سفید بر جای می گذارد. بنابراین ، آن را فقط بین مفاصل بمالید. هنگام کار با چسب فوق العاده باید سریع و دقیق باشید زیرا سریع چسبیده است. سیمان اکریلیک برای این کار مناسب است.

برای دسترسی به پورت USB با استفاده از یک فایل ، یک دهانه کوچک ایجاد کرد. باید اندازه کافی برای قرار دادن سیم USB داشته باشد.

یک شبکه 3x3 در جلوی جلوی دکمه های فشاری ایجاد کرد. با این کار دسترسی به دکمه های فشاری مشکل می شود. برای حل این مشکل ، من قطعات مربعی را برای هر کلید برش می دهم تا دکمه های آنها تا سطح بالا کشیده شوند.

پس از این همه سنباده زنی ، برش ، رفع و تنظیم ، بالاخره این کار انجام شد!

مرحله 9: از آن لذت ببرید

خوش بگذره!
خوش بگذره!

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

پس از روشن شدن ، ابتدا به نقطه دسترسی متصل می شود. کارت SD را اولیه می کند. اگر کارت SD اولیه نشده باشد خطایی را نشان می دهد.

لیستی از همه مسابقات به همراه شماره مسابقه نمایش داده می شود.

شماره مطابقت را با استفاده از صفحه کلید انتخاب کنید.

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

برای بازگشت به منو ، دکمه BACK (کلید 8) را نگه دارید تا صفحه "واکشی نمرات …" نمایش داده شود.

برنامه های آینده

  • با ماژول ESP8266 12-E یک PCB سفارشی طراحی کنید.
  • یک باتری قابل شارژ اضافه کنید.
  • کد را با ویژگی های جدید بهبود دهید.

امیدوارم از ساخت آن لذت برده باشید خودتان درست کنید و لذت ببرید! همیشه فضایی برای پیشرفت وجود دارد و چیزهای زیادی برای یادگیری وجود دارد. ایده های خود را مطرح کنید. در صورت تمایل می توانید هرگونه پیشنهاد در مورد ساخت را کامنت کنید. ممنون که تا آخر سر کار بودی

توصیه شده: