Arduino ethernet POE не работает с сетью
- Войдите на сайт для отправки комментариев
Сб, 28/02/2015 - 22:35
Есть 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"); ?>
Пробовал и на других ардуинах, и код сокращал оставляя только подключение, но что-то не работает. Помогите пожалуйста.