فهرست مطالب:
- مرحله 1: منطق نرم افزار: معماری سیستم
- مرحله 2: مرحله 1: سیم کشی سخت افزار
- مرحله 3: مرحله 2: آردوینو
- مرحله 4: مرحله 3: NodeJS
- مرحله 5: مرحله 4: رابط وب
- مرحله ششم: نتیجه گیری
تصویری: پروژه آردوینو: کنترل الکترونیک بر روی اینترنت با استفاده از پایگاه داده Nodejs + SQL و وب سایت .: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:56
پروژه توسط: Mahmed.tech
تاریخ ساخت: 14 جولای 2017
سطح دشواری: مبتدی با برخی از دانش برنامه نویسی.
سخت افزار مورد نیاز:
- Arduino Uno ، Nano ، Mega (من فکر می کنم اکثر MCU با اتصال سریال کار می کند)
- تنها LED و مقاومت محدود کننده جریان. اگر مطمئن نیستید از این ماشین حساب استفاده کنید: ماشین حساب قانون اهم
- پتانسیومتر 10K
نرم افزار مورد نیاز:
- آردوینو IDE
- Node. JS (این یک نرم افزار روی رایانه است ، نصب آن بسیار ساده است)
- MySQL Server (ساده ترین راهی که من پیدا کردم استفاده از میزبانی وب ارزان است. همچنین می توانید نام دامنه رایگان دریافت کنید)
زبان برنامه نویسی و برنامه نویسی مورد استفاده:
آردوینو (تغییر C/C ++) ، جاوا اسکریپت (Nodejs) ، PHP ، HTML و CSS
مقدمه این پروژه به طور خلاصه: کنترل میکروکنترلر آردوینو از طریق رابط وب. بنابراین هر وسیله برقی را از هر کجا با اینترنت کنترل کنید. من می خواستم درک خود را از برنامه نویسی و توسعه وب و چه راهی بهتر از انجام یک پروژه ساده اما م effectiveثر ارائه دهم. سخت افزار به حداقل می رسد بنابراین می توانم بیشتر روی نرم افزار تمرکز کنم. از این رو من با یک چراغ LED ساده و تنظیم قابلمه رفتم. گلدان داده ارسال می کند و led دریافت می کند (روشنایی PWM). با استفاده از NodeJS داده های سریال خوانده شد (مقدار پتانسیومتر) و نوشته شد (روشنایی LED). بخش دشوار این پروژه دریافت داده های ورودی از یک مکان از راه دور (سرور وب) بود
مرحله 1: منطق نرم افزار: معماری سیستم
داده های پتانسیومتر:
این کار در آردوینو شروع می شود ، مقدار قابلمه خوانده شده به صورت سریال چاپ می شود. با این حال ، این بار از Node. JS برای خواندن مقدار استفاده می کنیم. NodeJS ارتباط سریال را به همان پورتی که آردوینو به آن متصل است باز می کند و مقدار قابلمه چاپ شده را می خواند. NodeJS سپس داده ها را در پایگاه داده SQL از راه دور بارگذاری می کند ، این امر هر بار که مقدار قابلمه جدیدی چاپ می شود اتفاق می افتد. یک صفحه وب به بازه تنظیم پایگاه داده SQL متصل می شود و مقدار پتانسیومتر را بازیابی می کند. سپس این مورد در صفحه وب نمایش داده می شود.
داده های رهبری:
برای LED ، روشنایی PWM توسط کاربر در یک صفحه وب از راه دور تنظیم می شود ، بنابراین سفر آن در انتهای مخالف طیف شروع می شود. داده های ورودی در یک پایگاه داده SQL ذخیره می شود ، هر بازه تنظیم پایگاه داده برای تغییر در led PWM بررسی می شود ، این توسط NodeJS انجام می شود. اگر مقدار با مقدار قبلی متفاوت باشد ، مقدار جدید از طریق گذرگاه سریال به آردوینو ارسال می شود. آردوینو مقدار PWM خروجی led را تغییر می دهد تا روشنایی آن را تغییر دهد.
برای محاسبه قانون اهم از فرمول V = IR و P = IV = I²R = V²/R استفاده می شود. برای این پروژه ، من از چراغ آبی استفاده می کنم. این مهم است زیرا با افزایش فرکانس نور افت ولتاژ نیز افزایش می یابد. از آنجا که نور آبی فرکانس بالاتری در مقایسه با چیزی مانند قرمز قرمز دارد. این به معنای ولتاژ رو به جلو بالاتر است. بسته به نوع ، نوع و اندازه ، محدوده کار متفاوت است. برای تنظیم ، از مقاومت 220 Ω به صورت سری استفاده کردم ، منفی به زمین و مثبت به پین PWM در آردوینو. قابلمه به پین آنالوگ متصل شد. با 5VCC یک سر GND سر دیگر و پین وسط به پین آنالوگ متصل است (در مورد من A0).
مرحله 2: مرحله 1: سیم کشی سخت افزار
این بسیار ساده است: فقط مقاومت محدود کننده فعلی خود را به صورت سری به LED وصل کنید تا مطمئن شوید که مسیر شما به درستی انجام شده است. یک نقطه به GND و انتهای دیگر به پین آردوینو می رسد. برای نصب ، از پین 12 برای led و A7 برای Pot استفاده کردم. من شماتیک ندارم از مدار بسیار ساده آن. با این حال ، من این را آنلاین پیدا کردم (تصویر)
مرحله 3: مرحله 2: آردوینو
ابتدا ، هد و گلدان بررسی شد که آیا آنها مطابق انتظار کار می کردند. این توسط یک برنامه ساده که ارزش قابلمه led را کنترل می کند ، انجام شد. من از تابع محدود برای تغییر محدوده 0 تا 1023 به 0 تا 255 استفاده کردم ، اما یک ساده /4 نیز کار می کند. مقدار گلدان با گرفتن متوسط میانگین از 10 قرائت متوالی صاف شد ، این برای حذف سنبله ها است. (با این حال ، این هموارسازی باعث ایجاد مشکل در NodeJS شد ، بنابراین بعداً در پروژه حذف شد - در مورد آن)
کد آردوینو
مرحله بعدی این است که ورودی کاربر را از طریق پنجره های مانیتور سریال ارائه شده توسط Arduino ide برای تنظیم روشنایی دریافت کنید. برای انجام این کار ، از serial.parseInt () استفاده می شود که یک مقدار صحیح می گیرد و رشته را نادیده می گیرد. همچنین ، بررسی خطا به کد اضافه می شود. محدوده معتبر یک مقدار PWM 0 - 255 است ، هنگامی که یک کاربر> 255 را وارد می کند ، مقدار 255 را به آن اختصاص می دهد و اگر کاربر مقدار را وارد کند یا <+/- 5 ، من این کار را برای ثبات بیشتر خواندن از زمان نوسان انجام داده ام. به چرا این یک مشکل بزرگ مربوط به به روز رسانی SQL است ، در مورد آن بعداً بیشتر توضیح دهید.
مرحله 4: مرحله 3: NodeJS
من قصد ندارم نحوه دریافت یا راه اندازی و راه اندازی SQL سرور را به شما نشان دهم. تعداد زیادی آموزش وجود دارد.
3 جنبه اصلی برنامه NodeJS وجود دارد:
اطلاعات سریال را بخوانید
نوشتن داده های سریال
به روز رسانی پایگاه داده SQL
برای برقراری ارتباط سریال در NodeJS ، ماژولی به نام serialport باید بارگیری شود که می تواند با استفاده از دستور npm انجام شود. CMD را در پوشه ای که برنامه NodeJS در آن نگهداری می شود باز کنید ، با تایپ کردن: npm install serialport همچنین ماژول SQL باید نصب شود تا بتواند به پایگاه داده sql متصل شود: npm install mysql NodeJS - Port Port اولین مرحله من با NodeJS برنامه خواندن داده های چاپ شده و ارسال روشنایی pwm به آردوینو بود. این کار با باز کردن اتصال سریال در همان braudrate و پورت انجام شد. پس از برقراری ارتباط ، پیامهای دریافتی را خواندم و روی پنجره کنسول چاپ کردم. مشکل زمانی ایجاد شد که سعی کردم مقدار pwm را برای کنترل روشنایی بنویسم.
مرتباً خطاها را پرتاب می کرد: Port Not Open ، راه حل اولیه من این بود که وقتی داده های ورودی وجود دارد ، تابع نوشتن را فراخوانی کرد. با این حال ، این یک راه حل بد بود و من از راه حل کاملاً ناراضی بودم ، حتی اگر کار می کرد ، فقط وقتی ارزش قابلمه تغییر می کرد ، ارسال می شد. کد مثال برای ماژول سریال نیز با ایجاد خطای یکسان کار نمی کند. بعداً متوجه شدم که برنامه سعی می کند عملکرد نوشتن را بدون باز کردن پورت اجرا کند ، که منجر به این خطا شد. من با استفاده از تابع setInterval () این مشکل را حل کردم
NodeJS - MySQL از کتابخانه MySQL (npm install MySQL) برای اتصال به پایگاه داده SQL استفاده شد زیرا سرور در یک مکان دور از آدرس IP سرور به جای localhost استفاده می شد.
var con اطلاعات اتصال را با فرمت JSON نگه می دارد ، هنگامی که اتصال با موفقیت برقرار شد ، پایگاه داده می تواند مورد پرسش قرار گیرد. 2 تابع ایجاد شد که یکی برای به روز رسانی جدول و دیگری با پارامترهای موجود در پرس و جو SQL انتخاب می شود. هنگامی که مقدار pot جدید دریافت می شود و درخواست بررسی روشنایی به صورت دوره ای اجرا می شود ، جدول بروز رسانی فراخوانی می شود.
پیوند NodeJSCode
مرحله 5: مرحله 4: رابط وب
رابط وب
صفحه اصلی به زبان PHP نوشته شده است زیرا من قبلاً برخی از تجربیات خود را در پایگاه های داده CO323 و ماژول وب در دانشگاه داشته ام. برای نمایش داده های sql از جدول و فرم Html استفاده شد.
کد دسترسی PHP SQL: پیوند به بخش رابط وب حرکت کنید.
HTML & CSS * جاوا اسکریپت کد وب سایت: پیوند به پایین بروید
صفحه وب نهایی
توصیه شده:
ایستگاه هواشناسی: ESP8266 با خواب عمیق ، SQL ، رسم نمودار توسط فلاسک و طرح کلی: 3 مرحله
ایستگاه هواشناسی: ESP8266 با خواب عمیق ، SQL ، رسم نمودار توسط Flask & Plotly: آیا دانستن دما ، رطوبت یا شدت نور در بالکن شما جالب خواهد بود؟ می دانم که می خواهم. بنابراین من یک ایستگاه هواشناسی ساده برای جمع آوری چنین داده هایی ساختم. بخشهای زیر مراحلی است که من برای ساختن آن انجام دادم. بیایید شروع کنیم