ارسال متن به وب سرور Arduino از طریق جعبه متن HTML

         

در سالیان پیش، با ارسال اس ام اس و یا از طریق ماژول بلوتوث و یک برد با تراشه میکروکنترلر AVR مثل آردیونو می‌توانستیم، پروژه های هوشمند سازی انجام دهیم. اما اکنون پیشروی پروژه ها با کمک اینترنت است اینترنت اشیاء IOT عملا ساخت سخت افزارهای پیچیده را به اتمام رسانده است. . با ترکیب برد آردوینو شیلد اترنت و آردوینو UNO  می توانید کارهای جالبی انجام دهید. از جمله شبکه کردن دستگاه های مختلف و یا حتی هوشمند سازی ساختمان یا BMS که از طریق پورت شبکه می توانید کنترل کنید.

همچنین وجود شیار حافظه Micro SD امکان خواندن و نوشتن اطلاعات روی آن را فراهم می آورد.

به همین دلیل ما در این آموزش ابتدا به معرفی و بررسی این شیلد می پردازیم و در نهایت با استفاده از آن به راه اندازی پروژه ارسال متن از طریق یک وب سرور طراحی شده به آردیونو میپردازیم.

ساختار شیلد اترنت W5100

از ترکیب شیلد اترنت با آردوینو، می‌توانید برد خود را به اینترنت وصل کنید. از طریق اینترنت و در هر مکانی پروژه‌های خود را کنترل نمایید. چیپ استفاده شده در این بردW5100 می‌باشد. Wiznet W5100 برای شما یک آی پی فراهم خواهد کرد که در هردو مدل tcp و udp کارخواهد داد و از ۴ اتصال به سوکت به صورت همزمان نیز پشتیبانی خواهد کرد. شیلد اترنت آردوینو به برد اجازه می‌دهد تا به وسیله کتابخانه مخصوص اترنت به اینترنت متصل شوید و همچنین برای استفاده از کارت اس دی آن نیز باید از کتابخانه مخصوص sd استفاده کنید. همچنین این شیلد باسرعت ۱۰/۱۰۰Mb به برد آردوینو متصل می‌شود. برقراری ارتباط آردوینو با w5100 و کارت اس دی به وسیله SPI bus انجام می‌شود. ارتباط این شیلد با برد آردوینو uno  از طریق پورت های ۱۱,۱۲,۱۳ می باشد.

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

تا این قسمت از مقاله با این شیلد آشنایی لازم را بدست آوردید در ادامه به توضیح پروژه می پردازیم.

ساختار و نحوه عملکرد پروژه

شیلد Ethernet  به عنوان یک وب  سرور برای میزبانی یک صفحه وب Arduino  حاوی جعبه متن استفاده می شود. متن را می توان در جعبه متن صفحه وب با استفاده از یک مرورگر وب تایپ کرد و با کلیک بر روی یک دکمه در صفحه وب به آردوینو ارسال کرد.

دستور HTML textarea در فرم HTML برای ایجاد کادر متن استفاده می شود. جاوا اسکریپت را زمانی استفاده می کنیم که بخواهیم دکمه ای در صفحه وب طراحی کنیم که با یک کلیک  و دستور HTTP GET به ارسال متن به Arduino  بپردازیم . این دستورها برای هر پروژه آردوینویی که در آن نیاز به دریافت متن از یک صفحه وب با استفاده از یک جعبه متن باشد ، می تواند مفید باشد.

Arduino سخت افزار، نرم افزار و تنظیمات صفحه HTML

سخت افزار

سخت افزار های مورد نیاز برای تست این پروژه، Arduino Ethernet shield  و  Arduino Uno و micro SD می باشد. بیشتر بورد های Arduino با Ethernet shield  سازگار هستند و مطمئنا کار میکنند.

 تنظیمات

قسمتHTML   برنامه را از یک فایل که با نام pymn.htm در پایان مقاله است را در کارت micro SD کپی کنید و آن را به سوکت Ethernet shield متصل کنید.

