Скетч Arduino + W5100 обсуждаем, пишем, тестируем

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

Модератор: immortal

janlam
Сообщения: 24
Зарегистрирован: Вт сен 30, 2014 3:36 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение janlam » Вт сен 30, 2014 4:11 am

В том то и дело что молчит
sregeipt
Сообщения: 117
Зарегистрирован: Сб апр 26, 2014 5:06 pm
Откуда: Новосибирск
Благодарил (а): 21 раз
Поблагодарили: 11 раз

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение sregeipt » Вт сен 30, 2014 4:12 am

Тогда смотрим скетч монитор в любом случае должен показывать скорост опроса порта какая
  • Ubuntu Server .Esp8266)
janlam
Сообщения: 24
Зарегистрирован: Вт сен 30, 2014 3:36 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение janlam » Вт сен 30, 2014 4:14 am

115200
sregeipt
Сообщения: 117
Зарегистрирован: Сб апр 26, 2014 5:06 pm
Откуда: Новосибирск
Благодарил (а): 21 раз
Поблагодарили: 11 раз

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение sregeipt » Вт сен 30, 2014 4:14 am

Попробуй меньше поставить
  • Ubuntu Server .Esp8266)
janlam
Сообщения: 24
Зарегистрирован: Вт сен 30, 2014 3:36 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение janlam » Вт сен 30, 2014 4:15 am

#include <Ethernet.h>
#include <SPI.h>

// Библиотеки ниже нет в стандартной поставке среды разработки Arduino.
// придётся её скопировать.
#include <DallasTemperature.h>

// MAC-адрес нашего устройства
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xE4, 0xDE, 0x35 };
// ip-адрес устройства
byte ip[] = { 192, 168, 1, 150 };

byte subnet[] = { 255, 255, 255, 0 };
byte gateway[] = {192, 168, 1, 1 };
byte dns_server[] = { 192, 168, 1, 1 };

// ip-адрес удалённого сервера
byte server[] = { 192, 168, 1, 104 }; // измените на свой

int old_temperature1=0;
int old_temperature2=0;
int old_garage=0;
int old_entry=0;
int old_movement_1=0;
int old_movement_2=0;
int old_light=0;
char buf[80];

Client rclient(server, 80); // 80-порт.
DallasTemperature tempSensor1;
DallasTemperature tempSensor2;

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

}


