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

Tampilan Suhu OLED Arduino dengan Jam Waktu Nyata

Komponen dan persediaan

Arduino UNO
× 1
Adafruit DS3231 RTC
× 1
Digilent Pmod OLED
× 1
Sensor Suhu LM35 Instrumen Texas
× 1
Kabel jumper (generik)
× 1
Breadboard (generik)
× 1

Tentang proyek ini

Kami akan membuat jam cuaca Arduino yang akan memberi tahu kami waktu, tanggal, dan suhu. Sensor LM35 akan memberi tahu kita 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 dibutuhkan untuk proyek ini adalah sebagai berikut

  • Arduino
  • DS3231 (Modul jam waktu nyata)
  • Layar OLED (SSD1306 digunakan di sini)
  • SSD1306.pdf
  • Lm35
  • Menghubungkan kabel
  • Papan tempat memotong roti
lm35.pdf

Diagram Sirkuit

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

  • Hubungkan CS OLED ke pin 10 Arduino.
  • Hubungkan DC OLED ke pin 9 Arduino.
  • Hubungkan RES OLED ke pin 8 Arduino.
  • Hubungkan D1 OLED ke pin 11 Arduino.
  • Hubungkan D0 OLED ke pin 13 Arduino.
  • Hubungkan VCC OLED ke pin 5V Arduino.
  • Hubungkan GND OLED ke pin GND Arduino.

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:

  • Hubungkan GND DS3231 ke pin GND Arduino.
  • Hubungkan VCC DS3231 ke pin 5V Arduino.
  • Hubungkan SDA  OLED ke A4 di Arduino.
  • Hubungkan SCL pada OLED ke pin A5 pada Arduino.

Terakhir, 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.

Anda dapat menemukan skema ukuran penuh di sini

Penjelasan Kode

Pertama-tama, kami menambahkan perpustakaan untuk modul DS3231 dan OLED. Pustaka Adafruit untuk OLED memiliki lebih banyak fungsi dibandingkan dengan pustaka lain yang digunakan untuk OLED.

#include #include  

Selanjutnya, kami mendefinisikan pin di mana kami telah menghubungkan modul DS3231 dan OLED. Modul DS3231 bekerja dengan Arduino melalui komunikasi I2C sehingga kami telah menggunakan pin SDA dan SCL dari 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 lainnya.

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; suhu mengambang; keluaran mengambang; 

Pada fungsi setup, kita mendeklarasikan pin sensor LM35 sebagai input karena Arduino akan mengambil input dari sensor tersebut. Kemudian kami memberikan perintah kepada 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 Anda ingin menyetel hari, tanggal dan waktu, maka batalkan komentar pada baris ini dan setel.

 //rtc.setDOW(RABU); // Setel Hari Minggu ke MINGGU //rtc.setTime(19, 02, 0); // Setel waktu ke 12:00:00 (format 24 jam) //rtc.setDate(7, 12, 2017); // Atur tanggal menjadi 6 Juni 2017 

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

 display.clearDisplay(); display.setTextColor(PUTIH); display.setTextSize(2); display.setCursor(0,0); display.print("Cuaca"); display.setCursor(0,17); display.print("Jam"); tampilan.display(); delay(5000); 

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

 output =analogRead(sensor_pin); suhu =(keluaran*500)/1023; tampilan.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); tampilan.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); tampilan.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); 

Kode Arduino Lengkap

#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 8Adafruit_SSD1306 display(OLED_MOSI, OLED_CS)DC, OLED_RESET, OLED_RE_SET;const int sensor_pin =A0;suhu mengambang; float output;void setup() { pinMode(sensor_pin,INPUT); rtc.mulai(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW(RABU); // Setel Hari Minggu ke MINGGU //rtc.setTime(19, 02, 0); // Setel waktu ke 12:00:00 (format 24 jam) //rtc.setDate(7, 12, 2017); // Atur tanggal menjadi 6 Juni 2017 display.clearDisplay(); display.setTextColor(PUTIH); display.setTextSize(2); display.setCursor(0,0); display.print("Cuaca"); display.setCursor(0,17); display.print("Jam"); tampilan.display(); delay(5000);}void loop(){ output =analogRead(sensor_pin); suhu =(keluaran*500)/1023; tampilan.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); tampilan.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); tampilan.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); tampilan.setTextSize(1); display.setCursor(20,25); display.print("Suhu:"); display.print(temp); tampilan.print("C"); tampilan.display(); delay(1000);} 

Kode

  • Cuplikan kode #4
  • Cuplikan kode #5
  • Cuplikan kode #6
Cuplikan kode #4Teks biasa
 display.clearDisplay(); display.setTextColor(PUTIH); display.setTextSize(2); display.setCursor(0,0); display.print("Cuaca"); display.setCursor(0,17); display.print("Jam"); tampilan.display(); delay(5000);
Cuplikan kode #5Teks biasa
 output =analogRead(sensor_pin); suhu =(keluaran*500)/1023; tampilan.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); tampilan.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); tampilan.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr());
Cuplikan kode #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 8Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, intLED_CSSET_DC, intLED_CSSET_DC, intLED_CSSET); sensor_pin =A0;suhu mengambang; float output;void setup() { pinMode(sensor_pin,INPUT); rtc.mulai(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW(RABU); // Setel Hari Minggu ke MINGGU //rtc.setTime(19, 02, 0); // Setel waktu ke 12:00:00 (format 24 jam) //rtc.setDate(7, 12, 2017); // Atur tanggal menjadi 6 Juni 2017 display.clearDisplay(); display.setTextColor(PUTIH); display.setTextSize(2); display.setCursor(0,0); display.print("Cuaca"); display.setCursor(0,17); display.print("Jam"); tampilan.display(); delay(5000);}void loop(){ output =analogRead(sensor_pin); suhu =(keluaran*500)/1023; tampilan.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); tampilan.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); tampilan.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); tampilan.setTextSize(1); display.setCursor(20,25); display.print("Suhu:"); display.print(temp); tampilan.print("C"); tampilan.display(); delay(1000);}

Skema


Proses manufaktur

  1. Mengontrol Efek dengan Sensor Nyata
  2. Jam IV9 Numitron DIY paling sederhana dengan Arduino
  3. Jam Arduino dengan waktu sholat Islam
  4. Game Arduino Pong - Tampilan OLED
  5. Word Clock dengan Resolusi Menit Waktu dalam Words
  6. Jam Master
  7. Suhu Arduino. Monitor Dan Jam Waktu Nyata Dengan Tampilan 3.2
  8. Jam Berlin
  9. Bermain Dengan Tampilan Berikutnya
  10. Jam Alarm Sederhana dengan DS1302 RTC