Датчик температуры на Arduino

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

Модератор: immortal

ингвар
Сообщения: 142
Зарегистрирован: Вт ноя 25, 2014 2:06 pm
Благодарил (а): 33 раза
Поблагодарили: 0

Датчик температуры на Arduino

Сообщение ингвар » Пт фев 06, 2015 6:54 pm

Всем доброго вечера.
В этой инструкции http://smartliving.ru/Main/ArduinoCode нужна оболочка прогрымы Arduino 017,а у меня 106 можно изменить код что б написать на моей или надо ставить старую оболочку?
Если кто может напишите что б считывались данные температуры
И у меня Arduino по Usb подключен
Windows 10 + Raspberry Pi3 + ESP8266
BeletskyAV
Сообщения: 9
Зарегистрирован: Пт фев 13, 2015 9:16 pm
Откуда: Москва
Благодарил (а): 0
Поблагодарили: 4 раза

Re: Датчик температуры на Arduino

Сообщение BeletskyAV » Пт фев 13, 2015 9:46 pm

Попробуй так.
ОБЪЕКТЫ . Сценарии - Добавить новый сценарий.
в примере "Temperature", в код положи :

setGlobal('TempSensor1.temp',$params['T00']);

Этот сенсор есть в системе.

Библиатека:
http://download.milesburton.com/Arduino ... 72Beta.zip

Для Ардуины код :

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS A2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer;

void setup(void)
{
Serial.begin(115200);
pinMode(A1,OUTPUT);
digitalWrite(A1,LOW);
sensors.begin();
if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0");
printAddress(insideThermometer);
Serial.println();
sensors.setResolution(insideThermometer, 9);
}

void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
// Serial.print("Temp C: ");
// Serial.print(tempC);
// Serial.print(" Temp F: ");
// Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
String data = "";
data = "GET /objects/?script=Temperature";
data += "&T00=";
data += tempC;
data += " HTTP/1.0";
Serial.println(data);

}

void loop(void)
{
delay(5000);
sensors.requestTemperatures(); // Send the command to get temperatures
printTemperature(insideThermometer); // Use a simple function to print out the data
}
void printAddress(DeviceAddress deviceAddress)
{
for (uint8_t i = 0; i < 8; i++)
{
if (deviceAddress < 16) Serial.print("0");
Serial.print(deviceAddress, HEX);
}
}



Или если несколько датчиков и не известно сколько их будет вообще можно так :

В сценарии добавляем строки вида типа :

setGlobal('TempSensor0.temp',$params['T575']);
setGlobal('TempSensor1.temp',$params['T657']);
setGlobal('TempSensor2.temp',$params['T527']);
setGlobal('TempSensor3.temp',$params['T668']);

где в Т575 , Т657 , Т527 , Т668 - цифры это адрес датчика который определяется при старте скетча :

Dallas Temperature IC Control Library Demo
Locating devices...Found 4 devices.
Parasite power is: OFF
Found device 0 with address: 575

Setting resolution to 9
Resolution actually set to: 9
Found device 1 with address: 657

Setting resolution to 9
Resolution actually set to: 9
Found device 2 with address: 527

Setting resolution to 9
Resolution actually set to: 9
Found device 3 with address: 668

Setting resolution to 9
Resolution actually set to: 9
END Setup


А вот и сам скетч для Ардуины :


#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS A2
#define TEMPERATURE_PRECISION 9
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int numberOfDevices; // Number of temperature devices found
DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address

void setup(void)
{
Serial.begin(115200);
Serial.println("Dallas Temperature IC Control Library Demo");

sensors.begin();
numberOfDevices = sensors.getDeviceCount();
Serial.print("Locating devices...");
Serial.print("Found ");
Serial.print(numberOfDevices, DEC);
Serial.println(" devices.");
Serial.print("Parasite power is: ");
if (sensors.isParasitePowerMode()) Serial.println("ON");
else Serial.println("OFF");
for(int i=0;i<numberOfDevices; i++)
{
if(sensors.getAddress(tempDeviceAddress, i))
{
Serial.print("Found device ");
Serial.print(i, DEC);
Serial.print(" with address: ");
printAddress(tempDeviceAddress);
Serial.println();

Serial.print("Setting resolution to ");
Serial.println(TEMPERATURE_PRECISION, DEC);

sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);

Serial.print("Resolution actually set to: ");
Serial.print(sensors.getResolution(tempDeviceAddress), DEC);
Serial.println();
}else{
Serial.print("Found ghost device at ");
Serial.print(i, DEC);
Serial.print(" but could not detect address. Check power and cabling");
}
}
Serial.println("END Setup");
}

void loop(void)
{
sensors.requestTemperatures(); // Send the command to get temperatures
String data = "";
data = "GET /objects/?script=Temperature";
for(int i=0;i<numberOfDevices; i++)
{
if(sensors.getAddress(tempDeviceAddress, i))
{
data += "&T";
int d = 0;
for (uint8_t i = 0; i < 8; i++)
{
d= d + tempDeviceAddress;
}
data += d;
data += "=";
float tempC = sensors.getTempC(tempDeviceAddress);
data += tempC;
}
}
data += " HTTP/1.0";
Serial.println(data);
Serial.println("");
delay(5000);

}
void printAddress(DeviceAddress deviceAddress)
{
int d = 0;
for (uint8_t i = 0; i < 8; i++)
{
d= d + deviceAddress;
}
Serial.println(d);
}
ингвар
Сообщения: 142
Зарегистрирован: Вт ноя 25, 2014 2:06 pm
Благодарил (а): 33 раза
Поблагодарили: 0

