ESP8266 (ESP-WROOM-02)으로 센서 취급

개요



ESP8266 (ESP-WROOM-02 이하 WROOM02)을 사용하여 온도, 습도, 조도 및 진동 센서에서 값을 얻습니다.

소개



WROOM02는 Wi-Fi 통신 기능이 내장된 Arduino(로 사용할 수 있는 IC)입니다.

Arduino UNO보다 고성능이며 저렴합니다. 아키즈키에서 550엔.
htp // 아키즈키덴시. 코 m/분 g/g/gM-09607/

브레드 보드에서 사용할 수 있도록 단자를 2.54mm 피치로 전개 한 모듈이라면 650 엔.
htp // 아키즈키덴시. 코 m/타타 g/g/gK-09758/

개발 환경의 구축은, 선達이 자세하게 정리해 주기 때문에, 그쪽을 참조.
숙련된 저렴한 고성능 Wi-Fi 모듈 ESPU2266을 ArduinoIDE를 사용하여 IoT 개발을 위한 환경 준비를 10분만에 하는 방법

WROOM02는 A/D 변환은 1ch [10bit]만 내장되어 있습니다. 이번에는 다종류의 센서를 연결하고 싶으므로 A/D 컨버터(MCP3008 8ch [10bit])를 별도로 준비합니다.

A/D 컨버터는 SPI 프로토콜을 통해 통신합니다. WROOM02는 하드적으로 SPI 프로토콜을 사용할 수 있습니다. 그러나 아직 드라이버적으로 공식 지원이 아닌 것 같습니다. 앞서가 개발( ESP8266_SPI_Driver ) 해 주고 있으므로, 이번은 그것을 사용하기로 합니다.

회로도



회로도 작성에는 Eagle을 사용했습니다. Eagle은 무료로 고기능이지만 부품(매크로)이 거의 정비되어 있지 않아, 스스로 준비할 필요가 있습니다.

WROOM02 및 A/D 컨버터 등의 매크로를 포함한 Eagle 프로젝트 전체는 이 Github에 올라갑니다.
htps : // 기주 b. 코 m / 에우 gs / 에 g 센소 rP 로지 ct

실제의 회로도는 이하.



SPI 인터페이스 부분과 A/D 컨버터를 연결하면 됩니다.

택트 스위치 S1은 쓰기/실행 모드를 전환합니다. 택트 스위치 S2는 리셋입니다.
리셋 된 순간 모드에서 WROOM02가 시작됩니다.

[주의]
- WROOM02는 3.3V 구동입니다. 전원 회로는 별도로 사용하십시오.
- USB-시리얼 변환의 인터페이스는 회로도에서 분리되어 있으므로 TXD/RXD, GND에 적절히 접속해 주십시오.

스케치



스케치는 다음과 같습니다.
- A/D 컨버터와의 SPI 통신 프로토콜이 약간 수상합니다만, 0~1,023 의 값을 잘 잡혀 있으므로, 있다고 생각합니다.
- 각 센서의 값은 각각 적절하게 변환되어야 합니다.
- 진동 센서는 순간이므로 5msec에서 폴링. 그 외는 1sec로 폴링하고 있습니다.
extern "C"{
#include <spi.h>
#include <spi_register.h>
}

#include <Ticker.h>

Ticker ticker;
Ticker ticker2;

void setup() {
  Serial.begin(115200);
  Serial.print("\n");

  spi_init(HSPI);

  ticker.attach_ms(1000, timer);
  ticker2.attach_ms(5, Angularity);
}

void loop() {
}

volatile uint32 angularity = 0;
void Angularity() {
  uint32 val = check(3);
  if (val > angularity) {
    angularity = val;
  }
}

void timer() {

  uint32 val0 = check(0);
  uint32 val1 = check(1);
  uint32 val2 = check(2);
  //uint32 val3 = check(3);
  uint32 val3 = angularity;
  angularity = 0;
  uint32 val4 = check(4);

  Serial.print(" Temperature:");
  Serial.print(val0);
  Serial.print(" Illuminance:");
  Serial.print(val1);
  Serial.print(" Humidity:");
  Serial.print(val2);
  Serial.print(" Angularity:");
  Serial.print(val3);
  Serial.print(" Test:");
  Serial.print(val4);
  Serial.print("\n");

}

uint32 check(int channel) {
  uint8 cmd = (0b11 << 3) | channel;

  const uint32 COMMAND_LENGTH = 5;
  const uint32 RESPONSE_LENGTH = 12;

  uint32 retval = spi_transaction(HSPI, 0, 0, 0, 0, COMMAND_LENGTH, cmd, RESPONSE_LENGTH, 0);

  retval = retval & 0x3FF; // mask to 10-bit value
  return retval;
}

SPI 라이브러리를 포함한 Arduino 스케치 전체는 여기 Github에서.
htps : // 기주 b. 코 m / 에부 gs / s tch 천장 rP 로지 ct

제작



실제로 만들어 보면, 이런 느낌입니다.





요약



ESP8266 (ESP-WROOM-02 이하 WROOM02)을 사용하여 온도, 습도, 조도 및 진동 센서에서 값을 얻었습니다.
Eagle에서 회로도를 만들었습니다.
부품대 1,000엔 정도로, 여기까지 할 수 있다고는 WROOM02 반자이입니다.
다음은 구한 값을 클라우드로 날려 IoT입니까?

좋은 웹페이지 즐겨찾기