人工智能小車:基于ESP32的GPIO控制智能小車運動(MicroPython)
摘要
本文介紹用MicroPython實現ESP32的GPIO控制智能小車朝各個方向運動(點擊此處黃色字體領取文中相關資料)
前邊的Mixly開發(fā)之后,對應生成的代碼是C語言的。可能很多人都覺得C語言很難學,現在學Python的人很多,覺得學起來更容易一些。其實,語言本身的難度差別不大,難在實現的功能不同以及各語言的庫函數(或者類庫)不太相同,才會覺得開發(fā)的難度不同。
對于嵌入式開發(fā)來說,本身對語言的要求是不高的,簡單應用的邏輯都是不復雜的,大家可以嘗試一下C語言的開發(fā)方法。畢竟C語言在嵌入式開發(fā)領域的好處是顯而易見的,程序精簡,運行速度快。特別適合需要高速響應的系統(tǒng)中,在運動控制、機器人領域是應用最廣的開發(fā)語言。
為了照顧更多的讀者,在智能小車這一系列文章中,還是增加一些MicroPython的講解。在整個系列文章中,還是會以C語言為主,也會階段性的增加一些MicroPython的實現方法。下面就先來講解一下用Mixly的Python Esp32功能模塊如何實現小車的各種運動。
運行“Mixly”軟件,在初始的開發(fā)板和開發(fā)語言選擇頁面選擇“Python Esp32”功能,單擊后進入到軟件開發(fā)設計界面。這時需要在右上角選擇開發(fā)板為“ESP32 Generic(4MB)”,端口選擇為開發(fā)板在電腦上生成的串口設備對應的串口。如下圖所示:
對于第一次使用MicroPython的開發(fā)板,在開發(fā)之前需要首先執(zhí)行一下菜單欄上的“初始化固件”功能,這是因為Python是一種解釋型編程語言,它不像C語言那樣,執(zhí)行前需要把源程序編譯成機器代碼,然后在上傳到機器中去執(zhí)行。解釋型編程語言,在開發(fā)的時候是不需要編譯的,上傳也只是把源代碼傳到了執(zhí)行的機器上,等到程序執(zhí)行的時候,再邊解析邊執(zhí)行。而機器本身并不認識Python源代碼,這就需要有一個中間機構,可以把源代碼動態(tài)解析成機器碼去執(zhí)行。這個就是通常說的虛擬機。就是可以運行Python程序的虛擬的主機,初始化固件的目的就是把這個虛擬的主機安裝到ESP32芯片中,這樣它就可以執(zhí)行Python程序了。
初始化固件成功之后在輸出窗口會顯示“燒錄成功”,如下圖所示。
接下來我們就來實現一個讓小車向前運動3秒鐘的MicroPython程序。首先需要使用的是“輸入/輸出”功能模塊里面的初始化功能,需要初始化控制智能小車向前前進的4個GPIO引腳,為每個引腳定義一個唯一的名字,配置好之后,如下圖所示。
接下來就是將這4個引腳設置成高電平輸出,然后延遲3秒鐘,再恢復成低電平輸出了。這需要使用的功能是“輸入/輸出”功能模塊區(qū)的數字輸出功能了,相信有了前面的基礎,應該很容易就完成了。如下圖所示:
好了,程序的開發(fā)工作就完成了。下面就來測試一下。需要將源程序上傳到ESP32芯片內部,單擊最上邊工具欄中的“上傳”按鈕就可以了。程序上傳完成后,會自動啟動運行。再這里需要注意的是,這里的主程序并不會被循環(huán)調用,而是只會運行一次。如果需要循環(huán)運行,則需要相應的循環(huán)功能模塊來實現,這是與C語言不同的地方。
接下來也看一下Mixly為程序生成的MicroPython源代碼。如下所示:
import machine
import time
pin21 = machine.Pin(21, machine.Pin.OUT)
pin23 = machine.Pin(23, machine.Pin.OUT)
pin26 = machine.Pin(26, machine.Pin.OUT)
pin32 = machine.Pin(32, machine.Pin.OUT)
pin21.value(1)
pin23.value(1)
pin26.value(1)
pin32.value(1)
time.sleep_ms(3000)
pin21.value(0)
pin23.value(0)
pin26.value(0)
pin32.value(0)
下面對主要代碼解釋一下:
import machine import time
這兩句用來引入machine和time包,表示你要使用這兩個包中的功能。
pin21 = machine.Pin(21, machine.Pin.OUT)
將21引腳設置成輸出狀態(tài),并生成一個引腳對象。
pin21.value(1)
將21引腳的輸出設置為1(高電平為1,低電平為0)。
time.sleep_ms(3000)
延時3000毫秒。
這個生成的代碼基本也是和頁面中的功能是一一對應的。應該不難理解。接下來可以自己嘗試一下實現其他的各種運動了。
完整資料可進群免費領取!!!
嵌入式物聯網的學習之路非常漫長,不少人因為學習路線不對或者學習內容不夠專業(yè)而錯失高薪offer。不過別擔心,我為大家整理了一份150多G的學習資源,基本上涵蓋了嵌入式物聯網學習的所有內容。點擊下方鏈接,0元領取學習資源,讓你的學習之路更加順暢!記得點贊、關注、收藏、轉發(fā)哦!
- 贊