[전자공작] 999엔으로 온도계를 만들어 보았다

개요



손에 온도 센서와 LED가 있었기 때문에 ...
온도계를 만들어 보았다.

부품



온도 센서 : BME280
227엔


디스플레이 : TM1637이 내장된 7세그 LED
73엔


컴퓨터 : Arduino UNO 호환 기계
699엔


배선





이번 이용하는 온도 센서는 I2C라는 통신을 이용합니다.
근거리에서 이용하는 시리얼 통신 규격으로, Arduino 공작이라고 자주 이용되는 것입니다…
(아마 정상적인 개발에서도 이용될까 생각합니다만…)

소스 코드



#include <Arduino.h>
#include <BME280I2C.h>
#include <Wire.h>
#include <TM1637Display.h>
#define SERIAL_BAUD 115200

BME280I2C::Settings settings(
   BME280::OSR_X1,
   BME280::OSR_X1,
   BME280::OSR_X1,
   BME280::Mode_Forced,
   BME280::StandbyTime_1000ms,
   BME280::Filter_Off,
   BME280::SpiEnable_False,
   0x76
);
BME280I2C bme(settings);

#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);

void setup() {
  Serial.begin(SERIAL_BAUD);
  while(!Serial) {}

  Wire.begin();
  while(!bme.begin()){
    Serial.println("not find BME280");
    delay(1000);
  }
  settings.tempOSR = BME280::OSR_X4;
  bme.setSettings(settings);

  uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
  display.setBrightness(0x0f);
  display.setSegments(data);
  delay(1000);
}

void loop() {
   float temp(NAN), hum(NAN), pres(NAN);
   BME280::TempUnit tempUnit(BME280::TempUnit_Celsius);
   BME280::PresUnit presUnit(BME280::PresUnit_Pa);

   bme.read(pres, temp, hum, tempUnit, presUnit);
   display.showNumberDec((unsigned int)(temp*100), false); //温度
//   display.showNumberDec((unsigned int)(hum*100), false); // 気圧
   Serial.print("Temp: ");
   Serial.print(temp);
   Serial.print("°"+ String(tempUnit == BME280::TempUnit_Celsius ? 'C' :'F'));
   Serial.print("\t\tHumidity: ");
   Serial.print(hum);
   Serial.print("% RH");
   Serial.print("\t\tPressure: ");
   Serial.print(pres);
   Serial.println(" Pa");
   delay(100);
}

github

동작 확인



gif 동영상으로 올려도 알기 어려웠기 때문에, Youtube에서 확인하실 수 있으면 다행입니다.
IMAGE ALT TEXT HERE

현재 (2020/04/25) AMAZON에서 구입할 수있는 것



온도 센서 : BME280
¥750

디스플레이 : TM1637이 내장된 7세그 LED
¥600

컴퓨터 : Arduino UNO 호환 기계
¥ 699

있으면 편리한 것



점퍼 케이블 ¥762

좋은 웹페이지 즐겨찾기