Anda di halaman 1dari 29

LOGO

UNIV/POLTEK

DTS 2019: Internet of Things

#15
IoT Device (Node) -2

digitalent.kominfo.go.id
digitalent.kominfo.go.id
Pembahasan yang lalu
• Kita telah membuat IoT device yang bertindak
sebagai webserver.
• Modul yang digunakan: ESP8266 atau ESP32, yakni
memiliki modul komunikasi dan kontroler terpadu.
• Pemrograman dengan Arduino IDE.
• Sebagai webserver, IoT device menyajikan kode
HTML yang ditampilkan pada browser client.
• IoT device tersebut tentu rentan dari aspek
keamanannya. (bisakah Anda menjelaskan
mengapa?)

digitalent.kominfo.go.id
Pembahasan topik sekarang
• Mendalami lagi spesifikasi dan rangkaian
elektronika dari sebuah IoT device.
• Interfacing modul komunikasi dengan
mikrokontroler terpisah.
• Modul komunikasi yang digunakan dapat berupa:
• Modul Bluetooth
• Modul LoRa (yang akan dibahas)
• Modul GSM

digitalent.kominfo.go.id
Definisi device pada IoT
Sesuai dengan Rekomendasi ITU-T Y.2060 (06/2012), device didefinisikan
sebagai berikut:

With regard to the Internet of things, this is a piece of equipment with:


• the mandatory capabilities of communication and
• the optional capabilities of
• sensing,
• actuation,
• data capture,
• data storage and
• data processing.

• thing: With regard to the Internet of things, this is an object of the physical
world (physical things) or the information world (virtual things), which is
capable of being identified and integrated into communication networks.

digitalent.kominfo.go.id
Diagram device IoT
• the mandatory
capabilities of Memory
communication, and

• the optional Communication Sensors,


capabilities of device
Controller
Actuators
 sensing,
 actuation,
 data capture,
 data storage and Power Supply
 data processing.

digitalent.kominfo.go.id
Sistem dengan mikrokontroler
dan modul komunikasi terpisah
• Perlu ada interfacing antara mikrokontroler dengan
modul komunikasi.
• Koneksi fisik
• Protokol komunikasi antara mikrokontroler <-> modul
komunikasi
• Pilihan interfacing / komunikasi antarpiranti digital
yang umum:
• UART Serial (asinkron, full duplex)
• SPI (serial peripheral interface)
• I2C

digitalent.kominfo.go.id
USART Signals

Clock tidak dikirimkan!


(asinkron, pakai
kesepakatan baudrate)

• The RXD signal of a UART is the signal receiving the data. This will be an
input and is usually connected to the TXD line of the downstream device.
• The TXD signal of a UART is the signal transmitting the data. This will be an
output and is usually connected to the RXD line of the downstream device.
• The RTS# (Ready to Send) signal of a UART is used to indicate to the
downstream device that the device is ready to receive data. This will be an
output and is usually connected to the CTS# line of the downstream device.
• The CTS# (Clear to Send) signal of a UART is used by the downstream
device to identify that it is OK to transmit data to the upsteam device. This
will be an input and is usually connected to the RTS# line of the upstream 7
device.
digitalent.kominfo.go.id
SPI
• Komunikasi sinkron (ada jalur clock), dan full duplex
(dua arah simultan)
• Master berperan meng-inisialisasi komunikasi.
(pengirim dan penerima adalah tetap dua-duanya.
master juga tetap bisa menerima, slave juga bisa
mengirim)
Pin:
• MOSI: master out slave in
• MISO: master in slave out
• SCK: serial clock

https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi/all
digitalent.kominfo.go.id
Persiapan
• Untuk modul percobaan ini, kita membutuhkan:
• Modul ESP32 atau ESP8266. Pada contoh di sini kita
menggunakan modul dari NodeMCU.
• Modul LoRa SX1728. Pada contoh di sini kita
menggunakan modul Ra-02. Dimensi jarak antar-pin
pada modul ini sesuai untuk breadboard, namun
mungkin perlu disolder dahulu kakinya):

