公网访问树莓派
公網(wǎng)訪問樹莓派控制小車
上篇已經(jīng)介紹了小車在局域網(wǎng)中的控制方法,比較簡單,既然是遠(yuǎn)程遙控那就要能夠進(jìn)行公網(wǎng)訪問,使得你的小車可以在任何有網(wǎng)絡(luò)的地方都能訪問到,并且后續(xù)還會加上攝像頭,進(jìn)行實(shí)時(shí)監(jiān)控,想一下是不是很有趣,下面進(jìn)入正文。首先,如果想要遠(yuǎn)程訪問,那就要使你的手機(jī)能在任何地方都能訪問到你樹莓派的IP。而現(xiàn)在我們用的IPv4,你不會有一個(gè)公共IP。所以這就需要一個(gè)中介,去買一個(gè)服務(wù)器,這樣在手機(jī)和樹莓派中間就有了一個(gè)中介,手機(jī)可以直接訪問云服務(wù)器,樹莓派也可以訪問到云服務(wù)器這樣間接地連接起了手機(jī)與樹莓派。我這里用的用的是阿里云的云服務(wù)器,9.9一個(gè)月不是很貴。買了這個(gè)云服務(wù)器后它就會給你一個(gè)公網(wǎng)上的IP。具體的流程就是:樹莓派與云服務(wù)器建立一個(gè)socket長連接,手機(jī)也與云服務(wù)器建立一個(gè)socket長連接。整個(gè)的連接建立起來以后不管是手機(jī)向樹莓派發(fā)送數(shù)據(jù)還是樹莓派向手機(jī)發(fā)送數(shù)據(jù)都可以輕松實(shí)現(xiàn)了。云服務(wù)器的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() 需要注意的是,要首先運(yùn)行服務(wù)器的代碼,然后運(yùn)行樹莓派,確保樹莓派與云服務(wù)器的socket能夠順利的建立。樹莓派的代碼要在上一篇代碼的基礎(chǔ)上增加一個(gè)先與云服務(wù)器取得連接的代碼,比較簡單就不寫了。 這只是一個(gè)簡單的實(shí)現(xiàn)方法,想增加其他的功能在上面擴(kuò)展就可以了。 下一篇將做樹莓派的遠(yuǎn)程監(jiān)控。確定不關(guān)注一波???原文:https://blog.csdn.net/ayz123456/article/details/78306042
總結(jié)
- 上一篇: 树莓派远程监控的实现
- 下一篇: 成都欢乐谷坐地铁几号线