امروزه اکثردستگاههای متصل به اینترنت اشیا با استفاده از اتصال وای فای به اینترنت متصل میشوند. اگرچه اتصال به وای فای دسترسی از راه دور را امکان پذیر میکند، اما محدودیتهای خاص خود را دارد. اگر با یک برد آردوینو کار میکنید و میخواهید آردوینو خود را به اینترنت متصل کنید، دو گزینه دارید. یک گزینه استفاده از ماژول ESP8266 درکنار آردوینو و گزینه دوم اتصال با شیلد اترنت W5100 است. در این بررسی قصد داریم هر دو روش اتصال آردوینو به اینترنت را توضیح دهیم.
آموزش اتصال آردوینو به اینترنت با استفاده ازشیلد اترنت W5100
شیلد اترنت W5100 این یک ماژول تک تراشه، با امکانات کامل و دارای امکان اتصال به اینترنت برای ارتباط بی سیم است. به زبان ساده، این ماژول برد آردوینو را قادر میسازد تا به اینترنت متصل شود. با استفاده از این شیلد میتوانید اتصال به اینترنت را بدون پشتیبانی از سیستم عامل برقرار کنید. همچنین این شیلد از پروتکلهای TCP/IP ارتباطات سیمی مانند TCP، PPPoE، Ethernet، UDP، ICMP، IPv4 و غیره پشتیبانی میکند. همچنین برای کسب اطلاعات بیشتر درباره آردوینو مگا می توانید مقاله مربوط به آن را بخوانید.
شیلد اترنت W5100 همچنین از کتابخانه اترنت آردوینو برای نوشتن پروژه هایی استفاده میکند که با استفاده از این ماژول به اینترنت متصل میشوند. این شیلد با تمام نسخههای آردوینو مانند UNO، NANO، mega 1280، mega 2560 و موارد دیگر مطابقت دارد. عملکرد ماژول اترنت W5100 بسیار شبیه به شیلد اترنت آردوینو است، به این معنی که شما میتوانید هر کاری را که میخواهید با یک شیلد اترنت آردوینو انجام دهید، می توانید آن کار را با استفاده از این ماژول خارجی انجام دهید.
خرید آردوينو UNO اورجينال ايتاليايي
برای انجام این پروژه، به وسائل زیر نیاز دارید:
- شیلد اترنت W5100
- آردوینو (UNO یا نانو)
- کابل RJ45
- LED (هر رنگی) و مقاومت (محدود کننده جریان از 220 اهم تا 560 اهم)
- برد بورد
- سوییچ ها
مراحل اتصال آردوینو به اینترنت با شیلد اترنت W5100 به شرح زیر است:
1- نمودار مدار برای اتصال ماژول شیلد آردوینو W5100
این مدار از آردوینو نانو و ماژول اترنت W5100 تشکیل شده است (این پروژه با اترنت آردوینو شیلد و آردوینو UNO نیز امکان پذیر خواهد بود). اتصال بین آردوینو و شیلد اترنت مطابق شکل مدار انجام میشود.
- پایههای 5 ولت و GND آردوینو نانو را به ترتیب به پین +5 و G شیلد اترنت وصل کنید (این اتصالات تغذیه ی ماژول اترنت را تامین می کند).
- پایههای 9، 10، 11،12 و 13 آردوینو را به ترتیب به R، SS، MO، MI، CK ماژول اترنت وصل کنید این پایه ها ارتباط بین آردوینو و اترنت را از طریق پروتکل SPI برقرار میکنند.
2- کد آردوینو برای دریافت داده از شیلد اترنت W5100
کتابخانه ی SPI برای استفاده از پروتکلها برای برقراری ارتباط با شیلد اترنت گنجانده شده است.
1 |
#include < SPI.h> |
اترنت دارای کتابخانهای برای اجرای وب کلاینت/وب سرور بر روی اترنت است.
1 |
#include <Ethernet.h> |
آدرس فیزیکی مک روی شیلد اترنت تنظیم شده است.
1 |
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; |
شماره 192.168.0.12 آدرس IP است. عدد صفر در این آدرس به میزبان پورت پیش فرض شبکهای که به آن متصل هستید بستگی دارد، با انجام ipconfig در خط فرمان این مورد را بررسی کنید.
1 2 3 |
byte ip[] = { 192, 168, 0, 12 }; byte gateway[] = { 192, 168, 0, 12 }; byte subnet[] = { 255, 255, 255, 0 }; |
این یک سرور محلی در پورت 80 ایجاد میکند که بعداً برای کاربرها قابل دسترسی است.
1 |
EthernetServer server(80); |
هنگامی که کاربر به وب سرور دسترسی پیدا میکند، پاسخ کاربر را میخواند.
1 |
String readString; |
تابع setup پین LED را برای خروجی مقداردهی میکند و شیلد اترنت را با پارامترهای داده شده (آدرس مک، آدرس IP، پورت، Subnet Mask) مقداردهی اولیه میکند و در نهایت، سرور با تابع server.begin() راه اندازی میشود.
1 2 3 4 5 |
int ledPin = 2;<br>void setup() { pinMode(ledPin, OUTPUT); Ethernet.begin(mac, ip, gateway, subnet); server.begin(); } |
در تابع حلقه، ما یک اتصال کلاینت ایجاد میکنیم و بررسی میشود که آیا کسی سعی دارد از طریق مرورگر به آدرس IP اختصاص داده شده دسترسی پیدا کند.
1 2 3 4 5 |
void loop() { EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { |
در صورت اتصال، به بررسی اینکه آیا کلاینت در حال ارسال پیامی به سرور است یا خیر ادامه دهید.
1 |
char c = client.read(); |
در این مرحله باید پاسخ HTTP را بخوانید و کاراکترها را در متغیر readString تعریف شده توسط کاربر ذخیره کنید.
1 2 3 |
if (readString.length() < 100) { readString += c; }<br> |
اگر درخواست HTTP به پایان رسیده باشد – 0x0D عبارت است از Carriage Return \n ASCII
1 |
if (c == 0x0D) { |
پس از دریافت پاسخ OK، شروع به نمایش صفحه وب میکنیم و در زیر کد HTML آمده است.
1 2 3 4 5 6 7 8 9 10 11 12 |
client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); client.println("<HTML>"); client.println("<HEAD>"); client.println("<TITLE> ARDUINO ETHERNET</TITLE>"); client.println("/HEAD"); client.println("<BODY>"); client.println("hr"); client.println("H1 style=\"color:green;text-align:center\">ARDUINO ETHERNET LED CONTROL</H1> "); client.println("hr"); client.println("br"); |
هنگامی که کاربر بر روی لینک TURN ON LED کلیک میکند، به URL \?LEDON هدایت میشود که LED را بیشتر روشن میکند.
1 |
client.println("<H2 style=\"text-align:centre\"><a href=\"/?LEDON\"\"> Turn On LED</a><br><H2>"); |
مشابه کد بالا، کاربر را به URL خاموش کردن LED هدایت میکند.
1 |
client.println("<H2 style=\"text-align:center\"><a href=\"/?LEDOFF\"\">Turn Off LED</a><br><H2>"); |
1 2 3 4 5 6 |
client.println("<br>"); client.println("</BODY>"); client.println("</HTML>"); delay(10); client.stop(); |
پین آردوینو را برای روشن و خاموش کردن LED بسته به URL که کاربران به آن هدایت میشوند، کنترل کنید.
1 2 3 4 5 6 7 8 9 10 11 |
if(readString.indexOf("?LEDON") > -1) { digitalWrite(ledPin, HIGH); } else { if(readString.indexOf("?LEDOFF") > -1) { digitalWrite(ledPin, LOW); } } |
پاک کردن رشته برای خواندن بعدی
1 2 3 4 5 6 |
readString=""; } } } } }<br> |
4- اتصال آردوینو به رایانه شخصی یا پورت اترنت روتر
برای اتصال کامپیوتر و آردوینو و در صورتی که پورت اترنت کامپیوتر دارای قابلیت تشخیص جهت خودکار نباشد، به یک کابل مناسب (کابل متقاطع CAT-6) نیاز داریم. در صورتی که کامپیوتر شما از سنجش مستقیم خودکار پشتیبانی میکند، کافی است یک کابل معمولی همراه با روتر را وصل کنید. در عکس زیر یک کابل ویژه است که TX+/TX- و RX+/RX- تعویض شدهاند. در هر صورت، اگر پورت اترنت در کامپیوتر شخصی خود ندارید یا نمیخواهید کابل خاصی بخرید، میتوانید از روش ما برای اتصال شیلد اترنت به پورت شبکه LAN روتر پیروی کنید.
5- چشمک زدن LED در اینترنت با استفاده از ماژول اترنت در آردوینو
پس از انجام اتصالات بالا، با استفاده از کامپیوتر شخصی یا تلفن همراه خود به روتر متصل شوید. سپس مرورگر وب را باز کنید و به آدرس 192.168.0.12 بروید، آدرس IP اینترنت خود را که در کد تنظیم کردهاید وارد کنید. اکنون میتوانید LED را از طریق صفحه وب کنترل کنید. هنگامی که کاربر روی روشن کردن LED در صفحه وب کلیک میکند، LED در مدار روشن میشود. هنگامی که روی خاموش LED کلیک میشود، LED در مدار خاموش میشود. این دستور با استفاده از اتصال سیمی ماژول اترنت اجرا میشود. صفحه وب سرور مطابق شکل است.
6- کد را کامل کنید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
#include <SPI.h> //protocol to communicate to the ethernet module #include <Ethernet.h> //library to run webclient / web server over ethernet byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address set to the ethernet module /*the number 0 in the IP address depends on the host of the network you are connected to, check that by doing ipconfig on command prompt*/ byte ip[] = { 192, 168, 0, 12 }; // IP address in LAN – need to change according to your Network address byte gateway[] = { 192, 168, 0, 12 }; // internet access via router byte subnet[] = { 255, 255, 255, 0 }; //subnet mask EthernetServer server(80); //port where the server can be accessed String readString; // to read the response form the user / client int ledPin = 2; // Led is connected to pin 2 void setup(){ pinMode(ledPin, OUTPUT); //pin selected to control //start Ethernet Ethernet.begin(mac, ip, gateway, subnet); //initialize ethernet server.begin(); //start the server } void loop(){ // Create a client connection EthernetClient client = server.available(); //check if someone is tried access the assigned IP address over a browser if (client) { //if connected, continue checking if client is sending some message back to the server while (client.connected()) { if (client.available()) { char c = client.read(); //read char by char HTTP request if (readString.length() < 100) { //store characters to string readString += c; } //if HTTP request has ended– 0x0D is Carriage Return \n ASCII if (c == 0x0D) { //display the webpage client.println("HTTP/1.1 200 OK"); //send new page client.println("Content-Type: text/html"); client.println(); client.println("<HTML>"); client.println("<HEAD>"); client.println("<TITLE> ARDUINO ETHERNET</TITLE>"); client.println("</HEAD>"); client.println("<BODY>"); client.println("<hr>"); client.println("<H1 style=\"color:green;text-align:center\">ARDUINO ETHERNET LED CONTROL</H1>"); client.println("<hr>"); client.println("<br>"); //creating a link to redirect the user to turn on the light client.println("<H2 style=\"text-align:center\"><a href=\"/?LEDON\"\">Turn On LED</a><br></H2>"); //creating a link to redirect the user to turn off the light client.println("<H2 style=\"text-align:center\"><a href=\"/?LEDOFF\"\">Turn Off LED</a><br></H2>"); client.println("<br>"); client.println("</BODY>"); client.println("</HTML>"); delay(10); //stopping client client.stop(); // control arduino pin with URL if(readString.indexOf("?LEDON") > -1) //checks for LEDON { digitalWrite(ledPin, HIGH); // set pin high } else{ if(readString.indexOf("?LEDOFF") > -1) //checks for LEDOFF { digitalWrite(ledPin, LOW); // set pin low } } //clearing string for next read readString=""; } } } } } |
آموزش اتصال آردوینو به اینترنت با ماژول ESP8266
سادهترین راه برای افزودن وای فای به پروژههای آردوینو، استفاده از یک ماژول آردوینو مانند ESP8266 است. این میکروکنترلر به شما قدرت زیادی درمورد نحوه اتصال به اینترنت میدهد. در ادامه به شما نشان میدهیم که چگونه دستورات را به ESP8266 ارسال کنید که آردوینو را به شبکه وای فای شما متصل میکند.
برای انجام این پروژه، به وسائل زیر نیاز دارد:
- آردوینو Uno
- ماژول وای فای ESP8266
- سیم
- برد بورد
- کابل (USB)
- (Arduino IDE)
مراحل اتصال آردوینو به اینترنت با اینترنت با ماژول ESP8266 به شرح زیر است:
ماژول ESP8266 شما باید دارای سیستم عامل مناسبی باشد که قبلاً روی آن فلش شده است، که فرآیند اتصال آن به شبکه وای فای شما را نسبتاً ساده میکند. با در نظر گرفتن این موضوع، ابتدا پروژه را سیم کشی میکنید و سپس در مورد دستورات اتصال آن به وای فای صحبت میکنیم.
1- سیم کشی را انجام دهید
برای این پروژه، ما از(برد) آردوینو برای برقراری ارتباط با ESP8266 استفاده خواهیم کرد، به این معنی که از پایههای ارسال و دریافت برای ارتباط با ماژول وای فای آردوینو بهره خواهیم برد. سیمهای زیر را برای اتصال هر چیزی استفاده کنید:
- TX را در ESP8266 به TX در آردوینو Uno وصل کنید.
- RX را در ESP8266 به RX در آردوینو Uno وصل کنید.
- EN را در ESP8266 به 3.3 ولت در آردوینو Uno وصل کنید
- 3v3 (یا VCC) را در ESP8266 به 3.3 ولت در آردوینو Uno وصل کنید.
- GND را در ESP8266 به GND در آردوینو Uno وصل کنید.
با نصب این سیمها، آردوینو Uno شما میتواند دستورات را از مانیتور سریال در Arduino IDE به ESP8266 منتقل کند. این مهم به شما امکان میدهد دستوراتی را ارسال کنید که آن را از طریق کامپیوتر به وای فای متصل میکند. به بخش بعدی بروید تا در مورد نحوه کارکرد آن بیشتر بدانید.
2- دستورات را اعمال کنید
برای این راهنما، ما مستقیماً با ESP8266 در ارتباط خواهیم بود، بنابراین به جای آپلود یک پروژه در آردوینو، طرح خالی پیش فرض را که فایلهای جدید آردوینو همراه آن هستند آپلود کنید (یا کد زیر را کپی کنید). با این کار هر دستورالعملی که در حال حاضر روی آردوینو اجرا میکنید پاک میشود، بنابراین میتوانید از نو شروع کنید.
1 2 3 4 5 6 7 8 9 |
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: } |
در حالی که آردوینو هنوز از طریق USB به Arduino IDE متصل است، به Tools > Serial monitor بروید. برخلاف پروژههای گذشته، این بار باید چند گزینه را در پنجره ظاهر شده تغییر دهید. روی منوی «Newline» کلیک کنید و آن را به «Both NL & CR» تغییر دهید. سپس نرخ Baud RATE را از 9600 به 115200 بیت بر ثانیه تغییر دهید. این به مانیتور سریال شما اجازه می دهد تا مستقیماً با ESP8266 ارتباط برقرار کند.
اکنون، میتوانید اتصال را آزمایش کنید تا ببینید آیا همه چیز به درستی کار می کند یا خیر. برای این کار دستور زیر را تایپ کنید:
1 |
AT |
در پاسخ، باید OK را در مانیتور سریال ببینید. اگر این را مشاهده کردید، اکنون می توانید هر یک از دستورات AT را که ESP8266 پشتیبانی می کند ارسال کنید. این به شما امکان میدهد ماژول Wi-Fi آردوینو را به صورت دستی به یک شبکه متصل کنید.
برای اتصال به شبکه وای فای خود از دستور زیر استفاده کنید:
1 |
AT+CWJAP_CUR="[ssid]","[password" |
مطمئن شوید که [ssid] و [password] را با نام و رمز عبور شبکه وای فای خود جایگزین کنید. هنگامی که این دستور را به ماژول وای فای آردوینو خود ارسال کردید، باید یک بازخوانی در مانیتور سریال مشاهده کنید که به شکل زیر است:
1 2 3 4 |
WIFI CONNECTED WIFI GOT IP OK |
ESP8266 شما اکنون به شبکه وای فای شما متصل است. اگر میخواهید بدانید که ماژول وای فای آردوینو شما اکنون در چه آدرس وای فای است، دستور زیر را صادر کنید:
1 |
AT+CIFSR |
این باید آدرس IP شبکه دستگاه شما و همچنین آدرس MAC ماژول Wi-Fi آردوینو را برگرداند. سعی کنید از دستورات AT پشتیبانی شده بیشتری برای گسترش عملکرد پروژههای وای فای آردوینو خود استفاده کنید.
کلام آخر
یکی از محبوبترین پلتفرمهای اینترنت اشیا، آردوینو است. آردوینو که توسط مبتدیان و متخصصان به طور یکسان استفاده میشود، میتواند کارهای تقریباً نامحدودی را انجام دهد. وقتی صحبت از اتصال آردوینو به اینترنت به میان میآید، گزینههای زیادی وجود دارد. اما دو گزینه رایج شامل شیلد اترنت W5100 و ماژول ESP8266 هستند. شما میتوانید برای ارسال و دریافت داده از طریق اینترنت از این دو روش استفاده کرده و آردوینو خود را به اینترنت وصل کنید. برای خرید انواع آردوینو به سایت جم ترونیک رجوع کنید.