資料介紹
描述
啟示
我們最初的項目是從頭開始構建一個電動滑板,我們可以通過手機應用程序中的滑塊來控制它。然而,這首先需要能夠通過藍牙向 Arduino 發送 PWM 信號,以及反轉電機方向的命令。作為一個 Arduino 新手,我首先必須在互聯網上搜索可以作為創建自己項目的墊腳石的項目,以便學習和應用關鍵概念。這是從一開始就學習 Arduino 幾周的結果,我很高興知道這是否反過來幫助任何人學習了一兩件事!
這個構建是滑板上使用的小規模原型,只需稍作修改即可擴展。我將首先給出所需的部分以及它們背后的一些解釋,然后是電路以及隨附的代碼,最后將說明如何自定義應用程序以使用該程序。
所需零件
你會需要:
- 一個 Arduino Uno 或 Nano;
- 藍牙低功耗 (BLE) 模塊,例如僅作為從機的 HC-06,或者可以作為主機或從機的 HC-05。兩者都可以工作,因為該模塊將用作從站。它們還共享相同的四個中間引腳,這是我們唯一需要的;

- L293D電機驅動IC。這個 16 針雙 H 橋電機驅動器可以讓我們控制電機的旋轉方向和速度;

- 12V直流電機;
- 12V電池組;
- arduino 的電源;
- 跳線和面包板。
電路
HC-06 將接收從主藍牙設備發出的串行數據,這些數據將通過連接到板的引腳 5 和 4 的接收/發送引腳 RX/TX 與 Arduino 通信。它的 GND 和 VCC 引腳將分別連接到 GND 和 +5V。
L293D 中的 H 橋將允許我們通過打開或關閉一對開關來控制電機的旋轉方向,其中 4 個開關呈 H 形排列,因此得名。

該電機驅動器還能夠以不同的速度驅動兩臺電機,但本項目僅使用一臺。
要啟用電機,請將“ Enable 1, 2 ”(引腳 1)和“ Vcc1 ”(引腳 16)連接到 +5V。將“ Vcc2 ”(引腳 8)連接到 12V 電池組的正極。將引腳 4、5、12 和 13 連接到 GND。將“輸入 1 ”(引腳 2)連接到 Arduino 的引腳 10,它將傳輸pwm2
信號,將“輸入 2 ”(引腳 7)連接到引腳 9,用于pwm1
. 在這些之間切換將允許我們切換旋轉方向。最后,將直流電機連接到輸出 1 和 2(引腳 3 和 6)。

這是連接到面包板上時應該是什么樣子的圖片:

該程序
已添加注釋以幫助解釋代碼,但可能需要更多說明。
pwm1
并且pwm2
是相反的,并允許我們切換旋轉方向。應用程序發送的串行數據是一個字符串,c
,這是速度和方向數據的位置。為了完成這項工作,速度位于字符串c[1]
的c[2]
和c[3]
中,這就是為什么它必須作為 3 位數字接收的原因。這就是為什么在應用程序中,我們自定義滑塊以發送 100 到 255 之間的數字。然后可以將其映射到 Arduino 中的 [0:255] 下的新速度變量,如下所示:
new_speed = map(speed_value,100,255,0,255)
然而,我們決定簡單地從 speed_value 中減去 100,以使速度屬于區間 [0:155],因為 155 對于我們的原型來說已經足夠快了。
#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;
}
}
}
該應用程序
我們決定使用我們在 Play 商店中找到的名為 Bluetooth Electronics 的應用程序,因為它提供了創建儀表板以及自定義儀表板上組件發送的數據或它們如何相互交互的選項。

