- Код: Выделить всё • Развернуть
#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");
?>
Пробовал и на других ардуинах, и код сокращал оставляя только подключение, но что-то не работает. Помогите пожалуйста.