ардуино уно + пхп +сом
- Войдите на сайт для отправки комментариев
Пнд, 29/07/2013 - 19:03
с пхп скрипти идут запросы на включения леда.
он включаеться и выклюбчаеться нормально но как пытаемся прочитать состояния лета через пхп он перестает включаться и выключаться.
скечь
int led =13;
int usb ;
int w1 = 1;
int w2 = 3;
int temp = 0;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
usb = Serial.read();
}
if (usb==1) { //Если 1, включаем led
digitalWrite(led, HIGH);
temp = 1;
} else if (usb==2) { //Если 2, выключаем led
digitalWrite(led, LOW);
temp = 2;
}
while (w1 <= w2) {
Serial.println(temp);
delay(100);
w1++;
}
}
а вот код пхп
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
if (isset($_GET['action'])) {
if ($_GET['action'] == "1") {
require("php_serial.class.php");
$serial = new phpSerial();
$serial->deviceSet("COM3");
//$serial->deviceSet("/dev/ttyACM0");
$serial->confBaudRate(9600);
$serial->deviceOpen("w+");
//sleep(2);
$serial->sendMessage(chr(1));
$serial->deviceClose();
print "poslal: ".$_GET['action'];
} else if ($_GET['action'] == "2") {
require("php_serial.class.php");
$serial = new phpSerial();
//$serial->deviceSet("/dev/ttyACM0");
$serial->deviceSet("COM3");
$serial->confBaudRate(9600);
//sleep(2);
$serial->deviceOpen("w+");
$serial->sendMessage(chr(2));
$serial->deviceClose();
print "poslal: ".$_GET['action'];
}
}
exec("mode COM3 BAUD=9600 PARITY=N data=8 stop=1 xon=off");
//$fp = fopen ("/dev/ttyACM0", "w+");
$fp = fopen ("COM3", "w+");
//exec("mode COM3 BAUD=9600 PARITY=N data=8 stop=1 xon=off");
//$fpr = fopen ("COM3", "rb+");
if($_GET['action']==3)
{
if (!$fp) {
echo "Not open";
} else {
fwrite($fp, chr(1));
}
fclose($fp);
} elseif ($_GET['action']==4)
{
if (!$fp) {
echo "Not open";
} else {
fwrite($fp, chr(2));
}
fclose($fp);
} elseif ($_GET['action']==5)
{
if (!$fpr) {
echo "Not open";
} else {
while (fread($fpr, 1) != 0xA)
{
$a = fgets($fpr);
echo $a;
}
}
fclose($fpr);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>ARDUINO</title>
</head>
<body>
<h1> php_serial.class.php </h1>
<a href="1.php?action=1">ON</a></br>
<a href="1.php?action=2">OFF</a></br>
<h1> fopen </h1>
<a href="1.php?action=3">ON</a></br>
<a href="1.php?action=4">OFF</a></br>
<h1> 4tenie iz arduino </h1>
<a href="1.php?action=5">polu4it</a></br>
</body>
</html>
тут 2 разных варианта передачи данных, первый на виндовсе не работает вообще на линуксе как-то пытаеться
помогите товарищи
Это из-за того, что чертова ардуина перезагружается.
Когда получаете-принимаете данные, надо подключить конденсатор между ресетом и землей.
А когда надо заливать скетч - конденсатор надо отключить.
Вот тут поподробнее http://www.arduino.ru/forum/apparatnye-voprosy/pitanie-arduino-perezagruzka-arduino
а ели это дело все запустить через Ehternet модуль? это решит проблемму или там будут другие подводные камни?
у php вообще то большущие проблемы с COM портами (читайте документацию по php, даже почитайте readme вашего php_serial.class.php класса), на *nix еще как то более менее входящий/исходящий работают, а на Windows только помоему входящий возможен. Да и блин не дело это вообще скриптовыми языками с железом общаться!!!! вы бы еще драйвера на php попросили помочь написать...
ваш оптимальный выходной вариант - писать на c/c++/delphi прогу по общению с портом в роли "мостика"
это понятно, есть идея по автоматизации процесса отопления но надо удаленно иногда смотреть что за данные дают датчики и посылать корректирующие данные на исполнение ардуине, вот и думал что php самый простой и правильный вариант, зашёл на страничку получил данные с ардуины и если что послал данные.
что же это за автоматизация где надо что то смотреть и делать...
что же это за автоматизация где надо что то смотреть и делать...
проект называется сторож Петрович, звониш ему он смотрит манометры ( стучит по ним пальцем) и говорит чего видит, а ты ему гвоориш какой вентиль и куда на сколько градусов подкрутить... проблема видимо в том что Петрович на ПХП постоянно отвечает ПНХ :) гы гы