进程1:收到配件
收到智能车配件,先嗮一下:
主板的做工还是很精致的。
进程2:组装
先安装4枚通孔铜螺柱:
再安装电池
接着安装主板
安装OLED
安装亚历克板
给电池充满电,插上电池插销,接通电源开关,OLED屏可以显示了。红色和蓝色LED交替闪烁进行蓝牙配对。按住板上开关,轮子可以转动了。
OK!我的平衡车基本没有问题,可供进行以后进行实验了。
总体来说,安装工作比较顺利。需要注意的是主板如果装错方向,电机的2条连接线会有1条不够长,此时需要把电池和主板一起旋转180度重新安装一次即可。
至于电机座由于3D打印而使铜螺柱安装孔对不上之说,其实是由于铜螺柱担负夹紧电池2侧的任务,在主板尚未安装上时,铜螺柱受到电池2侧挤压会向外倾斜,并非3D打印精度不够所致。
进程3:通电测试
这个平衡车刚开始要让它不倒翁还不容易,放在地板上按动启动按钮死活都不动,拿在手上按动启动按钮车轮飞速旋转,放手后就跌倒在地板上。摆弄多次才找到放手的最佳时机,视频中的小车已经可以成为不倒翁了。
视频地址:http://player.youku.com/player.php/sid/XMTI1MzM1OTQwNA==/v.swf
进程4:建立MDK编程环境
先制作1条SWD下载线
ST-LINK 通过下载线连接到小车
开发环境是MDK4.54,打开小车标准源码,选择芯片型号STM32F103C8
在Debug选项中选择ST-Link Debugger下载器
设置为SW下载模式
在Utilities选项中选择ST-Link Debugger
在Setting中选择芯片
对原代码进行编译,BOOT0开关仍至于ON位置,打开小车电源,终于可以下载了。
进程5:遥控小车
由于遥控APP不支持苹果手机,决定选用无线遥控方式来控制小车的动作。
在小车预留的24L01插座上安装一片NRF24L01模块。
设计PCB板时如果能把无线模块旋转180度,模块就会安全许多
遥控部分选用STM32F103C8-PKT开发板来使用。
开发板的无线模块连接:
按键就利用原来的游戏杆
小车上的代码就直接下载《顶级版源码(标准版基础上增加摄像头底层 超声波 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字,小车肯定要挂了。
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |