0% menganggap dokumen ini bermanfaat (0 suara)
66 tayangan24 halaman

Jobsheet Praktikum IoT

Jobsheet

Diunggah oleh

putrarizky7619
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
66 tayangan24 halaman

Jobsheet Praktikum IoT

Jobsheet

Diunggah oleh

putrarizky7619
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 24

Jobsheet Praktikum IoT

Oleh:

Ahmad Ridlo Hanifudin Tahier S.Si., M.Si.

Program Studi S.Tr. Teknologi Rekayasa Otomasi

Sekolah Vokasi

Universitas Diponegoro
Modul 1
Menyalakan lampu LED melalui jaringan lokal.

Tujuan praktikum pada pertemuan ketiga adalah melakukan koneksi antara modul Wemos dengan
jaringan/website. Praktikum ini dilakukan secara sederhana pada awal pengenalan modul nodemcu
esp8266 dan perangkat lain

Web server merupakan perangkat untuk menyimpan, memproses dan mengirimkan halaman web
ke client (browser pada smartphone atau Laptop/PC). Komunikasi yang digunakan pada web
server menggunakan protocol Hypertext Transfer Protocol (HTTP). Client menggunakan link
untuk melakukan request halaman dengan HTTP dan server mengirimkan response berisi halaman
web yang tersedia.

Alat dan Bahan

Pada modul praktikum 3 ini, Nodemcu esp8266 NodeMCU akan digunakan sebagai web server.

Alat dan Bahan

ESP 8266

Project Board

4 Lampu LED

Resistor 330 Ω
Laptop dengan Software Arduino IDE

Kabel Jumper male to male

Desain Rangkaian

Pin D0 – D3 dijadikan output pengendalian LED. Kemudian masukkan koding dibawah ini :

#include <ESP8266WiFi.h>

const char* ssid = "tulis ssid";


const char* password = "Tulis password";

int LED = 16; // led connected to D0


int LED2 =5;
int LED3 = 4;
int LED4 = 0;

WiFiServer server(80);

void setup()
{
Serial.begin(115200);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);

digitalWrite(LED, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);

Serial.print("Connecting to the Newtork");


WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
server.begin(); // Starts the Server
Serial.println("Server started");

Serial.print("IP Address of network: "); // Prints IP address on Serial Monitor


