AirOwl: мониторинг качества воздуха в реальном времени для здорового дыхания
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino 101 (Genuino 101) | 1 |
| Пылевой датчик ZH03A | 1 |
| Adafruit Flora RGB NeoPixel LED (набор из 4) | 1 |
| Перемычки (набор) | 10 |
| Резистор 10 кОм | 3 |
Приложения и сервисы
- Blynk (через BLE)
- Arduino IDE
О проекте
AirOwl — устройство для мониторинга качества воздуха в реальном времени. Оно считывает данные с датчика и выводит их в приложении Blynk через BLE Arduino/Genuino 101. Проект помогает узнать, что мы дышим!
Человеческая деятельность влияет на окружающую среду. Мы решили создать прибор, позволяющий оценивать состояние окружения и принимать меры.
Способы индикации качества воздуха
- Приложение Blynk (BLE) — графики и числовые значения.
- Цвет «глаз» AirOwl (NeoPixel):
- Зелёный — среда безопасна.
- Синий — требуется внимание.
- Красный — опасность.
- Serial Monitor — текстовый вывод значений.
Схемы и дизайн
Полные схемы и дизайн: GitHub.
Даташит датчика пыли ZH03A: ссылка.
Настройка Blynk
- Установите Blynk: Google Play / App Store.
- Создайте аккаунт.
- New Project → выберите плату, задайте имя.
- Нажмите Create — на email придёт Auth Token.
- В рабочем пространстве: Add → BLE + 3 Gauge.
- Настройте пины Gauge: V1, V2, V3 соответственно.
- Нажмите Bluetooth-иконку для подключения (Bluetooth на телефоне должен быть включён).
- Запустите проект (Play).
Также доступна схема для макетной платы, PCB-схема, board-файл и 3D-модель — всё на GitHub.
Код (C/C++)
/* Copyright (C) 2017 Anith Patel and Sohil Patel. GNU FDL v1.3+ */
#include <BlynkSimpleCurieBLE.h>
#include <CurieBLE.h>
#define BLYNK_SERIAL Print
byte data[24];
unsigned int PM1 = 0, PM25 = 0, PM10 = 0, count = 0;
const int PIN1 = 3, PIN2 = 5, PIN3 = 6;
char auth[] = "Auth key"; // вставьте свой Auth Token от Blynk
BLEPeripheral blePeripheral;
void setup() {
blePeripheral.setLocalName("Airowl");
blePeripheral.setDeviceName("Airowl");
blePeripheral.setAppearance(384);
Blynk.begin(blePeripheral, auth);
blePeripheral.begin();
Serial1.begin(9600);
Serial.begin(9600);
pinMode(PIN1, OUTPUT);
pinMode(PIN2, OUTPUT);
pinMode(PIN3, OUTPUT);
}
void loop() {
Blynk.run();
blePeripheral.poll();
Serial.println("Concentration of PM1 is:");
Serial.println(PM1/count);
Serial.println("Concentration of PM25 is:");
Serial.println(PM25/count);
Serial.println("Concentration of PM10 is:");
Serial.println(PM10/count);
delay(500);
WriteData();
// Логика индикации
unsigned int avg = (PM1 + PM25 + PM10) / 3;
if (avg <= 100) LedColor(0, 255, 0); // Зелёный
else if (avg <= 300) LedColor(255, 0, 0); // Красный
else LedColor(0, 0, 255); // Синий
delay(500);
}
void LedColor(int red, int blue, int green) {
analogWrite(PIN1, red);
analogWrite(PIN2, blue);
analogWrite(PIN3, green);
}
void getWinsenData(void) {
byte i = 0;
int checksum = 0;
Serial1.flush();
while (Serial1.available()) {
data[i] = Serial1.read();
if (i <= 21) checksum += data[i];
if (i == 23) {
if (checksum == ((256 * data[22]) + data[23])) {
if (data[0] == 66 && data[1] == 77) {
PM1 += ((data[4] * 256) + data[5]);
PM25 += ((data[6] * 256) + data[7]);
PM10 += ((data[8] * 256) + data[9]);
count++;
Serial1.flush();
break;
}
} else break;
}
i++;
delay(10);
}
}
void WriteData() {
getWinsenData();
Blynk.virtualWrite(V1, PM1/count);
Blynk.virtualWrite(V2, PM25/count);
Blynk.virtualWrite(V3, PM10/count);
delay(1000);
}
Ресурсы
Производственный процесс
- Носовые зажимы (Toe Clamps): особенности, выгоды и как выбрать правильный
- Предиктивное обслуживание: эффективность и снижение рисков через данные
- 7 ключевых React-библиотек, которые должен освоить каждый разработчик
- Раскройте истинную стоимость вашего бизнеса: руководство для малых и средних производителей
- Кнопки-опоры для приспособлений: назначение, принцип работы и отличия от резьбовых
- Двигатели AC и DC: ключевые отличия и как выбрать правильный
- Мастерство изготовления ПП: ключевые советы для успешного прототипирования
- Финансирование оборудования 101: экономия, снижение рисков, безопасность бизнеса
- Основное руководство по погружным моторным насосам: особенности, работа и установка
- Центробежные насосы: ключевые особенности, применение и преимущества