IOT Basic Tutorial
Last updated: February 08 th, 2017
Geeknesia Microcontroller & IOT Starter Kit
Sebuah Starter Kit Lengkap dari Geeknesia untuk mempelajari IOT dan Micro Controller dengan mudah melalui praktek secara langsung.
Starter Kit ini menyediakan development board ESP 8266 tipe WeMos D1 yang compatible dengan board arduino sehingga mudah dipahami, muda diperlajari, dan mudah dimengerti. Dalam kit ini tersedia komponen elektronik lengkap untuk berbagai keperluan tutorial dan project real.
Part 4 Koneksi Arduino ke Geeknesia Menggunakan Esp8266 Sebagai Penghubung ke Internet.
Tutorial ini menjelaskan tentang cara mengirim data dari arduino ke cloud Geeknesia menggunakan modul wifi Esp8266.
Alat dan bahan yang perlu disiapkan:
- Arduino.
- Esp8266.
- Kabel Jumper.
- Kabel data (FTDI) untuk meng-upload program.
Sebelum melanjutkan kita harus tahu pinout dari modul Esp8266-01, lihat gambar di bawah:
Tahap 1
Pastikan firmware ESP8266 adalah versi bawaan ESP(belum pernah di flash), jika sudah terlanjur di flash anda bisa mengembalikan ke firmware versi awal => Firmware melalui Esp_Flasher seperti pada tutorial Part 2 ESP Basic Information.
Rangkailah modul Esp8266 ke Arduino yang telah dipersiapkan seperti gambar di bawah ini.
Jika menggunakan Esp8266-01 gunakan rangkaian ini:
Tabel rangkaian Esp8266-01 ke Arduino Uno.((Apabila VCC 3.3v tidak bisa, VCC dapat menggunakan 5v))
Esp8266-01 | Arduino UNO |
VCC | VCC 3.3 |
GND | GND |
RX | TX (D9) |
TX | RX (D8) |
Ch_PD | VCC 3.3 |
Dan jika menggunakan Esp8266-12 gunakan rangkaian di bawah ini:
Tabel rangkaian Esp8266-12 ke Arduino Uno.
Esp8266-12 | Arduino UNO |
VCC | VCC 3.3 |
GND | GND |
RX | TX(D9) |
TX | RX(D8) |
CH_PD | VCC 3.3 |
GPIO15 | GND |
Tahap 2
Jika sudah mendapatkan Device id,Username,Password,API Key dan Published Topic, lanjut ke tahap berikutnya.
Tahap 3
Buatlah program untuk simulasi pengiriman data dari arduino ke Geeknesia.
Ini adalah contoh source code menggunakan AT Command;
#include <SoftwareSerial.h>
#define DEBUG true
SoftwareSerial wifi(2,3); // RX, TX
char *apiKey ="xxxxxxxxxxxxxxxxxxxx";// masukan sesuai apiKey yang anda dapat dari geeknesia.com
void setup() {
Serial.begin(9600);// deklarasi boudrate komunikasi serial antara arduino dengan komputer
wifi.begin(9600); // deklarasi boutrate komunikasi serial antara arduino dengan ESp
// Reset modul
sendCommand("AT+RST\r\n",2000,DEBUG);
// Konfigurasikan sebagai Akses poin
sendCommand("AT+CWMODE=3\r\n",1000,DEBUG);
// Sesuaikan dengan SSID dan Password
sendCommand("AT+CWJAP=\"SSID\",\"password\"\r\n",10000,DEBUG);
// Mendapatkan IP adress
sendCommand("AT+CIFSR\r\n",1000,DEBUG);
}
void loop() {
connectingServer() ;
// masukan program anda di sini
unsigned int ldr; // deklarasi tipe data ldr
ldr = analogRead(A0); // contoh dengan menggunakan sensor LDR untuk mendapatkan nilai yang akan di kirimkan ke server
Senddata ("ex",ldr);// fungsi untuk mengirimkan data yang ingin anda kirim , sesuaikan "ex" dengan attribute yang anda buat di device geeknesia.com
}
void connectingServer() // fungsi untuk koneksi esp ke geeknesia menggunakan port HTTp
{
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += "geeknesia.com";
cmd += "\",80";
wifi.println(cmd);
delay(2000);
cmd="";
if(wifi.find("Error"))
{
return;
}
}
void Senddata(String Variable,unsigned int data) // fungsi untuk send data
{
String cmd;
// String getStr = "GET /api/data?api_key=xxxxxxxxxxxxxxxxxxxxxxxx&attributes={\"tes\":\"65\"}";
String getStr = "GET /api/data?api_key=";
getStr += apiKey;
getStr += "&attributes={\"";
getStr += Variable;
getStr += "\":\"";
getStr +=data;
getStr +="\"}";
getStr += "\r\n\r\n";
cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
wifi.println(cmd);
Serial.println(getStr);
Serial.println(cmd);
delay(100);
if(wifi.find(">"))
{
wifi.print(getStr);
Serial.print(getStr);
}
else
{
wifi.println("AT+CIPCLOSE");
}
cmd="";
delay(100);
}
String sendCommand(String command, const int timeout, boolean debug)
{
String response = "";
wifi.print(command);
long int time = millis();
while( (time+timeout) > millis())
{
while(wifi.available())
{
char c = wifi.read();
response+=c;
}
}
if(debug) {
Serial.print(response);
}
return response;
}
Tahap 4
Lihat project pada Geeknesia yang telah anda buat.
Ini adalah kondisi ketika device terhubung dengan geeknesia.com.
Note:
- Pada tutorial ini modul Esp8266 tidak perlu di flash karena merupakan default function, sebagai wifi serial biasa.
- Jika Modul Esp8266-01 tidak terkoneksi/berfungsi dengan baik , ambilah supply tegangan 3.3vdc dari luar rangkaian (voltage regulator terpisah), karena modul Esp8266-01 kurang stabil dalam masalah tegangan, untuk pilihan lain user bisa menggunakan modul Esp8266-12.
- Sesuaikan baudrate antara Esp8266 dengan Arduino.