این مثال به شما نشان می دهد که چگونه درخواست مکرر HTTP را با استفاده از WiFi shield بدهید. با اتصال به http://www.arduino.cc/latest.txt
محتوای صفحه از طریق پنجره سریال آردینو قابل مشاهده است. این مثال برای یک شبکه دارای رمزنگاری WPA نوشته شده است. برای WEP یا WPA وای فای را تغییر دهید.begin() را مطابق با آن فراخوانی کنید.
سخت افزار مورد نیاز
Arduino WiFi Shield
شیلد سازگار با برد آردینو
مدار
شیلد 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;
// Wifi مقداردهی اولیه به کلاینت سرور
WiFiClient client;
// آدرس سرور:
char server[] = "www.arduino.cc";
// آدرس آی پی سرور (64,131,82,241);
unsigned long lastConnectionTime = 0; // آخرین باری که شما به سرور متصل شدید به میلی ثانیه
boolean lastConnected = false; // وضعیت اتصال آخرین بار از طریق حلقه اصلی
const unsigned long postingInterval = 10*1000; // تاخیر بین بروزرسانی ها، به میلی ثانیه
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);
}
// شما اکنون متصل شده اید.چاپ وضعیت:
printWifiStatus();
}
void loop() {
// اگر داده های ورودی از اتصال به شبکه وجود دارد
// آن را به پورت سریال ارسال کنید. تها جهت اشکال زدایی
while (client.available()) {
char c = client.read();
Serial.write(c);
}
// اگر اتصالی وجود ندارد اما آخرین دفعه وجود داشت
// از طریق حلقه ،کلاینت را متوقف کنید.
if (!client.connected() && lastConnected) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
}
//اگر شما متصل نیستید و 10 ثانیه از آخرین اتصال شما گذشت
// دوباره متصل شوید و داده ها را بفرستید:
if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
httpRequest();
}
// وضعیت اتصال را از طریق حلقه برای دفعه بعد ذخیره کنید
lastConnected = client.connected();
}
// به سرور می شود HTTP این متد باعث اتصال:
void httpRequest() {
// اگر اتصال موفقیت آمیز بود:
if (client.connect(server, 80)) {
Serial.println("connecting...");
// درخواست HTTP PUT بفرستید:
client.println("GET /latest.txt HTTP/1.1");
client.println("Host: www.arduino.cc");
client.println("User-Agent: arduino-ethernet");
client.println("Connection: close");
client.println();
// ذکر زمانی که اتصال ساخته شد:
lastConnectionTime = millis();
}
else {
// اگر شما نتوانستید متصل شوید :
Serial.println("connection failed");
Serial.println("disconnecting.");
client.stop();
}
}
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");
}
لینک سایت: