| Ваш IP: 54.91.203.233 | Online(26) - гости: 12, боты: 14 | Загрузка сервера: 3.35 ::::::::::::

Управляем 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);
}

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

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

  • УМЗЧ 12ВТ на MOSFET транзисторах

    УМЗЧ 12ВТ на MOSFET транзисторах

    На рисунке показана схема простого но высококачественного усилителя выходной каскад которого выполнен на MOSFET транзисторах  2SK135 и  2SJ50. Усилитель напряжения выполнен на ОУ NE5534. NE5534 — высокопроизводительный операционный усилитель, сочетающий превосходные характеристики постоянного и переменного тока. Обладает очень низким уровень шума, имеет высокую производительность, высокое единичное усиление, низкий уровень искажений и высокий …Подробнее...
  • Частотомер 1МГц на PIC16F628A

    Частотомер 1МГц на PIC16F628A

    На рисунке показана схема простого частотомера, который состоит из микроконтроллера PIC16F628A и трех семисегментных индикаторов. Частотомер способен отображать частоту в кГц от 1 до 999. Время счета 4 мс, время повторения счета 1 секунда. Все транзисторы в схеме BC337 или их аналог. Ток потребления схемы 45мА при напряжении 5В. Все резисторы подключенные …Подробнее...
  • Параметры, типовой режим и цоколевки электровакуумных приборов (преобразовательные лампы и электронно-лучевые индикаторы настройки)

    Литература РА1998_08Подробнее...
  • Усилитель для наушников

    Усилитель для наушников

    На рисунке показана простая, но высококачественная схема усилителя для наушников.  Выходная мощность усилителя 0,5 Вт на нагрузке 32 Ом. Усилитель обладает очень низким КНИ, ток потребления схемы не превышает 100 мА. Выходные транзисторы должны быть установлены на небольшие теплоотводы. Источник — http://www.redcircuits.com/Page185.htmПодробнее...
  • Усилитель мощности 50 Вт (K1058 + J162)

    Усилитель мощности 50 Вт (K1058 + J162)

    50W Усилитель мощности с выходным каскадом на полевых транзисторах K1058 + J162 достаточно прост. В усилителе используется двух полярное питания +/-35В на 2А. Полевые транзисторы K1058 и J162 должны быть установлены на радиаторе.     Характеристики усилителя мощности:   Выходная мощность на частоте 1 кГц 50Вт на 8 Ом нагрузке и 88Вт …Подробнее...