Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Отображение температуры Arduino OLED с часами реального времени

Компоненты и расходные материалы

Arduino UNO
× 1
Adafruit DS3231 RTC
× 1
Digilent Pmod OLED
× 1
Датчик температуры Texas Instruments LM35
× 1
Перемычки (общие)
× 1
Макет (общий)
× 1

Об этом проекте

Мы собираемся сделать погодные часы Arduino, которые будут сообщать нам время, дату и температуру. Датчик LM35 сообщит нам температуру, DS3231 сообщит нам дату и время, а мы будем использовать OLED для отображения температуры, даты и времени.

Обязательные компоненты

Компоненты, необходимые для этого проекта, следующие

  • Ардуино
  • DS3231 (модуль часов реального времени)
  • OLED-дисплей (здесь использовался SSD1306)
  • SSD1306.pdf
  • Lm35
  • Соединительные провода
  • Макет
lm35.pdf

Принципиальная схема

Прежде всего, подключите OLED к Arduino. OLED работает с Arduino через SPI, а также через связь I2C, но мы подключили его с помощью связи SPI. Контакты SPI на Arduino - это контакты 8, 9, 10, 11 и 13. Соединения OLED с Arduino следующие:

  • Подключите CS OLED к выводу 10 Arduino.
  • Подключите постоянный ток OLED к выводу 9 Arduino.
  • Подключите RES OLED-дисплея к контакту 8 Arduino.
  • Подключите D1 OLED к выводу 11 Arduino.
  • Подключите D0 OLED-дисплея к 13-му контакту Arduino.
  • Подключите VCC OLED к выводу 5V Arduino.
  • Подключите GND OLED к контакту GND Arduino.

После этого подключите модуль DS3231 к Arduino. Модуль DS3231 работает с Arduino через соединение I2C. Контакты для связи I2C на Arduino - это SDA и SCL. Подключите модуль DS3231 к Arduino следующим образом:

  • Подключите GND DS3231 к контакту GND Arduino.
  • Подключите VCC DS3231 к выводу 5V Arduino.
  • Подключите SDA OLED к A4 на Arduino.
  • Подключите SCL на OLED-экране к контакту A5 на Arduino.

В конце подключите датчик LM35 к Arduino. Подключите левый вывод LM35 к 5 В на Arduino, средний вывод к A0 на Arduino и левый вывод к заземлению на Arduino.

Вы можете найти здесь полноразмерная схема

Пояснение к коду

Прежде всего, мы добавили библиотеки для модуля DS3231 и OLED. Библиотека Adafruit для OLED имеет больше функций по сравнению с другими библиотеками, используемыми для OLED.

  #include #include  

Затем мы определили контакты, на которых мы подключили модуль DS3231 и OLED. Модуль DS3231 работает с Arduino через соединение I2C, поэтому мы использовали выводы SDA и SCL Arduino. OLED работает с Arduino через соединение SPI. Поэтому мы инициализировали контакты 8, 9, 10, 11, 13, которые предназначены для связи SPI. После этого мы инициализировали контакт датчика LM35 и другие переменные.

  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 (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); const int sensor_pin =A0; температура поплавка; вывод с плавающей точкой;  

В функции настройки мы объявили вывод датчика LM35 как ввод, потому что Arduino будет принимать ввод от датчика. Затем мы дали команду DS3231 и OLED начать связь с Arduino.

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

Приведенные ниже строки закомментированы в коде, но если вы впервые используете модуль DS3231 и хотите установить день, дату и время, раскомментируйте эти строки и установите их.

  //rtc.setDOW(WEDNESDAY); // Установите для дня недели ВОСКРЕСЕНЬЕ //rtc.setTime(19, 02, 0); // Устанавливаем время на 12:00:00 (24-часовой формат) //rtc.setDate(7, 12, 2017); // Устанавливаем дату на 6 июня 2017 г.  

