Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Jam Cuaca Arduino Real-Time: Tampilan OLED untuk Waktu, Tanggal & Suhu

Komponen dan Perlengkapan

Jam Cuaca Arduino Real-Time: Tampilan OLED untuk Waktu, Tanggal & Suhu
Arduino UNO
× 1
Adafruit DS3231 RTC
× 1
Jam Cuaca Arduino Real-Time: Tampilan OLED untuk Waktu, Tanggal & Suhu
Digilent Pmod OLED
× 1
Texas Instruments LM35 Temperature Sensor
× 1
Jumper wires (generic)
× 1
Jam Cuaca Arduino Real-Time: Tampilan OLED untuk Waktu, Tanggal & Suhu
Breadboard (generic)
× 1

Tentang Proyek Ini

Kami akan membuat jam cuaca Arduino yang akan memberitahu kita waktu, tanggal dan suhu. Sensor LM35 akan memberikan suhu, DS3231 akan memberi tahu kita tanggal dan waktu, dan kita akan menggunakan OLED untuk menampilkan suhu, tanggal dan waktu.

Komponen yang Diperlukan

Komponen yang diperlukan untuk proyek ini adalah sebagai berikut

lm35.pdf

Diagram Rangkaian

Pertama-tama, hubungkan OLED dengan Arduino. OLED bekerja dengan Arduino melalui SPI serta komunikasi I2C tetapi kami menghubungkannya menggunakan komunikasi SPI. Pin SPI pada Arduino adalah pin 8, 9, 10, 11, dan 13. Koneksi OLED dengan Arduino adalah sebagai berikut:

Setelah itu, hubungkan modul DS3231 dengan Arduino. Modul DS3231 bekerja dengan Arduino melalui komunikasi I2C. Pin untuk komunikasi I2C pada Arduino adalah SDA dan SCL. Hubungkan modul DS3231 ke Arduino sebagai berikut:

Pada akhirnya, hubungkan sensor LM35 dengan Arduino. Hubungkan pin kiri LM35 ke 5V pada Arduino, pin tengah ke A0 pada Arduino dan pin kiri ke ground pada Arduino.

Jam Cuaca Arduino Real-Time: Tampilan OLED untuk Waktu, Tanggal & Suhu

Anda dapat menemukan skematik ukuran penuh di sini

Penjelasan Kode

Pertama-tama, kami menambahkan library untuk modul DS3231 dan OLED. Library Adafruit untuk OLED memiliki lebih banyak fungsi dibandingkan library lain yang digunakan untuk OLED.

#include #include 

Selanjutnya, kami menentukan pin tempat kami telah menghubungkan modul DS3231 dan OLED. Modul DS3231 bekerja dengan Arduino melalui komunikasi I2C jadi kami menggunakan pin SDA dan SCL Arduino. OLED bekerja dengan Arduino melalui komunikasi SPI. Oleh karena itu kami menginisialisasi pin 8, 9, 10, 11, 13 yang untuk komunikasi SPI. Setelah itu, kami menginisialisasi pin sensor LM35 dan variabel lain.

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; float output; 

Dalam fungsi setup, kami mendeklarasikan pin sensor LM35 sebagai input karena Arduino akan mengambil input dari sensor. Kemudian kami memberikan perintah ke DS3231 dan OLED untuk mulai berkomunikasi dengan Arduino.

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

Baris di bawah ini dikomentari dalam kode tetapi jika Anda menggunakan modul DS3231 untuk pertama kalinya dan ingin mengatur hari, tanggal dan waktu, maka komentar baris-baris ini dan atur.

 //rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY //rtc.setTime(19, 02, 0); // Set the time to 12:00:00 (24hr format) //rtc.setDate(7, 12, 2017); // Set the date to June 6th, 2017 

Kemudian kami mencetak “jam cuaca” pada OLED selama 5 detik.

 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); 

Dalam fungsi loop, kami membaca dari LM35 dan menghitung suhu. Kemudian kami mendapatkan waktu dan tanggal dan mencetaknya pada OLED.

 output = analogRead(sensor_pin); temp =(output*500)/1023; 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.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); 

Kode Lengkap Arduino

#include #include 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; float output; void setup() { pinMode(sensor_pin,INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY //rtc.setTime(19, 02, 0); // Set the time to 12:00:00 (24hr format) //rtc.setDate(7, 12, 2017); // Set the date to June 6th, 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)/1023; 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.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); display.setTextSize(1); display.setCursor(20,25); display.print("Temp: "); display.print(temp); display.print("C"); display.display(); delay(1000); } 

Kode

Kode cuplikan #4Teks biasa
 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); 
Kode cuplikan #5Teks biasa
 output = analogRead(sensor_pin); temp =(output*500)/1023; 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.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); 
Kode cuplikan #6Teks biasa
#include #include 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; float output; void setup() { pinMode(sensor_pin,INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY //rtc.setTime(19, 02, 0); // Set the time to 12:00:00 (24hr format) //rtc.setDate(7, 12, 2017); // Set the date to June 6th, 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)/1023; 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.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); display.setTextSize(1); display.setCursor(20,25); display.print("Temp: "); display.print(temp); display.print("C"); display.display(); delay(1000); } 

Skematik

Jam Cuaca Arduino Real-Time: Tampilan OLED untuk Waktu, Tanggal & Suhu

Proses manufaktur

  1. Membangun Efek Audio Berbasis Sensor dengan Kit Satellite CCRMA
  2. Buat Jam Numitron Retro dengan Arduino: Sederhana, Andalan, dan Hemat Energi
  3. Membuat Jam Waktu Nyata Arduino untuk Waktu Sholat Islam
  4. Membuat Game Pong Klasik pada Arduino UNO dengan Layar OLED – Tutorial Langkah demi Langkah
  5. Jam Kata Presisi: Tampilan Waktu dalam Kata Tingkat Menit
  6. Bangun Jam Master LED Kustom dengan Alarm – Terlihat dari Jarak 12 Meter
  7. Arduino Pemantau Suhu & Jam Real-Time dengan Layar TFT 3.2”
  8. Buat Jam Berlin dengan Arduino UNO – Jam LED Matrix DIY
  9. Proyek HMI Nextion Interaktif Menggunakan Arduino Mega dan Sensor
  10. Membuat Jam Alarm Andalan dengan DS1302 RTC dan Arduino UNO