Bangun Sistem Deteksi Kebakaran Cepat dan Andalan dengan Samsung SAMIIO, Arduino UNO & Raspberry Pi
Tutorial ini memandu Anda melalui pembuatan sistem deteksi kebakaran IoT kompak yang mengalirkan bacaan sensor nyala ke Samsung SAMIIO melalui WebSockets, menggunakan Arduino UNO dan Raspberry Pi.
Kami akan menggunakan sensor nyala IR siap pakai sederhana, mengunggah sketsa ringan ke Arduino, dan menjalankan skrip Node.js pada Raspberry Pi yang meneruskan data ke SAMI.
Prasyarat
Untuk tutorial ini, Anda harus familiar dengan API dasar SAMI.
Arsitektur
Diagram di bawah ini menggambarkan alur tingkat tinggi:
- Raspberry Pi dengan konektivitas jaringan
- Arduino UNO dengan breadboard
- Sensor nyala IR
- Kabel USB & daya, serta kabel breadboard
Komponen perangkat lunak:
- Sketsa Arduino yang berjalan pada UNO
- Skrip Node.js yang berjalan pada Raspberry Pi
Unduh perangkat lunak sekarang.
Jika Anda tidak memiliki Raspberry Pi, Anda tetap dapat mengikuti langkah-langkahnya. Sambungkan Arduino ke komputer dengan akses internet dan jalankan skrip Node.js pada mesin tersebut sebagai gantinya.
Langkah 1: Buat dan Sambungkan Tipe Perangkat Baru
- Masuk ke SAMI Developer Portal. Jika Anda tidak memiliki akun Samsung, buat satu sekarang.
- Klik “+ New Device Type”.
- Berikan nama tipe perangkat “Flame Sensor” dan berikan pengidentifikasi unik seperti “com.example.iot.flame”.
- Klik “Create Device Type” dan lanjutkan ke halaman tipe perangkat.
Sekarang buat Manifest untuk tipe perangkat “Flame Sensor”.
- Di kolom kiri, klik “Flame Sensor”.
- Navigasi ke “Manifest” dan klik “+ New Version”.
- Masukkan onFire sebagai Nama Kolom dan pilih Boolean sebagai Tipe Data.
- Klik “Save” dan kemudian “Next: Actions”.
- Lewati Actions untuk tutorial ini dan klik “Save New Manifest”.
Manifest Sederhana disetujui secara otomatis. Jangan menerbitkan tipe perangkat ini, karena dimaksudkan hanya untuk tujuan tutorial.
Akhirnya, sambungkan perangkat Flame Sensor baru melalui User Portal:
- Masuk ke SAMI User Portal.
- Di dashboard, klik untuk menyambungkan perangkat baru.
- Pilih tipe perangkat “Flame Sensor” yang baru saja Anda buat.
- Klik “Connect Device…”. Anda akan kembali ke dashboard.
- Klik ikon pengaturan perangkat yang ditambahkan. Di pop-up, pilih “GENERATE DEVICE TOKEN…”.
- Salin ID perangkat dan token perangkat yang ditampilkan – Anda akan membutuhkannya dalam kode.
Langkah 2: Siapkan Arduino
Sambungkan sensor nyala IR ke Arduino seperti yang ditunjukkan dalam diagram di atas. Kemudian unggah sketsa berikut (read_flame_sensor.ino) menggunakan Arduino IDE. Sketsa membaca sensor setiap 5 detik (dapat disesuaikan) dan mengirimkan nilai digital ke port serial. Di SAMI, “0” menunjukkan kebakaran terdeteksi; “1” berarti tidak ada kebakaran.
/* read_flame_sensor.ino */ // Delay antara pembacaan const int delayBetweenReads = 5000; // 5 detik // Pin sensor detektor nyala const int flameDigitalPinIn = 2; void setup() { // Inisialisasi komunikasi serial dengan baud 9600 Serial.begin(9600); pinMode(flameDigitalPinIn, INPUT); } void loop() { // HIGH (1) = tidak ada kebakaran, LOW (0) = kebakaran terdeteksi int flameDigitalReading = digitalRead(flameDigitalPinIn); Serial.println(String(flameDigitalReading)); delay(delayBetweenReads); }
Langkah 3: Siapkan Raspberry Pi
Sambungkan Raspberry Pi ke monitor, mouse, dan keyboard. Pastikan memiliki koneksi Ethernet atau Wi-Fi yang berfungsi dan OS diperbarui:
- $ sudo apt-get update
- $ sudo apt-get upgrade
Jika Node.js belum terinstal, instal versi yang kompatibel ARM dan kemudian tambahkan paket yang diperlukan melalui npm:
- $ npm install serialport
- $ npm install ws
Sambungkan port serial Arduino ke port USB pada Raspberry Pi.
Unduh skrip Node.js (send_data_to_sami.js) dan ganti nilai placeholder untuk device_id dan device_token dengan kredensial yang Anda salin sebelumnya.
/* send_data_to_sami.js */ var webSocketUrl = "wss://api.samsungsami.io/v1.1/websocket?ack=true"; var device_id = "YOUR_DEVICE_ID"; var device_token = "YOUR_DEVICE_TOKEN"; var isWebSocketReady = false; var ws = null; var serialport = require("serialport"); var SerialPort = serialport.SerialPort; var sp = new SerialPort("/dev/ttyACM0", { baudrate: 9600, parser: serialport.parsers.readline("\n") }); var WebSocket = require('ws'); /** * Mendapatkan waktu saat ini dalam milidetik */ function getTimeMillis(){ return parseInt(Date.now().toString()); } // Stabilkan koneksi WebSocket dan daftarkan perangkat ws = new WebSocket(webSocketUrl, { headers: { "Authorization": `Bearer ${device_token}` } }); ws.on("open", () => { isWebSocketReady = true; register(); }); function register() { var registerMsg = { "topic": "sami/device/register", "data": { "deviceId": device_id } }; ws.send(JSON.stringify(registerMsg)); } sp.on("data", (data) => { if (isWebSocketReady) { var message = { "topic": "sami/device/telemetry", "data": { "onFire": data.trim() === "0" } }; ws.send(JSON.stringify(message)); } });
Setelah skrip berjalan, bacaan sensor nyala Anda akan di-stream ke SAMI secara real-time.
Untuk detail lebih lanjut, lihat tutorial lengkap: Make a fire detector in minutes with Samsung SAMIIO, Arduino UNO and Raspberry Pi.