Күн, убакыт жана температура дисплейи XinaBoxтун жардамы менен: 8 кадам
Күн, убакыт жана температура дисплейи XinaBoxтун жардамы менен: 8 кадам
Anonim
Күн, убакыт жана температура дисплейи XinaBox аркылуу
Күн, убакыт жана температура дисплейи XinaBox аркылуу

Cool OLED дисплейи ESP8266 негизделген Xinabox xChipsти колдонуп Цельсий жана Фаренгейтте күндү, убакытты жана температураны көрсөтөт.

1 -кадам: Бул долбоордо колдонулган нерселер

Аппараттык компоненттер

  • XinaBox IP01 x 1 xChip USB Программисти FTI32 Limitedден FT232Rге негизделген
  • XinaBox CW01 x 1 xChip Wi-Fi Core ESP8266 Wi-Fi модулуна негизделген
  • XinaBox SW01 x 1 xChip Bosch BME280дин негизинде температура, нымдуулук жана атмосфералык басым сенсору.
  • XinaBox OD01 x 1 xChip 128x64 пиксел OLED дисплейи
  • XinaBox PU01 x 1 xChip USB (А түрү) электр менен камсыздоо
  • XinaBox XC10 x 1 xChip Bus Connectors
  • 5V USB Power Supply x 1

Программалык камсыздоо жана онлайн кызматтары

Arduino IDE

2 -кадам: Окуя

Киришүү

Мен бул проекти I2C автобус протоколун колдонгон XinaBox xChips аркылуу датаны, UCT убактысын жана температураны көрсөтүү үчүн кургам. Убакыт Google NTP серверинен алынды. Айлана -чөйрөнүн температурасы SW01 xChipтин жардамы менен өлчөнгөн жана Цельсий менен Фаренгейттеги OD01 xChip OLED дисплейинде көрсөтүлгөн. Төмөндөгү сүрөттө OLED дисплейи көрсөтүлгөн.

Сүрөт
Сүрөт

OLED күндү, убакытты жана температураны көрсөтөт

3 -кадам: Керектүү файлдарды жүктөп алыңыз

Бул долбоор үчүн төмөнкү китепканалар жана программалык камсыздоо талап кылынат.

  • Arduino IDE - Өнүктүрүү программасы, анда сиз код коёсуз
  • xSW01 - Температура сенсорунун китепканасы
  • xCore - XinaBox xChips үчүн негизги китепкана
  • xOD01 - OLED Display китепканасы.
  • Убакыт алкагы - Китепкана убакыт алкагын тандоо үчүн
  • Убакыт - Убакыт функцияларын колдонуу үчүн
  • NTPClient - Серверден убакыт алууга мүмкүнчүлүк берет
  • Ошондой эле, ESP8266 тактасын жүктөп алып, тактаны орнотуу үчүн аны коштогон нускамаларды аткарышыңыз керек болот.

Жүктөлгөндөн кийин сиз IDE жана китепканаларды орнотосуз. Көрсөтмөлөрдү аткарсаңыз, бул абдан алдыга жылат.

4 -кадам: чогултуу

Программаны аткара турган жана иштете турган сиздин негизги xChip CW01. Бул ESP8266 WiFi модулуна негизделген жана I2C автобус протоколун колдонот. CW01ге программалоо үчүн сизге xChip программалоо керек болот. IP01 бизге CW01ди компьютерибиздеги USB порту аркылуу программалоого мүмкүндүк берет, жөн гана XC10 шинасынын коннекторлорун колдонуп, эки xChipти чогуу басуу жана USB портуна киргизүү. Эч кандай зым жана ширетүү талап кылынбайт. Белгилей кетчү нерсе, xChip идентификациялык аталыштарынын багыты. Алардын баары бир багытка багытталышы керек. Сиз азыр төмөнкү орнотууга ээ болушуңуз керек.

Сүрөт
Сүрөт

CW01 менен IP01ди чогуу басыңыз жана аны компьютериңиздин USB портуна салыңыз

Эгерде сиз xChips менен тааныш болсоңуз, анда ар бир xChipти долбооруңуз үчүн колдонгуңуз келген XC10 шина коннекторлору аркылуу туташтырып, анан USB портуна салыңыз. Биз SW01 температура сенсорун жана OD01 OLED дисплейин колдонобуз.

Сүрөт
Сүрөт

Сиз бардык чиптериңизди бириктирип, анан USB портуна салыңыз

5 -кадам: Программа

