Датчик температуры на Arduino
Модератор: immortal
-
- Сообщения: 142
- Зарегистрирован: Вт ноя 25, 2014 2:06 pm
- Благодарил (а): 33 раза
- Поблагодарили: 0
Датчик температуры на Arduino
Всем доброго вечера.
В этой инструкции http://smartliving.ru/Main/ArduinoCode нужна оболочка прогрымы Arduino 017,а у меня 106 можно изменить код что б написать на моей или надо ставить старую оболочку?
Если кто может напишите что б считывались данные температуры
И у меня Arduino по Usb подключен
В этой инструкции http://smartliving.ru/Main/ArduinoCode нужна оболочка прогрымы Arduino 017,а у меня 106 можно изменить код что б написать на моей или надо ставить старую оболочку?
Если кто может напишите что б считывались данные температуры
И у меня Arduino по Usb подключен
Windows 10 + Raspberry Pi3 + ESP8266
-
- Сообщения: 9
- Зарегистрирован: Пт фев 13, 2015 9:16 pm
- Откуда: Москва
- Благодарил (а): 0
- Поблагодарили: 4 раза
Re: Датчик температуры на Arduino
Попробуй так.
ОБЪЕКТЫ . Сценарии - Добавить новый сценарий.
в примере "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);
}
ОБЪЕКТЫ . Сценарии - Добавить новый сценарий.
в примере "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
Все сделал как тут написано но что то прога у меня не находит датчик, может я не так подсоединяю, но по скетчу в примерах от Dallas он видит датчик,
я подсоеденил датчик как тут http://smartliving.ru/Main/ArduinoSchema
я подсоеденил датчик как тут http://smartliving.ru/Main/ArduinoSchema
Windows 10 + Raspberry Pi3 + ESP8266
-
- Сообщения: 9
- Зарегистрирован: Пт фев 13, 2015 9:16 pm
- Откуда: Москва
- Благодарил (а): 0
- Поблагодарили: 4 раза
Re: Датчик температуры на Arduino
#define ONE_WIRE_BUS A2
А2 это пин на Ардуино к которому подключен датчик , поменяйте на свой или переткните датчик .
А2 это пин на Ардуино к которому подключен датчик , поменяйте на свой или переткните датчик .
-
- Сообщения: 142
- Зарегистрирован: Вт ноя 25, 2014 2:06 pm
- Благодарил (а): 33 раза
- Поблагодарили: 0
Re: Датчик температуры на Arduino
Спасибо все получилось прога ловит датчикBeletskyAV писал(а):#define ONE_WIRE_BUS A2
А2 это пин на Ардуино к которому подключен датчик , поменяйте на свой или переткните датчик .
Теперь другой вопрос сделал сценарий "Temperature" полжил код как написано но данные не обновляються в системе в чем может быть причина ?
Windows 10 + Raspberry Pi3 + ESP8266
-
- Сообщения: 142
- Зарегистрирован: Вт ноя 25, 2014 2:06 pm
- Благодарил (а): 33 раза
- Поблагодарили: 0
Re: Датчик температуры на Arduino
разобрался сам тут просто сенсор TempSensor1 а у меня TempSensor01
а как можно в это скетч добавить чтоб данные шли с датчика движения, куда вставлять их ?
а как можно в это скетч добавить чтоб данные шли с датчика движения, куда вставлять их ?
Windows 10 + Raspberry Pi3 + ESP8266
- shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
- Благодарил (а): 67 раз
- Поблагодарили: 63 раза
Re: Датчик температуры на Arduino
Почти так же, как и с датчиком температуры.
Только ВАМ нужно создать в МД объект отвечающий за датчик движения с названием совпадающим с названием в скетче. Посмотрите пример из скетча Сергея там и сам код и можно сценарий взять.
вот пример объект будет: 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();
}
Только ВАМ нужно создать в МД объект отвечающий за датчик движения с названием совпадающим с названием в скетче. Посмотрите пример из скетча Сергея там и сам код и можно сценарий взять.
вот пример объект будет: 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
С этим всем разобрался все работает,но теперь пришел интернет шилд с Китая,теперь надо под него переделать помогите?то на сайте там под старую программу Arduino
и еще вопрос а нельзя как то подключить несколько датчиков движения или температуры dht 11 на один пин на arduino как напримере с температурными датчиками 18В20
и еще вопрос а нельзя как то подключить несколько датчиков движения или температуры dht 11 на один пин на arduino как напримере с температурными датчиками 18В20
Windows 10 + Raspberry Pi3 + ESP8266
-
- Сообщения: 9
- Зарегистрирован: Пт фев 13, 2015 9:16 pm
- Откуда: Москва
- Благодарил (а): 0
- Поблагодарили: 4 раза
Re: Датчик температуры на Arduino
DHT11(22) на один пин не подключить, датчики движения тоже. Если используешь UNO - мало ног , то можно увеличить количество входов/выходов до 128(кнопки, реле, д. движения но не DHT) с помощью 8 штук MCP23017.
-
- Сообщения: 142
- Зарегистрирован: Вт ноя 25, 2014 2:06 pm
- Благодарил (а): 33 раза
- Поблагодарили: 0
Re: Датчик температуры на Arduino
Помогите! Что то пошло не так
Менял скетч на другой что то не получилось поставил тот что был и почему то прога ArduinoGW данные получает но не отсылает на МД
просто не помню в "Base Url" должно быть с http:// или без него, и надо ставить галочку в веб сервере
и в низу проги пишет Socket Error #10053
Менял скетч на другой что то не получилось поставил тот что был и почему то прога ArduinoGW данные получает но не отсылает на МД
просто не помню в "Base Url" должно быть с http:// или без него, и надо ставить галочку в веб сервере
и в низу проги пишет Socket Error #10053
Windows 10 + Raspberry Pi3 + ESP8266