در این مثال، شما خواهید توانست با استفاده از WiFi Shield خود و آردینو خود یک سرور وب ساده بسازید. با استفاده از کتابخانه WiFi ، دستگاه شما قادر خواهد بود پاسخگوی درخواست WiFi Shield شما باشد.پس از باز کردن یک مرورگر و رفتن به آدرس آی پی WiFi Shield خود، آردینو شما فقط با HTML کافی برای مرورگر برای نمایش مقادیر همه ی شش پین آنالوگ پاسخ خواهد داد.
این مثال برای یک شبکه دارای رمزنگاری WPA نوشته شده است. برای WEP یا WPA وای فای را تغییر دهید.()begin را مطابق با آن فراخوانی کنید.
سخت افزار مورد نیاز
Arduino WiFi Shield
شیلد سازگار با برد آردینو
(اختیاری) شش سنسور آنالوگ متصل به پین های آنالوگ داخلی 0-5
مدار
شیلد WiFi از پین های 10 ، 11 ، 12، و 13 برای ارتباط SPI به ماژول HDG104 استفاده می کند. پین 4 دیجیتال ، برای کنترل پین انتخاب slave روی SD کارت استفاده می شود. برای این مثال شما باید به شبکه وایرلس 802.11b/g که به اینترنت متصل است؛ دسترسی داشته باشید.
شما احتیاج خواهید داشت تنظیمات شبکه در طرح را مطابقSSID شبکه خاص خود تغییر دهید.
برای شبکه های WPA/WPA2 که از رمزنگاری شخصی WPA/WPA2 استفاده می کنند، شما به SSID و پسورد نیاز دارید.شیلد قادر به اتصال به شبکه دارای رمزنگاری قوی WPA2 نیست.
پسورد در شبکه WEP ، رشته های هگزادسیمال به عنوان کلید شناخته شده هستند. یک شبکه WEP می تواند 4 کلید متفاوت داشته باشد؛ به هر کلید
یک مقدار”Key Index” اختصاص داده شده است. برای شبکه های رمزگذاری شده ی WEP ،شما به SSID ، کلید ، و شماره کلید احتیاج دارید.
در تصویر بالا ، آردینو باید در زیر شیلد WiFi قرار بگیرد.
کد:
#include <SPI.h>
#include <WiFi.h>
char ssid[] = "yourNetwork"; // شبکه شما SSID (اسم)
char pass[] = "secretPassword"; // پسورد شبکه شما
int keyIndex = 0; // فهرست شماره کلید شبکه شما(WEP مورد نیاز برای )
int status = WL_IDLE_STATUS;
WiFiServer server(80);
void setup() {
// شروع به کار پورت سریال:
Serial.begin(9600);
// WiFi تلاش برای اتصال به شبکه :
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
// انتظار تا 10 ثانیه برای اتصال:
delay(10000);
}
server.begin();
// شما متصل شده اید،چاپ وضعیت :
printWifiStatus();
}
void loop() {
//گوش دادن برای کلاینت های ورودی
WiFiClient client = server.available();
if (client) {
Serial.println("new client");
// با یک خط سفید Http یک درخواست پایان
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// اگر شما به خط آخر رسیدید( دریافت کاراکتر خط جدید)
// و خط سفید است پایان رسید Http درخواست
// بنابراین شما می توانید پاسخ بفرستید
if (c == '\n' && currentLineIsBlank) {
// بفرستید Http یک پاسخ سرایند استاندارد
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// افزودن یک برچسب رفرش متا، مرورگر هر 5 ثانیه دوباره می کشد:
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
// بردن خروجی مقدار هر یک پین های آنالوگ ورودی
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// شما یک خط جدید را شروع می کنید
currentLineIsBlank = true;
}
else if (c != '\r') {
// شما یک کاراکتر روی خط جاری دریافت کردید
currentLineIsBlank = false;
}
}
}
// دادن زمان به مرورگر وب برای دریافت داده
delay(1);
// بستن اتصال:
client.stop();
Serial.println("client disonnected");
}
}
void printWifiStatus() {
// شبکه ای که شما به آن متصل شدید SSID چاپ:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// WiFi چاپ آی پی آدرس شیلد :
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// چاپ قدرت سیگنال دریافتی:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
لینک سایت:Arduino - WiFiWebServer