교통시설안전물

라이다센서 + RF 통신 모듈

ZEROWIN.TECH 2020. 5. 17. 23:45
728x90

 

라이다 거리센서 측정후 RF 모듈을 이용하여 데이터를 전송합니다.

 

라이다센서 메뉴얼 참조 : https://www.elecrow.com/download/TF-MINI-LIDAR-USER-MANUAL.pdf

TF Mini 거리센서는 12미터까지 측정이 가능하며 정확성 또한 뛰어납니다.

 

ATmega 328P를 이용하여 보드를 제작하였으므로 아두이노 라이브러리를 활용하여 프로젝트를 진행합니다.

 

 

거리센서를 연결한 충분한 GPIO핀이 없어 아날로그 핀 A0, A1을 거리센서 핀으로 할당하였습니다.

bitrate 115200bps 임에도 정상동작하였습니다.

#include<SoftwareSerial.h>//header file of software serial port
SoftwareSerial Serial1(A0,A1); //define software serial port name as Serial1 and define pin2 as RX and pin3 as TX

/* For Arduinoboards with multiple serial ports like DUEboard, interpret above two pieces of code and
directly use Serial1 serial port*/
int dist;//actual distance measurements of LiDAR
int strength;//signal strength of LiDAR
int check;//save check value
int i;
int uart[9];//save data measured by LiDAR
const int HEADER=0x59;//frame header of data package
void setup()
{
Serial.begin(9600);//set bit rate of serial port connecting Arduino with computer
Serial1.begin(115200);//set bit rate of serial port connecting LiDAR with Arduino
}
void loop()
{
  if (Serial1.available())//check if serial port has data input
  {
    if(Serial1.read()==HEADER)//assess data package frame header 0x59
    { 
      uart[0]=HEADER;
      if(Serial1.read()==HEADER)//assess data package frame header 0x59
      { 
        uart[1]=HEADER;
        
        for(i=2;i<9;i++)//save data in array
        {
          uart[i]=Serial1.read();
        }
          check=uart[0]+uart[1]+uart[2]+uart[3]+uart[4]+uart[5]+uart[6]+uart[7];
          
          if(uart[8]==(check&0xff))//verify the received data as per protocol
          {
            dist=uart[2]+uart[3]*256;//calculate distance value
            strength=uart[4]+uart[5]*256;//calculate signal strength value
            //Serial.print("dist = ");
            Serial.print(dist);//output measure distance value of LiDAR
            //Serial.print('\t');
            //Serial.print("strength = ");
            //Serial.print(strength);//output signal strength value
            Serial.print('\n');
          }
      }
    }
  }
}

RF 통신 양방향으로 구현하였으며 총 7개의 RF 모듈이 양방향통신을 하며 보드의 통신 상태, 제어 상태를 크로스 체크합니다.

 

라이다센서, 도플러센서를 이용하여 데이터를 추출하여 교통시설물 기초 자료로 확인합니다.

손과 거리를 라이다센서로 감지하여  RF 송신합니다.

RF 수신한 보드에서 LED STRIP으로 표시합니다.