PHP + ComPort+Linux

ishimcity
Offline
Зарегистрирован: 24.01.2012

Друзья помогите пожалуйсто уже совсем незнаю куда еще копать, ситуация следующая

Имеется Raspebery Pi + Arduino Nano v3 + светодиод на 13 ножке

Требуется при получении на ардуино например цифры 2 включения светодиода цифра 3 выключение

На малинке ардуина определилась как /dev/ttyUSB0

На ардуино создаю код

int redpin=13;
int incomingbyte;
void setup() {
Serial.begin(9600);
pinMode(redpin,OUTPUT);
}

void loop() {
 
if(Serial.available() > 0)
{
  incomingbyte = Serial.read();
}
if(incomingbyte=='2')
{
  digitalWrite(redpin,HIGH);
}
if(incomingbyte=='3')
{
  digitalWrite(redpin,LOW);
}
  
}

На малинке создаю код PHP

<?php
include "php_serial.class.php"; //класс работы с портом

$serial = new phpSerial();
$serial->deviceSet("/dev/ttyUSB0"); // моя ардуино
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->deviceOpen();
$serial->sendMessage("2"); // зажечь светодиод

$serial->deviceClose();


?>

В итоге тишина, непонимаю в чем проблема...

Хотя если с терминала малинки отправляю через echo "2" > /dev/ttyUSB0 то светодиод загорается все нормально но через php вообще никак

Прошу помощи друзья!!!

 

MaksMS
Offline
Зарегистрирован: 11.03.2013

Надо дать права на запись ком порта пользователю, через которого работает веб сервер

ishimcity
Offline
Зарегистрирован: 24.01.2012

Немогли бы Вы поточней сказать как это сделать? я с Linux только начинаю работать поэтому есть затруднения с этим)))

ps: Спасибо огромное разобрался!!! sudo chmod a+rw /dev/ttyUSB0

Теперь сново проблема, светодиод загорается, далее следующей командой тушу, теперь сново уже не зажигается, только после перезагрузки браузера, почему так?

 

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

В современных линуксах права на устройства раздаются через udev (/etc/udev/rules.d). Так что, либо юзера добавить в группу, которая уже имеет права на устройство, либо писать соответствующее правило...

ishimcity
Offline
Зарегистрирован: 24.01.2012

Друзья теперь встал в тупик с чтением, что за ерунда такая

к примеру на ардуино пишу код

void setup() {
  
  Serial.begin(9600);
}

void loop() {

  Serial.println("test");      

  delay(1000);
}

а на PHP такой код

<?php
include "php_serial.class.php";

$serial = new phpSerial();
$serial->deviceSet("/dev/ttyUSB0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->deviceOpen();

$read = $serial->readPort();
echo $read;
}
?>

И тишина чистая страничка, ничего нет.... что здесь не так, принцип страничка должна ждать данные когда ардуина кинет

Подсобите плиззз

ishimcity
Offline
Зарегистрирован: 24.01.2012

Собственно решил вопрос, теперь следующий вопрос))

На страничку PHP прилитают данные, но как сделать чтоб они обновлялись?

И еще вопрос у меня много датчиков и данных тоже, а на страничке все в кучу как бы разделить все это дело?

 

Geronimo
Offline
Зарегистрирован: 06.05.2013

1) почитай по META refresh

<<И еще вопрос у меня много датчиков и данных тоже, а на страничке все в кучу как бы разделить все это дело?

 

2) HTML вам в помощь

duch
Offline
Зарегистрирован: 18.12.2014

Напиши как решил этот вопрос.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

duch пишет:

Напиши как решил этот вопрос.

АЯКСом это решается...

duch
Offline
Зарегистрирован: 18.12.2014

имеется в виду не обновление данных, а строчка

12 $read = $serial->readPort();
13 echo $read;