工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoリアルタイム気象時計 - OLEDに時刻/日付/温度を表示

必要な部品と材料

部品 数量
Arduino UNO 1
DS3231 RTCモジュール(高精度リアルタイムクロック) 1
OLEDディスプレイ(SSD1306、128×64、SPI接続) 1
LM35 温度センサー 1
ブレッドボード & ジャンパーワイヤー 1式

プロジェクト概要

Arduino UNO、DS3231 RTC、LM35温度センサー、SSD1306 OLEDを組み合わせ、時刻・日付・曜日・温度をリアルタイム表示する気象時計を作ります。DS3231は温度補償水晶発振器内蔵で高精度、コイン電池バックアップで停電時も時刻を保持します。OLEDはSPI接続で高速描画、バックライト不要で視認性良好です。

回路図・配線

OLED (SSD1306) → Arduino UNO (SPI接続)

OLEDピン Arduinoピン
CS D10
DC D9
RES (RST) D8
D1 (MOSI/SDA) D11
D0 (CLK/SCL) D13
VCC 5V
GND GND

DS3231 RTC → Arduino UNO (I2C接続)

RTCピン Arduinoピン
SDA A4
SCL A5
VCC 5V
GND GND

LM35 → Arduino UNO

LM35ピン Arduinoピン
VCC (左) 5V
OUT (中) A0
GND (右) GND
Arduinoリアルタイム気象時計 - OLEDに時刻/日付/温度を表示
配線イメージ(フルサイズ回路図は記事参照)

コード解説

ライブラリとピン定義


#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DS3231.h>  // RTCライブラリ(例: rinky-dink等)

DS3231 rtc(SDA, SCL);

#define OLED_MOSI 11
#define OLED_CLK  13
#define OLED_DC   9
#define OLED_CS   10
#define OLED_RESET 8

Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

const int sensor_pin = A0;
float temp, output;

setup()


void setup() {
  pinMode(sensor_pin, INPUT);
  rtc.begin();
  display.begin(SSD1306_SWITCHCAPVCC);

  // 初回のみ:日時設定(コメントアウト解除して一度実行)
  // rtc.setDOW(WEDNESDAY);
  // rtc.setTime(19, 2, 0);     // 19:02:00 (24h)
  // rtc.setDate(7, 12, 2017);  // 2017/12/7

  // 起動スプラッシュ
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.setCursor(0, 0);  display.print(" Weather ");
  display.setCursor(0, 17); display.print(" Clock ");
  display.display();
  delay(5000);
}

loop()


void loop() {
  output = analogRead(sensor_pin);
  temp = (output * 500.0) / 1023.0;  // LM35: 10mV/℃, 5V基準で 5000mV/1024 ≈ 4.88mV/LSB → *500/1023 ≈ ℃

  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(20, 0);
  display.print(rtc.getTimeStr());   // "HH:MM:SS"

  display.setTextSize(1);
  display.setCursor(0, 15);
  display.print(rtc.getDateStr());   // "DD/MM/YYYY"
  display.setCursor(70, 15);
  display.print(rtc.getDOWStr());    // "MON" 等

  display.setCursor(20, 25);
  display.print("Temp: ");
  display.print(temp, 1);            // 小数点1桁
  display.print("C");

  display.display();
  delay(1000);
}

完全スケッチ


#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DS3231.h>

DS3231 rtc(SDA, SCL);
#define OLED_MOSI 11
#define OLED_CLK  13
#define OLED_DC   9
#define OLED_CS   10
#define OLED_RESET 8

Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

const int sensor_pin = A0;
float temp, output;

void setup() {
  pinMode(sensor_pin, INPUT);
  rtc.begin();
  display.begin(SSD1306_SWITCHCAPVCC);

  // 初回のみ日時設定(実行後はコメントアウト)
  // rtc.setDOW(WEDNESDAY);
  // rtc.setTime(19, 2, 0);
  // rtc.setDate(7, 12, 2017);

  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.setCursor(0, 0);  display.print(" Weather ");
  display.setCursor(0, 17); display.print(" Clock ");
  display.display();
  delay(5000);
}

void loop() {
  output = analogRead(sensor_pin);
  temp = (output * 500.0) / 1023.0;

  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(20, 0);
  display.print(rtc.getTimeStr());

  display.setTextSize(1);
  display.setCursor(0, 15);
  display.print(rtc.getDateStr());
  display.setCursor(70, 15);
  display.print(rtc.getDOWStr());

  display.setCursor(20, 25);
  display.print("Temp: ");
  display.print(temp, 1);
  display.print("C");

  display.display();
  delay(1000);
}

ポイント・改良案

回路図

Arduinoリアルタイム気象時計 - OLEDに時刻/日付/温度を表示
配線図

製造プロセス

  1. Satellite CCRMAキットでセンサー駆動オーディオエフェクトを構築
  2. Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
  3. Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
  4. Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
  5. 高精度ワードクロック:分単位で時刻を文字表示
  6. 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
  7. Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
  8. Arduino UNOで作るベルリンクロック – DIY LEDマトリクス時計
  9. Arduino MegaとNextion HMIで作る高機能ウェザーステーション
  10. TM1637デジタル時計:時刻設定・アラーム機能付き Arduino Nano試作版
  11. DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計