Re: Датчик температуры на Arduino

Сообщение ингвар » Вс фев 15, 2015 12:51 pm

Все сделал как тут написано но что то прога у меня не находит датчик, может я не так подсоединяю, но по скетчу в примерах от Dallas он видит датчик,
я подсоеденил датчик как тут http://smartliving.ru/Main/ArduinoSchema
Windows 10 + Raspberry Pi3 + ESP8266
BeletskyAV
Сообщения: 9
Зарегистрирован: Пт фев 13, 2015 9:16 pm
Откуда: Москва
Благодарил (а): 0
Поблагодарили: 4 раза

Re: Датчик температуры на Arduino

Сообщение BeletskyAV » Пн фев 16, 2015 9:44 am

#define ONE_WIRE_BUS A2

А2 это пин на Ардуино к которому подключен датчик , поменяйте на свой или переткните датчик .
ингвар
Сообщения: 142
Зарегистрирован: Вт ноя 25, 2014 2:06 pm
Благодарил (а): 33 раза
Поблагодарили: 0

Re: Датчик температуры на Arduino

Сообщение ингвар » Вт фев 17, 2015 5:52 pm

BeletskyAV писал(а):#define ONE_WIRE_BUS A2

А2 это пин на Ардуино к которому подключен датчик , поменяйте на свой или переткните датчик .
Спасибо все получилось прога ловит датчик

Теперь другой вопрос сделал сценарий "Temperature" полжил код как написано но данные не обновляються в системе в чем может быть причина ?
Windows 10 + Raspberry Pi3 + ESP8266
ингвар
Сообщения: 142
Зарегистрирован: Вт ноя 25, 2014 2:06 pm
Благодарил (а): 33 раза
Поблагодарили: 0

Re: Датчик температуры на Arduino

Сообщение ингвар » Вт фев 17, 2015 7:59 pm

разобрался сам тут просто сенсор TempSensor1 а у меня TempSensor01

а как можно в это скетч добавить чтоб данные шли с датчика движения, куда вставлять их ?
Windows 10 + Raspberry Pi3 + ESP8266
Аватара пользователя
shemnik69
Сообщения: 590
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov
Благодарил (а): 67 раз
Поблагодарили: 63 раза

Re: Датчик температуры на Arduino

Сообщение shemnik69 » Ср фев 18, 2015 8:00 am

Почти так же, как и с датчиком температуры.
Только ВАМ нужно создать в МД объект отвечающий за датчик движения с названием совпадающим с названием в скетче. Посмотрите пример из скетча Сергея там и сам код и можно сценарий взять.
вот пример объект будет: sensorMovement1

//MOVEMENT 1 SENSOR
Serial.println("M1");
int current_movement_1=digitalRead(6);
//Serial.println(current_movement_1);
if (current_movement_1!=(int)old_movement_1) {
old_movement_1=(int)current_movement_1;
sprintf(buf, "GET /objects/?object=sensorMovement1&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_movement_1);
sendHTTPRequest();
}
ингвар
Сообщения: 142
Зарегистрирован: Вт ноя 25, 2014 2:06 pm
Благодарил (а): 33 раза
Поблагодарили: 0

Re: Датчик температуры на Arduino

Сообщение ингвар » Пт мар 13, 2015 4:07 pm

С этим всем разобрался все работает,но теперь пришел интернет шилд с Китая,теперь надо под него переделать помогите?то на сайте там под старую программу Arduino

и еще вопрос а нельзя как то подключить несколько датчиков движения или температуры dht 11 на один пин на arduino как напримере с температурными датчиками 18В20
Windows 10 + Raspberry Pi3 + ESP8266
BeletskyAV
Сообщения: 9
Зарегистрирован: Пт фев 13, 2015 9:16 pm
Откуда: Москва
Благодарил (а): 0
Поблагодарили: 4 раза

Re: Датчик температуры на Arduino

Сообщение BeletskyAV » Пт мар 13, 2015 11:37 pm

DHT11(22) на один пин не подключить, датчики движения тоже. Если используешь UNO - мало ног , то можно увеличить количество входов/выходов до 128(кнопки, реле, д. движения но не DHT) с помощью 8 штук MCP23017.
ингвар
Сообщения: 142
Зарегистрирован: Вт ноя 25, 2014 2:06 pm
Благодарил (а): 33 раза
Поблагодарили: 0

Re: Датчик температуры на Arduino

Сообщение ингвар » Пн май 04, 2015 6:22 pm

Помогите! Что то пошло не так
Менял скетч на другой что то не получилось поставил тот что был и почему то прога ArduinoGW данные получает но не отсылает на МД
просто не помню в "Base Url" должно быть с http:// или без него, и надо ставить галочку в веб сервере
и в низу проги пишет Socket Error #10053
Windows 10 + Raspberry Pi3 + ESP8266
Ответить