메뉴 건너뛰기

정보자료게시판

장비/디자인/구조

[아두이노] ESP32-XBee-초음파 센서 배터리 지속기간

by 라키 posted Oct 06, 2018
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

[아두이노] ESP32-XBee-초음파 센서 배터리 지속기간

목표

초음파 센서에서 측정한 값을 지그비 통신을 통해 메인으로 전송하는 리모트센서를 1.2V-2450 NiMH 충전건전지 6개로 최대한 버티게 만들기

IMG_3434

테스트 소스

#include "WiFi.h"
#include <xbee.h>

int trigPin = 13;
int echoPin = 12;

XBee xbee = XBee();
long previousMillis1=0;
long interval1=1000;

uint8_t payload [] = { &#39;0&#39; , &#39;0&#39; , &#39;0&#39; , &#39;0&#39; };

uint16_t addr = 0x0000;

ZBTxRequest zbTx = ZBTxRequest(addr, payload, sizeof(payload));
ZBTxStatusResponse txStatus = ZBTxStatusResponse();

ZBRxResponse rx = ZBRxResponse();

void setup() {
  Serial.begin(9600);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  btStop();
  WiFi.mode(WIFI_OFF);

  xbee.setSerial(Serial);  
}

void loop() {
  XbeeRx();  
//  getData1();
}

void getData1() {
    int distance=myTimerEvent();
    payload[0] = &#39;S&#39;;
    payload[1] = &#39;1&#39;;
    payload[2] = distance/250;
    payload[3] = distance%250;

    Serial.println(distance);
    Serial.println(payload[2]);
    Serial.println(payload[3]);
    Serial.println("cm");

    xbee.send(zbTx);

}

void XbeeRx() {
  xbee.readPacket(100); 
  if (xbee.getResponse().isAvailable()) {
//      Serial.println(xbee.getResponse().getApiId());

    int apiid = xbee.getResponse().getApiId();
    Serial.print("apiid");
    Serial.println(apiid);
    if (apiid == ZB_RX_RESPONSE  || apiid == 145 ) { //|| apiid == 139
      xbee.getResponse().getZBRxResponse(rx);
      Serial.println("WOW1");
      byte sample[10];
      for (int i = 0; i < 10; i++) {
        sample[i] = rx.getData(i);
      }

      if(sample[6] == 0x53 && sample[7] == 0x31) { // 6,7번 글자가 &#39;S1&#39;(코디네이터에서 보낸)이면
        Serial.println("WOW2");
        getData1();
      }
    }
  } else if (xbee.getResponse().isError()) {
    Serial.println("Error reading packet.  Error code: ");  
    Serial.println(xbee.getResponse().getErrorCode());
  } 
}

int myTimerEvent()
{
  // You can send any value at any time.
  // Please don&#39;t send more that 10 values per second.

  long duration, distance;
//  int ;

  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);

  distance = duration / 29 / 2;

  return distance;  
}

측정 결과

  • 8:00부터 동작 시작, 중간에 2차례 초음파 센서로부터 센서 정보를 수신하는 것이 중단되어, 원격 리셋을 실행했음. 센서 정보를 수신하는 것이 왜 중단되는지에 대한 이유는 아직 밝혀지지 않음
  • 전압은 그래프(황색선)와 같은 수준으로 떨어지고, 06:00경 전압이 급격하게 떨어지면서 동작이 중단되었고, 대략 22시간 지속되는 것으로 확인

향후 체크할 점

  • ESP32의 블루투스와 Wifi 기능을 끄고( btStop(); WiFi.mode(WIFI_OFF);) 다시 테스트 돌입
  • 그 후 Light Sleep도 테스트 예정
  • 최대 1달 적어도 2주 이상 버텨야 하는데 건전지로 목표치를 달성할 수 없다고 판단되는 경우 대용량 외장배터리가 백업해야 하는데 비용이 상승하는 문제가 있음

참고한 자료

</xbee.h


  1. 요약하기 기술

  2. No Image 08Jan
    by 라키
    2019/01/08 by 라키
    in 전기차

    DC 콤보가 재앙인 이유

  3. No Image 31Dec
    by 라키
    2018/12/31 by 라키
    in 전기차

    아... DC콤보 충전 차량들

  4. 알폰소 쿠아론 신작 영화 로마 Roma | 넷플릭스 [스포일러]

  5. 시장이론의 기초

  6. 튤립

  7. 하우스 폭설 대비

  8. [아두이노] 정밀온습도센서 정보를 핸드폰(Blynk)으로 보내기

  9. [아두이노] ESP32 - LCD 연결하기

  10. [아두이노] ESP32 - 정밀온습도센서 BME 280 제어

  11. [아두이노] ESP32-XBee-초음파 센서 배터리 지속기간

  12. 지그비(XBee)-ESP32-Blynk 오토메이션 종합 01

  13. 지그비 통신 정보를 esp32, Blynk를 통해 핸드폰으로 보내기

  14. 지그비 통신_COORDINATOR API 와 ROUTER AT 사이 의사소통(센서-릴레이)

  15. 지그비 통신_COORDINATOR API에서 ROUTER AT로 명령 보내기

  16. 지그비 통신(COORDINATOR API-ROUTER AT) 정리

  17. esp32에 전압 측정 모듈 달기

  18. 엑셀 표, 마크다운 양식으로 변환

  19. 지그비 통신 정리

  20. ESP32, MAC OSX 기반 아두이노 IDE에 간단하게 설치하기

Board Pagination Prev 1 ... 24 25 26 27 28 29 30 31 32 33 ... 45 Next
/ 45
위로