Оглавление:
Видео: Станция мониторинга пылевых частиц с питанием от Arduino: 4 шага (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Вы можете довольно легко создать DIY-устройство для Интернета вещей, которое отслеживает загрязнение пыли в вашем доме, менее чем за 50 долларов и получать уведомления, когда уровень пыли становится слишком высоким, чтобы вы могли проветрить комнату, или вы можете установить его снаружи и получать уведомление, если это безопасно выходить на улицу, если вы живете в сильно загрязненном районе.
Я сделал это как школьный проект, поэтому у меня не было достаточно времени, чтобы найти службу, которая будет принимать сообщения MQTT и отправлять их вам в виде уведомлений или электронных писем.
Также обратите внимание, что постоянное питание датчика сокращает срок службы вентилятора.
Шаг 1: Необходимые детали
Что тебе понадобится
- Ардуино Уно
- Шилд Arduino Ethernet
- Лазерный датчик твердых частиц (обычно стоит 10-30 долларов на eBay / aliexpress)
- Датчик температуры и влажности DHT11 (опция)
- Макетная плата
- Соединительные кабели
Шаг 2: соберите детали
Во-первых, вам нужно подключить экран Ethernet к Arduino.
Датчик PM имеет несколько проводов, но нам нужны VCC, GND, TX, RX.
Подключите VCC и GND к + и - на макетной плате соответственно.
Arduino имеет аппаратные контакты RX и TX, но мы будем использовать программную эмуляцию контактов RX и TX на контактах 2 и 3 соответственно. Подключите RX датчика к TX Arduino и TX датчика к RX Arduino.
Если вы собираетесь использовать датчик температуры, подключите линии VCC и GND к + и - на макетной плате, а линию данных к контакту 7.
Шаг 3: Код
Вы можете установить брокер MQTT на Raspberry Pi или на компьютер, который у вас всегда есть дома, или использовать облачный сервис MQTT, например Cloud MQTT. Затем вы можете написать сценарий, который отправляет данные как HTTP на веб-перехватчик IFTT, поскольку он еще не поддерживает веб-перехватчик MQTT, и настраивает уведомления, когда уровень пыли в вашем доме становится слишком высоким.
Аэродром Ардуино
#включают |
#включают |
#включают |
#включают |
#включают |
#включают |
#включают |
#включают |
# defineDHT11_PIN7 |
# defineRX_PIN2 |
# defineTX_PIN3 |
IP-адрес ip (169, 169, 100, 98); |
byte mac = { |
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 |
}; |
constchar * mqtt_server = "m23.cloudmqtt.com"; |
constint mqtt_port = 11895; |
constchar * mqtt_user = "jhetjewk"; |
constchar * mqtt_pass = "QB2p9PiMV6pn"; |
constchar * mqtt_client_name = "arduinoClient1"; // Клиентские подключения не могут иметь одно и то же имя подключения |
EthernetClient ethClient; |
Клиент PubSubClient (ethClient); |
SoftwareSerial pmSerial (RX_PIN, TX_PIN); |
dht DHT; |
int pm1; |
int pm2_5; |
int pm10; |
unsignedlong id; |
// Файл myFile; |
String s; |
StaticJsonBuffer <200> jsonBuffer; |
JsonObject & root = jsonBuffer.createObject (); |
voidsetup () { |
Serial.begin (57600); |
pmSerial.begin (9600); |
id = 0; |
pm1 = 0; |
pm2_5 = 0; |
pm10 = 0; |
если (Ethernet.begin (mac) == 0) |
{ |
Serial.println («Не удалось настроить Ethernet с помощью DHCP»); |
// попытка с фиксированным IP-адресом |
Ethernet.begin (mac, ip); |
} |
client.setServer (mqtt_server, mqtt_port); |
client.setCallback (обратный вызов); |
задержка (2000); |
Serial.println (Ethernet.localIP ()); |
client.connect ("arduinoClient", mqtt_user, mqtt_pass); |
Serial.print ("rc ="); |
Serial.print (client.state ()); |
Serial.print ("\ n"); |
} |
voidloop () { |
intindex = 0; |
значение символа; |
char previousValue; |
если (! client.connected ()) |
{ |
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println («подключен»); |
} |
} |
while (pmSerial.available ()) { |
значение = pmSerial.read (); |
if ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) { |
Serial.println («Не удается найти заголовок данных.»); |
возвращение; |
} |
if (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) { |
previousValue = значение; |
} |
elseif (index == 5) { |
pm1 = 256 * предыдущее значение + значение; |
корень ["pm1"] = abs (pm1); |
} |
elseif (index == 7) { |
pm2_5 = 256 * предыдущее значение + значение; |
корень ["pm2_5"] = абс (pm2_5); |
} |
elseif (index == 9) { |
pm10 = 256 * предыдущее значение + значение; |
корень ["pm10"] = abs (pm10); |
} |
elseif (index> 15) { |
перерыв; |
} |
index ++; |
} |
а (pmSerial.available ()) pmSerial.read (); |
int chk = DHT.read11 (DHT11_PIN); |
if (DHT.температура == -999 || DHT.влажность == -999) { |
корень ["температура"] = "Н / Д"; |
корень ["влажность"] = "Н / Д"; |
} еще { |
корень ["температура"] = DHT.температура; |
корень ["влажность"] = DHT.влажность; |
} |
sendResults (); |
id ++; |
задержка (5000); |
} |
voidsendResults () { |
// публикуем в MQTT |
char jsonChar [100]; |
root.printTo (jsonChar); |
Serial.println (client.publish ("arduino", jsonChar)); |
// отладка на серийный номер |
root.printTo (серийный); |
Serial.print ('\ n'); Серийный принт ('\ n'); |
} |
// Обрабатывает сообщения, полученные по темам, на которые подписаны |
voidcallback (char * topic, byte * payload, unsignedint length) { |
} |
просмотреть rawair_quality.ino, размещенный на ❤ на GitHub
Шаг 4: соберите коробку
Я просто использовал коробку, в которой валялся, и просверлил отверстие для датчика, из которого он мог забирать воздух, и вырезал отверстие для выхода кабелей (хотя оно было слишком большим).
Я использовал клейкие подушечки, чтобы прикрепить датчик к коробке, совместив входное отверстие датчика с просверленным отверстием на коробке.
Наконец, я подключил сетевой кабель и кабель питания.
Рекомендуемые:
Портативное измерение мелких частиц: 4 шага (с изображениями)
Портативное устройство измерения мелких частиц: цель этого проекта - измерить качество воздуха путем измерения количества мелких частиц. Благодаря портативности можно будет проводить измерения дома или в дороге. Качество воздуха и мелкие частицы: твердые частицы (
Палочка для мониторинга влажности почвы Arduino - никогда не забывайте поливать растения: 4 шага (с изображениями)
Палка для мониторинга влажности почвы Arduino - никогда не забывайте поливать растения: вы часто забываете поливать комнатные растения? Или, может быть, вы уделяете им слишком много внимания и поливаете их? Если да, то вам следует сделать себе палку для контроля влажности почвы на батарейках. Этот монитор использует емкостную влажность почвы
Приступаем к созданию станции мониторинга PM: 3 шага (с изображениями)
Приступите к созданию станции мониторинга PM: меня особенно интересуют уровни загрязнения воздуха, потому что я живу в Китае, и хотя мой город, Шэньчжэнь, вероятно, является одним из самых чистых городов Китая, у него все еще бывают плохие дни. хотел построить свой, чтобы сравнить с полдюжиной воздушных
Управление светодиодной матричной матрицей с помощью Arduino Uno (лицо робота с питанием от Arduino): 4 шага (с изображениями)
Управление массивом светодиодных матриц с помощью Arduino Uno (лицо робота с питанием от Arduino): в этом руководстве показано, как управлять массивом светодиодных матриц 8x8 с помощью Arduino Uno. Это руководство можно использовать для создания простого (и относительно дешевого) дисплея для ваших собственных проектов. Таким образом вы можете отображать буквы, цифры или настраиваемые анимации
Плата проекта с питанием / паяльная станция: 9 шагов
Powered Project Board / Паяльная станция: Это моя новая проектная плата / паяльная станция. Это просто потрясающе! До недавнего времени я жил в доме без мастерской. Все мои большие проекты приходилось делать в навесе для машины, что отстой, когда ты живешь в месте, где ветрено и дождливо, как