寵物狗智能項(xiàng)圈系統(tǒng)
7 設(shè)計(jì)難點(diǎn)原理解析
本文引用地址:http://butianyuan.cn/article/273064.htm(1)MSP430程序自升級(jí)
一般將新程序燒寫到單片機(jī)需要燒寫軟件或使用串口進(jìn)行燒錄。要實(shí)現(xiàn)遠(yuǎn)程升級(jí),需引入類似于操作系統(tǒng)中的bootloader。下面這段引導(dǎo)代碼需事先燒錄至單片機(jī)中。
void main()
{
WDTCTL = WDTPW + WDTHOLD; //關(guān)看門狗
If(ResetVectorValid() == 1) //判斷是否已更新程序
{
Application();
}
Update();
}
其中Application()中存放用戶執(zhí)行程序,而Update()中進(jìn)行獲取程序,并將相關(guān)程序從內(nèi)存拷貝至flash進(jìn)行覆蓋。當(dāng)然,這里對(duì)燒錄進(jìn)的二進(jìn)制文件需要有一定程度的了解,才能將其拷貝至對(duì)應(yīng)位置。
(2)網(wǎng)絡(luò)功能
這部分需要對(duì)樹莓派與linux系統(tǒng)有一定程度的了解。在樹莓派中,利用python語言的靈活性及集成好的工具,可以輕易地實(shí)現(xiàn)很多網(wǎng)絡(luò)功能。結(jié)合我們的系統(tǒng)舉個(gè)小例子,從寵物端獲取數(shù)據(jù)后,將其存放至一個(gè)data.txt件中,并運(yùn)行以下python文件:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
with open("data.txt","r") as fd:
self.write(fd.read())
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(80)
tornado.ioloop.IOLoop.instance().start()
這部分可當(dāng)做模板使用,其中open函數(shù)的第一個(gè)參數(shù)可帶路徑。執(zhí)行后可通過訪問樹莓派的IP地址獲取到相關(guān)信息,此時(shí)訪問端需與樹莓派處于同一網(wǎng)段。執(zhí)行完上述python文件后,緊跟著執(zhí)行ngrok 80,即可以帶有.ngrok.com后綴的網(wǎng)址發(fā)布到互聯(lián)網(wǎng),從而可以快速實(shí)現(xiàn)遠(yuǎn)程訪問。
評(píng)論