Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Открытый проект умного дома

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.12.2012, 02:47   #1
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Где-то я уже писал:
Ставим ser2net, вот это суём в автозагрузку:
ser2net -C "3001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
Может кому-то придётся поправить вот это: /dev/ttyUSB0:115200, путь и скорость.

В ардуину заливаем это:

PHP код:
#include <MsTimer2.h>
#include <DallasTemperature.h>
DallasTemperature tempSensor;
float ds;
float voltage 0;
int kom 0;
int komm 0;
int mal 0;
int mall 0;
int volts 0;
int svetprix 0;
int svetvanna 0;
int svetkuxnia 0;
int svetxoll 0;
int svetkomnata 0;
int svetbalkon 0;

int ledPin 13;


 
  
void setup() 
 {
  
MsTimer2::set(300000flash); 
  
tempSensor.begin(9);
  
Serial.begin(115200);
  
pinMode (A0INPUT);
  
pinMode (A1INPUT);
  
pinMode (A2INPUT);
  
pinMode (A3INPUT);
  
pinMode (A4INPUT);
  
//  pinMode (A14, INPUT);
  //  pinMode (A15, INPUT);
  
ds = (tempSensor.getTemperature());
 }
   
void loop() 
{
 
mal analogRead(0); 
 
kom analogRead(2);
 
voltage 4.95 1023.0 analogRead(4);
 
volts voltage 100;
 
 
 if (
kom >= 345 && kom <= 756)
  {
   
komm map(kom3457561050);
  }
  
  
/////////////////////////////////////////////////////
if (mal >= 90 && mal <= 147)
{
   
mall map(mal90147 , -20, -11);
}

if (
mal >= 148 && mal <= 229)
{
   
mall map(mal148229 , -10, -1);
}

if (
mal >= 230 && mal <= 294)
{
   
mall map(mal230294 05);
}

if (
mal >= 295 && mal <= 353)
{
   
mall map(mal295353610);
}

else if (
mal >= 354 && mal <= 765)
{
   
mall map(mal3547651150);
}


 
/////////////////////////////////////////////////////
 
if (Serial.available() > 0)
 {
   
byte inByte Serial.read();
   switch (
inByte)
    {
      case 
'a':
      
digitalWrite(ledPinHIGH); 
      
svetvanna 1;
      
Serial.print(svetprix);
      
Serial.print(",");
      
Serial.print(svetvanna);
      
Serial.print(",");
      
Serial.print(svetkuxnia);
      
Serial.print(",");
      
Serial.print(svetxoll);
      
Serial.print(",");
      
Serial.print(svetkomnata);
      
Serial.print(",");
      
Serial.print(svetbalkon);
      
Serial.print(",");
      
Serial.print(komm);
      
Serial.print(",");
      
Serial.print(mall);
      
Serial.print(",");
      
Serial.println(ds);
      break;
      
      case 
'A':
      
digitalWrite(ledPinLOW);
      
svetvanna 0;
      
Serial.print(svetprix);
      
Serial.print(",");
      
Serial.print(svetvanna);
      
Serial.print(",");
      
Serial.print(svetkuxnia);
      
Serial.print(",");
      
Serial.print(svetxoll);
      
Serial.print(",");
      
Serial.print(svetkomnata);
      
Serial.print(",");
      
Serial.print(svetbalkon);
      
Serial.print(",");
      
Serial.print(komm);
      
Serial.print(",");
      
Serial.print(mall);
      
Serial.print(",");
      
Serial.println(ds);
      break;
      
      case 
't':
      
Serial.print(svetprix);
      
Serial.print(",");
      
Serial.print(svetvanna);
      
Serial.print(",");
      
Serial.print(svetkuxnia);
      
Serial.print(",");
      
Serial.print(svetxoll);
      
Serial.print(",");
      
Serial.print(svetkomnata);
      
Serial.print(",");
      
Serial.print(svetbalkon);
      
Serial.print(",");
      
Serial.print(komm);
      
Serial.print(",");
      
Serial.print(mall);
      
Serial.print(",");
      
Serial.println(ds);
     
      break;
    }
  }
}  

void flash() //обработка прерывания таймера
{
  
ds = (tempSensor.getTemperature());

Всё что касается MsTimer2.h и DallasTemperature.h и ds , можно удалить.

Далее распаковываем содержимое 1.rar в папку сервера. И всё

После подключения ардуины к роутеру надо подождать пару минут, пока там всё раздуплится.
Теперь если поклацать кнопки "Ванна вкл, Ванна отк", будет зажигаться диод на ардуине.

Инфа на странице обновляется каждые 10 сек.
Вложения
Тип файла: rar 1.rar (172.4 Кб, 412 просмотров)

Последний раз редактировалось stD; 26.12.2012 в 02:50.
stD вне форума   Ответить с цитированием
Старый 26.12.2012, 20:09   #2
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1606
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от mebitek Посмотреть сообщение
Где-то я уже писал:
Ставим ser2net, вот это суём в автозагрузку:
ser2net -C "3001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
http://linux.die.net/man/8/ser2net
The time (in seconds) before the port will be disconnected if there is no activity on it. A zero value disables this funciton.

через 10 мин с ардуиной перестает общаться хоть тресни.
Поэтому лучше ставить в 0.

Тестовый скрипт на базе вашего:
client_test.php
PHP код:
<?php

header
('Content-Type: text/plain; charset=utf-8');
set_time_limit(0);
ob_implicit_flush();

$fp fsockopen("localhost"3425$errno$errstr1); 

echo  
"Connect To Arduino...\n";
sleep(1); 

if (
$fp
    {
    
fwrite($fp'1');  
    
$buf fgets($fp);
    echo 
$buf."\n";

    
sleep(2); 

    
fwrite($fp'0');  
    
$buf fgets($fp);
    echo 
$buf."\n";

    
fclose($fp); 
    }
 else
    {
    
fclose($fp);
    echo  
"No Connect..\n"
    }
?>
serial_led.ino на ардуино
Код:
#define ledPin 13 
void setup() 
{  
  Serial.begin(115200);  
  pinMode(ledPin, OUTPUT);      
} 


void loop() 
{ 
  if (Serial.available() > 0) 
  { 
    byte inByte = Serial.read(); 

    switch (inByte) 
    { 
     case '1': 
       	digitalWrite(ledPin, HIGH); 
       	Serial.println("A'm Arduino: set led is ON"); 
       	break; 
     case '0': 
       	digitalWrite(ledPin, LOW);
       	Serial.println("A'm Arduino: set led is OFF"); 
       	break; 
    }         
  } 
}

Последний раз редактировалось andr128; 05.01.2013 в 07:54.
andr128 вне форума   Ответить с цитированием
Старый 26.12.2012, 22:07   #3
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Цитата:
Поэтому лучше ставить в 0.
Я честно говоря вабще на этот параметр не обращал мнимания, у меня страница каждые 10 сек обновляется.
Посему уже месяц без проблем робит )))
stD вне форума   Ответить с цитированием
Старый 26.12.2012, 23:35   #4
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Вот ещё хотел рассказать как я сделал обмен данными. Экспериментально )))
Ардуина Мега стоит у меня в прихожей (она главная, подключена к серверу), она отвечает за прихожую и ванну.
В кухню, и в две комнаты поставил по обычной ардуине (самоделки) и подключил их к Меге к rx1 tx1, rx2 tx2, rx3 tx3 соответственно. Подключал по средствам витой пары и max 485 в полнодуплексном режиме.
stD вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 17:25. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика