Связь Arduino и PHP работает только в том случае, если открыт Arduino IDE

У меня проблема. Я пытаюсь открыть канал для разговора Arduino и PHP, PHP отправит команду, и Arduino должен ответить на это. Это работает, но только если я выполню несколько шагов раньше:

  1. sudo chmod 777 /dev/ttyACM0
  2. судо Arduino
  3. Откройте последовательный монитор в Arduino IDE
  4. Закройте последовательный монитор
  5. Теперь все в порядке, они могут говорить

Первый шаг в порядке, мне очень нужно это сделать, 2-4 кажутся неактуальными, но без этого общение не начинается. Я поместил один ЖК-дисплей в Arduino, чтобы распечатать то, что он получил, когда я отправляю ему «HEYARD» с PHP, светодиод RX мигает, а также светодиод TX, но на ЖК-дисплее ничего не печатается. Если я выполняю шаги 2-4, когда PHP отправляет «HEYARD», ЖК-дисплей показывает HEYARD, а arduino отвечает «HEYPHP»

Кто-нибудь может помочь? Есть какой-то способ открыть его через Терминал или, по крайней мере, открыть Serial Monitor из arduino и закрыть, чтобы посмотреть, запустится ли это

, 👍0

Обсуждение

Устанавливает ли код PHP правильную скорость передачи данных, четность и т. д.?, @Gerben

Да, вроде все в порядке, скорость в бодах правильная, четность "нет", они могут нормально разговаривать, но только если я перед этим открою серийный монитор. Я пытался открыть экран в терминале, но тоже не работал, нужен последовательный монитор. Спасибо, @Jomarumu

Попробуйте подходящий эмулятор терминала, например Minicom., @Majenko

Возможно, Arduino устанавливает правильные настройки для /dev/ttyACM0, поэтому другие после этого не должны, но должны. Не могли бы вы опубликовать код PHP и команду screen?, @Gerben

Я пытался использовать миником, до сих пор ничего не мог прочитать, но я попробую заставить его запустить порт., @Jomarumu


2 ответа


1

Здесь блок установки:

<?php 
    require("php_serial.class.php");
    $serial = new phpSerial();
    $serial->deviceSet("/dev/ttyACM0");
    $serial->confBaudRate(9600);
    $serial->confParity("none");
    $serial->confCharacterLength(8);
    $serial->confStopBits(1);
    $serial->confFlowControl("none");
    $conect = mysql_connect("localhost", "root", "") or print (mysql_error()); 
    mysql_select_db("ANM", $conect) or print(mysql_error()); 
?>

А вот блок подключения:

<?php 
    $serial->deviceOpen();
    exec("echo 'HEYARD' > /dev/ttyACM0");
    sleep(1);
    $read = $serial->readPort();
?>
,

0

stty -F /dev/ttyACM0 ignpar stty -F /dev/ttyUSB0 ignpar

IGNPAR Игнорировать ошибки кадрирования и ошибки четности.

Это то, что вам нужно, чтобы исправить мелкие проблемы с кадрированием.

Экран переключает это по умолчанию; но НИ ОДИН из последовательных драйверов этого не делает. Особенно при подключении PI или BBB к Arduino

,