İçeriğe geç

SonOff Basic Akıllı Anahtar Yeniden Programlama (Flashlama)

20201001_234724.jpg 

Bugün sizlere, SonOff Basic Akıllı anahtarı nasıl flashlayacağınızı ve Arduino IDE ile nasıl programlayacağınızı anlatacağım.


SonOff, kısaca telefon ile kontrol edilebilen, Wi-Fi ile ev ağına bağlanan ve uzaktan açılıp kapatılabilen, akıllı bir elektrik anahtarı. Çinli bir markaya ait ve ürünleri görece ucuz.

Aslında dandiğin önde gideni ürünler, asla yüksek Watt çeken ürünlerle kullanılmamalılar. Zira korumaları yok. Ama kompaktlar. Ek olarak piyasadaki çoğu ürün böyle.



Dikkat! Bu projede kullanılan cihaz, 240 V AC şebeke cereyanıyla çalışmaktadır. Kartı flashlarken, takıp çıkartırken ve kablo takarken, şebeke cereyanına bağlı olmadığından emin olun. Eğer bu konuda deneyimli değilseniz, deneyimli birinden yardım isteyin. Kart, muhafazasında değilken şebeke cereyanına asla bağlamayın!


Bu nedenle başlamadan şu uyarıyı yapayım: Akıllı prizlerin Amper ve koruma değerlerini bilmeden, yüksek Watt çeken yerlerde kullanmayın.

Aslında röle ve ESP8266 NodeMCU kartı kullanarak, SonOff tarzı bir kartı yapmak mümkün. Ancak bazı problemler oluyor.

Mesela:

ERyGUJiW4AAvJqT.jpg



Bu benim uzun süredir kullandığım bir devre. AWS IoT ve Lambda ağına bağlı, Amazon Echo Dot ile kullanıyorum. Ancak gördüğünüz gibi, hem her şeyi açıkta ve büyük hem de harici güç girişi istiyor.

Pek pratik değil.

Ancak SonOff, hem küçük hem de gücünü üzerine takılan AC hattından alıyor. Yani hem kompakt hem de ek bir pil ya da kablo gerektirmiyor. Tek kusuru, içindeki yazılım. Onu da bu rehberle halledeceğiz. :)

SonOff Basic, Arduino Uno ve NodeMCU karşılaştırması:

20201001_234402.jpg



Başlamadan belirtmeliyim, bu işlemin sonucunda kartın içindeki yazılım geri getirilemez. O nedenle kullandığınız bir sistem varsa ve sizin için sorunu yoksa, dokunmamakta fayda var. :)

Flashlama

SonOff’un içinde, IoT kartlarda sıkça gördüğümüz ESP firmasının, ESP8266 model çipinin bir varyantı olan ESP8265 var. Bu çip öyle bir şey ki, internete bağlanan ve akıllı diye piyasaya çıkan çoğu cihaz ESP8266 içermektedir. Bu nedenle zibilyon tane dökümantasyon vardır.

Bu çip ailesi, Arduino ve IoT tarafında da kullanılıyor. Ve Arduino IDE’si için güzel, oturmuş bir kütüphanesi var. Yani çipi dolayısıyla kartı, Arduino IDE kullanarak Arduino diliyle programlayabiliyorsunuz. Bu da size, diğer IoT kütüphanelerini kullanma ve bu cihazı istediğiniz gibi yönetme şansı veriyor. :)

20201001_233921.jpg



Flashlamak için kartı, bilgisayara bağlamamız lazım. Ancak kartın bırakın USB çıkışı, kablo takmak için jumperları bile yok. Bu nedenle, lehimlememiz gerek.

Kartın 4 adet lehimlenmeye hazır portu var:

  • 3.3 V
  • GND
  • Tx
  • Rx

Bu portlara 4 adet jumper kablonun gireceği soketi lehimlememiz gerekiyor.

Portlar bu şekilde. Fotoğrafı çekmek, lehimledikten sonra aklıma geldiği için bende lehimli:

