Arranque Arduino e Serial Port

Boa tarde,

sou novo no mundo do Arduino. Sou da área de web design e comecei, recentemente, um projecto que irá implicar o uso de motores que recebem uma instrução por PHP a partir de uma porta COM. A conexão está feita e o código está a funcionar. Contudo surgiram 2 situações ( de novato com certeza) mas que não estou a conseguir descobrir sozinho. Podem ajudar-me?

  • Se eu desligar o cabo usb do computador. Para voltar a conseguir enviar informacao pela página PHP obriga-me a abrir primeiro o arduino e o serial monitor. Só depois é que as drivers do Step Motor ficam activas e receptivas à informação enviada pelo php.

  • Gostava de criar o tipico "botao de stop de emergencia" mas como posso fazer o arduino ignorar o que está a fazer para activar a parte do codigo de emergencia?

Obrigado

Olá,

Qual o Arduino que usas?

O Arduino consegue receber dados da página PHP com o monitor série aberto? Tudo a usar o mesmo porto série? Que sistema operativo usas, Windows, Linux? Que código PHP usas para abrir o porto série?

Geralmente o código PHP terá de abrir o porto série e fechá-lo depois de enviar/receber dados. Ao abrir/fechar o porto série o Arduino faz um reset automático. Dependendo eventualmente da board, podes evitar isso colocando um condensador de 10 uF entre o Reset e o GND. Mais informação aqui: https://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection/.

O típico botão de emergência está normalmente fechado e corta a alimentação do circuito logo que pressionado. Ou seja, o botão abre quando pressionado, desligando o circuito, ficando nessa posição até que o utilizador desactive a emergência.

Se o objectivo é parar imediatamente os motores sem necessidade de outro processamento, então basta colocar esse botão de emergência, normalmente fechado (NF ou NC - normally closed) em série com a alimentação dos motores.

@tinyelectr muito obrigado pelas respostas.

Quanto à serial port. Expliquei-me mal. Eu não consigo usar o php quando tenho o serial aberto. Dá logo erro no FOPEN no php. Para usar uma coisa tenho de ter a outra fechada porque estão a usar a mesma porta. O meu problema é: Arduinho com o código funcional carregado na placa AT MEGA . Se seguida vou ao meu ficheiro php (sem serial aberto) e uso e funciona tudo às mil maravilhas. Se eu reiniciar o pc ou simplesmente desligar e ligar o cabo o usb. Deixo de conseguir usar o php para enviar informações aos motores. Para voltar a conseguir tenho antes de abrir o arduino, abrir o serial monitor, fechar o serial monitor e só ai o php volta a conseguir enviar informações.

Quanto ao botão entendi tudo. Obrigado realmente nunca me lembrei de por o código do botão na rotina dos motores.

Obrigado

Esqueceste de mencionar que sistema operativo usas :wink: . No outro post mencionaste "porta COM", por isso vou supor que estás a usar o Windows.

Ao abrires o monitor série do Arduino este ao iniciar configura o porto série com os parâmetros no Arduino. Depois essa configuração do porto série é mantida sendo possível voltar a abri-la sem necessidade de nova configuração. Daí ser possível abrir o porto série com o fopen do PHP apenas depois de usar o monitor série do Arduino.

Para evitar essa situação: depois de ligar o cabo USB ao Arduino, abre o gestor de dispositivos do Windows, selecciona o porto COM do Arduino e configura as respectivas propriedades (velocidade 9600, etc).

Se isso não resultar, outra hipótese será utilizar, em vez do fopen, uma biblioteca/classe "serial" no PHP que permita fazer essa configuração antes de iniciar comunicação com o porto série.

Estou a usar o windows 10 que, pelo que li, é o pior a receber e enviar informação pela serial port.

Entretanto vi este post que fala também do que mencionaste da class serial de php. No meu caso, não foi necessário, acrescentei esta linha no meu código php e funcionou.

exec("mode COM5 BAUD=9600 PARITY=N data=8 stop=1 xon=off");

Nesta altura já se liga ao arduino sem ser necessário abrir primeiro o serial monitor. Obrigado