| Ваш IP: 54.226.23.160 | Online(30) - гости: 20, боты: 8 | Загрузка сервера: 2.59 ::::::::::::

Управляем Arduino из PHP

В данном примере показана возможность взаимодействия php и  Arduino. Тест проводится на Ubuntu 14.04, установлен веб сервер Apachе 2, php 5.5. В тесте опробована включение и выключение цифрового выхода, а так же опрос состояния выхода при помощи php.

test.php

<meta charset="utf-8">
<table align='center' width="200" border='0' cellspacing='0' cellpadding='5'>

<form action="" method="post">
<td><button type="submit" name="on">Включить</button></td>
<td><button type="submit" name="off">Выключить</button><td>
</form>
<tr><td colspan="2"><center>
<?php
/* В терминале перед запуском скрипта выполните команду:
sudo chown www-data:www-data /dev/ttyUSB0                        
*/
$dev = "/dev/ttyUSB0";
exec("stty -F $dev 9600 raw -echo");
$f = fopen($dev,"w+");// открываем порт
if (!$f) die ("Ошибка!!! Порт не открылся!");

sleep(2);
// Отправка в порт
if (isset($_POST["on"])){fwrite($f,chr(49));echo"ON";}
if (isset($_POST["off"])){fwrite($f,chr(48));echo"OFF";}

sleep(2);
// чтение порта
while (fread($f, 1) != chr(0xA)){} // ждем ответа
$a = fgets($f);
echo "<br>Выход 13: ". $a;
  
fclose($f); // закрываем порт

?>

скетч

void setup(){
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}
char Byte;

void loop(){
  if( Serial.available() > 0 ){
    Byte = Serial.read(); 
    if(Byte == '1'){
      digitalWrite(13,HIGH);
    }
    if(Byte == '0'){
      digitalWrite(13,LOW);
    }
  }
  Serial.println(digitalRead(13));// Отправляем каждые 1000 мс
   delay(1000);
}

Через порт при помощи php скрипта отправляются данные типа  char, соответственно chr(49) = 1, а chr(48) = 0, что соответствует коду символа в таблице кодировки символов ASCII. Перед отправкой данных происходит открытие порта, отправляются данные и порт закрывается. При этом на плате Arduino загорается или гаснет, в зависимости от команды светодиод подключенный к пину 13. Если это делается удаленно, то желательно получить обратную связь, нужно убедится в правильности работы Arduino, поэтому перед закрытием порта php скрипт ожидает ответ от Arduino. В скетче видно, что происходит запрос состояния пина 13 и отправка значения один раз в секунду в порт.

Изменив немного код можно передать значение напряжения поданного на вход А1 скрипту php.

Подадим напряжение 3,3 В на аналоговый вход А1 и измерим его при помощи php скрипта.

test.php

<meta charset="utf-8">
<table align='center' width="200" border='0' cellspacing='0' cellpadding='5'>

<form action="" method="post">
<td><button type="submit">Измерить напряжение на входе А1</button></td>
</form>
<tr><td colspan="2"><center>
<?php
/* В терминале перед запуском выполните команды:
sudo chown www-data:www-data /dev/ttyUSB0                        
*/
$dev = "/dev/ttyUSB0";
exec("stty -F $dev 9600 raw -echo");
$f = fopen($dev,"w+");// открываем порт
if (!$f) die ("Ошибка!!! Порт не открылся!");

sleep(2);
// чтение порта
while (fread($f, 1) != chr(0xA)){} // ждем ответа
$a = fgets($f);
echo "<br>Напряжение: ". $a. "В";
  
fclose($f); // закрываем порт

?>
</td><tr></table>

скетч

void setup(){
  Serial.begin(9600);
  pinMode(A1,INPUT);
}

float u;
int u1;

void loop(){
  u1=analogRead(A1);
  u=u1*5.0/1023;
  
  Serial.println(u);// Отправляем каждые 1000 мс
   delay(1000);
}

Добавить комментарий

Случайные статьи

  • Микро-сигнализация

    Схема микро-сигнализации устанавливается в маленькую коробочку. Небольшой магнит расположен близко к геркону. При разделении магнита и геркона срабатывает сигнализация. Микро-сигнализацию можно использовать для охраны двери, окна, сумки и других вещей. При срабатывании сигнализации динамик издает громкий звуковой сигнал. Схема сигнализации представляет собой генератор, питается уст-во от батарей 3В (2*1,5В). Примечания: …Подробнее...
  • Параметры отечественных биполярных транзисторов

  • Эксплуатация и ремонт компактных люминесцентных ламп

    Сокращения: КЛЛ — компактная люминесцентная лампа ТЛЛ — трубчатая люминесцентная лампа ЛН — лампа накаливания Принцип действия КЛЛ заключается в подаче на 2-а электрода покрытых барием или окисью бария, напряжения, в результате чего происходит возбуждение(ионизация) паров смеси аргона и ртути. В результате ионизации возникает низкотемпературная плазма внутри лампы. Пары ртути …Подробнее...
  • Узел настройки УКВ-ЧМ приемника

    Узел настройки УКВ_ЧМ приемника представляет собой синтезатор напряжения для электронной настройки УКВ_ЧМ приемника и как дополнительное уст-во — электронную линейную шкалу напряжения для контроля напряжения подаваемого на варикапы приемника. Напряжение настройки приемника устанавливается при помощи полевого транзистора VT1, в его затворной цепи включен С1, при нажатии S1 или S2 С1 …Подробнее...
  • Простой приемник на К140УД1А

    Для начинающих радиолюбителей предлагаю собрать схему простого приемника принимающего одну станцию в диапазоне средних волн. ОУ обладает высоким коэффициентом усиления (от 600 до 4500). В данной схема ОУ выполняет сразу несколько функций: усилителя радиосигнала, детектора и усилителя звуковой частоты. Колебательный контур L1 настроенный на одну станцию, выделенные на нем колебания …Подробнее...