Samsung SAMIIO, Arduino UNO 및 Raspberry Pi로 몇 분 만에 화재 감지기 만들기
SAMI의 WebSocket을 사용하여 화염 센서 데이터를 SAMI로 보내는 IoT 장치를 구축해 보겠습니다. IoT 장치는 기성 센서, Arduino UNO 및 Raspberry Pi로 구성됩니다.
이 구현에서 Simple Manifest는 새 장치 유형을 빠르게 생성하는 데 사용됩니다. 그런 다음 IoT 장치를 SAMI에 쉽게 연결하고 장치에서 SAMI로 센서 데이터 전송을 시작할 수 있습니다.
필수 조건
”'이 튜토리얼에서는 기본 SAMI API. "'
건축물
아래 보라색 다이어그램은 상위 수준 아키텍처를 보여줍니다.
다음 하드웨어 구성 요소를 사용합니다.
<울>
네트워크 연결이 있는 라즈베리 파이
브레드보드가 있는 Arduino UNO
IR 화염 센서
USB 및 전원 케이블, 브레드보드용 배선
우리는 다음 소프트웨어를 작성할 것입니다:
<울>
Arduino에서 실행되는 Sketch 프로그램
Raspberry Pi에서 실행되는 Node.js 스크립트
지금 소프트웨어를 다운로드하십시오.
”'Raspberry Pi가 없는 경우에도 이 튜토리얼을 통해 작업할 수 있습니다. Arduino UNO를 인터넷에 연결된 컴퓨터에 연결하고 컴퓨터에서 Raspberry Pi 대신 Node.js 스크립트를 실행하세요.”'
1단계:새 기기 유형 생성 및 연결
개발자 포털로 이동하여 개인 기기 유형을 생성하세요.
<올>
먼저 SAMI 개발자 포털에 로그인합니다. 삼성 계정이 없으시다면 이 단계에서 만드실 수 있습니다.
'+ 새 기기 유형'을 클릭합니다.
이 장치 유형의 이름을 "Flame Sensor"로 지정하고 "com.example.iot.flame"와 같은 고유한 이름을 지정합니다.
'기기 유형 만들기'를 클릭합니다. 그러면 기기 유형이 생성되고 기기 유형 페이지로 이동합니다.
이제 "화염 센서" 장치 유형에 대한 매니페스트를 생성해 보겠습니다.
<올>
왼쪽 열에서 "화염 센서"를 클릭합니다.
'매니페스트'를 클릭한 다음 '+ 새 버전'을 클릭합니다.
필드 이름으로 "onFire"를 입력하고 데이터 유형으로 "Boolean"을 입력합니다.
'저장'을 클릭한 후 '다음:작업'을 클릭합니다.
이 튜토리얼에서는 작업을 건너뛰고 "새 매니페스트 저장"을 클릭합니다.
"' Simple Manifest는 자동으로 승인됩니다. 이 장치 유형은 튜토리얼용이므로 게시하지 마십시오."'
마지막으로 사용자 포털로 이동하여 새 화염 센서 장치를 연결합니다.
<올>
SAMI 사용자 포털에 로그인합니다.
대시보드에서 새 기기를 연결하려면 클릭하세요.
방금 생성한 '화염 센서' 기기 유형을 선택합니다.
"장치 연결..."을 클릭합니다. 대시보드로 돌아갑니다.
방금 추가한 기기의 설정 아이콘을 클릭합니다. 팝업에서 "GENERATE DEVICE TOKEN..."을 클릭합니다.
이 화면에서 디바이스 ID와 디바이스 토큰을 복사합니다. 코드에서 사용하게 됩니다.
2단계:Arduino 설정
이제 센서를 Arduino에 연결해 보겠습니다.
두 개의 센서는 위의 Frizting 이미지와 같이 배선됩니다.
다음으로 Sketch 프로그램(read_flame_sensor.ino ) Arduino IDE를 사용하여 Arduino UNO에 연결합니다. 이 코드는 IR 화염 센서에서 하나의 디지털 값을 읽은 다음 5초마다 직렬 포트로 보냅니다(SAMI에는 하루 메시지 수에 대한 속도 제한이 있으므로 나중에 코드에서 이 매개변수를 변경할 수 있음). 디지털 판독값의 경우 "0"은 화재가 감지되었음을 의미하고 "1"은 화재가 없음을 의미합니다.
다음은 read_flame_sensor.ino입니다. . 코드는 간단합니다.
// 읽기 사이의 지연
const int delayBetweenReads =5000;//5s
// 화염 감지기의 경우 senso const int FlameDigitalPinIn =2;
무효 설정() {
// 직렬 통신 @ 9600 보드 초기화:
Serial.begin(9600);
pinMode(flameDigitalPinIn, INPUT);
}
무효 루프() {
// HIGH(1)는 화재가 감지되지 않았음을 의미합니다.
// LOW(0)는 화재가 감지되었음을 의미합니다.
int FlameDigitalReading =digitalRead(flameDigitalPinIn); Serial.println(String(flameDigitalReading));
지연(delayBetweenReads);
}
3단계:Raspberry Pi 설정
Raspberry Pi를 모니터, 마우스 및 키보드에 연결합니다. 이더넷 또는 WiFi 연결이 작동하는지 확인하고 OS가 최신 상태인지 확인하십시오.
<올>
$ sudo apt-get 업데이트
$ sudo apt-get 업그레이드
아직 설치되지 않은 경우 ARM용 Node.js를 설치한 다음 serialport 패키지를 추가합니다. 그리고 w npm을 통해:
<올>
$ npm 직렬 포트 설치
$ npm 설치 ws
이제 Arduino의 직렬 포트를 Raspberry Pi의 USB에 연결합니다.
마지막으로 Node.js 코드(send_data_to_sami.js ) 라즈베리 파이에. 코드의 자리 표시자를 사용자 포털에서 수집한 장치 토큰 및 장치 ID로 바꿉니다.
Node.js 코드도 아래에 나와 있습니다. Raspberry Pi와 SAMI 사이에 양방향 WebSocket 연결을 설정합니다. WebSocket 연결이 열린 후 register() 메서드는 WebSocket에 장치를 등록합니다. 매번 코드는 직렬 포트에서 하나의 데이터 포인트를 읽은 다음 메시지로 래핑하고 WebSocket을 통해 메시지를 SAMI로 보냅니다.
var webSocketUrl =“wss://api.samsungsami.io/v1.1/websocket?ack=true”;
var device_id =“”; var device_token ="";
var isWebSocketReady =거짓; var ws =null;
var 직렬 포트 =필요("직렬 포트")
var SerialPort =serialport.SerialPort;
var sp =new SerialPort("/dev/ttyACM0", {
전송 속도:9600,
파서:serialport.parsers.readline("\n")
});
var 웹소켓 =require('ws');
/**
* 현재 시간을 밀리 단위로 가져옵니다.
*/
함수 getTimeMillis(){
반환 parseInt(Date.now().toString());
}
자세한 내용:Samsung SAMIIO, Arduino UNO 및 Raspberry Pi로 몇 분 만에 화재 감지기 만들기