| Ваш IP: 54.158.248.112 | Online(25) - гости: 15, боты: 10 | Загрузка сервера: 2.47 ::::::::::::

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

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

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

  • Сторожевое устройство

    Для защиты дачного участка от непрошенных гостей, для ограждения опасных объектов можно использовать сторожевое устройство. Схема такого устройства (первый вариант) показана на рис. Объект, нуждающийся в охране, окружают по периметру медным обмоточным проводом диаметром 0,1… 0,3 мм. Этот охранный шлейф может быть прикреплен к забору или к вбитым в землю …Подробнее...
  • Регулируемый источник питания с защитой по току

    На рис.1 изображена схема стабилизатора, от которой можно питать не только автомобильный магнитофон, но и любую радиолюбительскую конструкцию с напряжением от 1 до 35 В и которой не страшны большие токи нагрузки, поскольку введена токовая защита. Регулятор напряжения собран на микросхеме DA1, которая дополнена мощным транзистором, который может отдать в …Подробнее...
  • Импульсные регуляторы напряжения MC34063A, MC33063A, NCV33063A

    Импульсные регуляторы напряжения MC34063A, MC33063A, NCV33063A

    Импульсные регуляторы напряжения MC34063A, MC33063A, NCV33063A — специально разработанные микросхемы для DC-DC преобразователей с минимальным количеством внешних элементов. Технические параметры Диапазон входных напряжений 3…40 В Диапазон выходных напряжений 1.25…40 В Максимальный выходной ток 1.5 А Рабочая частота 33 кГц На рисунках показаны типовые схемы подключения регуляторов напряжения, повышающий, понижающий и инверсный. Основные элементы …Подробнее...
  • Переключатель гирлянд с плавным изменением яркости

    Предложенный переключатель гирлянд собран на 2-х микросхемах. На DD1 выполнен симметричный мультивибратор, частоту которого можно регулировать в пределах от 195 до 205 Гц переменным резистором R2. Через инверторы DD1.3 DD1.4 прямоугольные импульсы мультивибратора поступают на триггеры DD2.1-DD2.2 которые выполняют роль делителей частоты. Выходные сигналы триггеров поступают на усилители тока VT1-VT4 …Подробнее...
  • Импульсный стабилизатор напряжения 5 В с высоким КПД

    В этом стабилизаторе используется специализированная ИМС LM2575-5,0. Его выходное напряжение составляет 5 В и задано типом примененной ИМС. Входное напряжение стабилизатора может составлять от 7 до 40 В. Выходной сигнал ИМС на выв. 2 представляет собой серию широтно-модулированных импульсов. После фильтрации цепью L1С2 это напряжение поступает на нагрузку и на …Подробнее...