digitalent.kominfo.go.id
Interfacing ESP32 dengan modul
LoRa
• Koneksi antara
ESP32 dan modul
LoRa, dan
diprogram dengan
Arduino IDE.
• Komunikasi adalah
dengan SPI.
• Mohon sesuaikan
dengan varian
perangkat yang
dimiliki.

digitalent.kominfo.go.id
Catatan
• Modul ESP32
bisa bervariasi,
mohon
sesuaikan
dengan modul
yang dimiliki.
• Contoh: Node
MCU ESP-32S,
penomoran
pinnya adalah
seperti di
samping (foto
adalah tampak
bawah).

digitalent.kominfo.go.id
Catatan
• Penomoran pin untuk ESP8266 NodeMCU:
(perhatikan label pada board tidak sama dengan
penomoran GPIO pin)

Untuk SPI

digitalent.kominfo.go.id
Interfacing antara
ESP32 dengan modul LoRa
Gambar susunan / peletakan pin
bisa berbeda-beda tergantung
board ESP32 yang dimiliki,
mohon sesuaikan dengan
koneksi berikut ini:
(LoRa : ESP32)
• ANA: Antenna
• GND: GND
• 3.3V: 3.3V
• DIO0: GPIO 2
• RESET: GPIO 14
• NSS: GPIO 5
• SCK: GPIO 18
• MOSI: GPIO 23
• MISO: GPIO 19

digitalent.kominfo.go.id
Interfacing antara
ESP8266 dengan modul LoRa
Gambar susunan / peletakan pin
bisa berbeda-beda tergantung
board ESP8266 yang dimiliki,
mohon sesuaikan dengan koneksi Betul, label tercetak pada board
berikut ini: NodeMCU ESP8266 BERBEDA
(LoRa : ESP8266) dengan penomoran GPIO-nya.
• ANA: Antenna
• GND: GND
• 3.3V: 3.3V
• DIO0: GPIO 5
• RESET: GPIO 4
• NSS: GPIO 15
• SCK: GPIO 14
• MOSI: GPIO 13
• MISO: GPIO 12

digitalent.kominfo.go.id
Contoh hasil merangkai (ESP32+LoRa)

Modul
LoRa
NodeMCU
ESP32

Antenna

digitalent.kominfo.go.id
Contoh hasil merangkai (ESP8266+LoRa)

Modul
LoRa
NodeMCU
ESP8266

Antenna

digitalent.kominfo.go.id
Skenario
• Seluruh tim di kelas merangkai koneksi
ESP8266/ESP32 dengan modul LoRa.
• Secara bergantian, tiap tim memprogram sistemnya
sebagai pengirim dan tim yang lain sebagai
penerima, lalu bertukar.

digitalent.kominfo.go.id
Tambahkan library LoRa berikut
(Library LoRa versi dari Sandeep Mistry)

digitalent.kominfo.go.id
Program sisi pengirim ESP32 NodeMCU
#include <SPI.h> delay(500);
#include <LoRa.h> }
// Change sync word (0xF3) to match the
//define the pins used by the transceiver receiver
module // The sync word assures you don't get
#define ss 5 LoRa messages from other LoRa transceivers
#define rst 14
Konfigurasi pin untuk // ranges from 0-0xFF
#define dio0 2 versi ESP32 NodeMCU LoRa.setSyncWord(0xF3);
Serial.println("LoRa Initializing OK!");
int counter = 0; }

