[電子工作]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);
}
#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);
}
動作確認
gif動画で上げても分かりにくかったので、Youtubeにて確認いただけると幸いです。
現在(2020/04/25) AMAZONで購入できるもの
温度センサ:BME280
¥750
表示機:TM1637が組み込まれた7セグLED
¥600
コンピュータ:Arduino UNO互換機
¥699
あると便利なもの
ジャンパケーブル¥762
Author And Source
この問題について([電子工作]999円で温度計を作ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/hashito/items/0a7783cc517b4fad4fa6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .