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

Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство

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

Компонент Описание Кол-во
Arduino UNO Основной контроллер 1
USB-A — Micro-USB кабель Питание и прошивка 1
Беспайковая макетная плата Сборка схемы 1
Перемычки Соединения 1
Оргстекло 4 мм Корпус (лазерная резка) 1
Резистор 221 Ом Подсветка LCD 1
Adafruit LCD 16x2 (I2C, белый на синем) Индикатор данных 1
DS1307 RTC (I²C) Часы реального времени 1
Фоторезистор (LDR) Измерение освещенности 1
DHT11 Температура и влажность Среда 1
LM35 Температура Точная аналоговая температура 1
IR-приемник Управление пультом 1
Датчик уровня воды Уровень жидкости/снега 1
Sunfounder RFID Starter Kit Доп. модули (не используется в основном коде) 1

Инструменты

О проекте

AWS (Arduino Weather Station) — круглосуточный мониторинг среды на базе Arduino с полным набором датчиков. Компактное «железо» помещается в лазерно-вырезанный корпус.

Цель

Сбор данных с датчиков и вывод на LCD. Малый размер позволяет уместить всё в небольшой коробке.

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

Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство

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

Показывает уровень в баке, предотвращает перелив, позволяет узнать заполненность в любой момент.

DHT11 — влажность и температура

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

Фоторезистор (LDR)

Чувствителен к свету: в темноте сопротивление высокое, при освещении падает до единиц Ом. Измеряет интенсивность света / темноту в %.

LCD I2C 1602

Две линии: SDA, SCL. Потенциометр на модуле регулирует подсветку. Напряжение 5В или 3.3В.

DS1302 RTC (в коде используется DS1302, в списке — DS1307)

Часы/календарь + 31 байт RAM. Формат времени чч:мм:сс, дата гггг/мм/дд. Батарейка на 10 лет.

LM35 — точность температуры

АЦП: ADC = входное_напряжение * 205 (при опоре 5В). Высокая точность.

IR-приемник и пульт

Кнопки пульта переключают экраны на LCD:

Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство

AWS — итоговый прибор

Шаг 1: Корпус

Разработка в AutoCAD, резка лазером, сборка на клее.

Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство

Шаг 2: Схема и монтаж

Схема в Fritzing, подключения простые.

Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство

Шаг 3: Программирование

Arduino IDE, все нужные библиотеки.

Шаг 4: Как работает

AWS забирает данные среды, пульт ИК переключает 5 экранов на LCD:

  1. Home — заставка «Arduino Weather Station» с эффектом появления. Возврат сюда после любого экрана.
  2. Date/Time — кнопка 0, задержка 10 сек.
  3. Temp/Hum — кнопка 1, LM35 + DHT11, 10 сек.
  4. Darkness — кнопка 2, % темноты LDR, 10 сек.
  5. Fluid Level — кнопка 3, мм жидкости, 10 сек.

Кнопка Cycle — по одному кругу всех 4 экранов по 4 сек.

Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство
Умная метеостанция на Arduino UNO с интеграцией AWS: полное руководство

Предостережения

Код (основной скетч)

//include sketch libraries
#include <IRremote.h>
#include <stdio.h>
#include <string.h>
#include <DS1302.h>
#include <dht.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#define lmPin A1
LiquidCrystal_I2C lcd(0x27, 16, 2);
dht DHT;
const int DHT11_PIN = 4;
const int waterSensor = 0;
int waterValue = 0, mmwaterValue = 0;
int sensorPin = A3;
int luce = 0, pluce = 0;
float tem = 0;
long lmVal = 0;
const int irReceiverPin = 3;
IRrecv irrecv(irReceiverPin);
decode_results results;
uint8_t RST_PIN = 5, SDA_PIN = 6, SCL_PIN = 7;
char buf[50], day[10];
DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);

void print_time() {
  Time t = rtc.time();
  memset(day, 0, sizeof(day));
  switch (t.day) {
    case 1: strcpy(day, "Sun"); break;
    case 2: strcpy(day, "Mon"); break;
    case 3: strcpy(day, "Tue"); break;
    case 4: strcpy(day, "Wed"); break;
    case 5: strcpy(day, "Thu"); break;
    case 6: strcpy(day, "Fri"); break;
    case 7: strcpy(day, "Sat"); break;
  }
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t.yr, t.mon, t.date, t.hr, t.min, t.sec);
  Serial.println(buf);
  lcd.setCursor(2, 0); lcd.print(t.yr); lcd.print("-"); lcd.print(t.mon/10); lcd.print(t.mon%10); lcd.print("-"); lcd.print(t.date/10); lcd.print(t.date%10); lcd.print(" "); lcd.print(day);
  lcd.setCursor(4, 1); lcd.print(t.hr); lcd.print(":"); lcd.print(t.min/10); lcd.print(t.min%10); lcd.print(":"); lcd.print(t.sec/10); lcd.print(t.sec%10);
}

void setup() {
  Serial.begin(9600);
  rtc.write_protect(false); rtc.halt(false);
  irrecv.enableIRIn();
  lcd.init(); lcd.backlight();
  pinMode(sensorPin, INPUT);
  Time t(2017, 12, 9, 11, 20, 00, 7);
  rtc.time(t);
}

void loop() {
  // Анимация заставки "Arduino Weather Station" посимвольно...
  if (irrecv.decode(&results)) {
    if (results.value == 0xFF6897) { /* 0 - Time */ }
    if (results.value == 0xFF30CF) { /* 1 - Temp/Hum */ }
    if (results.value == 0xFF18E7) { /* 2 - Darkness */ }
    if (results.value == 0xFF7A85) { /* 3 - Fluid Level */ }
    if (results.value == 0xFF9867) { /* Cycle - все экраны по 4 сек */ }
  }
}

Заставку удобнее делать через switch/case.

Заключение

Сделанная метеостанция учитывает время, собирает эко-данные, выводит на LCD под управлением ИК-пульта.

Файлы

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

  1. Продвинутая метеостанция v2.0: мониторинг температуры, давления, влажности и высоты в реальном времени
  2. TinyML-детектор языка на Arduino Nano 33 BLE Sense с Edge Impulse
  3. Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
  4. Автоматизированная барная станция «6-Сhooter» на Arduino — Собираем коктейльный робот своими руками
  5. Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
  6. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  7. Сборка аудиореактивной настольной лампы на Arduino Nano
  8. Высокопроизводительный регистратор данных для метеозонда на Arduino
  9. Портативная метеостанция на Arduino Nano за $10: DHT22, BMP180 и LCD
  10. NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10