ESP8266 (ESP-WROOM-02)에 거리 센서(HC-SR04)를 연결하여 LPF로 부드러운 값 출력으로 해 보았다

ESP8266에 거리 센서(HC-SR04)를 연결하여 거리를 측정하는 코드를 작성해 보았습니다.

※최종적으로, 이 센서&ESP8266은 자택 차고 셔터의 개폐 상태를 Slack에 통지하는 용도에 사용할 예정

부품 정보



HC-SR04는 200~400엔 정도로 살 수 있는 초음파를 이용한 거리 센서입니다.
싸다! ⇒ 아마존(HC-SR04)

ESP8266은 그래서 M구 ぅ아 그림 SP8266 CH340이라는 개발 보드를 사용합니다.
중국에서 도착하는 데 시간이 걸립니다만, ¥ 480으로 염가입니다.

회로 정보



먼저 GPIO와 센서를 직결하여 움직이지 않고, 조사해 보면 이 센서는 전원에 5V가 필요한 것 같습니다.
개발 보드의 USB 5V를 이용하기로 합니다.
센서의 출력(Echo)도 5V이므로, 3.3V의 ESP8266에 연결하려면 분압 회로라고 하는 것이 필요하다는 것으로, 넷의 정보를 참고로 하면서, 보자 보면서 짜 보았습니다.


사진의 좌측에 있는 3연 저항의 부분으로, 5V를 3.3V에 떨어뜨리고 있는 느낌입니다.
* 첫 번째 저항과 두 번째 저항 사이에서 신호를 받으면 5V * 2/3 ≒ 3.3V

회로도 같은 것





출력을 부드럽게



거리의 float값을 시리얼에 내보내 Arduino IDE의 시리얼 플로터로 보면, 출력이 편차된 느낌이 되었기 때문에, 이전에 스마트폰의 가속도 센서의 값을 정돈하는데 사용한 로우 패스 필터의 식을 넣어 부드럽게 해 보았습니다.
出力値 = a * 前回の出力値 + (1-a) * センサの値

※ aは係数で0.8~0.95とかを指定します。小さいほど反応が良くなり、大きいほど滑らかになります。相反します。

그래프 1장째가 로우 패스 필터 없음, 2매째가 로우 패스 필터 있습니다. 부드러워졌습니다.

로우 패스 필터 없음


로우 패스 필터 있음


소스 코드



스케치는 다음과 같습니다.

HC-SR04.ino

int Echo = 14;  // Echoピン
int Trig = 15;  // Trigピン

float dstCMb = 0;   // 一回前の距離値

void setup() {
  // シリアル通信を開始
  Serial.begin(115200);
  Serial.println("Serial start.");

  // ピン設定
  pinMode(Trig, OUTPUT);
  pinMode(Echo, INPUT);
}

void loop() {

  // trigger
  digitalWrite(Trig, HIGH);
  delay(20); // msec
  digitalWrite(Trig, LOW);

  // echo
  int intervalUS = pulseIn(Echo, HIGH) / 2;   // 超音波の往復の時間を2で割って片道の時間(単位:μsec)にする

  // 時間を距離に変換
  float dstM = (float)intervalUS * 340.0 / 1000.0 / 1000.0;  // センサー出力の値(単位:m)  音速:340m/s(15℃)
  float dstCMs = dstM * 100.0;  // センサー出力の値(単位:cm)
  float dstCM;

  // ローパスフィルターで滑らかにする / 外れ値を除外する
  if (dstCMs <= 300.0) {                   // 3mを超えたら外れ値とする
    dstCM = 0.95 * dstCMb + 0.05 * dstCMs; // ローパスフィルター適用
    dstCMb = dstCM;                        // 前回値の保存
    Serial.println(dstCM);                // 距離を出力(単位:cm)
  }else{
    Serial.println(dstCMb);               // 外れ値の場合は前回値を出力
  }

}


참고 URL



ESP8266 (ESP-WROOM-02)에서 거리 센서 (HC-SR04) 사용 (온도 센서와 함께)
ぃ tp // 코 m / 에우 gs / ms / 088f3f9229674 99436

센서 입력 등에 사용하는 디지털 필터
htp // // hbtj. 코 m / 에 ct 로에 cs / 전단 r ぢ 기한 l

※매우 참고가 되었습니다. 고마워요.

좋은 웹페이지 즐겨찾기