IoT projenizi uygulamak için zaten sahip olduğunuz Ethernet veya İnternetten yararlanmak mı istiyorsunuz? Wifi modülü şart. Bee severler için pazarda XBee uyumlu bir Wifi Bee var. Bee ürünlerine aşina iseniz iyi bir seçimdir. Arduino tutkunları için ise, shield kullanmak pratik ve düzenli bir seçenek olabilir. Bu yüzden şimdi yeni bir tak-çalıştır Wifi shield’imiz var.
Bu inceleme, bir başlangıç seviyesinden yazılmıştır. Wifi modülüne yeniyseniz ve denemek istiyorsanız, bu inceleme donanım bağlantısı, temel kodlama ve uygulama hakkında bazı ipuçları edinmenize yardımcı olabilir. Wifi modülü konusunda deneyimliyseniz, bu incelemeyi tamamen göz ardı edebilirsiniz (eğer bu incelemenin sonunda listelenen bazı sorunları çözmek isterseniz, bravo!).
1. Donanım Bağlantısı
Bu Wifi shield, projenize seri Ethernet işlevi sağlamak için en popüler wifi çiplerinden biri olan RN171’i kullanır. İşlevi yerine getirmek için yalnızca 2 I/O pinine ihtiyaç duyar, bu da daha fazla pinin geliştirme için kullanılmasını sağlar. Kullanılan 2 pin, RX ve TX, aşağıda gösterilmiştir. İlk ve son pin sırası sırasıyla RN171 çipinin TX ve RX’ine bağlıdır ve orta sıradaki pinler sağdan sola D0~D7’ye bağlıdır.
Bu Wifi shield’i D2’nin TX’e ve D3’ün RX’e bağlandığı şekilde gönderiyoruz. Bunu kesinlikle değiştirebilirsiniz. Sadece kısa bağlantı jumper’larını istediğiniz pinlere taşıyın ve Wifi shield’in wiki sayfasında sağladığımız örnekte bir satır yazılım programlamasını değiştirin.
Bu satır TX ve RX konfigürasyonunu tanımlar:
WiflyClass Wifly(2,3);
Bu, D2’nin TX’e ve D3’ün RX’e bağlı olduğu anlamına gelir. Değiştirmek isterseniz, bu parametreleri de değiştirin.
2. DigitalRead Demo
Wiki sayfasında sağlanan orijinal örnek, sanal bir uzaktan sunucu ile yumuşak seri COM arasında nasıl iletişim kuracağınızı gösterir. TCP sunucusu ve SSCOM, bunlar için paketlenmiş iki araçtır. Bu yeni wifi shield üzerinde hazır Grove soketleri bulunduğundan, bu demo’da sunucu tarafında bir sensör değerini okumaya çalıştım.
Kullanacağımız iki araç hakkında belirsiz misiniz? Wiki sayfasında arka plan bilgilerini bulabilirsiniz.
Orijinal örnekte bazı değişiklikler yaptım ve işlevi elde etmek için bir eğim anahtarı kullandım:
#include “Wifly.h”
#include <SoftwareSerial.h>
WiflyClass Wifly(2,3);
int tiltswitch = 9; // dijital Grove soketi mikrodenetleyicinin D8 & D9’una bağlıdır
void setup()
{
Serial.begin(9600);
Wifly.init();
Wifly.setConfig(“HOME”,”11111111″); // Ethernet bilgisi
Wifly.join(“HOME”);
Wifly.checkAssociated();
while(!Wifly.connect(“192.168.1.68″,”90”)); // uzaktan sunucu adresi ve port numarası
Wifly.writeToSocket(“Connected!”);
}
void loop()
{
if(Wifly.canReadFromSocket()) // sunucudan gönderilen herhangi bir mesajı kontrol et
{
Wifly.readFromSocket(); // sunucudan gönderilen mesajı SSCOM’da yazdır
if(Wifly.readFromSocket()== ‘Z’) // sensör değerini toplamak için bir anahtar kelime belirle
{
Wifly.print(digitalRead(tiltswitch)+48); // sensör değerini “+48” ile yazdır,
// int’i char formatına dönüştürme
}
}
if(Serial.available())
{
Wifly.print((char)Serial.read()); // SSCOM’dan gönderilen mesajı sunucunun ekranında yazdır
// sunucu ekranında
}
}
Kullanılabilecek iki işlev vardır:
1) Wifly.readFromSocket();
Bu işlev, sunucu tarafından gönderilen mesajı SSCOM ekranına yazdırmak için kullanılır.
2) Wifly.print();
Bu işlev, mesajın nereden geldiğine bakılmaksızın sunucu ekranına mesaj yazdırmak için kullanılır. Kaynak SSCOM veya yukarıda kullandığımız sensörler olabilir.
Sketch’i yükleyin, TCP sunucusunu ve SSCOM’u çalıştırın. “<–Connected!” sunucu ekranında belirdiğinde, köprü kurulmuş olur. İletişimi eski usul bir şekilde başlatalım, “Hello world!” deneyelim, işte aldığım sonuç:
Sonra Wifi shield’daki sensör değerini toplamak için ayarladığım komutu test ettim: “Z”:
SSCOM ucundan “1” aldım, bu dijital Grove soketindeki eğim anahtarının sensör değeridir. Artık Wifi shield’daki sensörün durumunu okumak istediğinizde SSCOM’a “Z” gönderin.
3. Sorunlar
“Wifly.print(digitalRead(tiltswitch)+48);” kullanarak int değerini yazdırmak istediğimde, sensör değerini karşılık gelen ASCII koduna dönüştürmek için +48 eklemem gerekiyor. Ve float sayılar söz konusu olduğunda, hatalar meydana geliyor. Bunların her ikisi de Wifly.readFromSocket(); ve Wifly.print(); için daha fazla tür desteği gerektiği anlamına geliyor.
Ayrıca, Wifi Shield Ethernet ile sınırlı olmamalıdır. Eğer harika internet tabanlı projeleriniz varsa, bizimle paylaşmaktan çekinmeyin! Çalışmalarınızı dört gözle bekliyoruz!






