Mengontrol Lampu Melalui WiFi
Sore ini saya akan sharing tentang Project sederhana yang akan saya buat adalah “Mengontrol Lampu Melalui WiFi“. Mungkin sudah banyak yang membuat project serupa baik menggunakan arduino ataupun mikrokontroler lainnya. Namun kali ini saya akan menggunakan Wemos ESP8266 sebagai bahan ujicoba. Pada project kali ini, lampu akan dikrontrol oleh komputer melalui jaringan WiFi. Lampu akan dihubungkan ke Wemos, sedangkan untuk komputer saya membuat program sederhana menggunakan C# untuk mengontrol lampunya.
Untuk koneksi lampu dengan Wemos dapat dilihat pada gambar berikut ini
Teori Singkat
Pada project mengontrol lampu menggunakan wifi ini protokol komunikasi yang digunakan adalah TCP/IP. Dimana Wemos berfungsi menjadi TCP Server dan komputer sebagai pengontrol lampu berfungsi sebagai TCP Client. Koneksi TCP/IP menggunakan port 2000, dikarenakan port ini belum digunakan oleh aplikasi ataupun service lainnya. Kedua perangkat (Wemos dan Komputer) harus terkoneksi ke Access Point terlebih dahulu agar dapat berkomunikasi, mengingat jaringan yang digunakan adalah WLAN. Untuk project kali ini Access Point yang digunakan berupa hanphone android yang di tethering WiFi. Sebetulnya Anda bisa menjadikan Wemos sebagai Access Point sekaligus sebagai kontroler lampu. Namun untuk saat ini saya tidak menjelaskan hal tersebut.
Source Code Project
Untuk source code pada wemos dapat dilihat di bawah ini
- #include "ESP8266WiFi.h"
- #include "WiFiClient.h"
- #include "WiFiServer.h"
-
- #define PORT 2000
-
- WiFiClient client;
- WiFiServer server(PORT);
-
- char c;
- String message;
-
- const char *ssid = "WIFE";
- const char *password = "howrudi";
-
- void setup()
- {
- pinMode(LED_BUILTIN, OUTPUT);
- digitalWrite(LED_BUILTIN, HIGH);
- Serial.begin(115200);
- Serial.println("Jetniaga.com");
- Serial.print("Listening Port : ");
- Serial.println(PORT);
- delay(100);
-
- // Koneksi ke akses point howrudi.com
- WiFi.begin(ssid, password);
- Serial.println("Connecting to Access Point ...");
- // Tunggu sampai terkoneksi
- while(WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
-
- // Tampilkan IP Address Wemos
- Serial.println("");
- Serial.print("Connected to ");
- Serial.println(ssid);
- Serial.print("IP address: ");
- Serial.println(WiFi.localIP());
-
- // Start TCP Server
- server.begin();
- }
-
- void loop()
- {
- if (!client.connected()) {
- // Tunngu koneksi dari client
- client = server.available();
- }
- // Client terkoneksi
- while (client.connected()) {
- // Tampilkan data dari client ke serial port
- if (client.available()) {
- while (client.available() > 0) {
- c = (char)client.read();
- //Serial.print(c);
- message += c;
- if (message.equals("on")) {
- digitalWrite(LED_BUILTIN, LOW);
- //Serial.println("LED ON");
- }
- else if (message.equals("off")) {
- digitalWrite(LED_BUILTIN, HIGH);
- //Serial.println("LED OFF");
- }
- }
- }
- message = "";
- }
- }
Pada saat startup, Wemos akan melakukan koneksi ke Access Point yang telah ditentukan pada source code diatas. Anda dapat memantau proses ini dengan membuka Serial Monitor. Seteah terkoneksi pada serial monitor akan ditampilkan IP Address wemos. Catatlah IP Address ini, karena nantinya akan Anda gunakan untuk melakukan koneksi pada aplikasi di komputer.
- #include "ESP8266WiFi.h"
- #include "WiFiClient.h"
- #include "WiFiServer.h"
- #define PORT 2000
- WiFiClient client;
- WiFiServer server(PORT);
- char c;
- String message;
- const char *ssid = "WIFE";
- const char *password = "howrudi";
- void setup()
- {
- pinMode(LED_BUILTIN, OUTPUT);
- digitalWrite(LED_BUILTIN, HIGH);
- Serial.begin(115200);
- Serial.println("Jetniaga.com");
- Serial.print("Listening Port : ");
- Serial.println(PORT);
- delay(100);
- // Koneksi ke akses point howrudi.com
- WiFi.begin(ssid, password);
- Serial.println("Connecting to Access Point ...");
- // Tunggu sampai terkoneksi
- while(WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- // Tampilkan IP Address Wemos
- Serial.println("");
- Serial.print("Connected to ");
- Serial.println(ssid);
- Serial.print("IP address: ");
- Serial.println(WiFi.localIP());
- // Start TCP Server
- server.begin();
- }
- void loop()
- {
- if (!client.connected()) {
- // Tunngu koneksi dari client
- client = server.available();
- }
- // Client terkoneksi
- while (client.connected()) {
- // Tampilkan data dari client ke serial port
- if (client.available()) {
- while (client.available() > 0) {
- c = (char)client.read();
- //Serial.print(c);
- message += c;
- if (message.equals("on")) {
- digitalWrite(LED_BUILTIN, LOW);
- //Serial.println("LED ON");
- }
- else if (message.equals("off")) {
- digitalWrite(LED_BUILTIN, HIGH);
- //Serial.println("LED OFF");
- }
- }
- }
- message = "";
- }
- }
Source Code Pada Aplikasi C#
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Net.Sockets;
- using System.Net;
- using System.IO;
- namespace TCP_Client
- {
- public partial class Form1 : Form
- {
- TcpClient tcpclient;
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- tcpclient = new TcpClient();
- }
- private void buttonConnect_Click(object sender, EventArgs e)
- {
- bool err = false;
- try
- {
- tcpclient.Connect(textBoxIP.Text, Int32.Parse(textBoxPort.Text));
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.ToString());
- err = true;
- }
- if (!err)
- {
- buttonConnect.Enabled = false;
- }
- }
- private void buttonLedOn_Click(object sender, EventArgs e)
- {
- try
- {
- Stream tcpData = tcpclient.GetStream();
- ASCIIEncoding asen = new ASCIIEncoding();
- String data = "on";
- byte[] ba = asen.GetBytes(data);
- tcpData.Write(ba, 0, ba.Length);
- }
- catch (Exception err)
- {
- MessageBox.Show(err.ToString());
- }
- }
- private void buttonLedOff_Click(object sender, EventArgs e)
- {
- try
- {
- Stream tcpData = tcpclient.GetStream();
- ASCIIEncoding asen = new ASCIIEncoding();
- String data = "off";
- byte[] ba = asen.GetBytes(data);
- tcpData.Write(ba, 0, ba.Length);
- }
- catch (Exception err)
- {
- MessageBox.Show(err.ToString());
- }
- }
- }
- }
Comments
Post a Comment
Terimakasih Anda Sudah Mengunjungi Dan Semoga Blog Ini Bermanfaat