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

AWS - метеостанция Arduino

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

Arduino UNO
× 1
Кабель USB-A - Micro-USB
× 1
Макет (общий)
× 1
Перемычки (общие)
× 1
Оргстекло 4 мм
× 1
Резистор 221 Ом
× 1
Стандартный ЖК-экран Adafruit - 16x2, белый на синем
× 1
Maxim Integrated DS1307 64 x 8, последовательный, I²C в реальном времени Часы
× 1
Фоторезистор
× 1
Датчик температуры и влажности DHT11 (4 контакта)
× 1
Датчик температуры
× 1
ИК-приемник (общий)
× 1
Датчик уровня воды
× 1
Стартовый комплект RFID Sunfounder
× 1

Необходимые инструменты и машины

Лазерный резак (универсальный)

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

AWS, метеостанция Arduino, круглосуточно предоставляет точные данные об окружающей среде. В частности, он основан на плате микроконтроллера Arduino и поддерживает полный набор датчиков для анализа окружающей среды.

Цель

Целью этого элемента управления до является обнаружение серии данных с помощью датчиков, описанных выше, и их взаимодействие с пользователем через ЖК-экран. Небольшой размер «фурнитуры» проекта позволяет закрыть его в коробочку, сделанную на станке для лазерной резки.

Используемые датчики

Датчик уровня воды и снега

Индикатор уровня воды используется для обозначения уровня воды в верхнем резервуаре, с его помощью мы можем избежать перелива воды, и в любое время мы можем узнать уровень воды в резервуаре.

Датчик влажности и температуры DHT11

Цифровой датчик температуры и влажности DHT11 представляет собой откалиброванный цифровой датчик температуры и влажности с выходным сигналом, в котором специализированные модули улавливают технологию и технологию цифрового датчика температуры и влажности, чтобы гарантировать высокую надежность и превосходную долгосрочную стабильность продукции. Продукт отличается отличным качеством, быстрым откликом, помехоустойчивостью, невысокой стоимостью и другими преимуществами.

Фоторезистор

Фоторезисторы, также известные как светозависимые резисторы (LDR), представляют собой светочувствительные устройства, которые чаще всего используются для индикации наличия или отсутствия света или для измерения интенсивности света. В темноте их сопротивление очень велико, но когда датчик LDR подвергается воздействию света, сопротивление резко падает, даже до нескольких Ом, в зависимости от интенсивности света.

ЖК-дисплей I2C 1602

LCD1602 с шиной I2C - это тип последовательной шины. Это высокопроизводительная последовательная шина, которая имеет функцию управления шиной и функцию синхронизации высокоскоростных или низкоскоростных устройств, требуемую системой с несколькими хостами. Синий потенциометр на I2C LCD1602 используется только для подсветки.

I2C использует только две двунаправленные линии с открытым стоком, Serial DataLine (SDA) и Serial Clock Line (SCL), подтянутые резисторами. Обычно используются напряжения +5 В или +3,3 В, хотя допускается использование систем с другими напряжениями.

Модуль часов реального времени DS1302

Он основан на интегрированном DS1302, внутри которого находятся часы / календарь реального времени и 31 байт статической ОЗУ. Вы можете увидеть формат времени как чч / мм / сс, а формат даты - гггг / мм / дд.

Датчик температуры LM35

Прецизионный датчик температуры LM35 - это датчик, который очень точно определяет температуру. Аналого-цифровой преобразователь (АЦП) преобразует аналоговые значения в цифровое приближение на основе формулы ADCValue =выборка * 1024 / опорное напряжение (+ 5В). Таким образом, при опорном напряжении +5 В цифровое приближение будет равно входному напряжению * 205.

Инфракрасный приемник и пульт дистанционного управления