void setup()
{
Ethernet.begin(mac, ip); // Инициализируем Ethernet Shield

tempSensor1.begin(2); // Датчик температуры на 2-й пин (котёл)
tempSensor2.begin(3); // Датчик температуры на 3-й пин (зал)

pinMode(4, INPUT); // Датчик гаражной двери на 7-ый пин
old_garage=digitalRead(4);

pinMode(5, INPUT); // Датчик въездных ворот на 8-ый пин
old_entry=digitalRead(5);

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

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

pinMode(8, INPUT); // Датчик света
old_light=digitalRead(8);

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

void loop()
{

int valid_sensor=0;

delay(1000); // задержка в 1 сек.

// TEMP SENSOR 1
float current_temp1=0;
// Соединяемся
// Обработчик ошибок датчика
valid_sensor=1;
switch(tempSensor1.isValid())
{
case 1:
Serial.println("Err T1"); // ошибка контрольной суммы
tempSensor1.reset(); // сбросить девайс
valid_sensor=0;
case 2:
Serial.println("Err T1"); // какой-то "левый" датчик :)
tempSensor1.reset(); // сбросить девайс
valid_sensor=0;
}


if (valid_sensor==1) {
Serial.println("T1");
current_temp1=tempSensor1.getTemperature(); // получаем температуру
Serial.println(current_temp1);

if ((old_temperature1!=(int)current_temp1) && (current_temp1<79) && (current_temp1>5)) {

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

}
old_temperature1=(int)current_temp1;

}


// TEMP SENSOR 2
float current_temp2=0;

// Соединяемся
// Обработчик ошибок датчика
valid_sensor=1;
switch(tempSensor2.isValid())
{
case 1:
Serial.println("Err T2"); // ошибка контрольной суммы
tempSensor2.reset(); // сбросить девайс
valid_sensor=0;
case 2:
Serial.println("Err T2"); // какой-то "левый" датчик :)
tempSensor2.reset(); // сбросить девайс
valid_sensor=0;
}

if (valid_sensor==1) {
Serial.println("T2");
current_temp2=tempSensor2.getTemperature(); // получаем температуру
Serial.println(current_temp2);

if ((old_temperature2!=(int)current_temp2) && (current_temp2<50) && (current_temp2>5)) {
int temp1 = (current_temp2 - (int)current_temp2) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=sensorZal&op=m&m=tempChanged&t=%0d.%d HTTP/1.0", (int)current_temp2, abs(temp1));
sendHTTPRequest();

}
old_temperature2=(int)current_temp2;
}

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

//ENTRY GATES SENSOR

Serial.println("E");
int current_entry=digitalRead(5);
//Serial.println(current_entry);
if (current_entry!=(int)old_entry) {
old_entry=(int)current_entry;
sprintf(buf, "GET /objects/?object=sensorEntry&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_entry);
sendHTTPRequest();
}

//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();
}

//MOVEMENT 2 SENSOR
Serial.println("M2");
int current_movement_2=digitalRead(7);
//Serial.println(current_movement_2);
if (current_movement_2!=(int)old_movement_2) {
old_movement_2=(int)current_movement_2;
sprintf(buf, "GET /objects/?object=sensorMovement2&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_movement_2);
sendHTTPRequest();
}


//LIGHT SENSOR

Serial.println("L");
int current_light=digitalRead(8);
//Serial.println(current_light);
if (current_light!=(int)old_light) {
old_light=(int)current_light;
sprintf(buf, "GET /objects/?object=sensorLight&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_light);
sendHTTPRequest();
}


}
janlam
Сообщения: 24
Зарегистрирован: Вт сен 30, 2014 3:36 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение janlam » Вт сен 30, 2014 4:16 am

Пробывал 9600 ни в какую
janlam
Сообщения: 24
Зарегистрирован: Вт сен 30, 2014 3:36 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение janlam » Вт сен 30, 2014 4:21 am

Заливаю Ардуино 0023. 0017 с дуней никак не удалось подружить.
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение Amarok » Вт сен 30, 2014 7:08 am

electric писал(а):
dragon rider писал(а):хмм а какие еще порты могут быть заняты эзернетом?
Смотря какой шилд. Если самый популярный на чипе W5100, то можно посмотреть на странице документации.
Там написано:
Arduino communicates with both the W5100 and SD card using the SPI bus (through the ICSP header). This is on digital pins 10, 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card.

Соответственно Ethernet shield на чипе W5100 (в случае Arduino UNO) занимает порты 10, 11, 12, и 13. Если надо работать с SD-карточкой на этом шилде, то надо освободить еще 4-ый пин...
З.Ы. Поисковики рулят...
У меня мега и w5100. Значит ли это что заняты только пины 50-52?
Моя Алиска живёт на Proxmox в Debian 12
janlam
Сообщения: 24
Зарегистрирован: Вт сен 30, 2014 3:36 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение janlam » Вт сен 30, 2014 7:41 am

BlackWarrior писал(а):
electric писал(а):
dragon rider писал(а):хмм а какие еще порты могут быть заняты эзернетом?
Смотря какой шилд. Если самый популярный на чипе W5100, то можно посмотреть на странице документации.
Там написано:
Arduino communicates with both the W5100 and SD card using the SPI bus (through the ICSP header). This is on digital pins 10, 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card.

Соответственно Ethernet shield на чипе W5100 (в случае Arduino UNO) занимает порты 10, 11, 12, и 13. Если надо работать с SD-карточкой на этом шилде, то надо освободить еще 4-ый пин...
З.Ы. Поисковики рулят...
У меня мега и w5100. Значит ли это что заняты только пины 50-52?
10й тоже занят
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем

Сообщение Amarok » Вт сен 30, 2014 9:44 am

11 - 13 тоже?
Моя Алиска живёт на Proxmox в Debian 12
Ответить