Panduan Penyelesaian Mid-Term IoT 2026

Mata Kuliah Internet of Things — Universitas Siber Asia (UNSIA)
Referensi kode sumber: github.com/jdpark7/unsia-iot
Deadline: 15 Juni 2026, pukul 24:00 WIB

1 Registrasi IoT Devices ke Server 15 Poin

Menghubungkan perangkat IoT (Fan, Lamp, Door) ke server registrasi home.com dan mengkonfigurasi Bluetooth tethering antara Smartphone dan Laptop menggunakan Cisco Packet Tracer.

Peralatan

Bagian 1: Registrasi Device ke Server home.com

Langkah 1: Klik ikon Tablet → pilih IoT Monitor di tab Desktop → gunakan pengaturan default → klik Login. Daftar perangkat IoT yang terdaftar di Home Gateway akan ditampilkan.
Langkah 2: Buka Web Browser di Tablet → navigasi ke home.com → login dengan username home dan password home. Saat ini belum ada perangkat terdaftar karena semua masih terhubung ke Home Gateway.
Langkah 3: Ubah konfigurasi tiap perangkat satu per satu:
  • Klik Fan → tab Config → ubah IoT Server dari Home Gateway ke Remote Server
  • Server Address: home.com
  • Username: home, Password: home
  • Klik Connect
  • Ulangi untuk Lamp dan Door
Langkah 4: Verifikasi: buka kembali home.com di browser Tablet → periksa bahwa Fan, Lamp, dan Door muncul di jendela IoT Server – Devices. Jika ada yang offline, kembali ke konfigurasi device dan klik Refresh.

Bagian 2: Bluetooth Tethering Smartphone ke Laptop

Langkah 1: Buka Laptop → tab ConfigBluetooth → set Port Status ke On.
Langkah 2: Buka Smartphone → pastikan terkoneksi ke 3G/4G Cell1 → klik DHCP Refresh → set Bluetooth ke On di Global Settings → buka menu Bluetooth → set Port Status ke On.
Langkah 3: Di Smartphone → tab Config → Bluetooth → klik Discover → pilih Laptop → klik Pair → setujui pairing. Kembali ke Laptop → Bluetooth → pilih Smartphone → klik Tether.
Langkah 4: Verifikasi: buka Command Prompt di Laptop → ketik ping home.com. Jika ada balasan, koneksi berhasil. Bisa juga buka browser dan akses home.com.
Submission: Simpan file Packet Tracer (.pkt) yang sudah 100% selesai. Ambil screenshot yang menunjukkan completion 100% dan masukkan ke file Word.

2 LCD 2-Baris di Tinkercad 10 Poin

Menggunakan sensor di Tinkercad dan menampilkan output-nya pada LCD 16×2.

Peralatan

Langkah Penyelesaian

Langkah 1: Buka sketch awal dari link di atas. Klik "Copy and Tinker" untuk membuat salinan yang bisa diedit.
Langkah 2: Pilih sensor yang tersedia, misalnya:
  • TMP36 (sensor suhu) — paling mudah, output tegangan analog
  • Photoresistor (sensor cahaya)
  • Ultrasonic Distance Sensor (sensor jarak)
Langkah 3: Wiring rangkaian (contoh dengan TMP36):
  • VCC TMP36 → 5V Arduino
  • GND TMP36 → GND Arduino
  • OUT TMP36 → A0 Arduino
  • LCD: RS → pin 12, E → pin 11, D4 → pin 5, D5 → pin 4, D6 → pin 3, D7 → pin 2
  • VCC LCD → 5V, GND LCD → GND, V0 → GND (via potensiometer untuk kontras)
Langkah 4: Tulis kode Arduino:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int sensorPin = A0;

void setup() {
  lcd.begin(16, 2);
  Serial.begin(9600);
}

void loop() {
  int reading = analogRead(sensorPin);
  float voltage = reading * 5.0 / 1023.0;
  float temperatureC = (voltage - 0.5) * 100.0;  // TMP36

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Suhu: ");
  lcd.print(temperatureC, 1);
  lcd.print(" C");

  lcd.setCursor(0, 1);
  lcd.print("ADC: ");
  lcd.print(reading);

  delay(1000);
}
Langkah 5: Klik "Start Simulation". Pastikan LCD menampilkan nilai sensor dengan benar. Sesuaikan suhu dengan mengklik sensor TMP36 di simulasi.
Submission: Screenshot hasil simulasi rangkaian yang menunjukkan LCD menampilkan output sensor. Masukkan ke file Word.

