0

我有运行 Micropython 的 ESP8266 12E 的 RC 汽车项目。ESP 处于 AP 模式,它托管的 HTML 页面包含两个滑块(一个用于转向,一个用于驱动速度)。两个滑块的值由 AJAX 请求每 200 毫秒发送一次。使用我的笔记本电脑进行控制时,一切正常,在我的旧 Android 手机(HTC Desire 200、Android 4.0)上运行也很好。但是,当我想用​​我现在的手机(华为 P8 lite,Android 6.0)控制汽车时,它运行了大约 2 分钟,然后它停止工作并在一段时间后重新连接。

有谁知道,什么或哪里可能是问题?

感谢您的任何回复。

这是python代码:

import socket
import machine

f = open('html.html')
html = f.read()
f.close()

servo = machine.PWM(machine.Pin(4), freq=50)
fwd = machine.PWM(machine.Pin(12), freq=50)
bwd = machine.PWM(machine.Pin(14), freq=50)

def speed(i):
    if i > 300:
        i = i-300
        fwd.duty(i)
        bwd.duty(0)
    elif i < -300:
        i = i*(-1)
        i = i-300
        fwd.duty(0)
        bwd.duty(i)
    else:
        fwd.duty(0)
        bwd.duty(0)

addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]

s = socket.socket()
s.bind(addr)
s.listen(1)

while True:
    conn, addr = s.accept()
    request = conn.recv(1024)
    conn.sendall('HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type:text/html\r\n\r\n')
    request = str(request)
    ix = request.find('X')
    iy = request.find('Y')
    iz = request.find('Z')
    if ix > 0 :
        ie = request.find(' ', ix)
        ValX = int(request[ix+1:iy])
        ValY = int(request[iy+1:iz])
        servo.duty(ValX)
        speed(ValY)           
    else:
        conn.sendall(html)
    conn.sendall('\n')
    conn.close()

和html:

<!DOCTYPE html>
<html>
  <head>
    <meta content='width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no;' name='viewport'/>
    <title>Ferrari F430</title>
    <style>

    input[type=range]::-moz-range-thumb {
    width: 40px;
    height: 40px;
    background: black;
    }

    input[type=range] {
    -webkit-appearance: none;
    height: 5px;
    background: lightgrey;
    outline: none;
    position:absolute;
    }

    input[type=range]::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 40px;
    height: 40px;
    border-radius: 5px;
    background: black;
    }
    </style>
  </head>
  <body>       
    <input type='range' ontouchend='resetX()' onmouseup='resetX()' min='61' max='101' value='81' id='sliderX' style='width:50%; left:5%; top:50%;'>
    <input type='range' ontouchend='resetY()' onmouseup='resetY()' min='-1323' max='1323' value='0' id='sliderY' style='width:40%; -webkit-transform:rotate(270deg); left:60%; top:50%;'>
      <script>

      function myFunction(){
        var x = document.getElementById("sliderX").value;
        var y = document.getElementById("sliderY").value;
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.open("POST","Val=X" + x + "Y" + y + "Z",true);
        xmlhttp.send();
      }
      setInterval(myFunction, 200);

      function resetX(){
        document.getElementById("sliderX").value = 81; 
      }

      function resetY(){
        document.getElementById("sliderY").value = 0; 
      }
      </script>
  </body>
</html>
4

1 回答 1

0

我不确定,但你的手机应该会显示一个通知,上面写着一些想法,连接到没有互联网的网络,我们有两个按钮,“保持连接”和另一个按钮。如果您使用它并单击保持连接,那很好

于 2018-05-08T19:00:42.050 回答