20201001_234508.jpg



Lehimi yaparken, dikkat etmeye ve taşırmamaya fayda var. Kısa devre olmasını istemezsiniz.

20201001_233908.jpg



20201001_234012.jpg



Bende, tam destekleyemediğim için yamuk oldu mesela. Ancak bu çok büyük bir sorun değil. Lehimin sağlam olmasına ve soğuk lehim oluşmamasına dikkat edin.

Lehimlemeyi bitirdikten sonra, sıra USB 2.0 to TTL UART dönüştürücünün bağlantısı yapmaya.

Buradaki bağlantı şeması şöyle olmalı:

  • 3.3 V –> 3.3 V
  • GND –> GND
  • Tx –> RX
  • Rx –> TX

Gördüğünüz gibi, Tx ve Rx portlarının çapraz bağlanması gerekiyor. Eğer düz balarsanız, portlar doğru çalışamaz ve karta bilgi aktarılamaz.

Bağlantı sonrası: (Kablo sırası doğru olmayabilir!)

20201001_234258.jpg



İşin zor kısmını hallettik. Geriye Arduino programını konfigure etmek kaldı. Bunun için:

Arduino IDE programını açın. Sonrasında File -> Preferences yolunu izleyin.

“Additional Boards Manager URL’s” kısmına aşağıdaki URL’i kopyalayın:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

daaap.PNG



ESP8266 tabanlı kartları, Arduino IDE kullanarak programlamak için aracı bir kütüphaneye ihtiyacımız var. Burada yazrdımımıza, ESP Community tarafından yayımlanan “ESP8266” kütüphanesi koşuyor.

URL’i yapıştırdıktan sonra “Ok” butonuna tıklayın ve pencereyi kapatın. Sonrasında Tools -> Board -> Board Manager yolunu izleyin

Karşınıza çıkan ekranda, arama kısmına “esp8266” yazın ve çıkan seçeneği indirin.

ESp.PNG



Artık Arduino IDE ile ESP tabanlı çoğu kartı programlayabilirsiniz. SonOff’u programlamak için ise son bir adım kaldı.

Tools -> Board -> ESP8266 Boards -> Generic ESP8265 Module seçeneğini seçin.

esp 2.jpg



Artık programımızı yazmaya hazırız. Bu adımdan önce tekrar hatırlatmalıyım ki, kart bir kez flashlandığında, SonOff’un kendi yazılımını tekrar yükleyemezsiniz. Ek olarak, yanlış bağlantı, lehimleme ya da kütüphane indirme nedeniyle oluşacak her sorun, sizin kendi sorumluluğunuzdadır. :)

Karta program yüklenirken prize bağlamayın. Karta USB dönüştürücü takılıyken de prize bağlamayın.

Kartı flash moduna almak için, kart hiçbir yere takılı değilken, üzerindeki tuşa basın. Tuşa basılı tutarken, USB dönüştürücüyü takın. Taktıktan birkaç saniye sonra butondan elinizi çekin. Ayrıca Arduino IDE’den doğru portu seçmeyi de unutmayın.

Eğer sistem, kartı görmüyorsa, dönüştürücünün sürücülerini indirmeniz gerekebilir.

Her şeyi yaptığımıza göre, artık program yüklemeye başlayabiliriz.

Denemek için, kartın üzerindeki LED’i açıp kapatacak bir program yükleyelim:

C++:
int LED = 13;

int DURATION = 1000;


void setup() {
pinMode(LED, OUTPUT);
}


void loop() {
digitalWrite(LED, LOW);
delay(DURATION);
digitalWrite(LED, HIGH);
delay(DURATION);
}


Kartın üzerindeki LED, 13. GPIO portuna bağlı. Karta program yüklendikten sonra, kart hala flash modunda olacağından, kartı çıkartıp tekrar takın. Eğer adımları doğru bir şekilde uyguladıysanız, kart üstündeki LED yanıp sönüyor olacak.

