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

Мини-метеостанция с использованием Arduino Nano

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

Arduino Nano R3
× 1
модуль DHT 11
× 1
ДАТЧИК ДАВЛЕНИЯ BMP-280
× 1
1,44-дюймовый ЖК-дисплей ST7735
× 1
НАПЕЧАТАННЫЙ КОРПУС 3D
× 1
Кабель USB A - mini USB B
× 1

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

Паяльник (общий)
3D-принтер (общий)
Паяльная проволока
Двусторонний скотч

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

IDE Arduino
Autodesk Fusion 360

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

Введение

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

Описание и принцип работы

В этом проекте используются два датчика:BMP-280 и DHT-11. Первый определяет температуру и атмосферное давление, а второй - относительную влажность. DHT-11 можно было бы сделать с помощью BME-280 (он также может измерять влажность) вместо BMP-280, но если принять во внимание стоимость, то использование комбинации датчиков, используемых здесь, намного более экономично для DIY. проекты. Также следует отметить, что, хотя DHT-11 способен определять как температуру, так и влажность, он используется для измерения влажности только потому, что его разрешение измерения температуры составляет +/- 2 ° по сравнению с +/-. 5 ° для BMP-280. Сердце этого проекта - плата разработки Arduino NANO. Здесь также плата NANO была выбрана из-за ее доступной цены, а не более популярной среди пользователей UNO. В качестве дисплея в нашем проекте используется 1,44-дюймовый TFT ЖК-экран серии ST7735. Здесь отказались от экрана большего размера, чтобы не перегружать Arduino NANO.

Схема и программирование

Комбинация принципиальной схемы и блок-схемы была предоставлена ​​максимально удобно, чтобы помочь производителям понять физическую конфигурацию и подключение компонентов. Таблицы для распиновки компонентов также предусмотрены, чтобы упростить задачу. Просматривая диаграмму и таблицы, можно заметить, что контакты 5V и GND заголовка ICSP на Arduino NANO использовались для подачи питания на компоненты вместе с контактами питания и заземления на плате. Это сделано для того, чтобы избавиться от дополнительных источников питания, которые сделают систему громоздкой.

Что касается программирования, в первую часть был включен массив библиотек, чтобы сделать программирование коротким и простым. Помимо очевидных, стоит упомянуть библиотеки Wire.h и SPI.h, потому что именно Wire.h позволяет Arduino взаимодействовать с устройствами I2C / TWI, такими как BMP-280 и ST7735 LCD и SPI.h обеспечивает последовательный периферийный интерфейс с ЖК-дисплеем ST7735. Во второй части инициализируются датчики, а макет, цвет шрифта и т. Д. ЖК-дисплея настраиваются для отображения данных в соответствии с нашими предпочтениями. В заключительной части нашего программирования выходные данные датчиков получаются и отображаются с удобной задержкой между каждым считыванием для обеспечения стабильности.

Строительство и тестирование

В прототипе компоненты сохранены модульными и соединены перемычками вместо пайки. Это не только упрощает поиск и устранение неисправностей и ремонт, но и упрощает процесс сборки. Корпус устройства был специально напечатан на 3D-принтере для идеальной совместимости с компонентами. Корпус снабжен соответствующей вентиляцией, чтобы подвергать датчики воздействию измеряемых величин и рассеивать тепло, выделяемое системой, которое в противном случае будет мешать чувствительным элементам. Устройство питается от разъема AUSB того же типа, что и mini USB типа B, который используется для программирования Arduino. Прототип тестировался в помещении в течение нескольких часов с использованием в качестве источника питания USB-порта ПК и зарядного устройства 5V для смартфона. Результаты довольно точны по сравнению с онлайн-метеорологическими данными, учитывая стоимость производства и время разработки.

Заключение

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

Чтобы купить электронные детали, закажите их в UTSOURCE

Библиография

· Google.com

· Arduino.cc

· Mytectutor.com


Код

  • КОД