void setup() { void loop() {


//initialize Serial Monitor Serial.print("Sending packet: ");
Serial.begin(115200); Serial.println(counter);
while (!Serial);
Serial.println("LoRa Sender"); //Send LoRa packet to receiver
LoRa.beginPacket();
//setup LoRa transceiver module LoRa.print("hello ");
LoRa.setPins(ss, rst, dio0); LoRa.print(counter);
//replace the LoRa.begin(---E-) argument LoRa.endPacket();
with your location's frequency
//433E6 for Asia counter++;
//866E6 for Europe
//915E6 for North America delay(10000);
while (!LoRa.begin(433E6)) { }
Serial.println(".");

digitalent.kominfo.go.id
Program sisi pengirim ESP8266 NodeMCU
#include <SPI.h> delay(500);
#include <LoRa.h> }
// Change sync word (0xF3) to match the
//define the pins used by the transceiver receiver
module // The sync word assures you don't get
#define ss 15 Konfigurasi pin untuk LoRa messages from other LoRa transceivers
#define rst 4 versi ESP8266 // ranges from 0-0xFF
#define dio0 5 LoRa.setSyncWord(0xF3);
NodeMCU Serial.println("LoRa Initializing OK!");
int counter = 0; }

void setup() { void loop() {


//initialize Serial Monitor Serial.print("Sending packet: ");
Serial.begin(115200); Serial.println(counter);
while (!Serial);
Serial.println("LoRa Sender"); //Send LoRa packet to receiver
LoRa.beginPacket();
//setup LoRa transceiver module LoRa.print("hello ");
LoRa.setPins(ss, rst, dio0); LoRa.print(counter);
//replace the LoRa.begin(---E-) argument LoRa.endPacket();
with your location's frequency
//433E6 for Asia counter++;
//866E6 for Europe
//915E6 for North America delay(10000);
while (!LoRa.begin(433E6)) { }
Serial.println(".");

digitalent.kominfo.go.id
Program sisi penerima ESP32 NodeMCU
#include <SPI.h> // ranges from 0-0xFF
#include <LoRa.h> LoRa.setSyncWord(0xF3);
//define the pins used by the transceiver module Serial.println("LoRa Initializing OK!");
#define ss 5 }
#define rst 14
#define dio0 2 void loop() {
int counter = 0; // try to parse packet
int packetSize = LoRa.parsePacket();
void setup() { if (packetSize) {
//initialize Serial Monitor // received a packet
Serial.begin(115200); Serial.print("Received packet '");
while (!Serial);
delay(500); // read packet
Serial.println("LoRa Receiver"); while (LoRa.available()) {
String LoRaData = LoRa.readString();
//setup LoRa transceiver module Serial.print(LoRaData);
LoRa.setPins(ss, rst, dio0); }
//replace the LoRa.begin(---E-) argument with your
location's frequency // print RSSI of packet
//433E6 for Asia Serial.print("' with RSSI ");
//866E6 for Europe Serial.println(LoRa.packetRssi());
//915E6 for North America }
while (!LoRa.begin(433E6)) { }
Serial.println(".");
delay(500);
}
// Change sync word (0xF3) to match the receiver
// The sync word assures you don't get LoRa messages from
other LoRa transceivers

digitalent.kominfo.go.id
Program sisi penerima ESP8266 NodeMCU
#include <SPI.h> // ranges from 0-0xFF
#include <LoRa.h> LoRa.setSyncWord(0xF3);
//define the pins used by the transceiver module Serial.println("LoRa Initializing OK!");
#define ss 15 }
#define rst 4
#define dio0 5 void loop() {
int counter = 0; // try to parse packet
int packetSize = LoRa.parsePacket();
void setup() { if (packetSize) {
//initialize Serial Monitor // received a packet
Serial.begin(115200); Serial.print("Received packet '");
while (!Serial);
delay(500); // read packet
Serial.println("LoRa Receiver"); while (LoRa.available()) {
String LoRaData = LoRa.readString();
//setup LoRa transceiver module Serial.print(LoRaData);
LoRa.setPins(ss, rst, dio0); }
//replace the LoRa.begin(---E-) argument with your
location's frequency // print RSSI of packet
//433E6 for Asia Serial.print("' with RSSI ");
//866E6 for Europe Serial.println(LoRa.packetRssi());
//915E6 for North America }
while (!LoRa.begin(433E6)) { }
Serial.println(".");
delay(500);
}
// Change sync word (0xF3) to match the receiver
// The sync word assures you don't get LoRa messages from
other LoRa transceivers

digitalent.kominfo.go.id
Tampilan pada serial monitor
Serial monitor sisi pengirim Serial monitor sisi penerima

digitalent.kominfo.go.id
Penjelasan program
• Kita menggunakan library SPI dan LoRa untuk memudahkan pemrograman. Perlu
disadari yang terjadi di balik layar yang ditangani oleh library tersebut cukup
kompleks (komunikasi SPI, serta pengendalian modul LoRa)
#include <SPI.h>
#include <LoRa.h>
• Modul LoRa diset-up, sesuai konfigurasi pin yang didefinisikan (harus sama
dengan koneksi fisik, silakan ganti jika perlu)
#define ss 5
#define rst 14
#define dio0 2

LoRa.setPins(ss, rst, dio0);
• Mengaktifkan modul LoRa pada frekuensi tertentu
while (!LoRa.begin(433E6)) {}

• Mengatur syncword yang disepakati pada komunikasi LoRa (agar penerima hanya
menangkap data dari pengirim dengan syncword sama)
LoRa.setSyncWord(0xF3);
• Mengirim paket data
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.endPacket();

• Menerima paket data


• Melihat apakah ada paket data
int packetSize = LoRa.parsePacket();
• Membaca isi paket data

digitalent.kominfo.go.id
Praktek uji coba wireless
Skenario:
• Untuk “merasakan” teknologi wireless-nya, jadikan sisi
pengirim berdiri sendiri dengan diberi catu daya dari
powerbank, misalnya. Kemudian, sisi penerima
dihubungkan ke komputer dan dipantau dengan serial
monitor.
• Contoh sederhana seperti pada foto di slide setelah ini.
• Bayangkan skenario point-to-point dengan LoRa berikut
ini.
Modul sensor Penerima
Internet
dengan LoRa LoRa
Jarak jauh
Tidak ada
konektivitas
Internet langsung
di lokasi ini
digitalent.kominfo.go.id
Praktek uji coba wireless
Serial Monitor Pengirim

Penerima
digitalent.kominfo.go.id
Tugas Praktek di Kelas
• Kembangkan sistem tadi menjadi sebagai berikut:
• Sebuah sensor suhu LM-35 ditambahkan pada sisi
pengirim (ke salah satu channel analog)
• Data suhu dikirimkan dari sisi pengirim ke penerima
melalui modul LoRa.
• Penerima dikembangkan menjadi webserver lokal seperti
pada pertemuan sebelumnya, dengan menampilkan data
suhu yang berasal dari modul pengirim tadi.

Modul sensor Penerima


LM-35 LoRa + LAN
dengan LoRa webserver

digitalent.kominfo.go.id
Lebih lanjut mengenai LoRa
• LoRa (Long Range) adalah teknik modulasi spread
spectrum, yang memungkinkan terwujudnya
komunikasi low power long range yang ekonomis,
sesuai untuk aplikasi IoT.
• Pada pertemuan ke-18 yang akan datang mengenai
LP-WAN, teknologi LoRa akan diperdalam.

digitalent.kominfo.go.id
IKUTI KAMI

digitalent.kominfo
digitalent.kominfo
DTS_kominfo
Digital Talent Scholarship 2019

Pusat Pengembangan Profesi dan Sertifikasi


Badan Penelitian dan Pengembangan SDM
Kementerian Komunikasi dan Informatika
Jl. Medan Merdeka Barat No. 9
(Gd. Belakang Lt. 4 - 5)
Jakarta Pusat, 10110

digitalent.kominfo.go.id
digitalent.kominfo.go.id

Anda mungkin juga menyukai