DHT11 > Arduino > MD

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
mazahaka7sk
Сообщения: 54
Зарегистрирован: Сб фев 20, 2016 8:46 am
Откуда: Усть-Каменогорс
Благодарил (а): 8 раз
Поблагодарили: 10 раз
Контактная информация:

Re: DHT11 > Arduino > MD

Сообщение mazahaka7sk » Пн ноя 14, 2016 7:08 pm

Собрал у всех по кусочкам и ЗАРАБОТАЛО) :P
кому нужно вот скетч
СпойлерПоказать
int cycle_counter=0;
char val = 0;
int old_SensorSpalnaD=0;
int old_SensorZalD=0;
int old_SensorKyxnaD=0;
int old_SensorKoridorD=0;
int old_SensorTyaletD=0;
int old_Sensorvodityalet=0;
#include "DHT.h"

#define DHTPIN 12 // what pin we're connected to

#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

unsigned int sensorValue = 0;
char buf[80];

// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
Serial.println(buf);
}


void setup()
{
Serial.println("DHTxx test!");

dht.begin();

pinMode(2, INPUT); // Датчик движение спальня 2 пин
old_SensorSpalnaD=digitalRead(2);

pinMode(3, INPUT); // Датчик движение зал 3 пин
old_SensorZalD=digitalRead(3);

pinMode(4, INPUT); // Датчик движение кухня 4 пин
old_SensorKyxnaD=digitalRead(4);

pinMode(5, INPUT); // Датчик движение коридор 5 пин
old_SensorKoridorD=digitalRead(5);

pinMode(6, INPUT); // Датчик движение туалет 6 пин
old_SensorTyaletD=digitalRead(6);

pinMode(7, OUTPUT); // реле света спальня 7 пин

pinMode(8, OUTPUT); // реле подсветки кухня 8 пин

pinMode(9, OUTPUT); // реле лазер охрана 9 пин

pinMode(10, INPUT); // сенсор воды туалет 10 пин
old_Sensorvodityalet=digitalRead(10);

pinMode(11, OUTPUT); // реле звука туалет 11 пин


//pinMode(12, OUTPUT); // реле 12пин температура

pinMode(13, OUTPUT); // реле 13 пин

Serial.begin(115200); // Скорость консольного порта 9600 (пригодится для отладки)
}

