这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » wenyangzeng的智能车DIY进程贴【进程5 遥控小车】

共6条 1/1 1 跳转至

wenyangzeng的智能车DIY进程贴【进程5 遥控小车】

工程师
2015-06-01 22:29:42     打赏

进程1:收到配件

进程2:组装

进程3:通电测试

进程4:建立MDK编程环境

进程5:遥控小车



收到智能车配件,先嗮一下:


智能车配件


主板的做工还是很精致的。



工程师
2015-06-02 15:57:26     打赏
2楼


进程2:组装

先安装4枚通孔铜螺柱:



再安装电池


接着安装主板


安装OLED

安装亚历克板


    给电池充满电,插上电池插销,接通电源开关,OLED屏可以显示了。红色和蓝色LED交替闪烁进行蓝牙配对。按住板上开关,轮子可以转动了。

    OK!我的平衡车基本没有问题,可供进行以后进行实验了。

    总体来说,安装工作比较顺利。需要注意的是主板如果装错方向,电机的2条连接线会有1条不够长,此时需要把电池和主板一起旋转180度重新安装一次即可。

     至于电机座由于3D打印而使铜螺柱安装孔对不上之说,其实是由于铜螺柱担负夹紧电池2侧的任务,在主板尚未安装上时,铜螺柱受到电池2侧挤压会向外倾斜,并非3D打印精度不够所致。



工程师
2015-06-02 20:24:48     打赏
3楼

进程3:通电测试

这个平衡车刚开始要让它不倒翁还不容易,放在地板上按动启动按钮死活都不动,拿在手上按动启动按钮车轮飞速旋转,放手后就跌倒在地板上。摆弄多次才找到放手的最佳时机,视频中的小车已经可以成为不倒翁了。





视频地址:http://player.youku.com/player.php/sid/XMTI1MzM1OTQwNA==/v.swf



工程师
2015-06-03 15:38:34     打赏
4楼

进程4:建立MDK编程环境


先制作1条SWD下载线

ST-LINK 通过下载线连接到小车


开发环境是MDK4.54,打开小车标准源码,选择芯片型号STM32F103C8


在Debug选项中选择ST-Link Debugger下载器    

设置为SW下载模式


在Utilities选项中选择ST-Link Debugger


在Setting中选择芯片


对原代码进行编译,BOOT0开关仍至于ON位置,打开小车电源,终于可以下载了。


工程师
2015-07-26 18:09:08     打赏
5楼

进程5:遥控小车


由于遥控APP不支持苹果手机,决定选用无线遥控方式来控制小车的动作。

在小车预留的24L01插座上安装一片NRF24L01模块。

小车

设计PCB板时如果能把无线模块旋转180度,模块就会安全许多

开发板

遥控部分选用STM32F103C8-PKT开发板来使用。


开发板的无线模块连接:

模块


按键就利用原来的游戏杆

按键



工程师
2015-07-26 19:01:35     打赏
6楼

小车上的代码就直接下载《顶级版源码(标准版基础上增加摄像头底层 超声波 NRF24L01)》,其中main()函数中原来注释掉的3个函数要去掉注释:

//NRF24L01_Init();

// NRF24L01_FindMyself();

//NRF24L01();

而NRF24L01()函数中接收部分中

紧跟在RX_Mode() 函数后面的while(1)必须注释掉,否则小车一下子就摔倒了。


STM32F103C8-PKT开发板方面的代码主要部分:

int main(void)
{
SystemInit();
delay_init(72);
usart1_init();
uart3_init(72,9600);
led_init();
KEY_Init();
NRF24L01_Init();
NRF24L01_FindMyself();

while(1)
{

NRF24L01();
}
}

//-------------------------------------

//NRF24L01_Init函数修改如下:

//----------------------------------------

void NRF24L01_Init(void)

{
RCC->APB2ENR|=1<<2;
RCC->APB2ENR|=1<<3;
GPIOB->CRL&=0XFFFFFF00;
GPIOB->CRL|=0X00000033;
GPIOB->ODR |=0X0003;
GPIOA->CRL&=0XFFFF0FFF;
GPIOA->CRL|=0X00003000;
GPIOA->ODR |=0X0008;
GPIOA->CRL|=0X00080000;
SPIx_Init();
NRF24L01_CE=0;
NRF24L01_CSN=1;
}

//--------------------------------

// NRF24L01()函数修改如下

//--------------------------------

void NRF24L01(void)
{
u8 tmp_buf[33];
TX_Mode();
while(1)
{ tmp_buf[0]=0;
tmp_buf[1]=0x00;
GPIOB->ODR &=~0X8000;
NRF24L01_TxPacket(tmp_buf);
if((GPIOC->IDR & 0X8000)==0X0000)
{tmp_buf[1]=130;
GPIOB->ODR |=0X8000;
GPIOB->ODR &=~0X2000;
do{NRF24L01_TxPacket(tmp_buf);
delay_ms(10);
}while((GPIOC->IDR &0X8000)==0X0000) ;
GPIOB->ODR |=0XF000;
}
else
if((GPIOC->IDR &0X2000)==0X0000)
{
tmp_buf[1]=50;
GPIOB->ODR |=0X8000;
GPIOB->ODR &=~0X4000;
do{
NRF24L01_TxPacket(tmp_buf);
delay_ms(10);
}while((GPIOC->IDR &0X2000)==0X0000) ;
GPIOB->ODR |=0XF000;
}
delay_ms(10);
}
}


视频地址:http://player.youku.com/player.php/sid/XMTI5NDA1MTM2NA==/v.swf



视频中小车旋转的速度如果用来走8字,小车肯定要挂了。


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]