Arduino
OKUDUĞUNUZ KONU
NodeMCU EPS8266 Wifi RGB Led
1

NodeMCU EPS8266 Wifi RGB Led

Yazar : Murat Duran20 Temmuz 2017

NodeMCU modülü kullanarak wifi ile RGB led kontrol uygulamasını bu projemizde gerçekleştireceğiz. NodeMCU kullanarak farklı uygulamara bu yazı dizisi serisinde yer vermeye çalışacağız.Öncelikle NodeMCU nedir bundan biraz bahsetmek istiyorum.

LoLin, üzerinde NodeMCU firmware yüklü ESP8266 WiFi modül barındıran bir geliştirme kartıdır. ESP8266 SDK’sı kullanılarak geliştirildiğinden, ekstradan bir mikrokontrolcüye ihtiyaç duymadan GPIO, PWM, IIC, 1-Wire ve ADC bağlantılarını destekler. Üzerinde CH340 USB – Seri dönüştürücü entegre bulunur.

Özellikler:

  • ESP8266 SDK tabanlı
  • eLua core (Lua 5.1.4)
  • lua-cjson destekli
  • spiffs dosya sistemi
  • json, file, timer, pwm, i2c, spi, 1-wire

Proje başlangıç seviyedeki bir uygulamadır.Geliştirme kartının çalışma mantığını anlatmak amacıyla oluşturulmuştur.Siz kodlarda düzenlemeler yaparak farklı alanlarda kullanabilirsiniz.

Projenin Malzemeleri

Projenin kütüphaneleri

Projenin kaynak kodları

// Proje Hocam - Wifi Led

#include <Arduino.h> // Arduino Kütüphanesi

#include <ESP8266WiFi.h> // ESP Wifi Kütüphanesi
#include <ESP8266WiFiMulti.h>
#include <WebSocketsServer.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <Hash.h>

#define LED_RED     15
#define LED_GREEN   12
#define LED_BLUE    13

#define USE_SERIAL Serial


ESP8266WiFiMulti WiFiMulti;

ESP8266WebServer server = ESP8266WebServer(80);
WebSocketsServer webSocket = WebSocketsServer(81);

