資料介紹
描述
啟示
我們最初的項(xiàng)目是從頭開(kāi)始構(gòu)建一個(gè)電動(dòng)滑板,我們可以通過(guò)手機(jī)應(yīng)用程序中的滑塊來(lái)控制它。然而,這首先需要能夠通過(guò)藍(lán)牙向 Arduino 發(fā)送 PWM 信號(hào),以及反轉(zhuǎn)電機(jī)方向的命令。作為一個(gè) Arduino 新手,我首先必須在互聯(lián)網(wǎng)上搜索可以作為創(chuàng)建自己項(xiàng)目的墊腳石的項(xiàng)目,以便學(xué)習(xí)和應(yīng)用關(guān)鍵概念。這是從一開(kāi)始就學(xué)習(xí) Arduino 幾周的結(jié)果,我很高興知道這是否反過(guò)來(lái)幫助任何人學(xué)習(xí)了一兩件事!
這個(gè)構(gòu)建是滑板上使用的小規(guī)模原型,只需稍作修改即可擴(kuò)展。我將首先給出所需的部分以及它們背后的一些解釋?zhuān)缓笫请娐芬约半S附的代碼,最后將說(shuō)明如何自定義應(yīng)用程序以使用該程序。
所需零件
你會(huì)需要:
- 一個(gè) Arduino Uno 或 Nano;
- 藍(lán)牙低功耗 (BLE) 模塊,例如僅作為從機(jī)的 HC-06,或者可以作為主機(jī)或從機(jī)的 HC-05。兩者都可以工作,因?yàn)樵撃K將用作從站。它們還共享相同的四個(gè)中間引腳,這是我們唯一需要的;
- L293D電機(jī)驅(qū)動(dòng)IC。這個(gè) 16 針雙 H 橋電機(jī)驅(qū)動(dòng)器可以讓我們控制電機(jī)的旋轉(zhuǎn)方向和速度;
- 12V直流電機(jī);
- 12V電池組;
- arduino 的電源;
- 跳線(xiàn)和面包板。
電路
HC-06 將接收從主藍(lán)牙設(shè)備發(fā)出的串行數(shù)據(jù),這些數(shù)據(jù)將通過(guò)連接到板的引腳 5 和 4 的接收/發(fā)送引腳 RX/TX 與 Arduino 通信。它的 GND 和 VCC 引腳將分別連接到 GND 和 +5V。
L293D 中的 H 橋?qū)⒃试S我們通過(guò)打開(kāi)或關(guān)閉一對(duì)開(kāi)關(guān)來(lái)控制電機(jī)的旋轉(zhuǎn)方向,其中 4 個(gè)開(kāi)關(guān)呈 H 形排列,因此得名。
該電機(jī)驅(qū)動(dòng)器還能夠以不同的速度驅(qū)動(dòng)兩臺(tái)電機(jī),但本項(xiàng)目?jī)H使用一臺(tái)。
要啟用電機(jī),請(qǐng)將“ Enable 1, 2 ”(引腳 1)和“ Vcc1 ”(引腳 16)連接到 +5V。將“ Vcc2 ”(引腳 8)連接到 12V 電池組的正極。將引腳 4、5、12 和 13 連接到 GND。將“輸入 1 ”(引腳 2)連接到 Arduino 的引腳 10,它將傳輸pwm2
信號(hào),將“輸入 2 ”(引腳 7)連接到引腳 9,用于pwm1
. 在這些之間切換將允許我們切換旋轉(zhuǎn)方向。最后,將直流電機(jī)連接到輸出 1 和 2(引腳 3 和 6)。
這是連接到面包板上時(shí)應(yīng)該是什么樣子的圖片:
該程序
已添加注釋以幫助解釋代碼,但可能需要更多說(shuō)明。
pwm1
并且pwm2
是相反的,并允許我們切換旋轉(zhuǎn)方向。應(yīng)用程序發(fā)送的串行數(shù)據(jù)是一個(gè)字符串,c
,這是速度和方向數(shù)據(jù)的位置。為了完成這項(xiàng)工作,速度位于字符串c[1]
的c[2]
和c[3]
中,這就是為什么它必須作為 3 位數(shù)字接收的原因。這就是為什么在應(yīng)用程序中,我們自定義滑塊以發(fā)送 100 到 255 之間的數(shù)字。然后可以將其映射到 Arduino 中的 [0:255] 下的新速度變量,如下所示:
new_speed = map(speed_value,100,255,0,255)
然而,我們決定簡(jiǎn)單地從 speed_value 中減去 100,以使速度屬于區(qū)間 [0:155],因?yàn)?155 對(duì)于我們的原型來(lái)說(shuō)已經(jīng)足夠快了。
#include
SoftwareSerial bt_ser(4,5); //connected to RX and TX pins for serial data communication
char c[6];
int i=0,speed_value=0,send_value;
#define pwm1 9 //input 2
#define pwm2 10 //input 1
boolean motor_dir = 0;
void setup()
{
Serial.begin(9600);
bt_ser.begin(9600);
pinMode(pwm1, OUTPUT);
pinMode(pwm2, OUTPUT);
}
void loop()
{
while(bt_ser.available()) //when data is transmitted
{
if(bt_ser.available()>0)
{
c[i] = bt_ser.read(); //reading the string sent from master device
Serial.print(c[i]);
i++;
}
if(c[i-1]=='N') //if button is pressed
{
motor_dir = !motor_dir; //toggle direction variable
if(motor_dir) //setting direction, pwm1 and pwm2 are opposites
digitalWrite(pwm2, 0);
else
digitalWrite(pwm1, 0);
}
}
speed_value = (c[1]-48)*100+(c[2]-48)*10+(c[3]-48)*1; //interpreting speed from string
if(motor_dir) //for a given direction
{
if(c[i-1]=='#'){ //if data has been transmitted from slider
analogWrite(pwm1, speed_value-100); //-100 so that when slider is on "0" speed is 0
i=0;
}
}
else{ //for opposite direction
if(c[i-1]=='#'){
analogWrite(pwm2, speed_value-100);
i=0;
}
}
}
該應(yīng)用程序
我們決定使用我們?cè)?Play 商店中找到的名為 Bluetooth Electronics 的應(yīng)用程序,因?yàn)樗峁┝藙?chuàng)建儀表板以及自定義儀表板上組件發(fā)送的數(shù)據(jù)或它們?nèi)绾蜗嗷ソ换サ倪x項(xiàng)。
為了創(chuàng)建這個(gè)界面,您需要編輯一個(gè)新的儀表板,并從編輯菜單中選擇一個(gè)滑塊、一個(gè)按鈕和一個(gè)文本框。
滑塊必須這樣編輯:
- 最小值:100
- 最大值:255
- 在滑塊更改時(shí)發(fā)送字符串
- 字符串以 : * 開(kāi)頭
- 字符串以 : # 結(jié)尾
按鈕應(yīng)該這樣編輯(釋放文本留空):
- 新聞?wù)模篘
- 發(fā)布文本:
然后,您可以添加文本以闡明儀表板。
結(jié)果
我作為初學(xué)者學(xué)到的一些教訓(xùn)
在我們創(chuàng)建這個(gè)項(xiàng)目時(shí),我獲得了一些我認(rèn)為可以與其他 Arduino 初學(xué)者分享的智慧,因?yàn)殡m然其中一些可能聽(tīng)起來(lái)很明顯,但對(duì)我來(lái)說(shuō)這是一條陡峭的學(xué)習(xí)曲線(xiàn)。
1. 使用在線(xiàn)提供的程序構(gòu)建項(xiàng)目時(shí),始終確保調(diào)整代碼并對(duì)其進(jìn)行測(cè)試以了解所有部分的作用。我經(jīng)常剝離代碼以嘗試隔離某些功能并了解如何以不同的方式執(zhí)行它們,通過(guò)這樣做,我了解這些代碼的工作方式要好得多,并且能夠從它們中獲得靈感來(lái)自己創(chuàng)造一些新的東西,而不是只需復(fù)制和粘貼整個(gè)程序。
2. 這聽(tīng)起來(lái)很明顯,但我犯了很多次這個(gè)錯(cuò)誤:看起來(lái)相似的組件并不總是相同的!在使用晶體管和雙列直插式封裝(如 L293D)時(shí),我尤其犯了這個(gè)錯(cuò)誤。手頭有類(lèi)似的組件,我嘗試構(gòu)建電路,但它們從未工作過(guò),并且必須訂購(gòu)正確的組件才能使它們發(fā)揮作用。
3. 當(dāng)你卡在某件事上時(shí),有針對(duì)性的互聯(lián)網(wǎng)研究可以解決大多數(shù)問(wèn)題,只是需要一些耐心閱讀和理解,無(wú)論是關(guān)于代碼元素還是電子元件。
結(jié)論
如果您受到啟發(fā)來(lái)構(gòu)建這個(gè)項(xiàng)目,我建議您隨意修改它以更好地滿(mǎn)足您的目標(biāo)并了解有關(guān)如何創(chuàng)建自己的 Arduino 項(xiàng)目的更多信息。由于它是電動(dòng)滑板電機(jī)控制系統(tǒng)的原型,以下是我們認(rèn)為可以實(shí)施的一些潛在想法和示例:
- 開(kāi)/關(guān)開(kāi)關(guān);
- 在能夠激活反向按鈕之前將滑塊拖動(dòng)到“0”位置的要求;
- 剎車(chē)命令(逐漸停止,而不是從關(guān)閉或倒車(chē)按鈕立即停止,或者必須手動(dòng)逐漸降低速度);
- 甚至創(chuàng)建您自己的移動(dòng)應(yīng)用程序來(lái)控制電機(jī),因?yàn)槲覀兪褂昧藨?yīng)用程序商店中提供的一個(gè)。麻省理工學(xué)院應(yīng)用程序發(fā)明者似乎是創(chuàng)建此類(lèi)應(yīng)用程序的好平臺(tái);
- 手持遙控器也可以代替手機(jī),如果是電動(dòng)滑板,肯定是更安全的選擇;
- 我們還認(rèn)為,在滑板甲板上添加一個(gè)壓力傳感器可以在用戶(hù)摔倒時(shí)實(shí)現(xiàn)緊急停止,盡管遙控器和 Arduino 之間的距離讀數(shù)也可以實(shí)現(xiàn)該目標(biāo),一旦遙控器/用戶(hù)停止它太遠(yuǎn)。
永遠(yuǎn)記住是安全的,這只是電動(dòng)滑板電機(jī)控制系統(tǒng)的一個(gè)小規(guī)模原型,我們沒(méi)有嘗試在實(shí)際中使用它,我們不建議將其用于此目的,因?yàn)樗唇?jīng)測(cè)試真正的滑板,可能很危險(xiǎn)。
我們希望這對(duì)您有所幫助,并且您會(huì)在該項(xiàng)目中獲得樂(lè)趣!
- PWM控制直流電機(jī)介紹
- 直流電機(jī)的驅(qū)動(dòng)和PWM調(diào)速
- 直流電機(jī)驅(qū)動(dòng)設(shè)計(jì)
- 直流電機(jī)PWM調(diào)速器設(shè)計(jì)
- 直流電機(jī)換向和調(diào)速
- 基于MSP430的直流電機(jī)PWM調(diào)速控制器設(shè)計(jì).
- 基于FPGA的直流電機(jī)PWM控制實(shí)現(xiàn)
- 直流電機(jī)PWM調(diào)速與控制設(shè)計(jì)報(bào)告
- 直流電機(jī)PWM控制
- PID控制PWM調(diào)節(jié)直流電機(jī)速度
- 基于FPGA的直流電機(jī)PWM控制的實(shí)現(xiàn)
- 基于FPGA直流電機(jī)PWM的控制實(shí)現(xiàn)
- PID控制PWM調(diào)節(jié)直流電機(jī)速度簡(jiǎn)介
- 直流電機(jī)PWM控制 52次下載
- 直流電機(jī)PWM調(diào)速控制器的實(shí)現(xiàn) 93次下載
- 直流電機(jī)是什么?具有什么特點(diǎn)? 760次閱讀
- 直流電機(jī)的轉(zhuǎn)速與線(xiàn)圈的關(guān)系 1173次閱讀
- PWM如何調(diào)節(jié)直流電機(jī)轉(zhuǎn)速 2180次閱讀
- 為什么直流電機(jī)無(wú)法進(jìn)行動(dòng)態(tài)制動(dòng) 510次閱讀
- 直流電機(jī)正反轉(zhuǎn)的控制方式 5162次閱讀
- 永磁無(wú)刷直流電機(jī)的控制方法 1494次閱讀
- 直流電機(jī)控制器電路圖分享 8427次閱讀
- 有刷直流電機(jī)的PWM驅(qū)動(dòng)原理 8859次閱讀
- 帶MOSFET的PWM直流電機(jī)控制器電路 4609次閱讀
- 如何使用L298N和Arduino板控制直流電機(jī) 1w次閱讀
- 基于555定時(shí)器實(shí)現(xiàn)的直流電機(jī)PWM調(diào)速器設(shè)計(jì)方案 1.5w次閱讀
- 直流電機(jī)控制器原理圖 2.8w次閱讀
- 淺析直流電機(jī)PWM控制原理及應(yīng)用 2w次閱讀
- 直流電機(jī)的主要分類(lèi)以及直流電機(jī)的勵(lì)磁方式 1.5w次閱讀
- 基于直流電機(jī)調(diào)速與測(cè)速系統(tǒng)設(shè)計(jì)方案 5796次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多