В данный момент я работаю над проектом, на котором размещена веб-страница на 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 /
Кто-нибудь, пожалуйста, помогите мне отладить проблему и сделать жизнь проще и проще
Спасибо
Всего хорошего !!
Задача ещё не решена.
Других решений пока нет …