python — Связь между Raspberry Pi, Arduino и веб-сервером с использованием переполнения стека

В данный момент я работаю над проектом, на котором размещена веб-страница на Raspberry Pi, и я хотел бы послать несколько команд в Arduino через USB, который светится светодиодами.

Связь между Raspberry Pi и Arduino безупречна.

Единственная реальная проблема в том, что я не могу добраться до своего Arduino с веб-страницы. мой сервер, кажется, не соединяется с моим PI.

Ниже приведены коды: —

Arduino:

const int ledPin1 = 13;
const int ledPin2 = 8;
const int ledPin3 = 9;

void setup(){
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
Serial.begin(9600);
}void loop(){
if (Serial.available()) {
light(Serial.read() ­- '0');
}
delay(500);
}void light(int n){
switch(n)
{
case 1:
digitalWrite(ledPin1, HIGH);
delay(1000);
digitalWrite(ledPin1, LOW);
delay(1000);
break;
case 2:
digitalWrite(ledPin2, HIGH);
delay(1000);
digitalWrite(ledPin2, LOW);
delay(1000);
break;
case 3:
digitalWrite(ledPin3, HIGH);
delay(1000);
digitalWrite(ledPin3, LOW);
delay(1000);
break;
}
}

Коды Python
(Client.py):

#!/usr/bin/env pythonimport socket
import sysTCP_IP = '169.254.181.84'
TCP_PORT = 5005
BUFFER_SIZE = 1024
MESSAGE = str(sys.argv[1])
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()
print "received data:", data

Код Python 2:

(lec.py) для PI

#!/usr/bin/env python
import socket
import serial
import time
import subprocess
dev =subprocess.check_output('ls /dev/ttyACM*',shell=True)
print dev
try:
ser = serial.Serial(dev.strip(),9600)
print "Arduino Connected"except:
print "Arduino not connected"def server():
global ser
while True:
conn, addr = s.accept()
print 'Connection address:', addr
data = conn.recv(BUFFER_SIZE)
if not data: continue
print "received data:", data
if data == '1':
conn.send("Blue light Glowing")
conn.close()
ser.write('1')
time.sleep(1)
elif data == '2':
conn.send(" Red light blowing")
conn.close()
ser.write('2')
time.sleep(1)
elif data == '3':
conn.send(" Green light blowing")
conn.close()
ser.write('3')
time.sleep(1)
elif data == '7':
conn.send('bye bye')
conn.close()
ser.close()
exit(0)
else :
ser.write(data)
aa =  ser.readline()
time.sleep(0.1)
print aa
conn.send(aa)
conn.close()TCP_IP = '169.254.181.84'
TCP_PORT = 5005
BUFFER_SIZE = 20  # Normally 1024, but we want fast response
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((TCP_IP, TCP_PORT))
s.listen(5)
print 'server started'
server()

HTML-код:

<html>
<body>
<form action="welcome.php" method="post">
Enter Command: <input type="text" name="name"><br>
<input type="submit">
</form>
</body>
</html>

Код Welcome.php:

<html>
<body>
Command is <?php echo $_POST["name"]; ?><br>
<?php
$command=$_POST["name"];
$a = "python /home/client.py ";
$b= $a.$command;
$last_line = system($b, $retval);
echo '
</pre>
<hr />Last line of the output: ' . $last_line; . '
<hr />Return value: ' . $retval;
?>
</body>
</html>

Я попробовал, но безрезультатно.

Я хотел бы добавить, что мой сценарий отвечает на мои запросы, так как я вижу зеленое свечение на доске Raspberry Pi при нажатии кнопки отправки, но Arduino не получает эти запросы.

Почему Arduino не получает запросы, которые я отправляю через веб-страницу?

для получения дополнительной информации, пожалуйста, посмотрите это видео на YouTube

Визит Http: // https: //www.youtube.com/watch? v = M2-nXbi3qmk /

Кто-нибудь, пожалуйста, помогите мне отладить проблему и сделать жизнь проще и проще

Спасибо

Всего хорошего !!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]