2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05
Вы можете довольно легко создать 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 / Паяльная станция: Это моя новая проектная плата / паяльная станция. Это просто потрясающе! До недавнего времени я жил в доме без мастерской. Все мои большие проекты приходилось делать в навесе для машины, что отстой, когда ты живешь в месте, где ветрено и дождливо, как
