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

Портативная метеостанция Arduino (AWS) за 10 долларов

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

Arduino Nano R3
× 1
Датчик температуры DHT22
× 1
bmp180
× 1
Стандартный ЖК-экран Adafruit - 16x2, белый на синем
× 1

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

Паяльник (общий)

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

IDE Arduino

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

Недавно в моем колледже была небольшая научная выставка. Так что мой учитель попросил меня представить в колледже проект по обучению молодых студентов электронике, так что у меня было два дня, чтобы что-то сделать.

Поскольку климатические условия здесь очень разные, и в последнее время температура составляет около 34-40 градусов по Цельсию. Поэтому я решил сделать метеостанцию.

Так что же делает метеостанция?

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

Датчики типа

  • Ветер
  • Влажность
  • Дождь
  • Температура
  • Давление
  • Высота

Задача - сделать переносную метеостанцию ​​

Функции, которые он должен иметь

  • Температура
  • Влажность
  • Давление
  • Высота

Шаг 1. Ингредиенты:время покупать продукты

Вот что нам понадобится для проекта

Я действительно начал проект на My UNO, но затем решил перейти на компактное решение.

В тот момент у меня был с собой nano, так что пришлось с ним отказаться, я бы хотел использовать micro, потому что он самый маленький.

В любом случае, оставив это, поговорим о бюджете и деталях. Вот список.

  • Датчик температуры и влажности DHT22 -> 3 доллара США.
  • Датчик давления BMP180 (BMP280 дешевле, но дороже в моем районе)> 2,00 доллара США.
  • Arduino Nano> 1,89 доллара США.
  • Пайка
  • ЖК-дисплей с драйвером I2C> 3,0 долл. США.
  • Veroboard
  • Женский заголовок

Для завершения инструмента вам понадобится

  • Паяльник
  • Носогубцы
  • Провода

И еще некоторое время

Шаг 2:Температура и влажность - DHT22

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

Самые популярные - DHT22, DHT11, SHT1x

Итак, давайте разберемся, чем эти датчики отличаются друг от друга и почему я вообще использовал DHT22.

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

Каждый датчик этой модели имеет температурную компенсацию и калибровку в точной калибровочной камере, а калибровочный коэффициент сохраняется в виде программы в памяти OTP, когда датчик обнаруживает, он будет ссылаться на коэффициент из памяти. Небольшой размер, низкое потребление и большое расстояние передачи (100 м) позволяют AM2302 подходить для всех видов жестких условий эксплуатации. Однорядная упаковка с четырьмя выводами, что делает подключение очень удобным.

Давайте посмотрим на некоторые плюсы и минусы этих трех.

DHT11

Плюсы : Не требует пайки. Самый дешевый из трех. Получите стабильный результат быстро. Трансмиссия более 20м. Сильное вмешательство.

Минусы : Библиотека! Нет варианта разрешения. Ошибки:Температура +/- 2 ° C; Влажный +/- 5% относительной влажности. Несоответствующий диапазон измерения (0-50 ° C). Приложения : Садоводство, сельское хозяйство.

DHT22

Плюсы : Не требует пайки. Добавьте несколько долларов к DHT11 и получите обновление. Плавная кривая. Наименьшая ошибка. Большой ассортимент. Трансмиссия более 20м. Сильное вмешательство.

Минусы : Может быть более чувствительным. Медленное отслеживание температуры. Нужна библиотека. Приложения : Мониторинг окружающей среды. SHT1x

Плюсы : Нет пайки. Плавная кривая. Небольшая ошибка. Быстрый ответ. Низкое энергопотребление. Автоматический сон. Чрезвычайно долговременная стабильность и постоянство.

Минусы : Два цифровых интерфейса. Ошибка влажности. Такой же диапазон измерения с DHT11. Нужна библиотека. Области применения : Тяжелые условия и длительная установка. Ниже приведены три относительно дешевых варианта.

Подключение

Vcc на 5 В или 3,3 В

Земля на землю

Данные на вывод 2 Arduino

Шаг 3. Барометр и датчик давления - BMP180

BMP180 - датчик барометрического давления с интерфейсом I2C («Wire»).

Датчики атмосферного давления измеряют абсолютное давление воздуха вокруг них. Это давление зависит от погоды и высоты над уровнем моря.

Этот модуль bmp180 поставлялся с регулятором 662k на 3,3 В, который я взорвал до некоторой глупости, поэтому я подключил провод, чтобы пропустить весь vcc напрямую к микросхеме.

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

Другая модель может не иметь стабилизатора напряжения 662k. так что внимательно проверьте.

Хорошо, возвращаясь, давайте подключим датчик к Arduino.

Датчик подключается к шине i2c на Arduino, который из nano и Uno

SDA ==> A4

SCL ==> A5

VCC ==> 3,3 В