void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght) {

    switch(type) {
        case WStype_DISCONNECTED:
            USE_SERIAL.printf("[%u] Disconnected!\n", num);
            break;
        case WStype_CONNECTED: {
            IPAddress ip = webSocket.remoteIP(num);
            USE_SERIAL.printf("[%u] Connected from %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], payload);

            // send message to client
            webSocket.sendTXT(num, "Connected");
        }
            break;
        case WStype_TEXT:
            USE_SERIAL.printf("[%u] get Text: %s\n", num, payload);

            if(payload[0] == '#') {
                // we get RGB data

                // decode rgb data
                uint32_t rgb = (uint32_t) strtol((const char *) &payload[1], NULL, 16);

                analogWrite(LED_RED,    ((rgb >> 16) & 0xFF));
                analogWrite(LED_GREEN,  ((rgb >> 8) & 0xFF));
                analogWrite(LED_BLUE,   ((rgb >> 0) & 0xFF));
            }

            break;
    }

}

void setup() {
    //USE_SERIAL.begin(921600);
    USE_SERIAL.begin(115200);

    //USE_SERIAL.setDebugOutput(true);

    USE_SERIAL.println();
    USE_SERIAL.println();
    USE_SERIAL.println();

    for(uint8_t t = 4; t > 0; t--) {
        USE_SERIAL.printf("[SETUP] BOOT WAIT %d...\n", t);
        USE_SERIAL.flush();
        delay(1000);
    }

    pinMode(LED_RED, OUTPUT);
    pinMode(LED_GREEN, OUTPUT);
    pinMode(LED_BLUE, OUTPUT);

    digitalWrite(LED_RED, 1);
    digitalWrite(LED_GREEN, 1);
    digitalWrite(LED_BLUE, 1);

    /*
    WiFiMulti.addAP("SSID", "passpasspass");

    while(WiFiMulti.run() != WL_CONNECTED) {
        delay(100);
    }
    */

    WiFi.softAP("WifiLedProje", "12345678");
    IPAddress myIP = WiFi.softAPIP();
    USE_SERIAL.print("AP IP address: ");
    USE_SERIAL.println(myIP);

    // start webSocket server
    webSocket.begin();
    webSocket.onEvent(webSocketEvent);

    if(MDNS.begin("esp8266")) {
        USE_SERIAL.println("MDNS responder started");
    }

    // handle index
    server.on("/", []() {
        // send index.html
        // replace for better looking
        server.send(200, "text/html", 
        "<html><head><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E%22%0A%20%20%20%20%20%20%20%20%22var%20connection%20%3D%20new%20WebSocket('ws%3A%2F%2F'%2Blocation.hostname%2B'%3A81%2F'%2C%20%5B'arduino'%5D)%3B%22%0A%20%20%20%20%20%20%20%20%22connection.onopen%20%3D%20function%20()%20%7B%20%20connection.send('Connect%20'%20%2B%20new%20Date())%3B%20%7D%3B%22%0A%20%20%20%20%20%20%20%20%22connection.onerror%20%3D%20function%20(error)%20%7B%20%20%20%20console.log('WebSocket%20Error%20'%2C%20error)%3B%7D%3B%22%0A%20%20%20%20%20%20%20%20%22connection.onmessage%20%3D%20function%20(e)%20%7B%20%20console.log('Server%3A%20'%2C%20e.data)%3B%7D%3B%22%0A%20%20%20%20%20%20%20%20%22function%20sendRGB()%20%7B%20%20%22%0A%20%20%20%20%20%20%20%20%22var%20r%20%3D%20parseInt(document.getElementById('r').value).toString(16)%3B%20%20%22%0A%20%20%20%20%20%20%20%20%22var%20g%20%3D%20parseInt(document.getElementById('g').value).toString(16)%3B%20%20%22%0A%20%20%20%20%20%20%20%20%22var%20b%20%3D%20parseInt(document.getElementById('b').value).toString(16)%3B%20%20%22%0A%20%20%20%20%20%20%20%20%22if(r.length%20%3C%202)%20%7B%20r%20%3D%20'0'%20%2B%20r%3B%20%7D%20%20%20%22%0A%20%20%20%20%20%20%20%20%22if(g.length%20%3C%202)%20%7B%20g%20%3D%20'0'%20%2B%20g%3B%20%7D%20%20%20%22%0A%20%20%20%20%20%20%20%20%22if(b.length%20%3C%202)%20%7B%20b%20%3D%20'0'%20%2B%20b%3B%20%7D%20%20%20%22%0A%20%20%20%20%20%20%20%20%22var%20rgb%20%3D%20'%23'%2Br%2Bg%2Bb%3B%20%20%20%20%22%0A%20%20%20%20%20%20%20%20%22console.log('RGB%3A%20'%20%2B%20rgb)%3B%20%22%0A%20%20%20%20%20%20%20%20%22connection.send(rgb)%3B%20%7D%22%0A%20%20%20%20%20%20%20%20%22%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" /></head><body>"
        "LED Kontrol Uygulaması - Proje Hocam :

"
        "Kırmızı: ""<input id=\"r\" type=\"range\" min=\"0\" max=\"255\" step=\"1\" onchange=\"sendRGB();\" />
"
        "Yeşil: <input id=\"g\" type=\"range\" min=\"0\" max=\"255\" step=\"1\" onchange=\"sendRGB();\" />
"
        "Mavi: <input id=\"b\" type=\"range\" min=\"0\" max=\"255\" step=\"1\" onchange=\"sendRGB();\" />
"
        "</body></html>");
    });

    server.begin();

    // Add service to MDNS
    MDNS.addService("http", "tcp", 80);
    MDNS.addService("ws", "tcp", 81);

    digitalWrite(LED_RED, 0);
    digitalWrite(LED_GREEN, 0);
    digitalWrite(LED_BLUE, 0);

}

void loop() {
    webSocket.loop();
    server.handleClient();
}
SİZCE NASIL OLMUŞ?
Beğendim
80%
İlginç
0%
Eh İşte
0%
Anlamadım
0%
Kötü
20%
Berbat
0%
YAZAR HAKKINDA
Murat Duran
Murat Duran
Açık kaynak donanım ve yazılım geliştiricisiyim , mekanik ve robotik sistemler üzerinde çalışmalar yapmaktayım.Ayrıca bir start-up firması olan Proje Hocam 'ın kurucuyum.
1 YORUMLAR
  • Müfit akkaya
    5 Ağustos 2017 at 08:18

    Elektronik de bana göre çok güzel çalışmalar yapmışşın Allah işlerini kolay etsin başarılar bende 1998 Erzurum mezunuyum güzel bir memleketdir.

YORUM YAP