树莓派小车终于能动了

今天用ptyhon写了一个websocket程序,简单的可以通过手机控制小车了,这是我学习python的第十八天。

昨天将老电脑的电池拆下来,是三星的18650,2000ma一个,总共8个,2并四串的,充满了有16.8v,完全可以用在L298N板上,这样省了一个电源钱,哈哈,不过手也弄破了。唉,省钱和挣钱一样难。

言贵正转,之所有没有使用api的方法来和控制小车,主要是因为没有那么实时,对于小车来说,慢一点可能车已经跑好远了,所以这儿使用实时的websocket来通信.

这儿大致说下过程

安装包

安装要用到的包,flask_socketio

$pip install flask_socketio
$pip install flask

关键代码

接着就是写代码了,主要是用socketio来临听客户端发来的请求

from flask import Flask, render_template  
from flask_socketio import SocketIO  
app = Flask(__name__)  
app.config['SECRET_KEY'] = 'ilovepi'

@app.route('/')
def index():  
    return render_template('index.html')

socketio = SocketIO(app)  
@app.route('/')
def index():  
    return render_template('index.html')

@socketio.on('action')
def handle_message(msg):  
    print('received message: ' + str(msg))
    action =msg['action']
    print(action) 
    #这儿可以写怎么控制小车了如前进,后退等 

if __name__ == '__main__':  
    #这儿要是0.0.0.0, 不要监听127.0.0.1,这样无法在手机上访问了
    socketio.run(app, debug=True,host='0.0.0.0') 

再写一下client

 <script src="https://cdn.bootcss.com/socket.io/2.0.4/socket.io.js">
 </script>
  <script type="text/javascript" charset="utf-8">
      var socket = io.connect('http://' + document.domain + ':' + location.port);
      socket.on('connect', function() {
          console.log("connet")
      });
      function go(action){
        socket.emit('action', {action:action});
      }
  </script>

写完代码就可以上传到树莓派中了,建议申请一个github.com帐号来管理代码

运行代码

python app.py

这样就可以通过http://192.168.2.144:5000来访问了,我这儿用上了上一次使用的 mjpg-streamer,

直接放在代码

<img src="http://192.168.2.144:8080/?action=stream" />  

就可以访问到视频了, 然后在视频上面加上按钮就可以操控小车了

整个过程完成,具体代码见 https://github.com/witleaf/raspberry