dfrobot机器人制作 (df robot小车)

本周我们来制作一个蓝牙遥控小车,不得不说Bluno nano的蓝牙交互功能还是让人眼前一亮,毕竟是首款集成蓝牙4.0的arduino板。制作小车较为集成的方案是DF的Remeo BLE mini,虽然我没有,但可以用Bluno nano搭配电机驱动模块达到相同的效果。

为此,我们需要一个小车底盘,一块Bluno nano,一块电池和一个L9110电机驱动模块(操作方式跟Remeo BLE mini相似)。

首先上图:

dfrobot机器人制作,dfrobot蓝牙遥控车

(小车正面)

dfrobot机器人制作,dfrobot蓝牙遥控车

(背面)

dfrobot机器人制作,dfrobot蓝牙遥控车

(侧面)

因为时间仓促,就较为简易的做了一个架子,大家见谅。 接线方面,参考Remeo BLE mini的风火轮机器人代码(来源于DF社区) 分析代码,可以看出接线:

dfrobot机器人制作,dfrobot蓝牙遥控车

dfrobot机器人制作,dfrobot蓝牙遥控车

L9110 Bluno

A-1B----------D5

A-1A----------D3

B-1B----------D6

B-1A----------D9

完成接线后,我们便可以直接使用风火轮机器人的代码而不用修改,并且可以使用其中的库,非常方便。

之后*载下**代码:

  • //------2016.6.29 by LL

  • //------适用于Romeo BLE mini 控制器

  • //http://www.dfrobot.com.cn/goods-1182.html

  • #include "GoBLE.h"

  • #include <Romeo_m.h>

  • #define LED 13

  • int joystickX, joystickY;

  • int buttonState[7];

  • unsigned int led_count;

  • void setup() {

  • Romeo_m.Initialise();

  • Goble.begin();

  • pinMode(LED,OUTPUT);

  • }

  • void loop() {

  • if (Goble.available())

  • {

  • readGoBle();

  • motorContrl();

  • }

  • delayLedBlink();//delay 10ms and led blink

  • }

  • //读取GoBle所有按键摇杆值

  • void readGoBle()

  • {

  • // read joystick value when there’s valid command from bluetooth

  • joystickX = Goble.readJoystickX();

  • joystickY = Goble.readJoystickY();

  • // read button state when there’s valid command from bluetooth

  • buttonState[SWITCH_UP] = Goble.readSwitchUp();

  • buttonState[SWITCH_DOWN] = Goble.readSwitchDown();

  • buttonState[SWITCH_LEFT] = Goble.readSwitchLeft();

  • buttonState[SWITCH_RIGHT] = Goble.readSwitchRight();

  • buttonState[SWITCH_SELECT] = Goble.readSwitchSelect();

  • buttonState[SWITCH_START] = Goble.readSwitchStart();

  • }

  • //根据GoBle按键值进行小车运动控制

  • //摇杆左右为转大弯,按键左右为原地转弯

  • void motorContrl()

  • {

  • if ((buttonState[SWITCH_UP] == PRESSED)||((joystickX>128)&&(joystickY>=64)&&(joystickY<=192)))

  • {

  • Romeo_m.motorControl(Reverse,200,Forward,200);//前进

  • return;//结束子函数

  • }

  • if ((buttonState[SWITCH_DOWN] == PRESSED)||((joystickX<128)&&(joystickY>=64)&&(joystickY<=192)))

  • {

  • Romeo_m.motorControl(Forward,150,Reverse,150);//后退

  • return;//结束子函数

  • }

  • if(buttonState[SWITCH_LEFT] == PRESSED)

  • {

  • Romeo_m.motorControl(Forward,100,Forward,100);//左转

  • return;//结束子函数

  • }

  • if((joystickY<128 )&&(joystickX>=64 )&&( joystickX<=192) )

  • {

  • Romeo_m.motorControl_M1(Reverse,80);//左转大弯

  • Romeo_m.motorControl_M2(Forward,200);

  • return;//结束子函数

  • }

  • if( buttonState[SWITCH_RIGHT] == PRESSED)

  • {

  • Romeo_m.motorControl(Reverse,100,Reverse,100);//右转

  • return;//结束子函数

  • }

  • if((joystickY>128)&&(joystickX>=64)&&(joystickX<=192))

  • {

  • Romeo_m.motorControl_M2(Forward,80); //右转大弯

  • Romeo_m.motorControl_M1(Reverse,200);

  • return;//结束子函数

  • }

  • Romeo_m.motorStop();//没有按键按下则停止

  • }

  • //led blink函数,每次执行延时10ms,100次时执行一次电平反向

  • void delayLedBlink()

  • {

  • delay(10);

  • led_count++;

  • if(led_count>100)

  • {

  • digitalWrite(LED,!digitalRead(LED));

  • led_count=0;

  • }

  • }

*载下**到Bluno nano后,打开相应手机APP“走你”,便可完成对小车的控制(安卓版安装可参考走你),视屏就不上传了,想要的可以私聊我!