公网访问树莓派控制小车
上篇已经介绍了小车在局域网中的控制方法,比较简单,既然是远程遥控那就要能够进行公网访问,使得你的小车可以在任何有网络的地方都能访问到,并且后续还会加上摄像头,进行实时监控,想一下是不是很有趣,下面进入正文。首先,如果想要远程访问,那就要使你的手机能在任何地方都能访问到你树莓派的IP。而现在我们用的IPv4,你不会有一个公共IP。所以这就需要一个中介,去买一个服务器,这样在手机和树莓派中间就有了一个中介,手机可以直接访问云服务器,树莓派也可以访问到云服务器这样间接地连接起了手机与树莓派。我这里用的用的是阿里云的云服务器,9.9一个月不是很贵。买了这个云服务器后它就会给你一个公网上的IP。具体的流程就是:树莓派与云服务器建立一个socket长连接,手机也与云服务器建立一个socket长连接。整个的连接建立起来以后不管是手机向树莓派发送数据还是树莓派向手机发送数据都可以轻松实现了。云服务器的python代码:
#!/usr/bin/env python
#encoding:utf-8
import signal
import atexit
from socket import *
import sys
import time
def run_raspberry():s.listen(2)s1= socket(AF_INET, SOCK_STREAM)s1.bind(("", 2))conns,addrs=s1.accept()print 'humeiok'conn, addr = s.accept()print 'shoujiok'while 1:command= conn.recv(1024).replace('\n','')print commandif command=="forward":conns.sendall("forward")if command=="right":conns.sendall("right")if command=="left":conns.sendall("left")if command=="back":conns.sendall("back")if __name__ == '__main__':run_raspberry()
需要注意的是,要首先运行服务器的代码,然后运行树莓派,确保树莓派与云服务器的socket能够顺利的建立。树莓派的代码要在上一篇代码的基础上增加一个先与云服务器取得连接的代码,比较简单就不写了。
这只是一个简单的实现方法,想增加其他的功能在上面扩展就可以了。
下一篇将做树莓派的远程监控。确定不关注一波???
原文:https://blog.csdn.net/ayz123456/article/details/78306042