3 Rangkaian Lampu ON/OFF dengan Transistor 10 Poin

Membuat rangkaian saklar lampu berbasis transistor di Tinkercad, dengan resistor 90 kΩ dan 100 Ω. Menentukan VBE dan arus maksimum lampu.

Komponen

Kode Warna Resistor

NilaiGelang 1Gelang 2Gelang 3 (Pengali)Kode
90 kΩPutih (9)Coklat (0)Oranye (×10³)White-Brown-Orange
100 ΩCoklat (1)Hitam (0)Coklat (×10¹)Brown-Black-Brown

Langkah Penyelesaian

Langkah 1: Buka Tinkercad → buat Circuit baru.
Langkah 2: Susun rangkaian:
  • Hubungkan fotodioda ke basis transistor melalui resistor 90 kΩ
  • Hubungkan lampu ke kolektor transistor melalui resistor 100 Ω
  • Hubungkan emitor langsung ke ground
  • Hubungkan VCC sesuai spesifikasi lampu
Langkah 3: Klik "Start Simulation". Intensitas cahaya bisa diubah dengan mengklik fotodioda.
Langkah 4: Gunakan multimeter untuk mengukur tegangan antara Basis dan Emitor.

Jawaban

1. VBE ≈ 0.7 Volt (tegangan forward bias junction Base-Emitter untuk transistor silikon)

Penjelasan: Ketika transistor NPN dalam mode aktif/saturasi, tegangan antara basis dan emitor (VBE) selalu sekitar 0.6–0.7V untuk transistor silikon. Ini adalah karakteristik fisik junction PN.

2. Imax = Vsupply / 100 Ω

Penjelasan: Arus maksimum yang melewati lampu ditentukan oleh resistor 100 Ω di jalur kolektor. Jika catu daya 9V dan transistor saturasi penuh (VCE ≈ 0), maka:

Imax = 9V / 100Ω = 0.09 A = 90 mA
Catatan: Nilai arus aktual bergantung pada tegangan catu dan seberapa terang fotodioda. Semakin terang fotodioda → arus basis meningkat → transistor semakin ON → lampu semakin terang.
Submission: Tulis jawaban: 1) VBE = 0.7 Volt, 2) Imax = Vsupply / 100Ω. Masukkan ke file Word.

4 Current Gain Transistor 10 Poin

Mengukur arus basis (IB) dan arus kolektor (IC) menggunakan multimeter untuk menghitung penguatan arus (β) transistor.

Konsep

Penguatan arus transistor (β atau hFE) adalah rasio antara arus kolektor dan arus basis:

β = hFE = IC / IB

Langkah Penyelesaian

Langkah 1: Buka Tinkercad → buat rangkaian transistor seperti pada gambar di soal.
Langkah 2: Pasang dua multimeter dalam mode Ammeter (pengukur arus):
  • Multimeter 1: seri dengan basis transistor → untuk mengukur IB
  • Multimeter 2: seri dengan kolektor transistor → untuk mengukur IC
Penting: Multimeter untuk mengukur arus harus dipasang secara SERI dengan komponen, bukan paralel. Pastikan mode selektor multimeter diatur ke Current (A atau mA), bukan Voltage.
Langkah 3: Klik "Start Simulation". Catat nilai IB dan IC dari kedua multimeter.
Langkah 4: Hitung β dengan rumus di atas.

Contoh Perhitungan

Misalkan hasil pengukuran:

β = IC / IB = 0.004 / 0.000020 = 200

Nilai β tipikal untuk transistor sinyal kecil (2N2222, BC547) berkisar antara 100–300.

Submission: Tulis jawaban: β = IC / IB = (nilai yang didapat). Masukkan ke file Word.

5 Rangkaian Non-Inverting Op-Amp 10 Poin

Menggambar rangkaian non-inverting op-amp di Tinkercad, menentukan tegangan di pin 2, dan menghitung rasio amplifikasi tegangan.

Konsep Non-Inverting Op-Amp