GND ==> GND

Давайте немного поговорим о давлении и о том, как давление измеряет высоту и температуру.

Атмосферное давление в любом месте непостоянно. Сложное взаимодействие между вращением Земли, наклоном оси и многими другими факторами приводит к перемещению областей с повышенным и пониженным давлением, что, в свою очередь, вызывает изменения погоды, которые мы наблюдаем каждый день. Наблюдая за изменениями давления, вы можете прогнозировать краткосрочные изменения погоды.

Например, падение давления обычно означает, что влажная погода или приближается шторм (входит система низкого давления). Повышение давления обычно означает приближение ясной погоды (движется система высокого давления).

Атмосферное давление также зависит от высоты. Абсолютное давление в базовом лагере на горе Северест (5400) ниже, чем в Дели (216)

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

Измерение высоты

Среднее давление атмосферы на уровне моря составляет 1013,25 гПа (или мбар). Это падает до нуля, когда вы поднимаетесь в вакуум космоса. Поскольку кривая этого падения хорошо изучена, вы можете вычислить разницу высот между двумя измерениями давления (p и p0), используя следующее уравнение:

alti =44330 * [1- (p / p0) ^ (1 / 5.255)]

Если вы используете давление на уровне моря (1013,25 гПа) в качестве базового давления (p0), выходом уравнения будет ваша текущая высота над уровнем моря.

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

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

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

Держите его сухим :BMP180 чувствителен к влаге. Не погружайте его в воду и не допускайте контакта с жидкой водой.

Не слепите: Удивительно, но кремний внутри BMP180 чувствителен к свету, который может попасть в устройство через отверстие в верхней части чипа. Для максимальной точности защитите чип от окружающего света.

Шаг 4:Создание схемы

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

. для подключения данных к земле требовалось сопротивление 10 кОм. Затем мы все спаяли. Затем пришло время для bmp180, мы добавили заголовок аналогичным образом. Мы использовали 3,3 В в качестве источника питания. Мы подключили всю шину i2c.

Наконец, мы добавили дисплей, который мы используем i2c lcd, поэтому мы использовали ту же шину, что и для модуля bmp180.

( Есть четвертый слот, в который я хотел позже добавить модуль rtc, чтобы часы на машине не работали)

Шаг 5. Время писать код

Подождите ....................

Скачать библиотеки

bmp180

https://github.com/sparkfun/BMP180_Breakout_Arduin ...

BMP180_Breakout_Arduino_Library-master.zip

Библиотека Dht22

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

Чтобы установить библиотеку в Arduino, проверьте эту ссылку

https://www.arduino.cc/en/Guide/Libraries

Я использовал arduino 1.6.5, поэтому код наверняка будет работать для этой версии, также может быть и для более высокой версии, если в любом случае он не работает, используйте 1.6.5 в качестве базовой версии.

  

#include #include #include #include "DHT.h" #include

Давление SFE_BMP180;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Добавьте свой адрес здесь. # определить Rs_pin 0 # определить Rw_pin 1 # определить En_pin 2 # определить BACKLIGHT_PIN 3 # определить D4_pin 4 # определить D5_pin 5 # определить D6_pin 6 # определить D7_pin 7

#define DHTPIN 2 // какой цифровой контакт, к которому мы подключены

// Раскомментируйте любой тип, который вы используете! // # определить DHTTYPE DHT11 // DHT 11 # определить DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht (DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); float t1, t2;

