WiFiWebServer

Bu örnekte, basit bir Web sunucusu oluşturmak için WiFi Kalkanınızı ve Arduino veya Genuino kartınızı kullanacaksınız. WiFi kitaplığını kullanarak, cihazınız WiFI kalkanınızla bir HTTP isteğini yanıtlayabilecektir. Bir tarayıcı açıp WiFi kalkanınızın IP adresine gittikten sonra, kartınız bir tarayıcının altı analog pimin tüm giriş değerlerini göstermesi için yeterli HTML ile yanıt verecektir.

Bu örnek, WPA şifrelemesi kullanan bir ağ için yazılmıştır. WEP veya WPA için Wifi.begin () çağrısını uygun şekilde değiştirin.

Gerekli Donanım

  • Arduino WiFi Kalkanı
  • Kalkan uyumlu Arduino veya Genuino kartı
  • (isteğe bağlı) 0-5 Analog Pimlere bağlı altı analog sensör

Devre

WiFi kalkanı, HDG104 modülüne SPI bağlantısı için 10, 11, 12 ve 13 pinlerini kullanır. Dijital pim 4, SD karttaki ikincil seçim pimini kontrol etmek için kullanılır.

Bu örnek için İnternet'e bağlanan bir 802.11b / g kablosuz ağa erişiminizin olması gerekir. Çizimdeki ağ ayarlarını, belirli ağlarınızın SSID'sine karşılık gelecek şekilde değiştirmeniz gerekecektir.

WPA / WPA2 Kişisel şifreleme kullanan ağlar için SSID ve parolaya ihtiyacınız vardır. Kalkan WPA2 Enterprise şifrelemesi kullanan ağlara bağlanmaz.

WEP ağ parolaları, anahtarlar olarak bilinen onaltılık dizelerdir. WEP ağında 4 farklı anahtar bulunabilir; her tuşa bir "Anahtar Dizini" değeri atanır. WEP şifreli ağlar için SSID'ye, anahtara ve anahtar numarasına ihtiyacınız vardır.

Yukarıdaki görüntüde, Arduino veya Genuino kartı WiFi kalkanının altına istiflenecekti.

Uyarı

Bu örnek bir SD kart gerektirmez. Bir SD kart takılmış ancak kullanılmamışsa, çizimin asılması mümkündür, çünkü pin 4 SD'nin SS (aktif düşük) olarak kullanıldığı ve kullanılmadığında varsayılan olarak INPUT olarak yapılandırıldığı için. İki olası çözüm:

  • SD kartı çıkarın;
  • kurulumda bu kod satırlarını ekle ()

pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
[Kodu Al]

Kod

/ *
WiFi Web Sunucusu

Analog giriş pinlerinin değerini gösteren basit bir web sunucusu.
bir WiFi kalkan kullanarak.

Bu örnek, WPA şifrelemesi kullanan bir ağ için yazılmıştır. İçin
WEP veya WPA, Wifi.begin () çağrısını uygun şekilde değiştirin.

Devre:
* WiFi kalkanı takılı
* A0 - A5 pinlerine bağlı analog girişler (isteğe bağlı)

oluşturuldu 13 Temmuz 2010
yazan dlf (Metodo2 srl)
değiştirildi 31 Mayıs 2012
tarafından Tom Igoe

* /


#include <SPI.h>
#include <WiFi.h>


char ssid [ ] = "ağınız" ; // ağ SSID'niz (adınız)
char pass [ ] = "secretPassword" ; // ağ şifreniz
int keyIndex = 0 ; // ağ anahtarınız Dizin numarası (yalnızca WEP için gereklidir)

int durum = WL_IDLE_STATUS ;

WiFiServer sunucusu ( 80 ) ;