void loop()
{
{
if (Serial.available() > 0) {
val = Serial.read();
if (val=='B') digitalWrite(7,HIGH); // выключить свет
if (val=='V') digitalWrite(7,LOW); // включить свет
if (val=='Z') digitalWrite(8,HIGH); // выключить свет
if (val=='X') digitalWrite(8,LOW); // включить свет
if (val=='S') digitalWrite(12,HIGH); // выключить свет
if (val=='D') digitalWrite(12,LOW); // включить свет
if (val=='F') digitalWrite(13,HIGH); // выключить свет
if (val=='G') digitalWrite(13,LOW); // включить свет
if (val=='K') digitalWrite(9,HIGH); // выключить свет
if (val=='L') digitalWrite(9,LOW); // включить свет
}
}


int valid_sensor=0;
delay(1000); // задержка в 0.1 сек.
cycle_counter++;

if (cycle_counter>600) {
cycle_counter=0;
}

//движение спальня
Serial.println("G");
int current_SensorSpalnaD=digitalRead(2);
//Serial.println(current_SensorSpalnaD);
if (current_SensorSpalnaD!=(int)old_SensorSpalnaD) {
old_SensorSpalnaD=(int)current_SensorSpalnaD;
sprintf(buf, "GET /objects/?object=SensorSpalnaD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorSpalnaD);
sendHTTPRequest();
}

//GARAGE GATES SENSOR
Serial.println("H");
int current_SensorZalD=digitalRead(3);
//Serial.println(current_SensorZalD);
if (current_SensorZalD!=(int)old_SensorZalD) {
old_SensorZalD=(int)current_SensorZalD;
sprintf(buf, "GET /objects/?object=SensorZalD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorZalD);
sendHTTPRequest();
}

//GARAGE GATES SENSOR
Serial.println("T");
int current_SensorKyxnaD=digitalRead(4);
//Serial.println(current_SensorKyxnaD);
if (current_SensorKyxnaD!=(int)old_SensorKyxnaD) {
old_SensorKyxnaD=(int)current_SensorKyxnaD;
sprintf(buf, "GET /objects/?object=SensorKyxnaD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorKyxnaD);
sendHTTPRequest();
}

//GARAGE GATES SENSOR
Serial.println("N");
int current_SensorKoridorD=digitalRead(5);
//Serial.println(current_SensorKoridorD);
if (current_SensorKoridorD!=(int)old_SensorKoridorD) {
old_SensorKoridorD=(int)current_SensorKoridorD;
sprintf(buf, "GET /objects/?object=SensorKoridorD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorKoridorD);
sendHTTPRequest();
}

//GARAGE GATES SENSOR
Serial.println("O");
int current_SensorTyaletD=digitalRead(6);
//Serial.println(current_SensorTyaletD);
if (current_SensorTyaletD!=(int)old_SensorTyaletD) {
old_SensorTyaletD=(int)current_SensorTyaletD;
sprintf(buf, "GET /objects/?object=SensorTyaletD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorTyaletD);
sendHTTPRequest();

}


//Сенсор воды туалет
// Serial.println("P");
// int current_Sensorvodityalet=digitalRead(10);
//Serial.println(current_Sensorvodityalet);
// if (current_Sensorvodityalet!=(int)old_Sensorvodityalet) {
// old_Sensorvodityalet=(int)current_Sensorvodityalet;
// sprintf(buf, "GET /objects/?object=Sensorvodityalet&op=m&m=statusChanged&status=%t HTTP/1.0", (int)current_Sensorvodityalet);
// sendHTTPRequest();
//}

// DHT
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
float t = dht.readTemperature();

// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t) || isnan(h))
{
Serial.println("Failed to read from DHT");
}
else
{
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");

int h2 = (h - (int)h) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=humSensor01&op=m&m=humChanged&h=%0d.%d", (int)h, abs(h2));
sendHTTPRequest();
int t2 = (t - (int)t) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=TempSensor01&op=m&m=tempChanged&t=%0d.%d", (int)t, abs(t2));
sendHTTPRequest();

// end DHT

}
}
За это сообщение автора mazahaka7sk поблагодарил:
krater (Вс июн 04, 2017 1:17 am)
Рейтинг: 1.16%
CONNECT |Группа в VK| ЮТУБ КАНАЛ
Система стоит на Raspberry pi 3b v3.31
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Re: DHT11 > Arduino > MD

Сообщение blackangel » Вт ноя 22, 2016 5:31 pm

Коллеги! подскажите какой на данный момент, оптимальный способ общения arduino и MD (на Raspberry Pi3)?

подключение по USB не предлагайте)))

Я так понимаю что по TCP/IP? Если да, то каков алгоритм?

На данный момент у меня 4 датчика выводят данные через internet shiel в вэб морду, и я с помощью функции вэб переменные передаю их в MD. Но походу это не самый лучший способ=))))
trojan_prk
Сообщения: 8
Зарегистрирован: Ср окт 19, 2016 1:29 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: DHT11 > Arduino > MD

Сообщение trojan_prk » Ср ноя 23, 2016 8:58 am

конечно сейчас может быть много критики но я расскажу как сделал это у себя. У меня есть исполнительный механизм на ардуино который включает освещение двора открывает ворота калитку датчик движения и прочее. Так вот в прочем к ардуино подключен именно такой температурный датчик. У всего этого устройства есть веб интерфейс в котором отображается состояние реле и температура в том числе. Так вот МД заберает показания датчика температуры при помощи механизма веб переменных с определенной частотой.
Ответить