void setup () {Serial.begin (9600); lcd.begin (16,2); // <<- наш ЖК-дисплей имеет размер 20x4, при необходимости измените его на свой ЖК-дисплей // Подсветка ЖК-дисплея ONlcd.setBacklightPin (BACKLIGHT_PIN, POSITIVE); lcd.setBacklight (HIGH); lcd.home (); // идем домой на LCDlcd.print ("Метеостанция"); delay (5000); dht.begin (); pressure.begin (); } void loop () {статус символа; двойной T, P, p0, a; status =pressure.startTemperature (); если (статус! =0) {задержка (статус);

status =pressure.getTemperature (T); если (статус! =0) {Serial.print ("1"); lcd.clear (); lcd.setCursor (0,0); lcd.print («Барометрическая температура:»); lcd.setCursor (0,1); lcd.print (Т, 2); lcd.print («градус Цельсия»); t1 =T; задержка (3000);

status =pressure.startPressure (3); if (status! =0) {// Дождемся завершения измерения:delay (status);

status =pressure.getPressure (P, T); если (статус! =0) {lcd.clear (); lcd.setCursor (0,0); lcd.print ("абсолютное давление:"); lcd.setCursor (0,1); lcd.print (П, 2); lcd.print ("мб"); delay (3000);

p0 =pressure.sealevel (P, ВЫСОТА); // мы находимся на высоте 1655 метров (Боулдер, Колорадо)

a =pressure.altitude (P, p0); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Высота:"); lcd.setCursor (0,1); lcd.print (a, 0); lcd.print («метры»); задержка (3000); }}}} float h =dht.readHumidity (); // Считываем температуру в градусах Цельсия (по умолчанию) float t =dht.readTemperature (); t2 =t; lcd.clear (); lcd.setCursor (0,0); // перейти к началу 2-й строки lcd.print ("Humidity:"); lcd.setCursor (0,1); lcd.print (h); lcd.print ("%"); задержка (3000); lcd.clear (); lcd.setCursor (0,0); // перейти к началу 2-й строки lcd.print ("DHT Tempurature:"); lcd.setCursor (0,1); lcd.print (т); lcd.print («градус Цельсия»); задержка (3000); lcd.clear (); lcd.setCursor (0,0); // перейти к началу 2-й строки lcd.print ("Mean Tempurature:"); lcd.setCursor (0,1); lcd.print ((t1 + t2) / 2); lcd.print («градус Цельсия»); задержка (3000);}

FSIULGKING9D7SD.ino


Код

  • Фрагмент кода №1
Фрагмент кода №1 Обычный текст
 

#include #include #include #include "DHT.h" #include

SFE_BMP180 pressure;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Добавьте сюда свой адрес. #define Rs_pin 0 # define Rw_pin 1 #define En_pin 2 # define BACKLIGHT_PIN 3 # define D4_pin 4 # define D5_pin 5 # define D6_pin 6 # define D7_pin 7

#define DHTPIN 2 // what digital pin we ' повторно подключен к

// Раскомментируйте любой тип, который вы используете! // # определить DHTTYPE DHT11 // DHT 11 # определить DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht (DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); float t1, t2;

void setup () {Serial.begin (9600); lcd.begin (16,2); // <<- наш ЖК-дисплей имеет размер 20x4, при необходимости измените его на свой ЖК-дисплей // Подсветка ЖК-дисплея ONlcd.setBacklightPin (BACKLIGHT_PIN, POSITIVE); lcd.setBacklight (HIGH); lcd.home (); // идем домой на LCDlcd.print ("Метеостанция"); delay (5000); dht.begin (); pressure.begin (); } void loop () {статус символа; двойной T, P, p0, a; status =pressure.startTemperature (); если (статус! =0) {задержка (статус);

status =pressure.getTemperature (T); если (статус! =0) {Serial.print ("1"); lcd.clear (); lcd.setCursor (0,0); lcd.print («Барометрическая температура:»); lcd.setCursor (0,1); lcd.print (Т, 2); lcd.print («градус Цельсия»); t1 =T; задержка (3000);

status =pressure.startPressure (3); if (status! =0) {// Дождемся завершения измерения:delay (status);

status =pressure.getPressure (P, T); если (статус! =0) {lcd.clear (); lcd.setCursor (0,0); lcd.print ("абсолютное давление:"); lcd.setCursor (0,1); lcd.print (П, 2); lcd.print ("мб"); delay (3000);

p0 =pressure.sealevel (P, ВЫСОТА); // мы находимся на высоте 1655 метров (Боулдер, Колорадо)

a =pressure.altitude (P, p0); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Высота:"); lcd.setCursor (0,1); lcd.print (a, 0); lcd.print («метры»); задержка (3000); }}}} float h =dht.readHumidity (); // Считываем температуру в градусах Цельсия (по умолчанию) float t =dht.readTemperature (); t2 =t; lcd.clear (); lcd.setCursor (0,0); // перейти к началу 2-й строки lcd.print ("Humidity:"); lcd.setCursor (0,1); lcd.print (h); lcd.print ("%"); задержка (3000); lcd.clear (); lcd.setCursor (0,0); // перейти к началу 2-й строки lcd.print ("DHT Tempurature:"); lcd.setCursor (0,1); lcd.print (т); lcd.print («градус Цельсия»); задержка (3000); lcd.clear (); lcd.setCursor (0,0); // перейти к началу 2-й строки lcd.print ("Mean Tempurature:"); lcd.setCursor (0,1); lcd.print ((t1 + t2) / 2); lcd.print («градус Цельсия»); задержка (3000);}

Github
https://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.ziphttps://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.zip
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library

Схема


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

  1. Метеостанция Raspberry Pi 2
  2. Метеостанция Raspberry Pi
  3. Метеостанция V 2.0
  4. Цифровая командная станция DCC Model Rail Arduino и бесплатное приложение
  5. 6-Shooter:станция для смешивания напитков Arduino
  6. Цифровые игральные кости Arduino
  7. Портативное емкостное сенсорное пианино
  8. Игровой контроллер Arduino
  9. Переносимый детектор дальности
  10. Игра Pixel Chaser