Pada rangkaian non-inverting amplifier, sinyal input masuk ke pin non-inverting (pin 3), dan feedback diberikan ke pin inverting (pin 2).

Karakteristik Penting

Langkah Penyelesaian

Langkah 1: Buka Tinkercad → buat Circuit baru. Tambahkan Op-Amp (misal LM741).
Langkah 2: Wiring non-inverting amplifier:
  • Pin 3 (non-inverting): hubungkan ke sumber sinyal input (Vin)
  • Pin 2 (inverting): hubungkan ke pembagi tegangan Rf dan Rin
  • Rin: dari pin 2 ke ground
  • Rf (feedback): dari output (pin 6) ke pin 2
  • Pin 7: VCC+ (misal +9V)
  • Pin 4: VCC− (misal −9V atau GND untuk single supply)

Jawaban

2. Vpin2 = Vin

Penjelasan: Karena prinsip virtual short pada op-amp ideal, tegangan di pin inverting (pin 2) sama dengan tegangan di pin non-inverting (pin 3), yaitu tegangan input (Vin). Feedback negatif memaksa kondisi ini.

3. Av = Vout / Vin = 1 + (Rf / Rin)

Penjelasan: Rasio amplifikasi tegangan untuk non-inverting op-amp adalah 1 + (Rf / Rin). Berbeda dengan inverting amplifier yang memiliki gain = −Rf/Rin.

Perbedaan Inverting vs Non-Inverting:
  • Inverting (−): Input masuk ke pin 2 melalui Rin, output berlawanan fasa, gain = −Rf/Rin
  • Non-Inverting (+): Input masuk ke pin 3, output sefasa, gain = 1 + Rf/Rin
Submission: Screenshot/gambar rangkaian + jawaban: 2) Vpin2 = Vin, 3) Av = 1 + Rf/Rin. Masukkan ke file Word.

6 VSCode + PlatformIO + DHT11 15 Poin

Setup lingkungan pengembangan PlatformIO di VSCode, membuat project untuk Wemos D1 Mini, menghubungkan sensor DHT11, dan menampilkan data suhu & kelembaban di Serial Monitor.

Peralatan

Wiring DHT11

DHT11Wemos D1 Mini
VCC (+)3.3V
GND (−)GND
DATA (out)Pin D3 (GPIO 0)

Langkah 1: Install VSCode + PlatformIO

Download dan install VS Code dari code.visualstudio.com.
Buka VS Code → klik ikon Extensions (Ctrl+Shift+X) → cari "PlatformIO IDE" → klik Install.

Langkah 2: Buat Project Baru

Klik ikon PlatformIO Home di sidebar → pilih "New Project".
Isi:
  • Name: DHT11_Wemos
  • Board: LOLIN(WEMOS) D1 R2 & mini
  • Framework: Arduino
  • Klik Finish

Langkah 3: Install Library DHT

Buka PlatformIO Home → Libraries → cari "DHT sensor library" by Adafruit → klik "Add to Project" → pilih project DHT11_Wemos.
Ulangi untuk library "Adafruit Unified Sensor" (dependency yang diperlukan).

Langkah 4: Tulis Kode

Buka src/main.cpp dan ganti dengan kode berikut:

#include <Arduino.h>
#include "DHT.h"

#define DHTPIN 0          // GPIO 0 = pin D3 pada Wemos D1 Mini
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  delay(10);
  dht.begin();
  Serial.println("=== DHT11 Sensor Reading ===");
}

void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Gagal membaca sensor DHT11!");
    delay(5000);
    return;
  }

  Serial.print("Kelembaban: ");
  Serial.print(humidity);
  Serial.print(" %\t");

  Serial.print("Suhu: ");
  Serial.print(temperature);
  Serial.println(" °C");

  delay(5000);  // baca setiap 5 detik
}

Langkah 5: Build & Upload

Hubungkan Wemos D1 Mini ke PC via kabel USB.
Di toolbar bawah VS Code, klik ikon ✓ (Build) untuk compile. Pastikan tidak ada error.
Klik ikon → (Upload) untuk mengupload ke board.
Buka Serial Monitor (ikon colokan listrik) → atur baud rate ke 115200. Pastikan data suhu dan kelembaban muncul.

File platformio.ini

