2020-3-24 10:02 上傳
點(diǎn)擊文件名下載附件
輔助軟件與資料
本帖子采用以STM32F407為控制器的平衡小車。我是因?yàn)橄雽W(xué)32,然后F4比較強(qiáng)大,所以就沒采用F1或者stm8之類的單片機(jī)。
先從硬件準(zhǔn)備開始:
1.編碼電機(jī)兩個,電機(jī)驅(qū)動器l298n一塊(我用了他上面的5v電,所以沒加穩(wěn)壓模塊,正規(guī)的話應(yīng)該加上)
2.MPU6050模塊一個
3.藍(lán)牙模塊
4.IIC協(xié)議的oled屏幕一塊(32當(dāng)然也可以用其他協(xié)議的,換一下相應(yīng)文件就好)
5.stm32f407最小系統(tǒng)板一塊
6.無源蜂鳴器來一個用來放音樂不錯
7.導(dǎo)線、洞洞板、排針、接頭自己備一些,我是自己焊的拓展板 ,也可以直接畫pcb
8.3s的18650電池和充電器
9.支架的話我為了省事買了電機(jī)加底板支架,看視頻里大家要是有鉆,螺絲,銅柱的話整兩個電機(jī)支架一塊亞克力可輕松搞定,而且整潔美觀,布局也方便
再就到了硬件連接,我這里就不詳細(xì)說那個了 l298n上面有in1~4四個引腳,分別接到單片機(jī)對應(yīng)的引腳, 1,2一組,控制motor1方向;3,4一組,控制motor2方向。同時電機(jī)驅(qū)動模塊上還有兩根enable和5v引腳,剛買的一般是通過兩根跳線帽將兩個enable與兩個5v分別短接,我們需要將兩根短接帽拔掉,給每個enable接一路pwm,才能夠?qū)崿F(xiàn)我們所需要的直流電機(jī)速度控制。編碼電機(jī)連接時注意區(qū)分動力線和編碼器信號線,動力線兩條不做區(qū)分,接上后續(xù)如果電機(jī)方向不正確可以改in1,2的高低電平即可;編碼器有其電源線5v和gnd,不可接反,另外兩根即編碼器信號輸出,用來記脈沖就好。本小車中各引腳定義及相應(yīng)定時器在文末統(tǒng)一描述。到這,電機(jī)及其驅(qū)動均已連接完成。
接下來是mpu6050,我對這個模塊的認(rèn)識其實(shí)也只存在于使用階段,我采用的直接是原子哥開發(fā)板例程里的.c文件和.h文件,我們在使用時只需要注意兩個文件中關(guān)于引腳的定義即可,其余均不用改動,包括iic地址,其默認(rèn)就為0x68,除非一組IIC上掛載多個設(shè)備,才存在不同地址訪問問題,正常使用可不關(guān)心。我在這里提一個我自己的認(rèn)識,揭開了iic的面紗,其本身在了解了其通信協(xié)議之后,根本就不會在意其是不是單片機(jī)上標(biāo)的特定的某個或某對引腳,尤其是使用開發(fā)板的朋友,一定注意這個問題,這么說,單片機(jī)上任何兩個可以控制高低電平切換的引腳都可以被你用來進(jìn)行iic通信,當(dāng)你的iic設(shè)備用了別人的程序后沒反應(yīng),首先第一步先把你的iic設(shè)備斷開,在不該動現(xiàn)有iic配置的前提下,通過對scl和sda兩個引腳單獨(dú)置高和置低用以檢測你的配置是否有問題以及你的引腳本身是否有問題,排除這兩個問題后你的設(shè)備要是還沒反應(yīng)你再考慮換程序試,記住先硬件后軟件的原則。本帖中設(shè)計的oled和mpu6050兩款iic設(shè)備我使用了兩對scl,sda,這樣做的一個巨大好處就是移植性非常強(qiáng),很方便使用者修改。oled驅(qū)動時注意一下這個模塊僅接上vcc和gnd是毫無反應(yīng)的,這不用慌,只有寫上相應(yīng)代碼才能有所顯示,本帖中的oled程序是我找了好久且試了沒問題的,其中對于iic引腳配置的過程很有思想,只需要在.h文件里面修改,其余均可不用改變。大家若在其他32設(shè)備上使用時可參考,其避免了很多問題。
藍(lán)牙模塊的話,我個人建議大家還是采用usb轉(zhuǎn)ttl模塊將藍(lán)牙模塊與電腦相連進(jìn)行設(shè)置,切記,接法就是rx與tx相接,與正常使用時一樣,連接好后按住藍(lán)牙模塊上的按鍵再插到電腦上上電,這樣就會進(jìn)入初始化模式,此時串口波特率應(yīng)調(diào)到38400,停止位為1,校驗(yàn)位為無,隨后按照hc-05的AT指令集進(jìn)行設(shè)置即可。設(shè)置完成后先不急著裝在設(shè)備上,而是直接拔掉電源,此次不按小按鍵,直接上電,用串口助手,將波特率、停止位、校驗(yàn)位等調(diào)至你的設(shè)定值,打開串口,并用手機(jī)藍(lán)牙串口app進(jìn)行測試,試著互發(fā)數(shù)據(jù),測試無誤后再上設(shè)備,這樣在使用時僅需將單片機(jī)的串口設(shè)置好即可直接使用藍(lán)牙。熟悉之后,加上對于AT指令的理解,可以在程序中加上藍(lán)牙模塊的初始化程序,這樣會更加正規(guī)一些。
OLED在說陀螺儀的時候就說過了,對于本帖發(fā)的工程中的相關(guān)文件具有很好地移植性,僅修改scl,sda引腳,其余不動即可。大家可能會有疑問,為什么不用改iic地址,這其實(shí)也是我對oled的IIC地址的一個知識誤區(qū),尤其是32當(dāng)中。我買的oled屏幕官方給的地址是0x3c,但在程序中我楞是沒找到相關(guān)的語句與設(shè)置,大家要是有深刻理解了這部分的朋友麻煩回我一些,謝謝。我在arduino上使用這款oled時他會有很明確的iic地址設(shè)置。而在32中,大家買到的oled應(yīng)該是和我的頭文件是匹配的,所以就使用而言可忽略地址設(shè)置。
引腳定義:
in1(AIN1)》PA3
in2(AIN2)》PA2
in3(BIN1)》PA1
in3(BIN1)》PA0
PWMA TIM13->CCR1 PF8
PWMB TIM14->CCR1 PF9
編碼器1 PA6 PA7 TIM3
編碼器2 PB6 PB7 TIM4
MPU6050 IIC
SCL PD5
SDA PD6
OLED IIC
SCL PD1
SDA PD2
uart1 連接電腦的串口
RX PA10
TX PA9
uart3 連接藍(lán)牙模塊的串口
RX PB11
TX PB10
1.
https://wenku.baidu.com/view/b46da6ee26d3240c844769eae009581b6bd9bdf5?ivk_sa=1023194j這是個stm32各個定時器通道與引腳的關(guān)系,很重要,在這個基礎(chǔ)上引腳可以按需要自己隨意設(shè)置
2.有任何本帖相關(guān)內(nèi)容可聯(lián)系1562231483,大家相互交流學(xué)習(xí),尤其是沒黑幣的新朋友,我可以直接把文件發(fā)你們