Serial.println(WiFi.localIP());
Serial.print("Copy and paste the following URL: http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}

void loop()
{
WiFiClient client = server.available();
if (!client)
{
return;
}
Serial.println("Waiting for new client");
while(!client.available())
{
delay(1);
}
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();

int value = LOW;


if(request.indexOf("/LED=ON") != -1)
{
digitalWrite(LED, HIGH); // Turn ON LED
value = HIGH;
}
if(request.indexOf("/LED=OFF") != -1)
{
digitalWrite(LED, LOW); // Turn OFF LED
value = LOW;
}
if(request.indexOf("/LED2=ON") != -1)
{
digitalWrite(LED2, HIGH); // Turn ON LED
value = HIGH;
}
if(request.indexOf("/LED2=OFF") != -1)
{
digitalWrite(LED2, LOW); // Turn OFF LED
value = LOW;
}

if(request.indexOf("/LED3=ON") != -1)
{
digitalWrite(LED3, HIGH); // Turn ON LED
value = HIGH;
}
if(request.indexOf("/LED3=OFF") != -1)
{
digitalWrite(LED3, LOW); // Turn OFF LED
value = LOW;
}
if(request.indexOf("/LED4=ON") != -1)
{
digitalWrite(LED4, HIGH); // Turn ON LED
value = HIGH;
}

if(request.indexOf("/LED4=OFF") != -1)
{
digitalWrite(LED4, LOW); // Turn OFF LED
value = LOW;
}
/*------------------HTML Page Creation---------------------*/

client.println("HTTP/1.1 200 OK"); // standalone web server with an ESP8266


client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<title> Modul 1 </title>");

client.println("<h1> Modul MEdi </h1>");


client.println("<br><br>");
client.println("<img src='https://cdn-icons-png.flaticon.com/512/2338/2338808.png'
width='50px' height='50px'></img>");
client.println("<br><br>");
client.print("LED 1 Merah: ");

if(digitalRead(LED) == HIGH)
{
client.print("ON");
}
else
{
client.print("OFF");
}
client.println("<br><br>");
client.println("<a href=\"/LED=ON\"\"><button>ON</button></a>");
client.println("<a href=\"/LED=OFF\"\"><button>OFF</button></a><br />");

client.println("<br><br>");
client.print("LED 2 Merah: ");

client.println("<br><br>");

if(digitalRead(LED2) == HIGH)
{
client.print("ON");
}
else
{
client.print("OFF");
}
client.println("<br><br>");
client.println("<a href=\"/LED2=ON\"\"><button>ON</button></a>");
client.println("<a href=\"/LED2=OFF\"\"><button>OFF</button></a><br />");

client.println("<br><br>");
client.println("<img src='https://cdn-icons-png.flaticon.com/512/2338/2338808.png'
width='50px' height='50px'></img>");
client.println("<br><br>");
client.print("LED 3: ");

client.println("<br><br>");

if(digitalRead(LED3) == HIGH)
{
client.print("ON");
}
else
{
client.print("OFF");
}
client.println("<br><br>");
client.println("<a href=\"/LED3=ON\"\"><button>ON</button></a>");
client.println("<a href=\"/LED3=OFF\"\"><button>OFF</button></a><br />");

client.println("<br><br>");

client.print("LED4: ");

client.println("<br><br>");

if(digitalRead(LED4) == HIGH)
{
client.print("ON");
}
else
{
client.print("OFF");
}
client.println("<br><br>");
client.println("<a href=\"/LED4=ON\"\"><button>ON</button></a>");
client.println("<a href=\"/LED4=OFF\"\"><button>OFF</button></a><br />");

client.println("</html>");

delay(1);
Serial.println("Client disonnected");
Serial.println("");
}

Selanjutnya upload koding diatas kedalam NodeMCU sesuai board dan port pada Arduino IDE

Pastikan laptop, smartphone dan device apapun yang ingin digunakan untuk mengendalikan
LED dengan Web Server harus menggunakan WiFi hotspot yang sama dengan NodeMCU
yang sedang kita gunakan.
Modul 2
Menggerakkan motor servo dengan aplikasi Blynk

Tujuan praktikum pertemuan ke 4 adalah bisa melakukan perintah pada Motor Servo
menggunakan aplikasi yang disediakan oleh android.

Alat dan Bahan

Nodemcu esp8266

Project Board

Kabel Jumper

Motor Servo DC

HP Android yang sudah terinstall Blynk IoT

Rangkaian Percobaan
Coding

// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud
// See the Device Info tab, or Template settings
#define BLYNK_FIRMWARE_VERSION "0.1.0"

#define BLYNK_TEMPLATE_ID "Isikan Template ID"


#define BLYNK_DEVICE_NAME "isikan nama device"
#define BLYNK_AUTH_TOKEN "Isikan token autorisasi"

// Comment this out to disable prints and save space


#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Servo.h>

char auth[] = BLYNK_AUTH_TOKEN;

// Your WiFi credentials.


// Set password to "" for open networks.
char ssid[] = "SSID";
char pass[] = "Password";

Servo servo;

BLYNK_WRITE(V3)
{
servo.write(param.asInt());
}

void setup()
{
// Debug console
Serial.begin(115200);

Blynk.begin(auth, ssid, pass);


// You can also specify server:
// Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
//Blynk.begin(auth, ssid, pass, IPAddress(192,1,100), 80);

servo.attach(2);
}
void loop()
{
Blynk.run();
}

2. Pada aplikasi blynk buatlah aplikasi control servo (anda boleh menggunakan referensi yang ada
atau dari gambar dibawah)

kemudian , upload program tersebut ke nodeMCU.

3. Analisa data

Gunakan HP anda untuk menggerakkan servo sebesar 45 derajat, 90 derajat, dan lain-lain
Modul 3
Monitoring suhu dengan aplikasi thingspeak
Praktikum monitoring suhu dengan menggunakan Thingspeak merupakan salah satu praktikum
untuk melakukan monitoring jarak jauh terhadap suhu dan kelembapan di lingkungan sekitar. Pada
beberapa keadaan, pengontrollan suhu dan kelembapan sangat diperhatikan untuk menjaga
kualitas benda-benda yang ada di ruangan itu.

Tujuan praktikum pertemuan ke 5 adalah mampu mengukur besaran yang dibaca sensor dan
menampilkan kedalam bentuk grafik pada website Thingspeak. Pada praktikum ini dilakukan
pembacaan dari sensor dan menguploadnya kedalam sistem cloud sehingga praktikan bisa
menggunakan cloud data base yang digunakan pedoman pembuatan smart device.

Alat dan Bahan

Nodemcu esp8266

Sensor dht 11

Project Board

Kabel Jumper

Laptop

Desain Rangkaian
Coding

#include "DHT.h"

#include <ESP8266WiFi.h>

#define DHTPIN 0

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

WiFiClient client;

String apiKey = "Masukkan API";

const char *ssid = "";

const char *pass = "";

const char* server = "api.thingspeak.com";

void setup(){

Serial.begin(115200);

delay(10);

dht.begin();

Serial.println("Connecting to ");

Serial.println(ssid);

WiFi.begin(ssid, pass);

while (WiFi.status() != WL_CONNECTED){

delay(500);

Serial.println(".");

Serial.println("");
Serial.println("WiFi connected");

void loop()

float h = dht.readHumidity();

float t = dht.readTemperature();

if (isnan(h)||isnan(t)){

Serial.println("Failed to raed from DHT sensor!");

return;

if(client.connect(server, 80)){

String postStr= apiKey;

postStr += "&field1=";

postStr += String(t);

postStr += "&field2=";

postStr += String(h);

postStr += "\r\n\r\n";

client.print("POST /update HTTP/1.1\n");

client.print("Host: api.thingspeak.com\n");

client.print("Connection: close\n");

client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");

client.print("Content-Type: application/x-www-form-urlencoded\n");

client.print("Content-Length: ");

client.print(postStr.length());
client.print("\n\n");

client.print(postStr);

Serial.print("Temperature: ");

Serial.print(t);

Serial.print(" degrees Celcius, Humidity: ");

Serial.print(h);

Serial.print("%. Send to Thingspeak.");

client.stop();

Serial.println("Waiting...");

delay(1000);

Setting Website Thingspeak sesuai dengan coding yang dimasukkan


Modul 4
Praktikum Protokol Komunikasi MQTT
A. Tujuan Percobaan
Tujuan percobaan pada praktikum ini adalah
1. Mengetahui fungsi dan cara kerja Protokol Komunikasi MQTT
2. Memahami konsep Publish dan Subscribe menggunakan ESP 8266
3. Memahami cara menganalisa data pada praktikum MQTT

B. Teori Dasar
Message Queuing Telemetry Transport (MQTT) adalah salah satu protokol komunikasi dengan
mengirimkan pesan yang dibentuk melalui TCP/IP. Protokol ini dirancang untuk komunikasi
machine to machine yang tidak memiliki alamat khusus dengan model pesan publish-subscribe.

MQTT terdiri dari Publisher, Broker dan Subscriber. Publisher berfungsi sebagai pengirim pesan,
Subscriber sebagai penerima pesan dan Broker berfungsi sebagai penyampai pesan dari pengirim
ke penerima. Mikrokontroller, Komputer, Smartphone dapat berfunsgi sebagai publisher maupun
subscriber.

Gambar 1. Komunikasi MQTT


(Sumber : paessler.com)
C. Alat dan Bahan
1. NodeMCU ESP 8266
2. Laptop
3. Project Board
4. Kabel Jumper
5. DHT 11/22
6. HP Android yang sudah terinstall MQTT Dashboard

D. Desain Rangkaian

Gambar 2. Desain rangkaian

E. Coding

Anda bisa mengggunakan coding dibawah ini atau bisa mengkesplore dari sumber yang
lainnya

/*
Rui Santos
Complete project details at https://RandomNerdTutorials.com/esp8266-nodemcu-mqtt-publish-
dht11-dht22-arduino/

Permission is hereby granted, free of charge, to any person obtaining a copy


of this software and associated documentation files.

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/

#include "DHT.h"

#include <ESP8266WiFi.h>
#include <Ticker.h>

#include <AsyncMqttClient.h>

#define WIFI_SSID "Ndo"

#define WIFI_PASSWORD ""

// Raspberri Pi Mosquitto MQTT Broker

//#define MQTT_HOST IPAddress(192, 168, 1, XXX)

// For a cloud MQTT broker, type the domain name

#define MQTT_HOST "test.mosquitto.org"

#define MQTT_PORT 1883

// Temperature MQTT Topics

#define MQTT_PUB_TEMP "esp/dht/temperature"

#define MQTT_PUB_HUM "esp/dht/humidity"

// Digital pin connected to the DHT sensor

#define DHTPIN 14

// Uncomment whatever DHT sensor type you're using

#define DHTTYPE DHT11 // DHT 11


//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Initialize DHT sensor

DHT dht(DHTPIN, DHTTYPE);

// Variables to hold sensor readings

float temp;

float hum;

AsyncMqttClient mqttClient;

Ticker mqttReconnectTimer;

WiFiEventHandler wifiConnectHandler;

WiFiEventHandler wifiDisconnectHandler;

Ticker wifiReconnectTimer;

unsigned long previousMillis = 0; // Stores last time temperature was published

const long interval = 10000; // Interval at which to publish sensor readings

void connectToWifi() {
Serial.println("Connecting to Wi-Fi...");

WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

void onWifiConnect(const WiFiEventStationModeGotIP& event) {

Serial.println("Connected to Wi-Fi.");

connectToMqtt();

void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) {

Serial.println("Disconnected from Wi-Fi.");

mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to


Wi-Fi

wifiReconnectTimer.once(2, connectToWifi);

void connectToMqtt() {

Serial.println("Connecting to MQTT...");

mqttClient.connect();

}
void onMqttConnect(bool sessionPresent) {

Serial.println("Connected to MQTT.");

Serial.print("Session present: ");

Serial.println(sessionPresent);

void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) {

Serial.println("Disconnected from MQTT.");

if (WiFi.isConnected()) {

mqttReconnectTimer.once(2, connectToMqtt);

/*void onMqttSubscribe(uint16_t packetId, uint8_t qos) {

Serial.println("Subscribe acknowledged.");

Serial.print(" packetId: ");

Serial.println(packetId);

Serial.print(" qos: ");

Serial.println(qos);

}
void onMqttUnsubscribe(uint16_t packetId) {

Serial.println("Unsubscribe acknowledged.");

Serial.print(" packetId: ");

Serial.println(packetId);

}*/

void onMqttPublish(uint16_t packetId) {

Serial.print("Publish acknowledged.");

Serial.print(" packetId: ");

Serial.println(packetId);

void setup() {

Serial.begin(115200);

Serial.println();

dht.begin();

wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);

wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect);
mqttClient.onConnect(onMqttConnect);

mqttClient.onDisconnect(onMqttDisconnect);

//mqttClient.onSubscribe(onMqttSubscribe);

//mqttClient.onUnsubscribe(onMqttUnsubscribe);

mqttClient.onPublish(onMqttPublish);

mqttClient.setServer(MQTT_HOST, MQTT_PORT);

// If your broker requires authentication (username and password), set them below

//mqttClient.setCredentials("REPlACE_WITH_YOUR_USER",
"REPLACE_WITH_YOUR_PASSWORD");

connectToWifi();

void loop() {

unsigned long currentMillis = millis();

// Every X number of seconds (interval = 10 seconds)

// it publishes a new MQTT message

if (currentMillis - previousMillis >= interval) {

// Save the last time a new reading was published

previousMillis = currentMillis;
// New DHT sensor readings

hum = dht.readHumidity();

// Read temperature as Celsius (the default)

temp = dht.readTemperature();

// Read temperature as Fahrenheit (isFahrenheit = true)

//temp = dht.readTemperature(true);

// Publish an MQTT message on topic esp/dht/temperature

uint16_t packetIdPub1 = mqttClient.publish(MQTT_PUB_TEMP, 1, true,


String(temp).c_str());

Serial.printf("Publishing on topic %s at QoS 1, packetId: %i ", MQTT_PUB_TEMP,


packetIdPub1);

Serial.printf("Message: %.2f \n", temp);

// Publish an MQTT message on topic esp/dht/humidity

uint16_t packetIdPub2 = mqttClient.publish(MQTT_PUB_HUM, 1, true, String(hum).c_str());

Serial.printf("Publishing on topic %s at QoS 1, packetId %i: ", MQTT_PUB_HUM,


packetIdPub2);

Serial.printf("Message: %.2f \n", hum);

Anda mungkin juga menyukai