[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino
monitor_speed = 115200
lib_deps =
    adafruit/DHT sensor library@^1.4.6
    adafruit/Adafruit Unified Sensor@^1.1.14
Jika tidak memiliki board Wemos D1 Mini: Lakukan kompilasi (Build) saja — screenshot hasil kompilasi yang sukses sebagai bukti. Kode akan tetap diverifikasi oleh kompilator.
Submission: (1) Folder project PlatformIO dalam bentuk .zip. (2) Screenshot Serial Monitor yang menampilkan minimal 3 set data (suhu + kelembaban). Jika tidak punya board, screenshot hasil kompilasi.

7 Secure HTTPS Data Transmission 15 Poin

Mengirim data suhu dan kelembaban dari Wemos D1 Mini ke server melalui HTTPS yang aman menggunakan WiFiClientSecure dengan fingerprint SHA-1 (bukan setInsecure()).

Konsep Kunci

Perbedaan dengan Kode Awal

Kode Awal (Tidak Aman)Kode Tugas (Aman)
WiFiClientSecure client;std::unique_ptr<BearSSL::WiFiClientSecure> client(new BearSSL::WiFiClientSecure);
client.setInsecure(); ← JANGANclient->setFingerprint(fingerprint);
Tidak verifikasi sertifikatVerifikasi fingerprint SHA-1

Langkah Penyelesaian

Langkah 1: Buat project PlatformIO baru (seperti Task 6) atau gunakan project yang sama.
Langkah 2: Install library yang diperlukan di platformio.ini:
[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino
monitor_speed = 115200
lib_deps =
    adafruit/DHT sensor library@^1.4.6
    adafruit/Adafruit Unified Sensor@^1.1.14
Langkah 3: Tulis kode di src/main.cpp dengan modifikasi berikut (perhatikan komentar "PENTING"):
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecureBearSSL.h>  // PENTING: gunakan BearSSL
#include <ESP8266HTTPClient.h>
#include <DHT.h>

#define DHTPIN 0
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// GANTI dengan kredensial WiFi Anda
#define STASSID "Your Wi-Fi SSID"
#define STAPSK "Your Wi-Fi Password"

// GANTI dengan Student ID Anda
#define STUDENTID "Your Student ID"

const char* ssid = STASSID;
const char* password = STAPSK;
const char* server = "https://iot.learnina.org/dht.php";
const char* stationid = STUDENTID;

// Fingerprint SHA-1 untuk iot.learnina.org
const uint8_t fingerprint[] = {
  0x89, 0x8F, 0xCB, 0x0C, 0x27, 0x08, 0xAC, 0xCF,
  0x25, 0x06, 0x88, 0xBA, 0xCE, 0xDE, 0x98, 0xB0,
  0x4A, 0xD3, 0x39, 0x08
};

// PENTING: gunakan unique_ptr BearSSL
std::unique_ptr<BearSSL::WiFiClientSecure> client(
  new BearSSL::WiFiClientSecure
);

void setup() {
  Serial.begin(115200);
  Serial.println("\n=== HTTPS Secure DHT11 Sender ===");

  WiFi.begin(ssid, password);
  Serial.print("Menghubungkan ke WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi Terhubung!");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  dht.begin();

  // PENTING: gunakan setFingerprint, BUKAN setInsecure()
  client->setFingerprint(fingerprint);
  client->setTimeout(15);
}

void loop() {
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Gagal membaca sensor DHT11!");
    delay(2000);
    return;
  }

  Serial.print("Suhu: "); Serial.print(temperature, 1);
  Serial.print(" °C, Kelembaban: "); Serial.print(humidity, 1);
  Serial.println(" %");

  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient https;

    String url = String(server) + "?stationid=" + stationid
               + "&temperature=" + String(temperature, 1)
               + "&humidity=" + String(humidity, 1);

    Serial.print("Mengirim ke: ");
    Serial.println(url);

    // Gunakan client BearSSL (bukan WiFiClient biasa)
    https.begin(*client, url);

    int httpCode = https.GET();

    if (httpCode > 0) {
      String payload = https.getString();
      Serial.print("HTTP "); Serial.println(httpCode);
      Serial.print("Response: "); Serial.println(payload);
    } else {
      Serial.print("Error HTTPS: "); Serial.println(httpCode);
    }

    https.end();
  } else {
    Serial.println("WiFi terputus!");
  }

  delay(10000);  // kirim setiap 10 detik
}
Langkah 4: Build dan upload ke Wemos D1 Mini. Buka Serial Monitor (115200 baud) untuk melihat data terkirim dan response server.
Langkah 5: Verifikasi data tersimpan: buka browser dan kunjungi:
https://iot.learnina.org/station_data.php?stationid=your-student-id
Jika tidak memiliki board: Gunakan perintah curl -k untuk mensimulasikan pengiriman data:
curl -k "https://iot.learnina.org/dht.php?stationid=unsia&temperature=24.3&humidity=55.6"
Screenshot hasilnya. Ini membuktikan bahwa endpoint menerima data dengan format yang benar.
Submission: Screenshot dari halaman https://iot.learnina.org/station_data.php?stationid=your-student-id yang menampilkan data suhu dan kelembaban yang sudah terkirim.

