Проблема управления светодиодом на Arduino с веб-сервера Mac через USB - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь управлять Arduino через последовательный интерфейс.Это работает только в определенной степени.

Я использую Arduino Uno R3 и Mac с Mojave (10.14.6), Apache версии 2.4.34 и PHP версии 7.1.23.

Я начал с этого простого проекта:

https://www.instructables.com/id/Control-LED-Using-Serial-Monitor/,

, и он отлично работает.Я могу выключить и включить светодиод, набрав 1 и 2 на последовательном входе приложения Arduino на моем Mac.Теперь я хочу сделать то же самое с веб-сервера, установленного на том же Mac.Я пробовал два разных способа сделать это.Либо путем доступа к последовательному интерфейсу через библиотеку PhpSerial, найденную здесь:

https://www.phpclasses.org/package/3679-PHP-Communicate-with-a-serial-port.html,

, либо путем отображения сигнала (1 или 2) в командной строке.Ни то, ни другое не работает.В PHP-файл я поместил следующий код:

<?php      
      include 'PhpSerial.php';
      $serial = new PhpSerial;
      $serial->deviceSet("/dev/cu.usbmodem14101");
      $serial->confBaudRate(9600);
      $serial->confParity("none");
      $serial->confCharacterLength(8);
      $serial->confStopBits(1);
      $serial->confFlowControl("none");

      if(isset($_GET["submit"])){
        $serial->deviceOpen();
        if($_GET["led"] == "ON")
          $serial->sendMessage(1);
        if($_GET["led"] == "OFF")
          $serial->sendMessage(2);
      }
?>

Это приводит к тому, что светодиод делает некоторое случайное мигание, которое я интерпретирую как Arduino или настраиваемый серийный номер, но индикатор неВыключено, когда я пытаюсь сделать это через элемент <form> в файле PHP.Может ли быть так, что сериал настроен неправильно?Теперь я решил обойтись, запустив команды оболочки в PHP.Запустив

screen /dev/cu.usbmodem14101

в терминале (вручную, а не через PHP), я могу получить доступ к Arduino через последовательный интерфейс и успешно включать и выключать светодиод, как я это делал в последовательном интерфейсеArduino-приложения на Mac.Однако я не могу узнать, как использовать экранную команду из PHP.Поэтому я подумал, что мог бы выводить команды на Arduino через последовательный интерфейс, как это

echo 1 > /dev/cu.usbmodem14101

Это дает тот же результат, что и с PhpSerial.Светодиод мигает случайным образом, но он не включается, когда я отправляю их и двойки в сериал.Поскольку мне не удается заставить его работать в терминале, я еще не пробовал запускать команды в PHP.

Что я пропустил?

...