Arduino UNO + PHP интерфейс

niksen
Offline
Зарегистрирован: 18.01.2012
Баллы: 14

Пытаюсь  обратиться к Arduino UNO через php_serial.class на локальном сервере osx. 

Ardhuino подключено через USB, подключиться через терминал к /dev/tty.usbmodemfd131 и отправлять команды - получается. А вот через PHP интерфейс - нет. Просто висит страничка.

Возможно причина в настройках моего apache, нужно дать пользователю доступ к serial портам? Кто сталкивался с похожим или знает как решить - пожалуйста, подскажите.

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011
Баллы: 75

Я делал так:

php:

if (isset($_GET['param'])) {
$fp = fopen("com7", "w");
fwrite($fp, chr(1));
fclose($fp);
}

 

А в arduino слушл Serial порт

for(;;){

 if (Serial.available()){
   var p = Serial.read();
 }

}

 

 P/s апач у меня на винде

niksen
Offline
Зарегистрирован: 18.01.2012
Баллы: 14

 На osx все заработало - запустилось. Но поменялась задача - нужно запустить РНР скрипт на винде, который бы управлял Ардуино подключенной к этому же компьютеру. Тут мне ваш опыт будет очень полезен, поделитесь пожалуйста подробнее. Какую программу-прослойку для общения РНР с портом использовали?

Уточняющая информация по моей системе:

Windos 7 64bit, Arduino UNO, XAMPP (Апач запущен)

Проблема: не получается управлять Arduino через РНР.

Использую  serial2socket
порт 8080 там по дефолту dl.dropbox.com/u/15881557/Screen%20shot%202012-01-23%20at%202.26.42%20PM.png — вот так выгляди окно serial2proxy

код php:

<?php
$fp = fsockopen(«127.0.0.1», 8080, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
\n";
} else {
fwrite($fp, «1»);

fclose($fp);
}
?>

На ардуино слушают 1 или 0 в зависимости от этого зажигаю 13 лед - но проблема в том что через прокси команда один раз проходит, а на второй запрос пишет Refused connection from 127.0.0.1 как показано в скрине выше, подскажите пожалуйста в чем может быть проблема? Или какой прокси использовать?

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011
Баллы: 75

Через сервер апач на винде - работает на "ура", но тмы пользуемся com-портом, если хотите работать через сокеты на прямую - это интересно, можно поробовать через С++. Пусть программка слушает сокет, если подключились - создаем поток и коннектимся к дуине, тут можно обойтись и без пхп. Только нужен ip и проброшенный порт до компа, на котором програмулина и ардуина.

Завтра посмотрю.

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011
Баллы: 75

А по-поводу проблеммы сокетов в пхп: может, после первого обращения с сокетом он "открыт"/"используется", из-за этого пхп и ругается? Я б попробовал закрывать сокет после общения.

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011
Баллы: 75

Оу, вчитался еще разок и понял проблемму.

Чтоб подружить ардуину с компом через com порт, под управлением php установите denwer: www.denwer.ru/dis/Base/latest

После установки у вас будет полноценный php(и не только)-сервер, к которому Вы можете обращаться из вне и контролировать com порты.

В деррикторию www кладете ваш php скрипт, обращаетесь к нему, а он управляет дуиной. Необходимый код я выкладывал ранее.