IOT Basic Tutorial
Last updated: January 27 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 3 ESP8266 HTTP- Send data to Geeknesia using Wifi
Reading requirement :
- Register
- Create Project
- Create Gateway
- Create device
- Wiring USB to FTDI dengan ESP8266
- ESP8266
- LUA Uploader
Pada tutorial ini, Anda akan diberikan sebuah contoh untuk mengirimkan PIR sensor ke Geeknesia melalui protokol HTTP. Koneksi internet menggunakan Wifi, pastikan koneksi anda stabil.
Kelengkapan :
- Modul ESP8266
- PIR Sensor
- USB To FTDI
- Kabel Konektor
- Wifi Internet Connection
Important Note :
- Data yang dikirim harus valid JSON.
Anda dapat memeriksa dengan menggunakan JSONLint - Fungsi send data dapat dikustomisasi sesuai kebutuhan jumlah attribut yang dikirimkan
Wiring Sensor PIR dengan ESP8266 :
Sebelum lanjut membuat program, pastikan wiring antara PIR Sensor dan ESP8266 sudah benar. Perhatikan nilai tegangan pada FTDI yang terpakai karena tegangan supply ke modul ESP8266 tidak boleh melebihi 3.3V DC.
ESP8266 | PIR Sensor |
GND | GND |
GPIO0 | N/A |
GPIO2 | Pin out |
VCC | VCC 3.3V DC |
LUA Code :
-- https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en
-- One time ESP Setup --
-- setup wifi connection --
wifi.setmode(wifi.STATION)
wifi.sta.config ( "SSID_NAME/WIFI_NAME" , "WIFI_PASSWORD" )
print(wifi.sta.getip())
--inisial
pin = 4
pinState = 0
--- Get temp and send data to geeknesia.com
function sendData()
gpio_read=gpio.read
gpio.mode(pin,gpio.INPUT)
if (gpio_read(pin)==0) then
pinState=1
else
pinState=0
end
print(pinState)
conn=net.createConnection(net.TCP, 0)
conn:connect(80,'geeknesia.com')
conn:send("GET /api/data?api_key=API_KEY&attributes={\"motion\":\""..pinState.."\"}\r\n\r\n")
end
-- send data every X ms to geek
tmr.alarm(2, 30000, 1, function() sendData() end )
Upload script di atas menggunakan Lua Uploader.
Penjelasan Program :
- Baris 9 - 10
Penentuan pin yang akan dipakai, dalam hal ini adalah GPIO2, pin = 4. Jika ingin menggunakan pin GPIO0 maka pin = 3. pinState digunakan hanya sebagai flag dan inisialisasi value = 0.
- Baris 13 - 20
Fungsi send data yang dibuat khusus untuk memudahkan pengiriman data dari device ke Geeknesia. Fungsi gpio_read(pin) merupakan suatu perintah untuk membaca input nilai "pin" tertentu pada modul ESP8266.
- Baris 23 - 25
Untuk menyambungkan device ke Geeknesia tentunya memerlukan IP Address dari geeknesia.com dengan PORT "80". Anda harus mengganti API key sesuai dengan device yang digunakan, serta attributes yang dikirim harus berupa JSON.
- Baris 29
Untuk pengiriman data paling cepat maksimal 30 detik.
Setelah selesai, maka script program dapat dijalankan baris per baris menggunakan Button "Execute Selection". Apabila tidak ditemukan error di layar kanan. Setelah itu program dapat diupload ke device ESP8266 menggunakan Button "SAVE to ESP" dengan nama filename : init.lua