Эти два компонента работают вместе:ИК-приемник позволяет принимать данные с пульта дистанционного управления. Данные зависят от того, какую кнопку вы хотите нажать. Для присвоения им определенных функций были выбраны следующие кнопки:

  • 0 Кнопка:вы можете видеть время и дату на ЖК-экране.
  • 1 кнопка:вы можете видеть данные о температуре от LM35 и данные о влажности от DHT11 на ЖК-экране.
  • 2 Кнопка:вы можете видеть процент затемнения на ЖК-экране.
  • 3 Кнопка:вы можете видеть значение уровня жидкости (мм) на ЖК-экране.
  • Кнопка «Цикл»:вы можете видеть все экраны с интервалом в 4 секунды друг от друга.

THE A.W.S.

Шаг 1. Построение коробки

Рассмотрев размер проекта, мы приступили к изготовлению коробки из оргстекла. Размеры граней с соответствующими посадочными местами и отверстиями для выхода сенсорных проводов были разработаны с помощью программного обеспечения Autocad, затем мы вырезали грани с помощью станка для лазерной резки. И, наконец, мы собрали все с помощью мощного клея.

Шаг 2. Схема и подключение оборудования

Вот изображение схемы метеостанции Arduino. Это было сделано с программным обеспечением fritzing. Подключения довольно простые.

Шаг 3. Arduino программирование

Мы написали код в Arduino IDE, использовали все необходимые библиотеки и запрограммировали его так, чтобы наша метеостанция работала так, как мы хотели.

Шаг 4. Как это? работает

AWS ( Метеостанция Arduino ) - это метеостанция, которая собирает некоторые данные из окружающей среды и позволяет их видеть с помощью инфракрасного пульта дистанционного управления. Для взаимодействия с пользователями у него есть ЖК-дисплей с пятью различными экранами, которые пользователь может менять.

Это экраны:

1. Главный экран: это первый экран, который видит пользователь, когда мы включаем доску. Он представляет проект со словами «Метеостанция Arduino», которые имеют особый эффект затухания. Вы можете видеть этот экран также каждый раз, когда просите AWS просмотреть некоторые данные.

2. Экран даты и времени . это первый экран, к которому пользователь может получить доступ, просто нажав кнопку 0 на пульте дистанционного управления. При нажатии экран имеет задержку в 10 секунд, а затем возвращается на главный экран.

3. Экран влажности и температуры . это экран, на котором отображаются данные, полученные датчиками DHT11 и LM35 о влажности и температуре соответственно. Он подключен к кнопке 1 на пульте дистанционного управления, и при ее нажатии экран имеет задержку 10 секунд, а затем возвращается на главный экран.

4. Экран затемнения: это экран, который предоставляет данные, полученные LDR о количестве света на датчике. Он показывает процент темноты на сенсоре. Он подключен к кнопке 2 на пульте дистанционного управления, и при нажатии экран имеет задержку 10 секунд, а затем возвращается на главный экран.

5. Экран уровня жидкости . этот экран показывает высоту количества жидкости в рецепте. Он подключен к кнопке 3 на пульте дистанционного управления, и при ее нажатии экран имеет задержку 10 секунд, а затем возвращается на главный экран.

Последние четыре экрана можно просматривать последовательно с интервалом в 4 секунды друг от друга, нажав кнопку цикла . на пульте дистанционного управления. В этом режиме выполняется только один информационный круг.

Меры предосторожности

Первое, что необходимо учитывать для долговечности этого проекта, - это избегать любого контакта жидкостей или других вредных веществ с доской и со станцией в целом.

После выпадения осадков необходимо опорожнить емкость для воды, проверить и очистить датчик.

Срок службы аккумуляторной батареи составляет около двух дней, поэтому ее необходимо перезарядить (около 2 часов), если она собирается разрядиться.

Возможно, иногда инфракрасный датчик работает не так хорошо, как хотелось бы, поэтому его работа может прерываться при низких температурах (около 0 градусов). Это не представляет никакой проблемы, на самом деле необходимо просто открыть коробку и нажать кнопку сброса:AWS снова будет нормально работать.

Если мы нажмем кнопку сброса, модуль RTC DS1302 не изменит свое значение даты и времени благодаря поддерживающей батарее, присутствующей в модуле, срок службы которой составляет около 10 лет.