Eğer kart çalıştıysa, ikinci adıma geçebiliriz.

Bu sefer, kartı Wi-Fi’ye bağlayalım ve üzerindeki röleyi, tarayıcıdan açıp kapatmaya çalışalım:

C++:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

MDNSResponder mdns;

const char* ssid = "Wi-Fi Ağınızın SSID'si";
const char* password = "Wi-Fi Ağınızın parolası";

ESP8266WebServer server(80);

String web_on_html = "<h1>SONOFF anahtari acik</h1><p><a href="on"><button>Ac</button></a>&nbsp;<a href="off"><button>Kapat</button></a></p>";
String web_off_html = "<h1>SONOFF anahtari kapali</h1><p><a href="on"><button>Ac</button></a>&nbsp;<a href="off"><button>Kapat</button></a></p>";

int gpio_13_led = 13;
int gpio_12_relay = 12;

void setup(void){

pinMode(gpio_13_led, OUTPUT);
digitalWrite(gpio_13_led, HIGH);

pinMode(gpio_12_relay, OUTPUT);
digitalWrite(gpio_12_relay, HIGH);

Serial.begin(115200);
delay(5000);

WiFi.begin(ssid, password);
Serial.println("Wi-Fi agina baglaniliyor..");


while (WiFi.status() != WL_CONNECTED) {
digitalWrite(gpio_13_led, LOW);
delay(500);
Serial.print(".");
Serial.println(WiFi.localIP());
Serial.println(WiFi.status());
digitalWrite(gpio_13_led, HIGH);
delay(500);
}

Serial.println("");
Serial.print("Baglanilan ag: ");
Serial.println(ssid);
Serial.print("Sunucu IP adresi: ");
Serial.println(WiFi.localIP());

if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("Sunucu basladi");
}

server.on("/", [](){
if(digitalRead(gpio_12_relay)==HIGH) {
server.send(200, "text/html", web_on_html);
} else {
server.send(200, "text/html", web_off_html);
}
});

server.on("/on", [](){
server.send(200, "text/html", web_on_html);
digitalWrite(gpio_13_led, LOW);
digitalWrite(gpio_12_relay, HIGH);
delay(1000);
});

server.on("/off", [](){
server.send(200, "text/html", web_off_html);
digitalWrite(gpio_13_led, HIGH);
digitalWrite(gpio_12_relay, LOW);
delay(1000);
});

server.begin();
Serial.println("Server hazir!");
}

void loop(void){
server.handleClient();
}


Bu kod, basitçe ESP8266’nın içinde bir Web sunucusu açıyor. Serial ekranda çıkacak, Local ağdaki IP adresini tarayıcıya yazıp bağlanarak, bu sunucuya ulaşabilirsiniz. Basitçe “Ac” ve “Kapat” butonları var. Tıkladığınız zaman, içindeki röleyi açıp kapatıyor.

Ancak şöyle bir durum var. Röleler 5V ile çalışır. Ancak kart, USB portundan 3.3V ile besleniyor. Bu nedenle USB portuna bağlıyken röle çalışmayabilir.

Bunun için USB dönüştürücüyü ve jumper kabloları çıkarıp, kartı prize bağlamanız gerekebilir. Bu sayede kart, prizden gelen akımı dönüştürüp, 5V ile beslenebilir.

Kısaca SonOff kartı nasıl flashlayacağını anlattım. Umarım faydalı olmuştur. :)

Ben, IoT cihazlarıyla aktif olarak uğraşıyorum. Bu kartı da flashlayıp, AWS IoT ağına entegre ettim ve Echo Dot ile kullanıyorum. :)

20201001_234551.jpg



SonOff için kaynak kodu:

github.com

ibrahimcahit/SonOff-AWS-IoT

AWS IoT implementation for SonOff Basic Wi-Fi Smart Switch – ibrahimcahit/SonOff-AWS-IoT
github.com github.com


Başka bir rehberde görüşmek üzere.

Tarih:Uncategorized