Ср ноя 03, 2021 21:38:47
Чт ноя 04, 2021 05:00:18
Чт ноя 04, 2021 14:49:30
Чт ноя 04, 2021 19:56:26
. Качество воздуха (противопожарка)
Чт ноя 04, 2021 20:57:11
Пт ноя 05, 2021 15:00:46
Ср ноя 10, 2021 00:14:17
Пт фев 04, 2022 22:40:42
// Для китайского контроллера LGT8F328P. Тактовая 32 мГц
#include <WDT.h>
#include "DHTStable.h"
#include "BMP085.h" //BMP-180 подключаем через I2C (SCL,SDA)
#include <Wire.h>
#include <ModbusRtu.h> //Протокол ModbusRTU
#define TXEN 7 //Нога для управления трансивером прием/передача
#define DEV_ID 1 //Номер устройства
#define Air_Quality A0 //Нога датчика качества воздуха (пропан-бутан и угарный газ)
#define DHT22_PIN 12 //Нога DHT-22
uint16_t fld_data[4] = {0,0,0,0}; //Массив для передачи
DHTStable DHT;
BMP085 myBarometer; //Подключен к i2c
Modbus slave(DEV_ID,0,TXEN);
void setup() {
analogReference(INTERNAL4V096); //Внутренний опорник на 4,096V
wdt_enable(WTO_8S); //Сторожевой таймер на 8 сек.
pinMode(Air_Quality,INPUT);
pinMode(LED_BUILTIN,OUTPUT);
Serial.begin(115200);
myBarometer.init(); //Инициализация BMP180
slave.start(); //Запуск ModbusRTU
}
void loop() {
wdt_reset(); // Сброс сторожевого таймера
delay(500);
DHT.read22(DHT22_PIN);
fld_data[0] = analogRead(Air_Quality); // Текущее значение с датчиков пишем в массив
fld_data[1] = DHT.getHumidity()*10;
fld_data[2] = DHT.getTemperature();
fld_data[2] = ((fld_data[2]+myBarometer.bmp085GetTemperature(myBarometer.bmp085ReadUT())) / 2)*10;
fld_data[3] = (myBarometer.bmp085GetPressure(myBarometer.bmp085ReadUP())/133.3223684)*10; //Переводим в мм.ртст
digitalToggle(LED_BUILTIN); //Моргаем
slave.poll(fld_data,4);
digitalToggle(LED_BUILTIN); //Моргаем
}
Вс фев 06, 2022 16:20:59
// Для китайского контроллера LGT8F328P. Плата SSOP-20 MiniEVB. Тактовая 32 мГц, питание 5v
#include <WDT.h>
#include "DHTStable.h"
#include "BMP085.h" //BMP-180 подключаем через I2C (SCL,SDA)
#include <Wire.h>
#include <ModbusRtu.h> //Протокол ModbusRTU
#define TXEN 7 //Нога для управления трансивером прием/передача
#define DEV_ID 1 //Номер устройства
#define BEEP 2 //Активный Buzzer
#define Air_Quality A0 //Нога датчика качества воздуха (пропан-бутан и угарный газ) MQ-2
#define DHT22_PIN 12 //Нога DHT-22
#define BAD_AIR_QUALITY 1200 //Для датчика MQ-2 значение найденное экспериментально
uint16_t fld_data[4] = {0,0,0,0}; //Массив для передачи
DHTStable DHT;
BMP085 myBarometer;
Modbus slave(DEV_ID,Serial,TXEN); // Слейв режим
void setup() {
analogReference(INTERNAL4V096); //Внутренний опорник на 4,096V (только для lgt8f328p)
wdt_enable(WTO_8S); //Сторожевой таймер на 8 сек.
pinMode(Air_Quality,INPUT);
pinMode(LED_BUILTIN,OUTPUT);
pinMode(BEEP,OUTPUT);
Serial.begin(38400); //Оптимальная скорость обмена данными для моего случая
myBarometer.init(); //Инициализация BMP180
slave.start(); //Запуск ModbusRTU
}
void loop() {
wdt_reset(); // Сброс сторожевого таймера
delay(500);
DHT.read22(DHT22_PIN);
fld_data[0] = analogRead(Air_Quality); // Текущее значение с датчиков пишем в массив
fld_data[1] = DHT.getHumidity()*10; // целочисленные значения в 2 байта (умножение на 10 где необходимо)
fld_data[2] = DHT.getTemperature();
fld_data[2] = ((fld_data[2]+myBarometer.bmp085GetTemperature(myBarometer.bmp085ReadUT())) / 2)*10;
fld_data[3] = (myBarometer.bmp085GetPressure(myBarometer.bmp085ReadUP())/133.3223684)*10; //Переводим в мм.ртст
if (fld_data[0] > BAD_AIR_QUALITY) alarm();//Сигнал тревоги
digitalToggle(LED_BUILTIN); //Моргаем. Короткие вспышки - контроллер не висит. Длинные вспышки - идет обмен по RS485
slave.poll(fld_data,4); //Проверка входящих запросов и отправка массива мастеру
digitalToggle(LED_BUILTIN);
}
void alarm() { //Сигнал тревоги - 3 гудка
for (int k=0;k<6;k++) {
digitalToggle(BEEP);
delay(200);
}
digitalWrite(BEEP, LOW);
}
Вс фев 06, 2022 16:52:40
Вс фев 06, 2022 17:00:19
Вс фев 06, 2022 17:09:14
Вс фев 06, 2022 17:10:17
Вс фев 06, 2022 17:41:02
Вс фев 06, 2022 17:47:10
Вс фев 06, 2022 17:47:55
Вс фев 06, 2022 17:51:33
Вс фев 06, 2022 17:52:04
Вс фев 06, 2022 17:55:05
Пн фев 07, 2022 01:38:29