산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

삼성 SAMI, 아두이노 우노, 라즈베리 파이로 빠르고 신뢰성 높은 화재 감지 시스템 구축

개요

이 튜토리얼은 아두이노 우노와 라즈베리 파이를 사용해 화염 센서 판독값을 웹소켓으로 삼성 SAMI에 스트리밍하는 소형 IoT 화재 감지 시스템을 만드는 과정을 안내합니다.

간단한 기성 IR 화염 센서를 사용하고 아두이노에 가벼운 스케치를 업로드한 후, 라즈베리 파이에서 Node.js 스크립트를 실행해 데이터를 SAMI로 전달합니다.

사전 요구사항

이 튜토리얼을 위해 기본 SAMI API에 익숙해야 합니다.

아키텍처

아래 다이어그램은 높은 수준의 흐름을 보여줍니다:

소프트웨어 구성요소:

소프트웨어 다운로드.

라즈베리 파이가 없어도 단계 진행 가능. 아두이노를 인터넷 접속 가능한 컴퓨터에 연결하고 Node.js 스크립트를 그 머신에서 실행하면 됩니다.

1단계: 새 기기 유형 생성 및 연결

  1. SAMI 개발자 포털 로그인. 삼성 계정 없으면 지금 생성.
  2. "+ New Device Type" 클릭.
  3. 기기 유형 이름을 "Flame Sensor"로, 고유 식별자를 "com.example.iot.flame" 같은 것으로 지정.
  4. "Create Device Type" 클릭 후 기기 유형 페이지로 진행.

이제 "Flame Sensor" 기기 유형에 매니페스트 생성:

  1. 왼쪽 열에서 "Flame Sensor" 클릭.
  2. "Manifest"로 이동해 "+ New Version" 클릭.
  3. 필드 이름으로 onFire, 데이터 타입으로 Boolean 입력.
  4. "Save" 클릭 후 "Next: Actions".
  5. 이 튜토리얼에서는 Actions 건너뛰고 "Save New Manifest" 클릭.

단순 매니페스트는 자동 승인됨. 이 기기 유형은 튜토리얼용이므로 게시하지 마세요.

마지막으로 사용자 포털에서 새 Flame Sensor 기기 연결:

  1. SAMI 사용자 포털 로그인.
  2. 대시보드에서 새 기기 연결 클릭.
  3. 방금 만든 "Flame Sensor" 기기 유형 선택.
  4. "Connect Device…" 클릭. 대시보드로 돌아옴.
  5. 추가된 기기의 설정 아이콘 클릭. 팝업에서 "GENERATE DEVICE TOKEN…" 선택.
  6. 표시된 기기 ID와 기기 토큰 복사 – 코드에서 필요.

2단계: 아두이노 설정

위 다이어그램과 같이 IR 화염 센서를 아두이노에 배선. 다음 스케치(read_flame_sensor.ino)를 아두이노 IDE로 업로드. 스케치는 5초마다(조정 가능) 센서를 읽고 디지털 값을 시리얼 포트로 전송. SAMI에서 "0"은 화재 감지, "1"은 화재 없음.

/* read_flame_sensor.ino */
// 읽기 간격 지연
const int delayBetweenReads = 5000; // 5초
// 화염 감지 센서 핀
const int flameDigitalPinIn = 2;

void setup() {
    // 9600 보드로 시리얼 통신 초기화
    Serial.begin(9600);
    pinMode(flameDigitalPinIn, INPUT);
}

void loop() {
    // HIGH(1) = 화재 없음, LOW(0) = 화재 감지
    int flameDigitalReading = digitalRead(flameDigitalPinIn);
    Serial.println(String(flameDigitalReading));
    delay(delayBetweenReads);
}

3단계: 라즈베리 파이 설정

라즈베리 파이를 모니터, 마우스, 키보드에 연결. 작동하는 이더넷 또는 Wi-Fi 연결과 최신 OS 확인:

  1. $ sudo apt-get update
  2. $ sudo apt-get upgrade

Node.js 미설치 시 ARM 호환 버전 설치 후 npm으로 필수 패키지 추가:

  1. $ npm install serialport
  2. $ npm install ws

아두이노 시리얼 포트를 라즈베리 파이 USB 포트에 연결.

Node.js 스크립트(send_data_to_sami.js) 다운로드 후 device_id와 device_token 플레이스홀더를 앞서 복사한 자격 증명으로 교체.

/* 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');

/** 현재 시간을 밀리초로 반환 */
function getTimeMillis(){ return parseInt(Date.now().toString()); }

// 웹소켓 연결 수립 및 기기 등록
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));
    }
});

스크립트 실행 후 화염 센서 판독값이 실시간으로 SAMI에 스트리밍됩니다.

자세한 내용은 전체 튜토리얼 참조: 삼성 SAMI, 아두이노 우노, 라즈베리 파이로 몇 분 만에 화재 감지기 만들기.

제조공정

  1. 예산 친화적 라즈베리 파이 아기 울음 감지기 DIY 가이드
  2. 라즈베리 파이와 습도 센서로 자동 에어로포닉스 시스템 만들기
  3. 라즈베리 파이와 파이썬으로 로봇 만들기: 완전 가이드
  4. 아두이노 & 라즈베리 파이로 인터넷 제어 영상 스트리밍 로봇 만들기
  5. 아두이노 실시간 시계로 이슬람 기도 시간 알림 장치 만들기
  6. 아두이노와 안드로이드로 룸바 크리에이트 2 제어하기: 단계별 가이드
  7. 아두이노 우노로 1.17인치 TFT LCD에 이미지 표시하기 - SD 카드 활용
  8. 아두이노 & MPU6050: SG90 & MG996R 서보 모터 정밀 제어
  9. u-blox LEA-6H GPS 모듈: 아두이노 & 파이썬 연동 가이드
  10. 아두이노 Due에서 음성 인식 및 합성 마스터하기