КОД C / C ++
ЭТО СООТВЕТСТВУЮЩИЙ Эскиз для проекта, комментарии в комментариях ОБЪЯСНЯЮТ РАБОЧУЮ
 #include  // включить библиотеку последовательного периферийного интерфейса # include  // включить библиотеку двухпроводного интерфейса # include  // включить графическую библиотеку Adafruit # include  // включить библиотеку Adafruit ST7735 TFT # include  // включить библиотеку датчиков Adafruit BMP280 # include "DHT.h" // включить датчик DHTXX library # define DHTPIN 2 // вывод данных DHT11, подключенный к выводу Arduino D2 # define DHTTYPE DHT11 // указание типа используемого датчика DHT # define TFT_RST 8 // вывод TFT RST подключен к выводу Arduino D8 # define TFT_CS 10 // TFT Вывод CS подключен к выводу Arduino D9 # define TFT_DC 9 // Вывод TFT DC подключен к выводу Arduino D10 // инициализировать библиотеку TFT СЕРИИ ST7735Adafruit_ST7735 tft =Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST); // определение адреса I2C устройства:0x76 или 0x77 (0x77 - адрес библиотеки по умолчанию) #define BMP280_I2C_ADDRESS 0x76 Adafruit_BMP280 bmp280; // инициализировать библиотеку Adafruit BMP280DHT dht (DHTPIN, DHTTYPE); // инициализируем датчик DHT void setup (void) {dht.begin (); // синхронизируем датчик DHT tft.initR (INITR_144GREENTAB); // инициализируем микросхему ST7735S, черная вкладка tft.fillScreen (ST77XX_BLACK); // установка черного фона tft.drawFastHLine (0, 15, tft.width (), ST77XX_CYAN); // рисуем горизонтальную линию разделения в позиции (0, 15) tft.setTextColor (ST77XX_CYAN, ST77XX_BLACK); // установить цвет текста на белый и черный фон tft.setTextSize (1); // устанавливаем размер текста равным 1 //tft.setCursor(4, 0); // перемещаем курсор в позицию (4, 0) пиксель //tft.print("ARDUINO + ST7735 TFT "); tft.setCursor (25, 5); // перемещаем курсор в позицию (25, 5) пиксель tft.print ("WEATHER BUDDY"); // инициализируем датчик BMP280 if (bmp280.begin (BMP280_I2C_ADDRESS) ==0) {// ошибка подключения или неправильный адрес устройства! tft.setTextColor (ST77XX_RED, ST77XX_CYAN); // установить цвет текста на красный и черный фон tft.setTextSize (2); // устанавливаем размер текста равным 2 tft.setCursor (5, 76); // перемещаем курсор в позицию (5, 76) пикселя tft.print ("Connection"); tft.setCursor (35, 100); // перемещаем курсор в позицию (35, 100) пикселя tft.print ("Error"); в то время как (1); // оставаться здесь} tft.drawFastHLine (0, 55, tft.width (), ST77XX_CYAN); // рисуем горизонтальную разделительную линию в позиции (0, 55) пикселя tft.drawFastHLine (0, 95, tft.width (), ST77XX_CYAN); // рисуем горизонтальную разделительную линию в позиции (0, 195) пикселя tft.setTextColor (ST77XX_RED, ST77XX_BLACK); // установить цвет текста на красный и черный фон tft.setCursor (30, 20); // перемещаем курсор в позицию (30, 20) пикселя tft.print ("TEMPERATURE"); // установка заголовка для первого раздела tft.setTextColor (ST77XX_CYAN, ST77XX_BLACK); // установить цвет текста на голубой и черный фон tft.setCursor (40, 60); // перемещаем курсор в позицию (40, 60) пикселя tft.print ("ВЛАЖНОСТЬ"); // установка заголовка для второй секции tft.setTextColor (ST77XX_GREEN, ST7735_BLACK); // установить цвет текста на зеленый и черный фон tft.setCursor (40, 100); // перемещаем курсор в позицию (40, 100) пикселя tft.print ("PRESSURE"); // установка заголовка для третьего раздела tft.setTextSize (2); // установка размера текста на 2} // основной циклvoid loop () {char _buffer [8]; // считываем температуру, влажность и давление с датчика BMP280 float temp =bmp280.readTemperature (); // получить температуру в ° C float hum =dht.readHumidity (); // получить влажность в% отн. вл. float pres =bmp280.readPressure (); // получить давление в гПа // вывести температуру (в ° C) if (temp <0) // если температура <0 sprintf (_buffer, "-% 02u.% 02u", (int) abs (temp), (int) ) (абс (температура) * 100)% 100); else // если температура> =0 sprintf (_buffer, "% 02u.% 02u", (int) temp, (int) (temp * 100)% 100); // установка приближения значения tft.setTextColor (ST77XX_YELLOW, ST77XX_BLACK ); // установить цвет текста на желтый и черный фон tft.setCursor (11, 34); // перемещаем курсор в позицию (11,34) пикселя tft.print (_buffer); // вывод температуры с датчика БМП-280 tft.drawCircle (89, 34, 2, ST77XX_YELLOW); // выводим символ градуса (°) (можно опустить, если вместо него используется *) tft.setCursor (95, 34); // перемещаем курсор в позицию (95,34) пикселя tft.print ("C"); // выводим символ Цельсия // 2:выводим влажность (в%) sprintf (_buffer, "% 02u", (int) (hum)); // установка приближения значения tft.setTextColor (ST77XX_MAGENTA, ST77XX_BLACK); // установить цвет текста на пурпурный и черный фон tft.setCursor (45, 74); // перемещаем курсор в позицию (45,74) пикселя tft.print (_buffer); // выводить влажность с датчика DHT-11 tft.setCursor (75, 74); // перемещаем курсор в позицию (75,74) пикселя tft.print ("%"); // вывод символа процента // 3:давление печати (в гПа) sprintf (_buffer, "% 04u.% 02u", (int) (pres / 100), (int) ((uint32_t) pres% 100)); // установка приближения значения tft.setTextColor (ST77XX_ORANGE, ST77XX_BLACK); // установить цвет текста на оранжевый и черный фон tft.setCursor (3, 112); // перемещаем курсор в позицию (3,112) пикселя tft.print (_buffer); // вывод атмосферного давления с БМП-280 tft.setCursor (91, 112); // перемещаем курсор в позицию (91,112) пикселя tft.print ("hPa"); // вывести единицу атмосферного давления в виде гектопаскаль задержки (1000); // ждем 1 секунду перед снятием следующего показания датчика} 

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

ЭТО STL-ФАЙЛ ДЛЯ 3D-ПЕЧАТНЫХ ДЕТАЛЕЙ, которые я использовал

Схема

ВАМ ПРОСТО НУЖНО СЛЕДОВАТЬ ЗА ПОКАЗАННОЙ ПРОВОДКОЙ.

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

  1. Метеостанция Raspberry Pi 2
  2. Метеостанция Raspberry Pi
  3. Удаленный мониторинг погоды с помощью Raspberry Pi
  4. Метеостанция V 2.0
  5. Консоль редактирования DIY Photoshop с использованием Arduino Nano RP 2040
  6. 7-сегментный массив часов
  7. Портативная метеостанция Arduino (AWS) за 10 долларов
  8. eDOT - точные часы и метеостанция на базе Arduino
  9. FM-радио с использованием Arduino и RDA8057M
  10. Метеостанция ThingSpeak Arduino