水槽の温度などを測定するモニターを作ろうと思い、
先週末に秋月電子でキットを買い集めました。
| 品名 |
メーカ |
品番 |
| ESP-WROOM-02開発ボード |
秋月電子 |
[K-12236] AE-ESP-WROOM02-DEV |
| Grove RGBバックライト液晶モジュール |
Seeed |
[P-09283] 104030001 |
| Grove シリアルカメラキット |
Seeed |
[M-09161] 101020000 |
| Grove用 4Pコネクタ L型(オス)(10個入) |
Seeed |
[C-12634] 110990037 |
SHT31使用 高精度温湿度センサ
モジュールキット |
秋月電子 |
[K-12125] AE-SHT31 |
| サーミスタ 10kΩ(平行線タイプ) |
SEMITEC |
[P-07257] 103AT-11 |
小型 金属皮膜抵抗1/4W 10kΩ
(100本入) |
Faithful Link |
[R-08550] MFS25F10KRB |
TB6612使用 Dual DCモーター
ドライブキット |
秋月電子 |
[K-11219] AE-TB6612 |
| ブレッドボード EIC-801 |
E-CALL |
[P-00315] 165-40-4-8010 |
ブレッドボード・ジャンパーワイヤ
(オス-オス) セット 各種合計60本以上 |
Cixi Wanjie |
[C-05159] BBJ-65 |
ロータリーエンコーダDIP化基板
RECNV-2 x2 |
秋月電子 |
[P-07240] AE-RECNV-2 |
USBケーブル Aオス-マイクロBオス
1.5m A-microB |
Xiamen Ume |
[C-07607] USBcable A-microB |
あと、Groveの2mmピッチコネクタをブレッドボードに接続するために
Grove 4ピン-ジャンパメスケーブルも欲しかったのですが、
残念なことに秋月電子には売っていませんでした。
ただ幸いにも、ロータリーエンコーダDIP化基板が2mm-2.54mm変換
基板として使えました。
別に秋月電子にこだわりはないのですが、
買い物は一つの店で済ませたいタイプなのです。
それで、まずは温湿度センサの値をLCDに表示するプログラムを作成しました。
初めてESP-WROOM-02開発ボードを使うので、
一から自分なりの手順書をまとめようかとも思いましたが、
秋月電子のページにあった説明書で十分でした。
上の動画は一昨日に撮ったのですが、
その後、もう少しブラッシュアップしたのが、下のソースコードです。
(そのため動作や表示は少し異なります)
// MySketch for ESP-WROOM-02
//
// [Hardware]
// ESP-WROOM-02 Development Board
// K-12236, AE-ESP-WROOM02-DEV
// http://akizukidenshi.com/catalog/g/gK-12236/
//
// [Arduino IDE]
// https://www.arduino.cc/en/Main/Software
//
// [Additional Board Manager URLs]
// http://arduino.esp8266.com/stable/package_esp8266com_index.json
//
// [Board]
// Generic ESP8266 Module
// http://arduino-esp8266.readthedocs.io/en/2.4.0/
//
// [Library]
// Seeed Grove LCD RGB Backlight
// rgb_lcd.h - Grove_LCD_RGB_Backlight-master.zip
// https://github.com/Seeed-Studio/Grove_LCD_RGB_Backlight
// Sensirion SHT31-DIS Humidity and Temperature Sensor
// AE_SHT31.h - AE-SHT31.zip
// http://akizukidenshi.com/catalog/g/gK-12125/
//
// [Pin Configuration]
// IO4: I2C_SDA
// IO5: I2C_SCL
#include <arduino.h>
#include <wire.h>
#include <rgb_lcd.h>
#include <ae_sht31.h>
rgb_lcd lcd;
AE_SHT31 SHT31 = AE_SHT31(0x45);
void setup() {
// put your setup code here, to run once:
pinMode(16, OUTPUT);
Serial.begin(115200);
Serial.println("");
Serial.println("MySketch");
lcd.begin(16, 2);
SHT31.SoftReset();
SHT31.Heater(0);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
// Get Temperature and Humidity
digitalWrite(16, HIGH);
SHT31.GetTempHum();
digitalWrite(16, LOW);
Serial.print("Temperature: ");
Serial.print(SHT31.Temperature());
Serial.print(" ('C), ");
Serial.print("Humidity: ");
Serial.print(SHT31.Humidity());
Serial.println(" (%)");
lcd.setCursor(0, 0);
lcd.print(SHT31.Temperature());
lcd.setCursor(5, 0);
lcd.print("'C ");
lcd.setCursor(8, 0);
lcd.print(SHT31.Humidity());
lcd.setCursor(13, 0);
lcd.print(" %");
int h = ((millis() / 1000) % 60) * 6, r, g, b;
hsv2rgb(h, 255, 255, &r, &g, &b);
lcd.setRGB(r, g, b);
delay(400);
}
void hsv2rgb(int h, int s, int v, int *pr, int *pg, int *pb) {
int r = ( h % 360) * 256 * 6 / 360 - 256 * 3;
int g = ((h + 240) % 360) * 256 * 6 / 360 - 256 * 3;
int b = ((h + 120) % 360) * 256 * 6 / 360 - 256 * 3;
r = abs(r) - 256; r = constrain(r, 0, 255); *pr = r;
g = abs(g) - 256; g = constrain(g, 0, 255); *pg = g;
b = abs(b) - 256; b = constrain(b, 0, 255); *pb = b;
}