5
respostas

Relés não acionam

estou tentado fazer a atividade da aula 5 paso 8, autorizar o www-data.

Eu fiz de acordo com as instruções porém continua não funcionando o acionamento dos relés

Pelo que pude perceber isto só ocorre com os comandos em python via php, se eu apenas executar o comando pyton via terminal ele funciona, e se eu executar o comando "gpio write" via php também funciona

5 respostas

Oi Paulo,

eu tbm tenho algumas dúvidas :)

1) Vc consegue rodar apache2? Se sim, consegue ver a página com os botões no navegador?

2) O seu arquivo automate.py está na pasta /home/pi/GPIO/? automate.py funciona no terminal?

3) Tem mostra o seu arquivo php aqui para dar uma olhada?

obrigado e abs, Nico

1) consigo rodar o apache sim, inclusive se eu modificar o comando php de "execute("python..")" para "GPIO Write" consigo acionar os relés. 2)O arquivo está na pasta e funciona sim; 3) eu estou usando o arquivo PHP do exemplo

<!--
========================================
 Use (NUM)ON or (NUM)OFF in APPLICATION
========================================
DEVICE  MAP to PIN(GPIO)

DEVICE 1 pin7  (GPIO4)
DEVICE 2 pin11 (GPIO17)
DEVICE 3 pin12 (GPIO18)
DEVICE 4 pin13 (GPIO21)
DEVICE 5 pin15 (GPIO22)
DEVICE 6 pin16 (GPIO23)
========================================
-->


<?php 
if (isset($_POST['1ON']))
{
exec('python /home/pi/GPIO/automate.py 7 0');
}
if (isset($_POST['1OFF']))
{
exec('python /home/pi/GPIO/automate.py 7 1');
}
if (isset($_POST['2ON']))
{
exec('python /home/pi/GPIO/automate.py 11 0');
}
if (isset($_POST['2OFF']))
{
exec('python /home/pi/GPIO/automate.py 11 1');
}
if (isset($_POST['3ON']))
{
exec('python /home/pi/GPIO/automate.py 12 0');
}
if (isset($_POST['3OFF']))
{
exec('python /home/pi/GPIO/automate.py 12 1');
}
if (isset($_POST['4ON']))
{
exec('python /home/pi/GPIO/automate.py 13 0');
}
if (isset($_POST['4OFF']))
{
exec('python /home/pi/GPIO/automate.py 13 1');
}
if (isset($_POST['5ON']))
{
exec('python /home/pi/GPIO/automate.py 15 0');
}
if (isset($_POST['5OFF']))
{
exec('python /home/pi/GPIO/automate.py 15 1');
}
if (isset($_POST['6ON']))
{
exec('python /home/pi/GPIO/automate.py 16 0');
}
if (isset($_POST['6OFF']))
{
exec('python /home/pi/GPIO/automate.py 16 1');
}
?>

<title></title>
</head>
<body>
<form method="post">
<table style="width: 20%; text-align: left; margin-left: auto; margin-right: auto;"
 border="0" cellpadding="4" cellspacing="0">
      <tr>
        <td style="text-align: center;">DEVICE 1</td>
        <td style="text-align: center;"><button name="1ON">ON</button></td>
        <td style="text-align: center;"><button name="1OFF">OFF</button></td>
      </tr>
      <tr>
        <td style="text-align: center;">DEVICE 2</td>
        <td style="text-align: center;"><button name="2ON">ON</button></td>
        <td style="text-align: center;"><button name="2OFF">OFF</button></td>
      </tr>
      <tr>
        <td style="text-align: center;">DEVICE 3</td>
        <td style="text-align: center;"><button name="3ON">ON</button></td>
        <td style="text-align: center;"><button name="3OFF">OFF</button></td>
      </tr>
      <tr>
        <td style="text-align: center;">DEVICE 4</td>
        <td style="text-align: center;"><button name="4ON">ON</button></td>
        <td style="text-align: center;"><button name="4OFF">OFF</button></td>
      </tr>
      <tr>
        <td style="text-align: center;">DEVICE 5</td>
        <td style="text-align: center;"><button name="5ON">ON</button></td>
        <td style="text-align: center;"><button name="5OFF">OFF</button></td>
      </tr>
      <tr>
        <td style="text-align: center;">DEVICE 6</td>
        <td style="text-align: center;"><button name="6ON">ON</button></td>
        <td style="text-align: center;"><button name="6OFF">OFF</button></td>
      </tr>
  </table>
</form>
</body>
</html>

Oi Paulo,

Ao executar aparece algum erro no PHP?

Vc tbm pode usar o comando echo do PHP para verificar se o if foi executado ou não. Por exemplo:

if (isset($_POST['1ON']))
{
echo "<h2>1ON </h2>";
exec('python /home/pi/GPIO/automate.py 7 0');
}

Outro ponto é o seu mapeamento do GPIOs. Vc usou os mesmos GPIOs?

abs

$ python automate.py 7 0
  File "automate.py", line 19
    inicializaBoard()

Também não consegui executar.

import RPi.GPIO as GPIO

import sys

def inicializaBoard():
    GPIO.setmode(GPIO.BOARD)
    GPIO.setwarnings(False)

def definePinoComoSaida(numeroPino):
    GPIO.setup(numeroPino, GPIO.OUT)

def escreveParaPorta(numeroPino, estadoPorta):
    GPIO.output(numeroPino, estadoPorta)


numeroPino = int(sys.argv[1])
estadoPorta = int(sys.argv[2]

inicializaBoard()
definePinoComoSaida(numeroPino)
escreveParaPorta(numeroPino, estadoPorta)

Oi Marcelo, tem como criar uma nova pergunta no forum pois essa aqui já está resolvida (aproveitando, fala tbm se existe mais uma saida ou erro na execução).

vlw!