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