کد آردوینو را در زیر از فایلی به نام pymnnet.ino در آردوینو بارگذاری کنید سپس MAC و آدرس IP  را در کد آردیونو تغییر دهید تا با شبکه دلخواه خودتان سازگار باشد. در پنجره  سریال مانیتور IDE آدرینو، نرخ تبادل اطلاعات در پایین پنجره را در۱۱۵۲۰۰ تنظیم کنید.  برای اجرای پروژه با اتصال آردیونو به شبکه اترنت، ابتدا پنجره سریال مانیتور را باز کنید، سپس یک مرورگر وب را باز کنید و به آدرس IP تعیین شده در کد بروید و حالا شما میتوانید  متن خود را در کادر متن در صفحه وب تایپ کرد و به آردوینو ارسال کنید. اگر نوار خط متن بیش از حد طولانی نباشد (آرایه های بافر در کد آردوینیو) Arduino متن را در پنجره سریال مانیتور نمایش می دهد.

در این پروژه چگونه جعبه متن کار می کند ؟

جاوا اسکریپت جاسازی شده در صفحه وب، متن را از کادر متن به عنوان بخشی از درخواست HTTP GET هنگامی که دکمه روی صفحه وب کلیک می شود، به عنوان Arduino می نویسد.

 

متن قبل از اینکه به آردیونو فرستاده بشود بین   = txt&  و  end = end& قرار می گیرد. آردینو از این متن برای پیدا کردن رشته در درخواست دریافتی از HTTP GET استفاده می کند.

 

هنگامی که متن به Arduino می رسد، کاراکتر های فضای خالی متن به٪ ۲۰ تغییر داده شده می شودکه در تصویر زیر نشان داده شده است.

 

 

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

برای دریافت رشته متن جعبه از درخواست ورودی HTTP GET استفاده می شود. آرایه HTTP_req ابتدا درخواست تابع ()GetText از ورودی را  نگه می دارد همانطور که در تصویر بالا نشان داده شده است

شروع با GET / ajax_inputs & txt …

 

تابع ()GetText  ابتدا اشاره گر را با جستجو به ابتدای رشته متن جعبه یعنی بعد از  =txt &  می برد و سپس رشته هنگامی که به قبل از end& می رسد پایان می یابد.  A در حلقه برای کپی کردن رشته به آرایه txt استفاده میشود که اشاره گر در آرایه txt_buf است). در حالی که کپی کردن در حال انجام است، کد به دنبال فضاهایی است که به عنوان ۲۰٪ رمزگذاری شده اند ، می رود و آنها را به فضای خالی ( کاراکتر فاصله) تغییر می دهد.

 

محدودیت طرح متن آردوینو

این پروژه توسط اندازه بافر محدود شده است که موجب صرفه جویی در درخواست دریافتی HTTP GET می شود که به خوبی اندازه آرایه ای رشته را از جعبه متن ذخیره می کند. این دو آرایه بافر کوچک شده اند تا کد بتواند بر روی Arduino Uno  اجرا شود.

اگر رشته ای که در جعبه متن است برای بافر HTTP در Arduino خیلی بزرگ باشد، رشته قبل از &end پایان داده می شود و در پنجره سریال مانیتور نمایش داده نخواهد شد، زیرا تابع ()GetText ، مقدار false  را نشان خواهد داد.

این فقط یک عنوان ساده ای برای استفاده از GET در ارسال متن بود. بهتر است متن را با استفاده از POST بفرستید که این آموزش را بعد اضافه خواهم کرد. پس از پایان آموزش های مبحث وب سرور در پست های بعدی بصورت کاملا دقیق به آموزش اینترنت اشیاء از طریق ربات تلگرام می پردازم . پست های اینترنت اشیاء رو دنبال کنید.

 

 

نام فایل : کد فایل اچ تی ام ال
حجم : ۱ کیلوبایت
پسورد : www.robo-lu.ir

دانلود

 

نام فایل : کد فایل آردوینو
حجم : ۴ کیلوبایت
پسورد : www.robo-lu.ir

دانلود

 

پیمان طهماسبی

درباره پیمان طهماسبی

دانشجوی کارشناسی برق ورودی سال 94. زمینه های کاری:فتوشاب. پایتون. میکس و مونتاژ فیلم.طراحی سایت با web builder . انیمیشن سازیswish max.میکس موزیک. برنامه نویسی++ c. آردیونو. ICDL مقدماتی و پیشرفته و آتوکد و .....

2 دیدگاه در “ارسال متن به وب سرور Arduino از طریق جعبه متن HTML

پاسخ دهید