void setup ( ) {
// Seriyi başlat ve portun açılmasını bekle:
Seri . başlar ( 9600 ) ;
while ( ! Seri ) {
; // seri portun bağlanmasını bekleyin. Yalnızca yerel USB bağlantı noktası için gereklidir
}

// kalkanın varlığını kontrol edin:
if ( Kablosuz. durum ( ) == WL_NO_SHIELD ) {
Seri . println ( "WiFi kalkanı mevcut değil" ) ;
// devam etme:
while ( true ) ;
}

Dize fv = WiFi. firmwareVersion ( ) ;
if ( fv ! = "1.1.0" ) {
Seri . println ( "Lütfen ürün yazılımını yükseltin" ) ;
}

// Kablosuz ağa bağlanmaya çalışın:
while ( durum ! = WL_CONNECTED ) {
Seri . print ( "SSID'ye bağlanma denemesi:" ) ;
Seri . println ( ssid ) ;
// WPA / WPA2 ağına bağlanın. Açık veya WEP ağı kullanıyorsanız bu satırı değiştirin:
status = WiFi. başlamak ( ssid , pass ) ;

// bağlantı için 10 saniye bekleyin:
gecikme ( 10000 ) ;
}
sunucusu. begin ( ) ;
// şimdi bağlandınız, durumu yazdırın:
printWifiStatus ( ) ;
}


void loop ( ) {
// gelen müşterileri dinle
WiFiClient istemcisi = sunucu. kullanılabilir ( ) ;
if ( müşteri ) {
Seri . println ( "yeni istemci" ) ;
// http isteği boş bir satırla bitiyor
bool currentLineIsBlank = true ;
while ( istemci. bağlı ( ) ) {
if ( müşteri. kullanılabilir ( ) ) {
char c = istemci. read ( ) ;
Seri . yazma ( c ) ;
// satırın sonuna geldiyseniz (yeni satır aldı)
// karakter) ve satır boşsa, http isteği sona erdi,
// böylece bir cevap gönderebilirsiniz
if ( c == ' \ n ' && currentLineIsBlank ) {
// standart bir http yanıt başlığı gönder
istemcisi. println ( "HTTP / 1.1 200 TAMAM" ) ;
istemcisi. println ( "İçerik Tipi: metin / html" ) ;
istemcisi. println ( "Bağlantı: kapat" ) ; // yanıt tamamlandıktan sonra bağlantı kapatılacak
istemcisi. println ( "Yenile: 5" ) ; // sayfayı her 5 saniyede bir otomatik olarak yenile
istemcisi. println ( ) ;
istemcisi. println ( "<! DOCTYPE HTML>" ) ;
istemcisi. println ( "<html>" ) ;
// her analog giriş piminin değerini çıktılayın
for ( int analogChannel = 0 ; analogChannel < 6 ; analogChannel ++ ) {
int sensorReading = analogRead ( analog Kanal ) ;
istemcisi. baskı ( "analog giriş" ) ;
istemcisi. baskı ( analog Kanal ) ;
istemcisi. print ( "is" ) ;
istemcisi. baskı ( sensorReading ) ;
istemcisi. println ( "<br />" ) ;
}
istemcisi. println ( "</html>" ) ;
kırmak ;
}
if ( c == ' \ n ' ) {
// yeni bir satıra başlıyorsunuz
currentLineIsBlank = true ;
} else if ( c ! = ' \ r ' ) {
// mevcut satırda bir karakter kazandınız
currentLineIsBlank = yanlış ;
}
}
}
// web tarayıcısına verileri alması için zaman tanıyın
gecikme ( 1 ) ;

// bağlantıyı kapat:
istemcisi. stop ( ) ;
Seri . println ( "istemci bağlantısı kesildi" ) ;
}
}


void printWifiStatus ( ) {
// bağlı olduğunuz ağın SSID'sini yazdırın:
Seri . print ( "SSID:" ) ;
Seri . println ( WiFi. SSID ( ) ) ;

// WiFi kalkanınızın IP adresini yazdırın:
IPAdresi ip = Kablosuz. localIP ( ) ;
Seri . print ( "IP Adresi:" ) ;
Seri . println ( ip ) ;

// alınan sinyal gücünü yazdır:
uzun rssi = WiFi. RSSI ( ) ;
Seri . print ( "sinyal gücü (RSSI):" ) ;
Seri . baskı ( rssi ) ;
Seri . println ( "dBm" ) ;
}

See Also