Затем мы распечатали «погодные часы» на OLED-экране на 5 секунд.

  display.clearDisplay (); display.setTextColor (БЕЛЫЙ); display.setTextSize (2); display.setCursor (0,0); display.print («Погода»); display.setCursor (0,17); display.print («Часы»); display.display (); задержка (5000);  

В функции цикла мы считываем данные с LM35 и рассчитываем температуру. Затем получаем время и дату и печатаем их на OLED-экране.

  output =analogRead (sensor_pin); temp =(вывод * 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 ());  

Полный код Arduino

  #include #include DS3231 rtc (SDA, SCL); # определить OLED_MOSI 11 # определить OLED_CLK 13 # определить OLED_DC 9 # определить OLED_CS 10 # определить OLED_RESET 8, ада; const int sensor_pin =A0; температура поплавка; вывод с плавающей запятой; void setup () {pinMode (sensor_pin, INPUT); rtc.begin (); display.begin (SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); // Установите для дня недели ВОСКРЕСЕНЬЕ //rtc.setTime(19, 02, 0); // Устанавливаем время на 12:00:00 (24-часовой формат) //rtc.setDate(7, 12, 2017); // Устанавливаем дату на 6 июня 2017 года display.clearDisplay (); display.setTextColor (БЕЛЫЙ); display.setTextSize (2); display.setCursor (0,0); display.print («Погода»); display.setCursor (0,17); display.print («Часы»); display.display (); задержка (5000);} void loop () {output =analogRead (sensor_pin); temp =(вывод * 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 ("Температура:"); display.print (темп); display.print («C»); display.display (); delay (1000);}  

Код

  • Фрагмент кода 4
  • Фрагмент кода 5
  • Фрагмент кода №6
Фрагмент кода №4 Обычный текст
 display.clearDisplay (); display.setTextColor (БЕЛЫЙ); display.setTextSize (2); display.setCursor (0,0); display.print («Погода»); display.setCursor (0,17); display.print («Часы»); display.display (); задержка (5000); 
Фрагмент кода № 5 Обычный текст
 output =analogRead (sensor_pin); temp =(вывод * 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 ()); 
Фрагмент кода №6 Обычный текст
 #include #include DS3231 rtc (SDA, SCL); # определение OLED_MOSI 11 # определение OLED_CLK 13 # определение OLED_DC 9 # определение OLED_CS 10 # определение OLED_RESET 8Adafruit_SSD1306 отображение (OLED_MOSI, OLED_CLK, OLED_DC, OLED_DC, OLED_DC, OLED_DC, OLED_DC) sensor_pin =A0; температура поплавка; вывод с плавающей запятой; void setup () {pinMode (sensor_pin, INPUT); rtc.begin (); display.begin (SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); // Установите для дня недели ВОСКРЕСЕНЬЕ //rtc.setTime(19, 02, 0); // Устанавливаем время на 12:00:00 (24-часовой формат) //rtc.setDate(7, 12, 2017); // Устанавливаем дату на 6 июня 2017 года display.clearDisplay (); display.setTextColor (БЕЛЫЙ); display.setTextSize (2); display.setCursor (0,0); display.print («Погода»); display.setCursor (0,17); display.print («Часы»); display.display (); задержка (5000);} void loop () {output =analogRead (sensor_pin); temp =(вывод * 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 ("Температура:"); display.print (темп); display.print («C»); display.display (); задержка (1000);} 

Схема


Производственный процесс

  1. Управление эффектом с помощью реальных датчиков
  2. Самодельные простейшие часы Numitron IV9 с Arduino
  3. Часы Arduino с исламским временем молитв
  4. Игра Arduino Pong - OLED-дисплей
  5. Word Clock с минутным разрешением времени в словах
  6. Основные часы
  7. Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
  8. Берлинские часы
  9. Игра с дисплеем Nextion
  10. Простой будильник с DS1302 RTC