該項目將從頭開始構建電動滑板,并使用手機上應用程序中的滑塊控制電動滑板。
所需零件:
Arduino Uno或Nano
藍牙低能量(BLE)模塊,例如只作為從機的HC-06,或者可以作為主/從機的HC-05。
L293D電機驅動集成電路。這個16針雙H橋電機驅動器將允許我們控制電機的旋轉方向和速度;
12V 直流馬達
12V電池組
arduino的電源
跳線和實驗板
電路:
HC-06將在從主藍牙設備發出時接收串行數據,該數據將通過其接收/發送引腳RX/TX(連接到主板的引腳5和4)傳輸到Arduino。其GND和VCC引腳將分別連接到GND和+5V。
L293D中的H橋允許通過打開或關閉一對開關來控制電機的旋轉方向,其中4個開關以H的形狀排列。
該電機驅動器也能夠驅動兩個不同速度的電機,但本項目僅使用一個。
要啟動電機,請連接“啟用1,2“(pin1)和”Vcc1”(引腳16)至+5V。連接“Vcc2”(針腳8)連接到12V電池組的正極。將針腳4、5、12和13連接到GND。連接”輸入1“(引腳2)至Arduino的引腳10,它將傳輸pwm2信號和”輸入2”(引腳7)至引腳9,用于pwm1。在這些之間切換將允許我們切換旋轉方向。最后,將DC電機連接到輸出1和2(引腳3和6)。
連接好的試驗板:
程序:
#include《SoftwareSerial.h》
SoftwareSerial bt_ser(4,5); //連接到用于串行數據通信的RX和TX引腳
char c[6];
int i=0,speed_value=0,send_value;
#define pwm1 9 //輸入2
#define pwm2 10 //輸入 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()) //數據傳輸時
{
if(bt_ser.available()》0)
{
c[i] = bt_ser.read(); //讀取從主設備發送的字符串
Serial.print(c[i]);
i++;
}
if(c[i-1]==‘N’) //如果按下按鈕
{
motor_dir = !motor_dir; //切換方向變量
if(motor_dir) //設置方向,pwm1和pwm2是相反的
digitalWrite(pwm2, 0);
else
digitalWrite(pwm1, 0);
}
}
speed_value = (c[1]-48)*100+(c[2]-48)*10+(c[3]-48)*1; //從字符串解釋速度
if(motor_dir) //對于給定的方向
{
if(c[i-1]==‘#’){ //如果數據已從滑塊傳輸
analogWrite(pwm1, speed_value-100); //100,當滑塊處于“0”位置時,速度為0
i=0;
}
}
else{ //相反方向
if(c[i-1]==‘#’){
analogWrite(pwm2, speed_value-100);
i=0;
}
}
}
pwm1和pwm2是相反的,并允許切換旋轉方向。
應用發送的串行數據是字符串c,這是速度和方向數據所在的位置。為了使其工作,速度位于c[1],c[2]和c[3]。
定制滑塊來發送100到255之間的數字。這可以在阿爾杜伊諾的[0:255]上用一個新的速度變量繪制出來,如下所示:
new_speed = map(speed_value,100,255,0,255)
應用程序:
Bluetooth Electronics:它提供了創建儀表板以及自定義儀表板上的組件發送的數據或它們如何交互的選項。
(創建的儀表板的屏幕)
為了創建此界面,需要編輯一個新的儀表板,然后從編輯菜單中選擇一個滑塊,一個按鈕和一個文本框。
滑塊將必須按以下方式進行編輯:
最低價值:100
最大值:255
在更改滑塊時發送字符串
字符串開頭:*
字符串以:結尾
應該對按鈕進行編輯(釋放文本為空白):
媒體文字:N
發布文字:
然后,就可以添加文本以澄清儀表板。
責任編輯:pj
-
集成電路
+關注
關注
5417文章
11942瀏覽量
366999 -
電機驅動
+關注
關注
60文章
1292瀏覽量
87513 -
應用程序
+關注
關注
38文章
3322瀏覽量
58700
發布評論請先 登錄
MCU在電動滑板車硬件實物的設計技巧
DIY電動滑板車的相關資料分享
3G用戶如何使用手機上網業務?
如何才能構建ASP NET的應用程序

基于Arduino的DIY電動滑板

評論