Оглавление:

Отображение даты, времени и температуры с помощью XinaBox: 8 шагов
Отображение даты, времени и температуры с помощью XinaBox: 8 шагов

Видео: Отображение даты, времени и температуры с помощью XinaBox: 8 шагов

Видео: Отображение даты, времени и температуры с помощью XinaBox: 8 шагов
Видео: Градусник электронный с гигрометром, часами и датой HTC-1 2024, Ноябрь
Anonim
Отображение даты, времени и температуры с помощью XinaBox
Отображение даты, времени и температуры с помощью XinaBox

Классный OLED-дисплей, показывающий дату, время и температуру в градусах Цельсия и Фаренгейта с использованием Xinabox xChips на базе ESP8266.

Шаг 1. Вещи, использованные в этом проекте

Компоненты оборудования

  • XinaBox IP01 x 1 USB-программатор xChip на базе FT232R от FTDI Limited
  • XinaBox CW01 x 1 xChip Wi-Fi ядро на базе модуля Wi-Fi ESP8266
  • XinaBox SW01 x 1 xChip Датчик температуры, влажности и атмосферного давления на базе BME280 от Bosch.
  • XinaBox OD01 x 1 xChip 128x64 пикселей OLED-дисплей
  • XinaBox PU01 x 1 xChip USB (тип A) Блок питания
  • XinaBox XC10 x 1 разъемы шины xChip
  • Источник питания USB 5 В x 1

Программные приложения и онлайн-сервисы

IDE Arduino

Шаг 2: история

Вступление

Я построил этот проект для отображения даты, времени UCT и температуры с помощью XinaBox xChips, который использует протокол шины I2C. Время было получено с сервера Google NTP. Температура окружающей среды измерялась с помощью SW01 xChip и отображалась на OLED-дисплее OD01 xChip в градусах Цельсия и Фаренгейта. На изображении ниже показан OLED-дисплей.

Изображение
Изображение

OLED, отображающий дату, время и температуру

Шаг 3. Загрузите необходимые файлы

Для этого проекта вам потребуются следующие библиотеки и программное обеспечение.

  • Arduino IDE - программное обеспечение для разработки, в котором вы будете писать код
  • xSW01 - Библиотека датчиков температуры
  • xCore - Базовая библиотека для XinaBox xChips
  • xOD01 - библиотека OLED-дисплея.
  • Часовой пояс - Библиотека для выбора часового пояса
  • Время - для использования функций времени
  • NTPClient - позволяет получать время с сервера
  • Вам также необходимо загрузить плату ESP8266 и следовать прилагаемым к ней инструкциям, чтобы установить плату.

После загрузки вы установите IDE и библиотеки. Это довольно просто, если вы будете следовать инструкциям.

Шаг 4: Соберите

Ваш основной xChip, который будет выполнять и обрабатывать программу, - это CW01. Он основан на модуле ESP8266 WiFi и использует протокол шины I2C. Для программирования на CW01 вам понадобится программный xChip. IP01 позволяет нам программировать CW01 через порт USB на нашем компьютере, просто щелкнув вместе два xChip с помощью разъемов шины XC10 и вставив его в порт USB. Никакой проводки и пайки не требуется. Следует обратить внимание на ориентацию идентификационных имен xChip. Все они должны быть ориентированы в одном направлении. Теперь у вас должна быть следующая настройка.

Изображение
Изображение

Соедините вместе CW01 и IP01 и вставьте его в порт USB на вашем компьютере.

Если вы знакомы с xChips, вы можете соединить каждый xChip вместе с помощью разъемов шины XC10, которые вы хотите использовать для своего проекта, а затем вставить его в порт USB. Мы будем использовать датчик температуры SW01 и OLED-дисплей OD01.

Изображение
Изображение

Вы можете соединить все свои чипы вместе, а затем вставить их в USB-порт.

Шаг 5: программа

Загрузите или скопируйте и вставьте приведенный ниже код в свою среду разработки Arduino. Если вы не вносите никаких изменений в код, просто введите данные своего Wi-Fi в соответствующие поля, как показано ниже. Также введите надежный сервер времени NTP. Для этого проекта я использовал сервер времени Google.

Изображение
Изображение

