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