Төмөндөгү кодду жүктөп алыңыз же көчүрүңүз жана Arduino IDEге чаптаңыз. Эгерде сиз кодго эч кандай өзгөртүүлөрдү киргизбесеңиз, төмөндө көрсөтүлгөндөй WiFi тармактарыңызды тиешелүү тармактарга киргизиңиз. Ошондой эле ишенимдүү NTP убакыт серверин киргизиңиз. Мен бул проект үчүн Google убакыт серверин колдондум.

Сүрөт
Сүрөт

WiFi чоо -жайы жана NTP убакыт сервери

Эми компиляция жана жүктөө. Ардуино IDEдеги куралдар менюсунда туура COM портун жана тактасын тандаганыңызды текшериңиз. Жүктөлгөндөн кийин, убакыт, күн жана температура төмөндө көрсөтүлүшү керек.

Сүрөт
Сүрөт

Жүктөп бергенден кийин төмөнкүлөрдү көрүшүңүз керек

6 -кадам: Аны Портативдүү кылыңыз

Сиз азыр бирдигин USB портуңуздан алып салсаңыз болот жана ар бир xChipти бөлүп караңыз. Программалоо аяктагандыктан, IP01 талап кылынбайт. Идентификациялык аталыштар бир багытта багытталган болсо, сиз азыр долбооруңузду каалаган жол менен байланыштыра аласыз. Биздин блокту иштетүү үчүн биз PU01ди колдонобуз. Бул бизге кадимки кубат банкынан же 5В USB кубаттуулугунан кубаттандырууга мүмкүндүк берет. Мен өзүмдү төмөндө көрсөтүлгөндөй туташтырдым.

Сүрөт
Сүрөт

Акыркы жыйын. xChips сиз каалаган жол менен туташтырылышы мүмкүн.

7 -кадам: Жыйынтык

Бул долбоорду бүтүрүү үчүн 20 мүнөт талап кылынат. Эгер сиз жайгашкан жериңизде убакытты кааласаңыз, Timezone китепканасындагы мисал кодун карап көрүңүз же UTC убактысы менен арифметика кылыңыз. Эч кандай зымдар колдонулган эмес жана эч кандай ширетүү талап кылынган эмес.

8 -кадам: Код

Date_Time_Temp.ino Arduino Жөн гана WiFi маалыматыңызды тиешелүү тармактарга киргизип, тактаңызга жүктөңүз.

#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); // температуранын өзгөрмөлүү өзгөрүлмө темпC; // celsius float tempF; // fahrenheit // сиздин WiFi маалыматыңыз const char* wifi_ssid = "XinaBox"; // сиздин wifi ssid const char* wifi_pass = "RapidIoT"; // сиздин wifi сырсөзүңүз // дата жана убакыт өзгөрмөсү String дата; String clktime; // күндөрдү жана айларды камтыган өзгөрмөлөр const char * days = {"Жекшемби", "Дүйшөмбү", "Шейшемби", "Шаршемби", "Бейшемби", "Жума", "Ишемби"}; const char * months = {"Январь", "Февраль", "Мар", "Апрель", "Май", "Июнь", "Июль", "Август", "Сеп", "Окт", "Ноябрь "," Декабрь}}; 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 (); // wifi байланышын түзүү wifi_connect (); кечигүү (1000); } void loop () {// run эгер wifi байланышы орнотулса, эгер (WiFi.status () == WL_CONNECTED) {SW01.poll (); // окуу температурасы tempC = SW01.getTempC (); // дүкөндүн температурасы celcius tempF = SW01.getTempF (); // дүкөндүн температурасы fahrenheit дата = ""; // так дата өзгөрмөсү clktime = ""; // убакыт өзгөрмөсүн тазалоо // ntp кардарын жаңыртуу жана unix utc timestamp timeClient.update () алуу; белгисиз узак epochTime = timeClient.getEpochTime (); // алынган убакыттын штампын time_t объектине айландыруу time_t utc; utc = epochTime; // utc убактысы TimeChangeRule utcRule = {"UTC", Акыркы, Күн, Март, 1, 0}; Убакыт алкагы UTC (utcRule, utcRule); // форматтагы убакыт өзгөрмөлөрү дата += күндөр [жума күнү (utc) - 1]; дата += ","; дата += айлар [ай (utc) - 1]; дата += ""; дата += күн (utc); дата += ","; дата += жыл (utc); // убакытты AM/PM менен 12 сааттык форматка форматтоо жана эч кандай секунд clktime += hourFormat12 (utc); clktime += ":"; эгер (мүнөт (utc)

Сунушталууда: