통신프로토콜
MPS Flammable Gas Sensor 통신 프로토콜 (3.0 Version)
UART 설정
PARAMETER | TYP |
---|---|
Baud Rate (Fixed) | 38400 bps |
Data Bits | 8 |
Parity | None |
Stop Bits | 1 |
Flow Control | None |
MPS Sensor Data Format 방식 : IEEE 754 Format ( 부동소수점), Little Endian 형식(최하위 바이트(LSB)가 먼저 전송)
전체 요청(Request) Command
Payload는 사용에 있어서 전송되는 데이터 자체를 의미함(Header, Checksum, parity bit, 등 제외)
요청(Request) Command Packet 구조
ex) 현재 센서 상태 요청 Command
응답(Reply) Command Packet 구조
ex) 현재 센서 상태 응답(정상일 경우만)
ex) 응답 Command 예시(정상일 경우만)
센서 Status(상태)값이 변하면 Checksum값이 변함
Command rely Status 표
가장 빈번하게 발생하는 Command reply Status :
1. 0x26(센서 초기화): 센서 초기화 시간 최대 20초까지 나타남
2. 0x35( 호흡 or 습도 급증): 센서를 사람의 호흡이나 습도가 급증하는 환경에 노출되면 센서 값이 정확하게 나오지 않을 수 있음
Checksum 알고리즘: 16bit CRC CCITT 알고리즘
Checksum이란 데이터의 오류를 검사하는데 사용되는 일련의 숫자와 문자
다항식 0x1021 (x^(16)+x^(12)+x^5+x )
시작 바이트 : 0Xffff
전체 패킷(헤더 및 페이로드)에 대해 계산됨, 페이로드가 없으면 헤더만으로 계산
Checksum을 계산하기 전에 Checksum값은 0x00으로 초기화
참고: Checksum 계산하는 사이트
Ex) 현재 상태 응답 Checksum 계산
Checksum 예제 코드
초기화 및 측정 Sequence
1. 센서 전원은 켠 후 센서가 부팅될 때까지 기다림(~3초)
2. 센서 상태 확인(0x41 Command) – 초기화 완료(0x00)
3. 센서 상태 확인이 완료되면 연속 측정 모드로 설정(0x61 Command ISO 규격 권장)
4. 첫번째 측정이 완료될 때까지 2초 기다림
센서 버전 확인
Command 버전 정보 요청
Command 버전 정보 응답 예제
Payload 설명: 총 64 bit, S/W Version [1:32], H/W Version [33:48], Protocol Version [49:64]
S/W Version: 3.1.0.1
H/W Version: 1.0
Protocol Version: 32.1
Nevadanano PC Serial program과 비교
감지 가스 확인
감지 가스 요청
감지 가스 응답 예제
감지 가스 응답 Payload Packet 값: 0~255
가스 농도 값 읽기
1. 센서 전원은 켠 후 센서가 부팅될 때까지 기다림(~3초)
2. 센서 상태 확인(0x41 Command) – 초기화 완료(0x00)
3. 연속 측정 모드로 설정(0x61 Command)
4. 가스 농도 값 요청(0x03 Command)
가스 농도 값 읽기 응답 예시
Data Format 방식 : IEEE 754 Format ( 부동소수점), Little Endian 형식(최하위 바이트(LSB)가 먼저 전송)
부동소수점: 컴퓨터에서 실수를 표현하는 방법 ( 2진수(0,1)로 표현)
부호: 양수일 때 0, 음수일때 1
지수부: 8비트, 지수를 나타냄
가수부: 23비트, 가수를 나타냄
가스 농도값 부동 소수점 -> 실수 변환 예시
1. Variable Payload = 가스 농도 값 = 0x33, 0x33, 0x33, 0x42
2. Little endian -> 0x42, 0x33, 0x33, 0x33
3. 이진수로 변환 -> 0100 0010 0011 0011 0011 0011 0011 0011
4. 이진수 맨앞자리 0이므로 부호는+, 지수값은 10000100(2) = 132, 127을 기준으로 +5이므로 가수부에 2^5 을 곱해야됨
(즉 지수부에 2진수 값을 계산하여 bias인 127을 빼준 값(n)을 가수부에 2^5 을 곱하면 됨)
5. 1.01100110011001100110011(2) × 2^5 = 101100.110011001100110011(2) = 44.79999923706055
IEEE 754 부동소수점 변환 사이트
가스 농도 읽기 code (Arduino uno)
※ 아래의 Code는 Sensor의 간단한 통신 Test 목적으로 작성하였음
MPS Sensor 디버깅
Nevadanano 개발키트 이용
그림 1의 PCB에와 mps 센서 연결, Micro usb 연결 후 Micro usb를 pc에 연결 한 뒤 Nevadanano interface Program 실행
Nevadanano 개발키트
MPS 센서와 FTDI FT230x series USB-to-serial converter 를 이용하여 Nevadanano interface Program 실행
MPS 센서와 USB-to-serial converter를 이용하여 Serial Program으로 디버깅
Last updated