為了創建這個界面,您需要編輯一個新的儀表板,并從編輯菜單中選擇一個滑塊、一個按鈕和一個文本框。
滑塊必須這樣編輯:
- 最小值:100
- 最大值:255
- 在滑塊更改時發送字符串
- 字符串以 : * 開頭
- 字符串以 : # 結尾
按鈕應該這樣編輯(釋放文本留空):
- 新聞正文:N
- 發布文本:
然后,您可以添加文本以闡明儀表板。
結果
我作為初學者學到的一些教訓
在我們創建這個項目時,我獲得了一些我認為可以與其他 Arduino 初學者分享的智慧,因為雖然其中一些可能聽起來很明顯,但對我來說這是一條陡峭的學習曲線。
1. 使用在線提供的程序構建項目時,始終確保調整代碼并對其進行測試以了解所有部分的作用。我經常剝離代碼以嘗試隔離某些功能并了解如何以不同的方式執行它們,通過這樣做,我了解這些代碼的工作方式要好得多,并且能夠從它們中獲得靈感來自己創造一些新的東西,而不是只需復制和粘貼整個程序。
2. 這聽起來很明顯,但我犯了很多次這個錯誤:看起來相似的組件并不總是相同的!在使用晶體管和雙列直插式封裝(如 L293D)時,我尤其犯了這個錯誤。手頭有類似的組件,我嘗試構建電路,但它們從未工作過,并且必須訂購正確的組件才能使它們發揮作用。
3. 當你卡在某件事上時,有針對性的互聯網研究可以解決大多數問題,只是需要一些耐心閱讀和理解,無論是關于代碼元素還是電子元件。
結論
如果您受到啟發來構建這個項目,我建議您隨意修改它以更好地滿足您的目標并了解有關如何創建自己的 Arduino 項目的更多信息。由于它是電動滑板電機控制系統的原型,以下是我們認為可以實施的一些潛在想法和示例:
- 開/關開關;
- 在能夠激活反向按鈕之前將滑塊拖動到“0”位置的要求;
- 剎車命令(逐漸停止,而不是從關閉或倒車按鈕立即停止,或者必須手動逐漸降低速度);
- 甚至創建您自己的移動應用程序來控制電機,因為我們使用了應用程序商店中提供的一個。麻省理工學院應用程序發明者似乎是創建此類應用程序的好平臺;
- 手持遙控器也可以代替手機,如果是電動滑板,肯定是更安全的選擇;
- 我們還認為,在滑板甲板上添加一個壓力傳感器可以在用戶摔倒時實現緊急停止,盡管遙控器和 Arduino 之間的距離讀數也可以實現該目標,一旦遙控器/用戶停止它太遠。
永遠記住是安全的,這只是電動滑板電機控制系統的一個小規模原型,我們沒有嘗試在實際中使用它,我們不建議將其用于此目的,因為它未經測試真正的滑板,可能很危險。
我們希望這對您有所幫助,并且您會在該項目中獲得樂趣!
- PWM控制直流電機介紹
- 直流電機的驅動和PWM調速
- 直流電機驅動設計
- 直流電機PWM調速器設計
- 直流電機換向和調速
- 基于MSP430的直流電機PWM調速控制器設計.
- 基于FPGA的直流電機PWM控制實現
- 直流電機PWM調速與控制設計報告
- 直流電機PWM控制
- PID控制PWM調節直流電機速度
- 基于FPGA的直流電機PWM控制的實現
- 基于FPGA直流電機PWM的控制實現
- PID控制PWM調節直流電機速度簡介
- 直流電機PWM控制 52次下載
- 直流電機PWM調速控制器的實現 93次下載
- 直流電機是什么?具有什么特點? 760次閱讀
- 直流電機的轉速與線圈的關系 1173次閱讀
- PWM如何調節直流電機轉速 2180次閱讀
- 為什么直流電機無法進行動態制動 510次閱讀
- 直流電機正反轉的控制方式 5162次閱讀
- 永磁無刷直流電機的控制方法 1494次閱讀
- 直流電機控制器電路圖分享 8427次閱讀
- 有刷直流電機的PWM驅動原理 8859次閱讀
- 帶MOSFET的PWM直流電機控制器電路 4609次閱讀
- 如何使用L298N和Arduino板控制直流電機 1w次閱讀
- 基于555定時器實現的直流電機PWM調速器設計方案 1.5w次閱讀
- 直流電機控制器原理圖 2.8w次閱讀
- 淺析直流電機PWM控制原理及應用 2w次閱讀
- 直流電機的主要分類以及直流電機的勵磁方式 1.5w次閱讀
- 基于直流電機調速與測速系統設計方案 5796次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論