8 ThingSpeak Weather Station Map 15 Poin

Membuat channel di ThingSpeak, mengatur lokasi (latitude/longitude), dan mendaftarkan channel di peta cuaca iot.learnina.org.

Peralatan

Langkah 1: Buat Channel ThingSpeak

Buka thingspeak.com → login/daftar → klik "New Channel".
Isi konfigurasi channel:
  • Name: Weather Station - [Nama/ID Anda]
  • Description: IoT weather monitoring station
  • Field 1: Temperature
  • Field 2: Humidity
  • Centang "Make Public" agar bisa diakses publik

Langkah 2: Atur Latitude & Longitude

Buka Google Maps → cari lokasi Anda → klik kanan pada lokasi → klik koordinat untuk menyalin.
Kembali ke ThingSpeak → tab "Channel Settings" → scroll ke bawah → isi:
  • Latitude: (contoh: -6.2088 untuk Jakarta)
  • Longitude: (contoh: 106.8456 untuk Jakarta)
  • Klik "Save Channel"

Langkah 3: Verifikasi & Share Channel

Buka tab "Public View" untuk memastikan channel bisa diakses publik.
Copy Channel ID dari halaman channel Anda (ada di bagian atas).

Langkah 4: Daftarkan di Weather Map

Isi form dengan:
  • Channel ID: (dari ThingSpeak)
  • Nama/NIM: sesuai data Anda
  • Info lain yang diminta

Langkah 5: Lihat di Map

Buka https://iot.learnina.org/map.php → cari lokasi channel Anda di peta.
Jika tidak memiliki board: Gunakan ThingSpeak API langsung untuk mengirim data tanpa hardware:
curl "https://api.thingspeak.com/update.json?api_key=YOUR_WRITE_API_KEY&field1=25&field2=55"

Ganti YOUR_WRITE_API_KEY dengan Write API Key dari Channel Settings ThingSpeak Anda. Data akan muncul di channel.

Submission: Screenshot peta (iot.learnina.org/map.php) yang menunjukkan channel Anda sudah terdaftar di lokasi yang benar.

Format Pengumpulan (Submission)

Semua file dikumpulkan dalam satu file ZIP dengan nama StudentID.zip.

Isi File ZIP

FileTaskKeterangan
*.pktTask 1File Packet Tracer yang sudah 100% selesai
answers.docxTask 1–8File Word berisi: screenshot Task 1, 2, 6, 7, 8 + jawaban Task 3, 4, 5
DHT11_Wemos.zipTask 6Folder project PlatformIO dalam bentuk .zip

Checklist Sebelum Submit

  1. Task 1: Packet Tracer completion 100% (autograded)
  2. Task 2: Screenshot simulasi Tinkercad dengan LCD menampilkan data sensor
  3. Task 3: Jawaban VBE dan Imax
  4. Task 4: Jawaban β = IC / IB
  5. Task 5: Gambar rangkaian + jawaban Vpin2 dan Av
  6. Task 6: Project .zip + screenshot Serial Monitor (minimal 3 set data)
  7. Task 7: Screenshot halaman station_data.php dengan data terkirim
  8. Task 8: Screenshot peta dengan channel terdaftar
Deadline: 15 Juni 2026, pukul 24:00 WIB. Kumpulkan sebelum tenggat untuk menghindari penalti.