roboforum.ru

Технический форум по робототехнике.

Arduino ethernet POE не работает с сетью

Arduino ethernet POE не работает с сетью

wojaovlad » 28 фев 2015, 23:52

Есть arduino ethernet poe, на ней скрипт который должен получать информацию и в зависомсти от неё делать некоторые действия. Какое-то время работало всё отлично. Но потом просто перестало принимать информацию, получает пустой результат. К сети подулючается, скрипт php видит, который передаёт информацию, но саму информацию не полчуает. При этом буквально неделю назад получало, потом я всё отключил, а когда включил перестало. Вот программа:
Код: Выделить всёРазвернуть
#include <SPI.h>
#include <DHT11.h>
#include <string.h>
#include <Ethernet.h>

//Устройства
byte pin=2;// dht11
DHT11 dht11(pin);
const byte Trig = 7;
const byte Echo = 9;
const byte ledPin = 11;
const byte pirPin = 8;
const byte lumPin = 3;
const byte lightPin = A0;
const byte waterPin = 6;
const byte releAir = 5;// вытяжка в туалете

//Настройки сети
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x89, 0x7B};
byte server[] = {192, 168, 1, 50};
IPAddress ip(192,168,1,55);

EthernetClient client;

unsigned int time_us=0;
bool pinState=false;
unsigned int distance_sm=0;

//Для таймера на датчик движения
byte t = 0;
byte p = 0;
byte u = 0;

byte ligftSwitch;

//Значение датчиков
byte water1 = 0; //протечка
int light = 0;//
int echo = 0;//
byte extractAir = 0;//Счетчик на вытяжку
bool turnOn = 0;

//DHT11
float Temperatura = 0;
float him = 0;
float* tt = &Temperatura;
float* h = &him;

String currentLine = "";

void setup()
{
Serial.begin(9600);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(lumPin, OUTPUT);
pinMode(pirPin, INPUT);
pinMode(releAir,OUTPUT);

pinMode(lightPin,INPUT);
pinMode(waterPin,INPUT);
digitalWrite(ledPin,HIGH);
digitalWrite(lumPin,HIGH);
digitalWrite(releAir,LOW);

Serial.begin(9600);
Ethernet.begin(mac, ip);

Serial.println("Start_script...");
}

void loop()
{
while(true)
{
String msg = "GET /put_data_sql.php?light=" + String(light) + "&TurnON=" + String(turnOn)+ "&T=" + String(*tt) + "&H=" + String(*h);


int chk;
chk = dht11.read(*h,*tt); // READ DATA
light = analogRead(lightPin);

digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера
delayMicroseconds(10); // Удерживаем 10 микросекунд
digitalWrite(Trig, LOW); // Затем убираем
time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса
distance_sm=time_us/58; // Пересчитываем в сантиметры

water1 = digitalRead(waterPin);

Serial.print("Temperature = ");
Serial.println(*tt);
Serial.print("Humm = ");
Serial.println(*h);

Serial.print("Distance ");
Serial.println(distance_sm);

Serial.print("water ");
Serial.println(water1);

delay(50);

//подключаемся к серверу, запрашиваем pinstatusweb
Serial.println("Connecting to server...");

if (client.connect(server, 80)) {
Serial.println(msg);
client.println(msg);
client.println("HOST: 192.168.1.50");
client.println();
client.stop();

}
else Serial.println("Not send");

delay(100);

if (client.connect(server, 80)) {
Serial.println("GET /send_data_on_arduino.php");
client.println("GET /send_data_on_arduino.php");
client.println("HOST: 192.168.1.50");
client.println();

if (client.connected()) {
Serial.println("Dowload data...");
Serial.println(client.available());
while (client.available()) {
char inChar = client.read();
currentLine += inChar;
delay(100);
}
client.stop();
Serial.print("Srtring :");
Serial.println(currentLine);
//выделяем переданные запросы с сервера
ligftSwitch = (int)currentLine[currentLine.indexOf("L") + 1] - 48 ;
currentLine = "";



}
}
else{
Serial.println("Can't connect to the server");
// ligftSwitch = 1;
}


Serial.print("Case: ");
Serial.println(ligftSwitch);
switch (ligftSwitch){
case 0:
{
digitalWrite(lumPin,1);
Serial.println("off by web");
turnOn = 0;
break;
}

case 2:
{
digitalWrite(lumPin, 0);
Serial.println("on by web");
turnOn = 1;
break;
}

default:
{
pinState=digitalRead(pirPin);

if ((pinState==true))
{
t+=5;
digitalWrite(lumPin, 0);
Serial.println("on");
}

if (distance_sm < 30)
{
digitalWrite(lumPin, 0);
Serial.println("on");
turnOn = 1;
u = 0;
}
else {
u+=1;
}

if (t<=0)
{
if (u>3)
{
digitalWrite(lumPin, 1);
Serial.println("off");
digitalWrite(releAir,HIGH);
extractAir = 100;
turnOn = 0;

}
}

if (t>20)
{
t=5;
}
if (t <= 0)
{
t = 0;
}
if (u >4)
{
u=0;
}

t-=1;

break;
}
}


if (extractAir != 0) {
extractAir = extractAir -1;
}
else {
digitalWrite(releAir,LOW);
}

Serial.print("t =
20:16:02   
");
Serial.println(t);
Serial.print("u = ");
Serial.println(u);

delay(1000);
}
}


Вот php скрипт, он должен считывать с бд данные и отправлять, но для упрощения я пока сделал отправку напрямую:

Код: Выделить всёРазвернуть
<?php
$dbhost = 'localhost';

$dbuser = 'vlad';

$dbpass = 'wojaovlad';

$dbname = 'gpio';

$connect = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $connect )

{

  die('Could not connect: ' . mysql_error());

}

mysql_select_db ($dbname, $connect);

$sql = mysql_query("SELECT pinStatusWeb FROM pinstatus WHERE id = 6");

$myrow = mysql_fetch_array($sql);
echo "L1";
//echo ( $myrow['pinStatusWeb']."\n");
?>


Пробовал и на других ардуинах, и код сокращал оставляя только подключение, но что-то не работает. Помогите пожалуйста.


Rambler\'s Top100 Mail.ru counter