При отключении питания AWS дата и время изменятся. Для решения проблемы необходимо заново установить их в точку, указанную в списке, в соответствии с вашими предпочтениями. После загрузки вам необходимо скрыть настройки программы, как показано ниже.

  До:Время t (2017, 12, 03, 10, 15, 00, 1); rtc.time (t); После:// Время t (2017, 12, 03, 10, 15, 00, 1) //; rtc.time (t);  

Код

  // включаем библиотеки скетчей # include  #include  // библиотека часов # include  // библиотека часов # include  // часы library # include  // dht11 library # include  // Библиотека ЖК-дисплея # include  // Провод для библиотеки ЖК-дисплея # define lmPin A1 // LM35 присоединяется к ЖК-дисплею A1LiquidCrystal_I2C (0x27, 16, 2); // установить адрес ЖК-дисплея на 0x27 для 16-символьного и 2-строчного displaydht DHT; // создаем переменную типа dhtconst int DHT11_PIN =4; // прикрепляем dht11 к выводу 4const int waterSensor =0; // устанавливаем переменную датчика воды int waterValue =0; // переменная для датчика воды int mmwaterValue =0; int sensorPin =A3; // выбираем входной контакт для потенциометра int luce =0; // переменная для ldrint pluce =0; // переменная для ldrfloat tem =0; // переменная для температуры lmVal =0; // переменная для LM35 // irconst int irReceiverPin =3; IRrecv irrecv (irReceiverPin); // Создает переменную типа IRrecvdecode_results results; // определяет часовую переменную uint8_t RST_PIN =5; // Присоединение пина RST touint8_t SDA_PIN =6; // Присоединение вывода IO touint8_t SCL_PIN =7; // clk Pin attach to / * Создание буферов * / char buf [50]; char day [10]; / * Создание объекта DS1302 * / DS1302 rtc (RST_PIN, SDA_PIN, SCL_PIN); // создание типа переменной DS1302void print_time () {/ * Получить текущее время и дату из чипа * / Time t =rtc.time (); / * Назовите день недели * / memset (day, 0, sizeof (day)); switch (t.day) {case 1:strcpy (день, "Солнце"); ломать; случай 2:strcpy (день, «Пн»); ломать; case 3:strcpy (день, «Вт»); ломать; случай 4:strcpy (день, «среда»); ломать; case 5:strcpy (день, «чт»); ломать; case 6:strcpy (день, «пт»); ломать; case 7:strcpy (день, «сб»); ломать; } / * Форматируем время и дату и вставляем во временный буфер * / snprintf (buf, sizeof (buf), "% s% 04d-% 02d-% 02d% 02d:% 02d:% 02d", day, t. год, месяц, дата дата, час, мин, час); / * Вывести отформатированную строку в серийный номер, чтобы мы могли видеть время * / Serial.println (buf); lcd.setCursor (2, 0); lcd.print (т.год); lcd.print ("-"); lcd.print (т.мон / 10); lcd.print (т.мон% 10); lcd.print ("-"); lcd.print (дата / 10); lcd.print (дата% 10); lcd.print (""); lcd.print (день); lcd.setCursor (4, 1); lcd.print (т.ч.); lcd.print (":"); lcd.print (т.мин / 10); lcd.print (t.min% 10); lcd.print (":"); lcd.print (тс / 10); lcd.print (t.sec% 10);} void setup () {// часы Serial.begin (9600); rtc.write_protect (ложь); rtc.halt (ложь); // ir irrecv.enableIRIn (); // включение модуля ИК-приемника lcd.init (); // инициализируем ЖК-дисплей lcd.backlight (); // открываем подсветку pinMode (sensorPin, INPUT); Time t (2017, 12, 03, 10, 15, 00, 1); // инициализируем время / * Устанавливаем время и дату на чипе * / rtc.time (t);} void loop () {lcd. setCursor (0, 0); lcd.print («А»); задержка (50); lcd.setCursor (1, 0); lcd.print ("р"); задержка (50); lcd.setCursor (2, 0); lcd.print ("д"); задержка (50); lcd.setCursor (3, 0); lcd.print ("u"); задержка (50); lcd.setCursor (4, 0); lcd.print ("я"); задержка (50); lcd.setCursor (5, 0); lcd.print ("н"); задержка (50); lcd.setCursor (6, 0); lcd.print ("о"); задержка (50); lcd.setCursor (8, 0); lcd.print ("W"); задержка (50); lcd.setCursor (9, 0); lcd.print ("е"); задержка (50); lcd.setCursor (10, 0); lcd.print ("а"); задержка (50); lcd.setCursor (11, 0); lcd.print ("т"); задержка (50); lcd.setCursor (12, 0); lcd.print ("h"); задержка (50); lcd.setCursor (13, 0); lcd.print ("е"); задержка (50); lcd.setCursor (14, 0); lcd.print ("р"); задержка (50); lcd.setCursor (4, 1); lcd.print ("S"); задержка (50); lcd.setCursor (5, 1); lcd.print ("т"); задержка (50); lcd.setCursor (6, 1); lcd.print ("а"); задержка (50); lcd.setCursor (7, 1); lcd.print ("т"); задержка (50); lcd.setCursor (8, 1); lcd.print ("я"); задержка (50); lcd.setCursor (9, 1); lcd.print ("о"); задержка (50); lcd.setCursor (10, 1); lcd.print ("н"); delay (50); if (irrecv.decode (&results)) // если данные приемника модуля ИК-приемника {if (results.value ==0xFF6897) // если нажата «0» print TIME {lcd.clear (); // очищаем ЖК-дисплей print_time (); задержка (10000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); // подождем некоторое время irrecv.resume (); // Получение следующего значения} if (results.value ==0xFF30CF) // если нажата «1» print ТЕМПЕРАТУРА и ВЛАЖНОСТЬ {lcd.clear (); // очищаем ЖК-дисплей // ЧТЕНИЕ ДАННЫХ DHT int chk =DHT.read11 (DHT11_PIN); // ОТОБРАЖЕНИЕ ДАННЫХ lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // считываем значение A1 tem =(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print (tem); // распечатываем tem lcd. print (char (223)); // распечатать единицу "?" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Гуд:"); //Serial.print("Hum:"); lcd.print (DHT.влажность, 1); // выводим влажность на lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); задержка (10000); // ждем 3000 мс lcd.clear (); // очищаем задержку LCD (200); // подождем некоторое время irrecv.resume (); // Получение следующего значения} if (results.value ==0xFF18E7) ​​// если нажата цифра «2», распечатать ТЕМНОСТЬ {lcd.clear (); // очищаем ЖК-дисплей lcd.setCursor (4, 0); // поместите курсор в 4 столбца, 1 строку lcd.print ("Darkness:"); luce =analogRead (sensorPin); // читать ldr pluce =map (luce, 0, 1023, 0, 100); // значение датчика преобразуется в значения от 0 до 100 lcd.setCursor (6, 1); // поместите курсор в середину ЖК-дисплея lcd.print (pluce); // распечатываем проценты lcd.print ("%"); // выводим символ delay (10000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); // подождем некоторое время irrecv.resume (); // Получение следующего значения} if (results.value ==0xFF7A85) // если нажата цифра «3», вывести УРОВЕНЬ СНЕГА или ВОДЫ {lcd.clear (); // очищаем ЖК-дисплей lcd.setCursor (0, 0); // поместите курсор в столбец 0, 1 строку lcd.print ("Уровень жидкости (мм):"); // выводим «Уровень жидкости (мм):» int waterValue =analogRead (waterSensor); // получаем значение датчика воды lcd.setCursor (6, 1); // помещаем курсор в 6 столбец, 2 строку mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // значение, отображаемое на ЖК-дисплее delay (10000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); irrecv.resume (); // Получение следующего значения} if (results.value ==0xFF9867) // если "ПРЕЗЕНТАЦИЯ" нажата, напечатайте ВРЕМЯ, ВРЕМЯ и HUM, ТЕМНОСТЬ и S или W УРОВЕНЬ один раз {lcd.clear (); // очищаем ЖК-дисплей print_time (); задержка (4000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); // ждать некоторое время // ЧТЕНИЕ ДАННЫХ DHT int chk =DHT.read11 (DHT11_PIN); // ОТОБРАЖЕНИЕ ДАННЫХ lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // считываем значение A0 tem =(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print (tem); // распечатываем tem lcd. print (char (223)); // распечатать единицу "?" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Гуд:"); //Serial.print("Hum:"); lcd.print (DHT.влажность, 1); // выводим влажность на lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); задержка (4000); // ждем 3000 мс lcd.clear (); // очищаем задержку LCD (200); // подождем некоторое время lcd.setCursor (4, 0); // поместите курсор в 4 столбца, 1 строку lcd.print ("Darkness:"); luce =analogRead (sensorPin); // читать ldr pluce =map (luce, 0, 1023, 0, 100); // значение датчика преобразуется в значения от 0 до 100 lcd.setCursor (6, 1); // поместите курсор в середину ЖК-дисплея lcd.print (pluce); // распечатываем проценты lcd.print ("%"); // выводим символ delay (4000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); // ждем немного lcd.setCursor (0, 0); // поместите курсор в столбец 0, 1 строку lcd.print ("Уровень жидкости (мм):"); // выводим «Уровень жидкости (мм):» int waterValue =analogRead (waterSensor); // получаем значение датчика воды lcd.setCursor (6, 1); // помещаем курсор в 6 столбец, 2 строку mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // значение, отображаемое на ЖК-дисплее delay (4000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); irrecv.resume (); // Получение следующего значения}}}  

