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

Беспроводная метеостанция Arduino

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

Arduino Due
или Arduino Mega.
× 1
3,2 "TFT HX8357C
× 1
Модуль часов реального времени DS3231
× 1
Датчик температуры DHT22
× 1
Прорыв трансивера SparkFun - nRF24L01 +
× 1
Макет (общий)
× 1
Male-Header 36 Position 1 Row- Long (0.1 ")
7 контактов
× 1
Перемычки (общие)
несколько
× 1
Arduino Nano R3
× 1
Xiaomi Powerbank
× 1

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

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

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

  • Температура
  • Влажность
  • Ветер
  • Барометрическое давление
  • УФ-индекс
  • Дождь

На метеостанции, которую мы собираемся построить, мы собираемся измерять температуру и влажность в двух местах и ​​отображать текущую дату и время. Построить метеостанцию ​​очень просто. Но может ли производитель создать устройство с цветным TFT-дисплеем и функциями, соответствующими характеристикам коммерческого устройства? Ответ ДА! Благодаря мощности программного и аппаратного обеспечения с открытым исходным кодом можно легко построить эту впечатляющую метеостанцию!

Проект состоит из двух частей:передатчика и приемника.

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

Давайте построим этот проект!

Шаг 1. Получите все детали

Для создания этого проекта необходимы следующие части:

  • Arduino Due ▶ http://educ8s.tv/part/ArduinoDue
  • Arduino Mega ▶ http://educ8s.tv/part/ArduinoMega
  • Arduino Nano ▶ http://educ8s.tv/part/ArduinoNano
  • 3,2-дюймовый TFT-дисплей ▶ http://educ8s.tv/part/32TFT
  • DHT22 ▶ http://educ8s.tv/part/DHT22
  • NRF24L01 ▶ http://educ8s.tv/part/NRF24L01
  • DS3231 RTC ▶ http://educ8s.tv/part/DS3231
  • Макетная плата ▶ http://educ8s.tv/part/SmallBreadboard
  • Провода ▶ http://educ8s.tv/part/Wires
  • Пины заголовка ▶ http://educ8s.tv/part/HeaderPins
  • Xiaomi Powerbank ▶ http://educ8s.tv/part/Powerbank

Стоимость проекта около 40 $. Вы можете снизить стоимость проекта на 5 долларов, если будете использовать Arduino Mega вместо Arduino Due. Я решил использовать для приемника Arduino Due, потому что он очень быстрый и у него много памяти. Это будет очень полезно в будущем, когда мы добавим в проект больше функций.

Шаг 2:Датчик температуры и влажности - DHT22

DHT22 - очень популярный датчик температуры и влажности. Он дешевый, простой в использовании, а в спецификации заявлена ​​высокая точность и аккуратность.

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

Характеристики DHT22

  • Низкая стоимость
  • Питание от 3 до 5 В и ввод / вывод
  • Максимальный потребляемый ток 2,5 мА во время преобразования.
  • Показания влажности 0–100% с точностью 2–5%.
  • Показания температуры от -40 до 125 ° C с точностью ± 0,5 ° C
  • Медленно

Связь с Arduino чрезвычайно проста. Мы подключаем контакт датчика со знаком + к выходу 5V или 3.3V Arduino. Подключаем штифт датчика со знаком - к ЗАЗЕМЛЕНИЮ. Наконец, мы подключаем вывод OUT к любому цифровому выводу Arduino.

Чтобы использовать датчик DHT22 с Arduino, мы должны использовать библиотеку DHT.

https://github.com/adafruit/DHT-sensor-library

Шаг 3. Модуль часов реального времени DS3231

Модуль часов реального времени DS3231, как следует из названия, представляет собой часы реального времени. Используя аккумулятор, он может работать годами, так как потребляет минимальное количество энергии.

Стоимость модуля крайне низкая; с аккумулятором стоит около 2 $! Мы собираемся использовать его, чтобы следить за временем в нашем проекте метеостанции.

Шаг 4. NRF24L01 +:беспроводные модули

Модуль NRF24L01 - это недорогой модуль двунаправленного приемопередатчика. Стоимость менее 3 $! Он работает в диапазоне 2,4 ГГц и может достигать скорости передачи данных 2 Мбит! Впечатляет, не правда ли? Он использует интерфейс SPI для связи с Arduino, поэтому его очень легко использовать. Нам нужно подключить 7 из 8 контактов модуля, чтобы он работал с Arduino.

К сожалению, мы не можем подключить модуль к макетной плате, поэтому мы будем использовать провода «папа-мама» для подключения модуля к Arduino. Контакт номер 1 модуля - GND. Вы должны подключить его к Arduino Ground. Следующий вывод - Vcc. Вы должны подключить его к выходу 3.3V Arduino Uno. Будь осторожен! Не подключайте его к 5V, иначе вы сломаете свой модуль! Третий вывод называется CE, и вы можете подключить его к любому цифровому выводу, который вам нравится. В этом примере я собираюсь подключить его к цифровому контакту 7. Контакт 4 - это CS, и вы также можете подключиться к любому цифровому контакту. Я собираюсь подключиться к цифровому выводу 8. Следующий вывод - SCK, который подключается к цифровому выводу 13 Arduino Uno. Следующий вывод - это MOSI, который идет на цифровой вывод 11, и последний вывод в MISO, который идет на цифровой вывод 12. Вот и все!

Для удобства использования модуля с Arduino мы должны использовать следующую библиотеку:https://github.com/TMRh20/RF24

Если вы до сих пор не использовали модули NRF24L01 +, посмотрите прикрепленное видео, чтобы узнать, как его использовать при создании простого проекта. Это поможет вам понять, как это работает.

Шаг 5. Создание передатчика

Сначала построим передатчик. Все очень просто.

В качестве передатчика мы используем:

  • Arduino Nano
  • Датчик DHT22
  • Беспроводной модуль NRF24L01 +
  • Макет
  • Некоторые провода

Подключаем выходной контакт датчика к цифровому контакту 4 Arduino Nano. Подключаем землю и Vcc и все готово. Все, что нам осталось сделать, это подключить беспроводной модуль NRF24L01.

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

Вот и все, ваш передатчик готов. А теперь перейдем к приемнику.

Шаг 6. Создание приемника

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

  • Arduino Due или Mega
  • Модуль часов реального времени DS3231
  • Датчик температуры и влажности DHT22
  • Беспроводной модуль NRF24L01 +
  • Цветной TFT-дисплей с диагональю 3,2 дюйма.
  • Макет
  • 7 выводов заголовка
  • Некоторые провода

Сначала мы сгибаем 7 выводов заголовка и размещаем их на некоторых выводах Arduino Due. Нам нужно, чтобы один был заземлен, а другой - 3,3 В. Нам нужно два на выводах I2C. Нам нужны оставшиеся 3 контакта с цифровыми контактами с 6 по 8. Мы также должны припаять три провода к аппаратным контактам SPI контактов Arduino Due. Нам нужны MOSI, MISO и SCK. Внимательно проверьте диаграмму. Подключаем провода к контактам заголовка, и мы готовы прикрепить дисплей.

Подключение DS3231

  • Вывод VCC на выходе Arduino 3,3 В
  • Контакт GND к GND Arduino и
  • Вывод SDA (последовательная линия данных) на вывод SDA Arduino и
  • Контакт SCL (Последовательная линия синхронизации) к контакту SCL Arduino

Подключение датчика DHT22

  • Вывод VCC на выходе Arduino 3,3 В
  • Контакт GND к GND Arduino и
  • выходной контакт к цифровому контакту 8 Arduino

Подключение модуля NRF24L01

  • Контакт GND к GND Arduino
  • Вывод VCC на Arduino 3,3 В
  • 3-й контакт к цифровому контакту 6 Arduino
  • 4-й контакт к цифровому контакту 7 Arduino
  • 5-й контакт к контакту SCK, который мы припаяли
  • 6-й контакт к контакту MOSI, который мы припаяли
  • 7-й контакт к MISO-контакту, который мы припаяли

Шаг 7. Код передатчика

Прежде всего, нам необходимо скачать библиотеку RF24, чтобы облегчить себе жизнь при работе с беспроводными модулями NRF24L01. Также нам понадобится библиотека DHT для датчика DHT22.

  • Библиотека DHT22: https://github.com/adafruit/DHT-sensor-library

Давайте сначала посмотрим код передатчика. Он отправляет простую структуру данных, которая содержит два поплавка, температуру и влажность.

Чтобы установить канал связи, мы должны создать «канал» между двумя модулями. У этой трубы должен быть адрес. Оба модуля должны писать и читать из одного и того же канала для связи. Это первое, что мы определяем в нашем коде. Мы устанавливаем адрес канала равным «0». Затем мы определяем канал, по которому хотим общаться с другим модулем. Чип NRF24L01 поддерживает 126 различных каналов. Оба модуля должны использовать один и тот же канал для связи друг с другом. В этом примере я использую канал 115. Затем я определяю, что хочу использовать максимальную мощность передачи, которую предлагает модуль. Он потребляет больше энергии, но расширяет диапазон связи. Затем мы определяем скорость передачи данных. Я установил его на 250 Кбит / с, что является минимально возможной скоростью передачи данных для достижения лучшего диапазона. Следующим шагом будет открытие канала, чтобы написать в него позже.

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

FU361QHIQFCEYSE.ino

Шаг 8. Код получателя

Теперь посмотрим код получателя. Нам нужно 4 библиотеки. Сначала нам нужно скачать библиотеку для отображения по этой ссылке:

Библиотека DISPLAY: https://github.com/Bodmer/TFT_HX8357_Due

После загрузки библиотеки необходимо открыть файл User_Setup.h. Строка комментария 13 и строка раскомментирования 14, потому что на нашем дисплее используется драйвер HX8357C. Теперь мы можем продолжить с тремя другими библиотеками. Нам нужна одна библиотека для часов реального времени, одна для датчика DHT22 и, наконец, одна для беспроводного модуля.

  • NRF24L01:https://github.com/TMRh20/RF24
  • DHT22:https://github.com/adafruit/DHT-sensor-library
  • DS3231:https://github.com/SodaqMoja/Sodaq_DS3231

Давайте посмотрим на код. Первое, что нам нужно сделать, это установить время в модуле часов реального времени, если оно еще не установлено. Для этого введите текущую дату и время в setRTCTime функцию, раскомментируйте setRTCTime вызов функции в строке 54 и загрузка программы в Arduino. Теперь время установлено. Но тогда мы должны прокомментировать setRTCTime вызов функции еще раз и еще раз загрузите программу в Arduino.

Код ресивера работает следующим образом. В функции настройки мы инициализируем все датчики и модули и распечатываем пользовательский интерфейс. Затем, в функции цикла, мы постоянно проверяем наличие новых беспроводных данных. Если есть новые данные, мы сохраняем эти данные в переменных и выводим их на дисплей. Мы считываем температуру и влажность раз в минуту и ​​обновляем данные на дисплее только в случае изменения значений. Таким образом мы еще больше уменьшаем мерцание дисплея! Я также подготовил версию кода с отображением температуры в градусах Фаренгейта. Вы можете найти обе версии кода, прикрепленные к этому руководству.

F053BTXIQFCEZ09.ino FNV3X4LIQFCEZ0C.ino

Шаг 9:Тестирование проекта

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

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

Как видите, этот проект - отличная демонстрация того, на что способно оборудование и программное обеспечение с открытым исходным кодом. За несколько часов можно построить такой впечатляющий проект! Конечно, это только начало. Мы можем добавить в проект еще много функций. Я скоро добавлю кнопку, чтобы мы могли отображать графики и иметь разные режимы. Мы также можем добавить дополнительные датчики, регистрацию данных, подключение к Интернету и так далее. Мы используем Arduino Due, поэтому у нас достаточно памяти для реализации многих других вещей. Хотелось бы услышать ваше мнение об этом проекте. Каким вы хотите видеть его развитие? Пожалуйста, разместите свои комментарии или идеи в разделе комментариев ниже!

Если вы хотите получить более подробную информацию, посмотрите видео на YouTube во введении или посетите мой веб-сайт. Спасибо, что посмотрели!

Код

Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library
Github
https://github.com/TMRh20/RF24https://github.com/TMRh20/RF24
Github
http:// DISPLAY:% 20https://github.com/Bodmer/TFT_HX8357_Duehttp:// DISPLAY:% 20https://github.com/Bodmer/TFT_HX8357_Due
Github
https://github.com/SodaqMoja/Sodaq_DS3231https://github.com/SodaqMoja/Sodaq_DS3231

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

  1. Метеостанция Raspberry Pi 2
  2. Метеостанция Raspberry Pi
  3. Метеостанция V 2.0
  4. Цифровые игральные кости Arduino
  5. Железный человек
  6. Найди меня
  7. Роботизированная рука, напечатанная на 3D-принтере Arduino
  8. Управление увлажнителем Arduino
  9. Портативная метеостанция Arduino (AWS) за 10 долларов
  10. eDOT - точные часы и метеостанция на базе Arduino