樹(shù)莓派步進(jìn)電機(jī)的網(wǎng)頁(yè)控制使用Flask
掃描二維碼
隨時(shí)隨地手機(jī)看文章
步進(jìn)電機(jī)是一種無(wú)刷直流電動(dòng)機(jī),其旋轉(zhuǎn)每轉(zhuǎn)一圈分為幾步。步進(jìn)電機(jī)需要不同數(shù)量的步驟來(lái)完成一個(gè)360°旋轉(zhuǎn)。由于這一特點(diǎn),步進(jìn)電機(jī)提供了精確的控制,并用于3D打印機(jī),CNC路由器和機(jī)器人。步進(jìn)電機(jī)需要電機(jī)驅(qū)動(dòng)器和單片機(jī)才能正常工作,這里我們將使用A4988步進(jìn)電機(jī)驅(qū)動(dòng)器與樹(shù)莓派通過(guò)網(wǎng)頁(yè)旋轉(zhuǎn)NEMA17步進(jìn)電機(jī)。
該網(wǎng)頁(yè)將使用用于樹(shù)莓派步進(jìn)電機(jī)控制的Flask Web框架創(chuàng)建。網(wǎng)頁(yè)將有一個(gè)滑塊和一個(gè)提交按鈕,它將發(fā)送滑塊值到樹(shù)莓派按下提交按鈕。在基于物聯(lián)網(wǎng)的應(yīng)用中,web服務(wù)器用于使用web瀏覽器控制或監(jiān)控任何傳感器值,我們以前使用Arduino, ESP8266, NodeMCU, ESP32,樹(shù)莓派等創(chuàng)建了許多web服務(wù)器。
Flask是一個(gè)流行的Python web框架,由Pocoo的Armin Ronacher開(kāi)發(fā)。它是用于開(kāi)發(fā)web應(yīng)用程序的第三方Python庫(kù)。Flask被歸類為微框架,它基于Pocoo項(xiàng)目Werkzeug和Jinja2。Flask在樹(shù)莓派上非常常用,因?yàn)闃?shù)莓派有Linux操作系統(tǒng),可以很容易地處理Python腳本。樹(shù)莓派由于其高處理能力和內(nèi)置Wi-Fi功能,在創(chuàng)建web服務(wù)器和基于物聯(lián)網(wǎng)的項(xiàng)目中也很受歡迎。
組件的要求
?樹(shù)莓派3
?NEMA17步進(jìn)電機(jī)
?A4988步進(jìn)驅(qū)動(dòng)模塊
?跳線
線路圖
用樹(shù)莓派控制Nema 17步進(jìn)電機(jī)的電路圖如下:
在這個(gè)項(xiàng)目中,我們使用了A4988步進(jìn)電機(jī)驅(qū)動(dòng)器與樹(shù)莓派。A4988電機(jī)驅(qū)動(dòng)模塊內(nèi)置轉(zhuǎn)換器,因此可以使用步進(jìn)和方向引腳控制步進(jìn)電機(jī)。STEP引腳控制步驟,DIRECTION引腳控制方向。步進(jìn)電機(jī)使用12V電源供電,A4988模塊通過(guò)樹(shù)莓派供電。RST引腳連接到SLP/SLEEP引腳,使驅(qū)動(dòng)程序處于使能狀態(tài)。
樹(shù)莓派Nema 17的完整連接如下表所示。
安裝Flask模塊和庫(kù)
在這里,我們將使用以下命令安裝Flask模塊和庫(kù):
首先,使用以下命令更新樹(shù)莓派
現(xiàn)在,安裝pip和Rpi。Gpio庫(kù)使用以下命令:
現(xiàn)在使用下面的命令來(lái)安裝Flask:
現(xiàn)在安裝樹(shù)莓派電機(jī)庫(kù)。它是一個(gè)python庫(kù),用于控制使用樹(shù)莓派的各種電機(jī)。使用以下命令安裝庫(kù)。
Python程序說(shuō)明
這個(gè)Nema 17步進(jìn)電機(jī)與樹(shù)莓派項(xiàng)目的完整python代碼在文檔的末尾給出。
通過(guò)導(dǎo)入所需的庫(kù)文件來(lái)啟動(dòng)代碼。從各自的庫(kù)文件中導(dǎo)入GPIO、Flask、sleep和RpiMotorLib。GPIO功能使我們能夠?qū)I的GPIO引腳進(jìn)行編程。Sleep函數(shù)用于提供延遲,F(xiàn)lask用于創(chuàng)建Web應(yīng)用程序。
現(xiàn)在定義Raspberry Pi GPIO引腳,其中連接A4988模塊的STEP, Direction和Microstep引腳。
從Web頁(yè)面獲取滑塊值并將其作為整數(shù)值打印。
現(xiàn)在比較滑塊值,如果滑塊值大于10,則順時(shí)針旋轉(zhuǎn)電機(jī)。
Motor_go是移動(dòng)電機(jī)的主要方法。它接受六個(gè)輸入(順時(shí)針、步長(zhǎng)類型、步長(zhǎng)、步長(zhǎng)延遲、冗長(zhǎng)、初始化延遲)。
地點(diǎn):
順時(shí)針用于控制電機(jī)的方向,可以通過(guò)True和False來(lái)改變電機(jī)的方向。False表示逆時(shí)針?lè)较?,True表示順時(shí)針?lè)较颉?
步驟類型用于定義步驟分辨率。通過(guò)使用步進(jìn)類型,您可以將電機(jī)設(shè)置為五步分辨率之一。
步長(zhǎng)用于定義電機(jī)的步長(zhǎng)數(shù)。
步延遲是步之間的延遲。
Verbose是一個(gè)布爾函數(shù),用于寫(xiě)入引腳動(dòng)作。默認(rèn)為False。
Initdelay是初始化GPIO引腳之后,但在電機(jī)移動(dòng)之前的初始延遲
運(yùn)行樹(shù)莓派Web服務(wù)器,用于控制Nema17
一旦你的代碼準(zhǔn)備好了,Nema 17步進(jìn)電機(jī)按照電路圖連接,打開(kāi)PI來(lái)寫(xiě)程序。
使用以下命令創(chuàng)建thestep .py文件:
現(xiàn)在將給定的內(nèi)容粘貼到末尾,并使用以下命令運(yùn)行python代碼:
現(xiàn)在導(dǎo)航到樹(shù)莓派Web瀏覽器,輸入打開(kāi)Web頁(yè)面,如下所示。
最后,移動(dòng)滑塊并按下提交按鈕,使步進(jìn)電機(jī)旋轉(zhuǎn)。如果向左移動(dòng)滑塊,則電機(jī)將沿逆時(shí)針?lè)较蛞苿?dòng),如果向右移動(dòng)滑塊,則電機(jī)將沿順時(shí)針?lè)较蛞苿?dòng)。電機(jī)的速度取決于滑塊的值。如果滑塊值高,則電機(jī)速度會(huì)慢,反之亦然。
這是使用Python語(yǔ)言控制Nema17步進(jìn)電機(jī)的方法。通過(guò)在路由器中啟用端口轉(zhuǎn)發(fā),您可以通過(guò)輸入ISP(互聯(lián)網(wǎng)服務(wù)提供商)提供的靜態(tài)IP來(lái)控制世界上任何地方的步進(jìn)電機(jī)。
本文編譯自iotdesignpro