Вместо того, чтобы писать букву «Метеостанция Arduino» за буквой, ее можно написать с помощью режим "переключатель / регистр"

ВЫВОДЫ

Мы создали метеостанцию ​​с Arduino, которая учитывает текущую дату и время и собирает некоторые данные об окружающей среде для печати их на ЖК-экране, управляемом с помощью инфракрасного пульта дистанционного управления.

Код

  • AWS code.ino
AWS code.ino C / C ++
 // включаем библиотеки скетчей # include  #include  // библиотека часов # include  // библиотека часов # include  // библиотека часов # include  // Библиотека dht11 # include  // Библиотека ЖК-дисплея # include  // Провод для библиотеки ЖК-дисплея # define lmPin A1 // Подключение LM35 к ЖК-дисплею A1 LiquidCrystal_I2C (0x27, 16, 2 ); // установить адрес ЖК-дисплея на 0x27 для 16-символьного и 2-строчного displaydht DHT; // создаем переменную типа dhtconst int DHT11_PIN =4; // прикрепляем dht11 к выводу 4const int waterSensor =0; // устанавливаем переменную датчика воды int waterValue =0; // переменная для датчика воды int mmwaterValue =0; int sensorPin =A3; // выбираем входной контакт для потенциометра int luce =0; // переменная для ldrint pluce =0; // переменная для ldrfloat tem =0; // переменная для температуры lmVal =0; // переменная для LM35 // irconst int irReceiverPin =3; IRrecv irrecv (irReceiverPin); // Создает переменную типа IRrecvdecode_results results; // определяет часовую переменную uint8_t RST_PIN =5; // Присоединение пина RST touint8_t SDA_PIN =6; // Присоединение вывода IO touint8_t SCL_PIN =7; // clk Pin attach to / * Создание буферов * / char buf [50]; char day [10]; / * Создание объекта DS1302 * / DS1302 rtc (RST_PIN, SDA_PIN, SCL_PIN); // создание типа переменной DS1302void print_time () {/ * Получить текущее время и дату из чипа * / Time t =rtc.time (); / * Назовите день недели * / memset (day, 0, sizeof (day)); switch (t.day) {case 1:strcpy (день, "Солнце"); ломать; случай 2:strcpy (день, «Пн»); ломать; case 3:strcpy (день, «Вт»); ломать; случай 4:strcpy (день, «среда»); ломать; case 5:strcpy (день, «чт»); ломать; case 6:strcpy (день, «пт»); ломать; case 7:strcpy (день, «сб»); ломать; } / * Форматируем время и дату и вставляем во временный буфер * / snprintf (buf, sizeof (buf), "% s% 04d-% 02d-% 02d% 02d:% 02d:% 02d", day, t. год, месяц, дата дата, час, мин, час); / * Вывести отформатированную строку в серийный номер, чтобы мы могли видеть время * / Serial.println (buf); lcd.setCursor (2, 0); lcd.print (т.год); lcd.print ("-"); lcd.print (т.мон / 10); lcd.print (т.мон% 10); lcd.print ("-"); lcd.print (дата / 10); lcd.print (дата% 10); lcd.print (""); lcd.print (день); lcd.setCursor (4, 1); lcd.print (т.ч.); lcd.print (":"); lcd.print (т.мин / 10); lcd.print (t.min% 10); lcd.print (":"); lcd.print (тс / 10); lcd.print (t.sec% 10);} void setup () {// часы Serial.begin (9600); rtc.write_protect (ложь); rtc.halt (ложь); // ir irrecv.enableIRIn (); // включение модуля ИК-приемника lcd.init (); // инициализируем ЖК-дисплей lcd.backlight (); // открываем подсветку pinMode (sensorPin, INPUT); Time t (2017, 12, 9, 11, 20, 00, 7); // инициализируем время / * Устанавливаем время и дату на чипе * / rtc.time (t);} void loop () {lcd. setCursor (0, 0); lcd.print («А»); задержка (50); lcd.setCursor (1, 0); lcd.print ("р"); задержка (50); lcd.setCursor (2, 0); lcd.print ("д"); задержка (50); lcd.setCursor (3, 0); lcd.print ("u"); задержка (50); lcd.setCursor (4, 0); lcd.print ("я"); задержка (50); lcd.setCursor (5, 0); lcd.print ("н"); задержка (50); lcd.setCursor (6, 0); lcd.print ("о"); задержка (50); lcd.setCursor (8, 0); lcd.print ("W"); задержка (50); lcd.setCursor (9, 0); lcd.print ("е"); задержка (50); lcd.setCursor (10, 0); lcd.print ("а"); задержка (50); lcd.setCursor (11, 0); lcd.print ("т"); задержка (50); lcd.setCursor (12, 0); lcd.print ("h"); задержка (50); lcd.setCursor (13, 0); lcd.print ("е"); задержка (50); lcd.setCursor (14, 0); lcd.print ("р"); задержка (50); lcd.setCursor (4, 1); lcd.print ("S"); задержка (50); lcd.setCursor (5, 1); lcd.print ("т"); задержка (50); lcd.setCursor (6, 1); lcd.print ("а"); задержка (50); lcd.setCursor (7, 1); lcd.print ("т"); задержка (50); lcd.setCursor (8, 1); lcd.print ("я"); задержка (50); lcd.setCursor (9, 1); lcd.print ("о"); задержка (50); lcd.setCursor (10, 1); lcd.print ("н"); delay (50); if (irrecv.decode (&results)) // если данные приемника модуля ИК-приемника {if (results.value ==0xFF6897) // если нажата «0» print TIME {lcd.clear (); // очищаем ЖК-дисплей print_time (); задержка (10000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); // подождем некоторое время irrecv.resume (); // Получение следующего значения} if (results.value ==0xFF30CF) // если нажата «1» print ТЕМПЕРАТУРА и ВЛАЖНОСТЬ {lcd.clear (); // очищаем ЖК-дисплей // ЧТЕНИЕ ДАННЫХ DHT int chk =DHT.read11 (DHT11_PIN); // ОТОБРАЖЕНИЕ ДАННЫХ lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // считываем значение A1 tem =(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print (tem); // распечатываем tem lcd. print (char (223)); // распечатать единицу "" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Гуд:"); //Serial.print("Hum:"); lcd.print (DHT.влажность, 1); // выводим влажность на lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); задержка (10000); // ждем 3000 мс lcd.clear (); // очищаем задержку LCD (200); // подождем некоторое время irrecv.resume (); // Получение следующего значения} if (results.value ==0xFF18E7) ​​// если нажата цифра «2», распечатать ТЕМНОСТЬ {lcd.clear (); // очищаем ЖК-дисплей lcd.setCursor (4, 0); // поместите курсор в 4 столбца, 1 строку lcd.print ("Darkness:"); luce =analogRead (sensorPin); // читать ldr pluce =map (luce, 0, 1023, 0, 100); // значение датчика преобразуется в значения от 0 до 100 lcd.setCursor (6, 1); // поместите курсор в середину ЖК-дисплея lcd.print (pluce); // распечатываем проценты lcd.print ("%"); // выводим символ delay (10000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); // подождем некоторое время irrecv.resume (); // Получение следующего значения} if (results.value ==0xFF7A85) // если нажата цифра «3», вывести УРОВЕНЬ СНЕГА или ВОДЫ {lcd.clear (); // очищаем ЖК-дисплей lcd.setCursor (0, 0); // поместите курсор в столбец 0, 1 строку lcd.print ("Уровень жидкости (мм):"); // выводим «Уровень жидкости (мм):» int waterValue =analogRead (waterSensor); // получаем значение датчика воды lcd.setCursor (6, 1); // помещаем курсор в 6 столбец, 2 строку mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // значение, отображаемое на ЖК-дисплее delay (10000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); irrecv.resume (); // Получение следующего значения} if (results.value ==0xFF9867) // если "ПРЕЗЕНТАЦИЯ" нажата, напечатайте ВРЕМЯ, ВРЕМЯ и HUM, ТЕМНОСТЬ и S или W УРОВЕНЬ один раз {lcd.clear (); // очищаем ЖК-дисплей print_time (); задержка (4000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); // ждать некоторое время // ЧТЕНИЕ ДАННЫХ DHT int chk =DHT.read11 (DHT11_PIN); // ОТОБРАЖЕНИЕ ДАННЫХ lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // считываем значение A0 tem =(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print (tem); // распечатываем tem lcd. print (char (223)); // распечатать единицу "" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Гуд:"); //Serial.print("Hum:"); lcd.print (DHT.влажность, 1); // выводим влажность на lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); задержка (4000); // ждем 3000 мс lcd.clear (); // очищаем задержку LCD (200); // подождем некоторое время lcd.setCursor (4, 0); // поместите курсор в 4 столбца, 1 строку lcd.print ("Darkness:"); luce =analogRead (sensorPin); // читать ldr pluce =map (luce, 0, 1023, 0, 100); // значение датчика преобразуется в значения от 0 до 100 lcd.setCursor (6, 1); // поместите курсор в середину ЖК-дисплея lcd.print (pluce); // распечатываем проценты lcd.print ("%"); // выводим символ delay (4000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); // ждем немного lcd.setCursor (0, 0); // поместите курсор в столбец 0, 1 строку lcd.print ("Уровень жидкости (мм):"); // выводим «Уровень жидкости (мм):» int waterValue =analogRead (waterSensor); // получаем значение датчика воды lcd.setCursor (6, 1); // помещаем курсор в 6 столбец, 2 строку mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // значение, отображаемое на ЖК-дисплее delay (4000); // задержка 10000 мс lcd.clear (); // очищаем задержку LCD (200); irrecv.resume (); // Получаем следующее значение}}} 

Изготовленные на заказ детали и корпуса

box_a5et5f4U9F.dwg

Схема

aws_DMDwb4iUZp.fzz

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

  1. Метеостанция V 2.0
  2. Детектор языка TinyML на основе Edge Impulse и Arduino
  3. Игра с гироскопом Arduino с MPU-6050
  4. 6-Shooter:станция для смешивания напитков Arduino
  5. Цифровые игральные кости Arduino
  6. Найди меня
  7. Реактивный настольный светильник для звука Arduino
  8. Регистратор данных с погодными шарами на базе Arduino
  9. Портативная метеостанция Arduino (AWS) за 10 долларов
  10. NeoMatrix Arduino Pong