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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.10.2014, 11:29   #11
avgaz
Senior Member
 
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0
avgaz is an unknown quantity at this point
По умолчанию Re: Логин пас по умолчанию?

Цитата:
Сообщение от mebitek Посмотреть сообщение
Ты открываешь порт, ардуина перегружается. Поставь конденсатор земля-ресет.

PHP код:
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyUSB0");
$serial->confBaudRate(57600);
$serial->deviceOpen();
sleep(1);
$read $serial->readPort();
echo 
$read;
$serial->deviceClose(); 
Зачем sleep?

Время чтения "даласа" тоже может добавить ошибки.
Зачем конденсатор то? sleep без него не срабатывает, вернее такое ощущение что не успевают данные придти, браузер уже погрузил страницу, а на ардуине только начинают мигать диоды чтения, если поставить sleep 2 сек или даже 1.8сек то данные выводятся.
Цитата:
Сообщение от mebitek Посмотреть сообщение
Аксиома. Если в линуксе что-то не работает, значит вы что-то делаете не так.
Это же касается флешки, если она в принципе работает, но при этом не работет где-то, значит go to первый пункт.
)))) ну что можно сделать с флешкой не так?
Цитата:
Сообщение от mebitek Посмотреть сообщение
PHP код:
void loop() {

  
sensors.requestTemperatures();
  
Serial.print("Sensor1  ");
  
printTemperature(Thermometer1);
  
Serial.print("Sensor2  ");
  
printTemperature(Thermometer2);

Здесь вы постоянно шлёте даные - это не правильно, правильно отправлять запрос и получать ответ.
И где признак конца строки?
Если не сложно можно пример скетча на основе того что я выложил как принять данные и отправить единичные значения с датчиков? как я понимаю сигнал на ардуину я отправлю с браузера к примеру или с кнопки или с урла, тут я разберусь, а вот со скетчем пока туговато у меня, как там вывести не поток данных с датчика а только единичный его опрос?
Цитата:
Сообщение от mebitek Посмотреть сообщение
PHP код:
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyUSB0");
$serial->confBaudRate(57600);
$serial->deviceOpen();
sleep(1);
$read $serial->readPort();
echo 
$read;
$serial->deviceClose(); 
И вапще это всё не правильно. Делать нужно так:

PHP код:
 <?php
$filename 
"/dev/ttyUSB0";      //порт
$fp fopen($filename"r+");  //открыть порт

if ($fp//если порт открыт
   
{
       
отправляем что-то в портна что ардуина нам ответит
       и получаем ответ
построчно или посимвольно или как угодно
   


else echo 
"Не удалось открыть порт" ;
fclose($fp); // порт закрыть    
?>
И порт сконфигурировать прежде.
Что этот код что с классом смысл все тот же первая строка идет пустая, а как кстати прочитать данные по строчно в частности только 2 и 3 строку?
Дак порт вроде бы конфигурируется модулем "Драйвер USB Serial"

Последний раз редактировалось avgaz; 06.10.2014 в 11:31.
avgaz вне форума   Ответить с цитированием
Старый 07.10.2014, 00:43   #12
avgaz
Senior Member
 
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0
avgaz is an unknown quantity at this point
По умолчанию Re: Логин пас по умолчанию?

Цитата:
Сообщение от mebitek Посмотреть сообщение
У меня нет CyberWrt, ничего про модули не знаю.



Читай про "пхп-построчно-чтение фаила", там всё предельно просто, вапще для детей)))
Да читал я естественно fgets как бы но смысл в том что первая строка идет пустая она то же читается, но я не нашол как прочитать только 2 и 3 строку.
Цитата:
У меня вот так работает: http://cyber-place.ru/showpost.php?p=16862&postcount=5

http://std.esy.es/avto/
дак в вашем скетче то же потоком все идет, вот как сделать что бы с датчика читались только единичные показания?
Цитата:
Зачем вам постоянно по сети гонять надпись "Sensor2 " (Serial.print("Sensor2 "); ) ?
Лучше её один раз забрать с сервера html-фаил, с уже готовой надписью, а потом получать от ардуины только показания датчика и подставлять их к этой надписи.
Из браузера запрос отправлять аяксом (ajax), чтоб страницу не перегружать, и парсить данные от ардуины уже на клиенте, чтоб не грузить роутер php-скриптом (php здесь просто ретранслятор). Клиент в любом случае мощнее роутера, вот пусть он и рабирает данные))).

И время опроса датчика надо учесть. И конденсатор.
Sensor2 это как бы что бы распознать с какого именно датчика показания, в обще задумано следующее, несколько датчиков температуры, по крону запрашиваются каждые 5 мин и сохраняются показания в sql или в файл. Далее на через браузер выводится график к примеру за сутки и текущая температура. Так же возможно в дальнейшим прикрутить реле (типа термостата).
Сейчас все уперлось в чтение данных с датчиков, что бы их в дальнейшем обработать и сохранить, собственно проблема в пустой строчке и в том что данные валятся кучей(потоком) то есть запрос а приходит 6 строк данных, а не 2 строки с двух датчиков.


Кстати про веб интерфейс к SQLite, как его прикрутить?
avgaz вне форума   Ответить с цитированием
Старый 10.10.2014, 23:01   #13
avgaz
Senior Member
 
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0
avgaz is an unknown quantity at this point
По умолчанию Re: Логин пас по умолчанию?

Пришла мне китайская UNO
решил по тестить и что то понять не могу в чем причина косяка
и так имеем скетч
Код:
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 12

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // start serial port
  Serial.begin(9600);

  // Start up the library
  sensors.begin();
}

void loop(void)
{ 
 if(Serial.available()>0){
   Serial.flush();
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println(sensors.getTempCByIndex(0));
 } 
}
Он читает датчик по запросу и вот в nano отправляешь скажем 3 и выводится данные один раз, а вот в UNO данные идут не прерывно как поправить этот косяк что бы данные с датчика выводились один раз по запросу?
avgaz вне форума   Ответить с цитированием
Старый 10.10.2014, 23:10   #14
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Логин пас по умолчанию?

Код:
void loop()  
{ 
    if (Serial.available()>1) 
    {   
       uint8_t inByte = Serial.read();   
        if(inByte=='#')// Если пришел запрос
         { 
            Serial.print(" Otvet ");      
          }
         }  
     }
     
}
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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


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


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