公網訪問樹莓派控制小車
上篇已經介紹了小車在局域網中的控制方法,比較簡單,既然是遠程遙控那就要能夠進行公網訪問,使得你的小車可以在任何有網絡的地方都能訪問到,并且后續還會加上攝像頭,進行實時監控,想一下是不是很有趣,下面進入正文。首先,如果想要遠程訪問,那就要使你的手機能在任何地方都能訪問到你樹莓派的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