Детали WiFi и сервер времени NTP

Теперь скомпилируйте и загрузите. Убедитесь, что вы выбрали правильный COM-порт и плату в меню инструментов в Arduino IDE. После загрузки время, дата и температура должны отображаться, как показано ниже.

Изображение
Изображение

После загрузки вы должны увидеть следующее

Шаг 6. Сделайте его портативным

Теперь вы можете отсоединить устройство от USB-порта и отделить каждый xChip, просто потянув его. Поскольку программирование завершено, IP01 больше не требуется. Теперь вы можете подключить свой проект любым способом, если все идентификационные имена ориентированы в одном направлении. Для питания нашего устройства мы будем использовать PU01. Это позволяет нам питать его от обычного блока питания или любого источника питания USB на 5 В. Я подключил свой, как показано ниже.

Изображение
Изображение

Окончательная сборка. xChips можно подключать любым удобным для вас способом.

Шаг 7: Заключение

Этот проект займет 20 минут. Если вам нужно время в вашем регионе, рассмотрите пример кода в библиотеке часовых поясов или произведите арифметические действия со временем в формате UTC. Провода не использовались, пайка не требовалась.

Шаг 8: Код

Date_Time_Temp.ino Arduino Просто введите данные вашего Wi-Fi в соответствующие поля и загрузите их на свою доску.

#include // включить базовую библиотеку для XinaBox xCHIPS

#include // включить библиотеку OLED-дисплея #include // включить библиотеку датчика температуры #include // включить функцию ESP8266WiFi #include // включить библиотеки времени #include #include #include #include #include xSW01 SW01; // определение свойств NTP #define ntpOffset 60 * 60 // в секундах #define ntpInterval 60 * 1000 // в миллисекундах // вставляем надежный сервер времени ntp между двойными кавычками // здесь я использовал сервер времени google ntp # определить ntpAddress "time1.google.com" // настроить клиент NTP UDP WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // температурная переменная float tempC; // Цельсия float tempF; // fahrenheit // данные вашего Wi-Fi const char * wifi_ssid = "XinaBox"; // ваш Wi-Fi ssid const char * wifi_pass = "RapidIoT"; // ваш пароль Wi-Fi // переменная даты и времени String date; String clktime; // переменные, содержащие дни и месяцы const char * days = {"воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"}; const char * months = {«Янв», «Фев», «Мар», «Апр», «Май», «Июнь», «Июль», «Август», «Сен», «Октябрь», «Ноябрь» "," Dec "}; const char * ampm = {"AM", "PM"}; void setup () {tempC = tempF = 0; // инициализируем температуру равной нулю timeClient.begin (); // запускаем клиент NTP UDP // запускаем последовательную связь Serial.begin (115200); // запускаем связь i2c и устанавливаем контакты Wire.begin (2, 14); // запускаем датчик температуры SW01.begin (); // запускаем OLED-дисплей OLED.begin (); // очистить OLED-дисплей OD01.clear (); // устанавливаем Wi-Fi соединение wifi_connect (); задержка (1000); } void loop () {// запускаем, если Wi-Fi соединение установлено if (WiFi.status () == WL_CONNECTED) {SW01.poll (); // считываем температуру tempC = SW01.getTempC (); // сохраняем температуру в градусах Цельсия tempF = SW01.getTempF (); // сохраняем температуру в градусах Фаренгейта date = ""; // очистить переменную даты clktime = ""; // очистить временную переменную // обновить клиент ntp и получить временную метку unix utc timeClient.update (); беззнаковое длинное время epochTime = timeClient.getEpochTime (); // конвертируем полученную отметку времени в объект time_t time_t utc; utc = epochTime; // время utc TimeChangeRule utcRule = {"UTC", Last, Sun, Mar, 1, 0}; Часовой пояс UTC (utcRule, utcRule); // форматируем переменные времени date + = days [день недели (utc) - 1]; дата + = ","; дата + = месяцы [месяц (utc) - 1]; дата + = ""; дата + = день (utc); дата + = ","; дата + = год (utc); // форматируем время в 12-часовой формат с AM / PM без секунд clktime + = hourFormat12 (utc); clktime + = ":"; если (минута (utc)

Рекомендуемые: