Скетч Arduino + W5100 нужен рабочий скотч

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ответить
gagarin74
Сообщения: 321
Зарегистрирован: Пн апр 06, 2015 9:51 am
Благодарил (а): 35 раз
Поблагодарили: 21 раз

Скетч Arduino + W5100 нужен рабочий скотч

Сообщение gagarin74 » Вт июл 14, 2015 2:21 pm

Ребят,есть большая просьба.
Если у кого завалялся РАБОЧИЙ КОД который соответствует требованием:
1 отправляет данные на умный дом
2 принимает данные от умного дома

дайте пожалуйста. На форуме есть куча кодов НО......
большая просьба выложить этот код если не трудно со ВСЕМИ БИБЛИОТЕКАМИ и написать для какой он версии оболочки.
я не могу найти "работающий" варианты библиотек. ставлю одну-что то работает,что то другое перестаёт итд итп.
ОЧЕНЬ ПРОШУ СДЕЛАТЬ ГОТОВЫЙ ВАРИАНТ!!!!!!
gagarin74
Сообщения: 321
Зарегистрирован: Пн апр 06, 2015 9:51 am
Благодарил (а): 35 раз
Поблагодарили: 21 раз

Re: Скетч Arduino + W5100 нужен рабочий скотч

Сообщение gagarin74 » Вт июл 14, 2015 3:09 pm

расшифрую нужный функционал. может кто чего подкинет.
есть кнопка входа-выхода из квартиры
при нажатие на неё ардуина передаёт переменную key=1 в умный дом,тот соответственно говорит "до свидание",проверяет на отключение электро сеть, подтверждает что все выключено итд итп. если не выключено предупреждает.если Вам пофиг(или не раслышали) и Вы ушли то включается таймер на 5 минут(как пример),через 5 минут передаётся команда ардуинке на отключение релюшки (обрыв питания электросети). При приходу домой алгоритм практически такой же но с другими действиями.
Colp
Сообщения: 11
Зарегистрирован: Вс фев 22, 2015 8:57 pm
Откуда: Минск, Беларусь
Благодарил (а): 13 раз
Поблагодарили: 2 раза

Re: Скетч Arduino + W5100 нужен рабочий скотч

Сообщение Colp » Вт июл 14, 2015 5:17 pm

Вот мой вариант, который собран из найденного здесь и не только. Работает на 2560 + W5100, считывает: температуру, влажность, ток, один геркон и датчик движения; управляет кондеем по ИК. Команды подаются ардуине путём вызова ссылки вида "http://192.168.1.210/acoff", где "acoff" нужная команда. ПосмОтрите внутри, там несложно реализовано, можно сделать по аналогии. Только сразу предупреждаю - внутри полная индия (ну не программист я, что поделать!).
Версия IDE - 1.0.5-r2. Прилагаю все либы.
Вложения
libraries.rar
(114.66 КБ) 134 скачивания
MDM_Eth_IR_2560.rar
(3.63 КБ) 158 скачиваний
Debian, версия 1.1.0b, CONNECT
gagarin74
Сообщения: 321
Зарегистрирован: Пн апр 06, 2015 9:51 am
Благодарил (а): 35 раз
Поблагодарили: 21 раз

Re: Скетч Arduino + W5100 нужен рабочий скотч

Сообщение gagarin74 » Вт июл 14, 2015 5:20 pm

Дружище в любом случаи спасибо!!!!! Вопрос в другом -умный дом как узнает что ардуина кондей включила ?
сейчас код посмотрю.
Colp
Сообщения: 11
Зарегистрирован: Вс фев 22, 2015 8:57 pm
Откуда: Минск, Беларусь
Благодарил (а): 13 раз
Поблагодарили: 2 раза

Re: Скетч Arduino + W5100 нужен рабочий скотч

Сообщение Colp » Вт июл 14, 2015 5:29 pm

gagarin74 писал(а):умный дом как узнает что ардуина кондей включила ?
Да никак. В принципе, у меня там есть доступ к кабелю, чтобы на него датчик тока повесить, но я с этим не заморачивался. Работает уже несколько месяцев без сбоев.
Debian, версия 1.1.0b, CONNECT
gagarin74
Сообщения: 321
Зарегистрирован: Пн апр 06, 2015 9:51 am
Благодарил (а): 35 раз
Поблагодарили: 21 раз

Re: Скетч Arduino + W5100 нужен рабочий скотч

Сообщение gagarin74 » Вт июл 14, 2015 9:27 pm

Colp писал(а):
gagarin74 писал(а):умный дом как узнает что ардуина кондей включила ?
Да никак. В принципе, у меня там есть доступ к кабелю, чтобы на него датчик тока повесить, но я с этим не заморачивался. Работает уже несколько месяцев без сбоев.
Странно ,но у Вас в скетче явным образом указано что система работает в двух направленном режиме
//геркон двери
// Serial.println("G");
int current_door=!digitalRead(5);
//Serial.println(current_door);
if (current_door!=(int)old_door) {
old_door=(int)current_door;
sprintf(buf, "GET /objects/?object=sensorDoor&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_door);
sendHTTPRequest();
}

CurrentSensor();

как я понял из этого,ардуина передает значение переменной об изменение положение дверей в умный дом.Тобишь даёт понять умнику что дверь или закрылась или открылась.
Я это и спрашивал.Так же решается и скондеем. Я понимаю что можно повесить датчик тока и умничать дальше :)
Кстати не подскажите как у Вас он реализован и какой ?
gagarin74
Сообщения: 321
Зарегистрирован: Пн апр 06, 2015 9:51 am
Благодарил (а): 35 раз
Поблагодарили: 21 раз

Re: Скетч Arduino + W5100 нужен рабочий скотч

Сообщение gagarin74 » Чт июл 16, 2015 4:11 pm

общими силами получился вот такой код.
код демонстративный. Умеет посылать какие либо команды на умный дом (в данном примере температуру в переменную кидает).
умеет получать команды из умного дома(в данном примере мигает светодиодом)

#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
#include <DallasTemperature.h>
#include <OneWire.h>
//#include "EmonLib.h" // Include Emon Library
#include "DHT.h"
//#include <IRremote.h>
//EnergyMonitor emon1; // Create an instance


template<class T>
inline Print &operator <<(Print &obj, T arg)
{
obj.print(arg);
return obj;
}

// mac & ip
static uint8_t mac[] = { 0xDE, 0xAA, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 55 };
byte server1[] = { 77, 252, 153, 121 };


uint16_t port = 5556;

#define ONE_WIRE_BUS 2 // OneWire шина
#define pirPin 7 // Пин датчика движения
#define DHTPIN 6// Пин DHT
#define DHTTYPE DHT22 // DHT 22 (AM2302)

DHT dht(DHTPIN, DHTTYPE);

//IRsend irsend; //IR светодиод подключать к 9 пину на меге 2560

/**********************/
int old_temperature1 = 0;
float old_temperature2 = 0;
float old_humidity = 0;
float old_heatindex = 0;
int old_temperature3 = 0;
int old_light = 0;
int old_door = 0;
int old_movement_1 = 0;
int gateState = 0;
int old_Irms;
char buf[80];
int cmd = 0; //код выполняемой команды

/*********************************************************************************************************/

/************************/
OneWire oneWire(ONE_WIRE_BUS);
EthernetClient rclient;
DallasTemperature sensors(&oneWire);

// Адреса датчиков
DeviceAddress Thermometer1 = {
0x28, 0xC3, 0xC7, 0x3B, 0x05, 0x00, 0x00, 0x42
}; // адрес датчика DS18B20
DeviceAddress Thermometer2 = {
0x28, 0x3C, 0xDD, 0x5F, 0x05, 0x00, 0x00, 0x4B
};
DeviceAddress Thermometer3 = {
0x28, 0x96, 0x1E, 0x60, 0x05, 0x00, 0x00, 0x66
};

#define PREFIX ""
WebServer webserver(PREFIX, 80);

void testCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
server.httpSuccess();
Serial.println("meow");
server.println("meow");
}

void svet(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
server.httpSuccess();
Serial.println("COMMANDACHeatMedLed");
server.println("работает и моргает SVET");
// digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}


/**********************/


/*********************************************************************************************************/
// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
Serial.println(buf);
Serial.println("111111");
if (rclient.connect(server1, port)) {
Serial.println("OK");
rclient.println(buf);
rclient.println("Host: 192.168.1.");
rclient.println();
delay(1000);
rclient.stop();
} else {
Serial.println("FAILED");
}

}


void setup()
{
pinMode(13, OUTPUT);
// Ethernet.begin(mac, ip);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
// try to congifure using IP address instead of DHCP:
Ethernet.begin(mac, ip);
}
// give the Ethernet shield a second to initialize:
delay(1000);

webserver.setDefaultCommand(&testCmd);
webserver.addCommand("svet", &svet);
webserver.begin();

sensors.begin();
sensors.setResolution(Thermometer1, 10); //Точность термодатчиков
sensors.setResolution(Thermometer2, 10);
sensors.setResolution(Thermometer3, 10);

pinMode(pirPin, INPUT); // Датчик движения
old_movement_1 = digitalRead(pirPin);

pinMode(5, INPUT); // Датчик входной двери
digitalWrite(5, HIGH);
old_door = !digitalRead(5);

Serial.begin(9600); // Скорость порта

}

void loop()
{
char buff[64];
int len = 64;
webserver.processConnection(buff, &len); // process incoming connections one at a time forever


// опрашиваем датчики DS18B20
sensors.requestTemperatures();

// TEMP SENSOR 1
float current_temp1 = 0;

current_temp1 = sensors.getTempC(Thermometer1);

if (old_temperature1 != (int)current_temp1) {

int temp1 = (current_temp1 - (int)current_temp1) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=temperatura&op=set&p=arbait&v=%0d.%d HTTP/1.1", (int)current_temp1, abs(temp1));

sendHTTPRequest();


old_temperature1 = (int)current_temp1;

}

}
annakin
Сообщения: 130
Зарегистрирован: Пн окт 28, 2013 5:06 pm
Откуда: Молдова
Благодарил (а): 11 раз
Поблагодарили: 10 раз

Re: Скетч Arduino + W5100 нужен рабочий скотч

Сообщение annakin » Чт июл 16, 2015 8:48 pm

Сюда глянь, тут есть все что тебе нужно.
http://majordomo.smartliving.ru/forum/v ... 47&start=0
Server: Raspberry Pi 3 B+
OS: Rasbian
Ответить