51单片机物联网智能小车系列文章目录

第一篇:最简单DIY的51蓝牙遥控小车设计方案
第二篇:最简单DIY串口蓝牙硬件实现方案
第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车
第四篇:最简单DIY基于51单片机的舵机控制器
第五篇:最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器


文章目录

  • 51单片机物联网智能小车系列文章目录
  • 前言
  • 一、最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器是什么?
  • 二、制作步骤
    • 1.准备硬件
    • 2.修改代码
    • 3.舵机原理分析
  • 三、仿真与调试
    • 1. 准备好硬件,上电。
    • 2. 操控舵机
  • 总结

前言

    daodanjishui物联网核心原创技术之最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器。
    市面上有各种开源智能舵机控制器,但是有复杂的有简单的,如果想快速入门基于51单片机的舵机二自由度云台控制器搭配到智能小车上面,这个方案会给你一个快捷高效的方案。


一、最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器是什么?

    在第四篇完成了51单片机单个舵机控制的设计,读者好奇当时为什么不写控制多个舵机的PWM波的代码呢?那是因为学习是一个循序渐进的过程,掌握基本的技能才能去举一反三。到现在来看是为我第五篇博文是第四篇博文的升级版,可以同时控制两个舵机,并且互相不受影响,共同使用一个定时器,代码相当精妙,纯粹是自己的原创代码,如果不好好专研深入思考,是不可能写出这样的代码的。
    虽然市面上也有不少开源的舵机二位度云台控器方案,但是全部由一个寄存器配置完成控制双路PWM波输出的代码却很少,现在用文字的形式记录下来,这个代码是在郭天祥出的51单片机的书籍上代码的改造,是我原创的!这次源码进行了大幅度的升级,用52单片机定时器0输出两路PWM波来控制两个自由度的舵机,用定时器1组成波特率发生器控制串口蓝牙,加上镭射激光模块,代码写得非常精简和奇妙,最终研制成功了钢铁爱国者机关枪控制器,这个控制器可以搭配到智能小车上,构成多功能智能小车,读者也可以根据代码的思路编写多路PWM波,达到举一反三的效果,现在用文字的形式记录下来,对自己童年时代深刻地回忆和对未来技术的展望。“闭门造枪”虽然有点痛苦,但是当你看到自己亲手做的机关枪模型在地上通过自制的遥控器遥控动起来的时候,你会发现一切的付出都是值得的!全家福如下图所示:

作品测试优酷视频地址:https://v.youku.com/v_show/id_XNDk2MDgxNzk3Ng==.html?spm=a2hbt.13141534.app.55!25!2555!255!25!25!255!28A

直接观看

51钢铁侠爱国者机关枪控制器

    功能描述:手机蓝牙调试助手发送指令通过蓝牙无线传输到串口蓝牙模块(跟第一篇的智能小车控制方式一模一样),模块将控制信息通过串口返回给单片机,单片机解析控制指令,最后控制二自由度舵机转动,最终控制激光点打到目标,可玩性相当高,其实除了可以用蓝牙调试助手控制之外,也可以用有线的串口调试助手来控制,只不过无线变成有线了而已,串口蓝牙的功能无非就是让有线串口变成无线串口而已。

二、制作步骤

1.准备硬件

1.1购买2个sg90舵机(180度舵机)如下图所示:

1.2购买激光模块;

1.3购买舵机驱动电源模块:

1.4购买舵机云台,比较难找,给一个链接和参考来购买。

1.4购买单片机最小核心板和HC-05串口蓝牙模块。

2.修改代码

    这个51单片机的代码是第四篇代码的修改,思路完全是根据自己的单片机寄存器的理解原创的,相比arduino的控制程序,这个代码值钱多了!后期我会推出STM32版本的舵机控制程序。源码工程截图:

重写串口中断服务器程序代码:

void receive() interrupt 4 //串口中断服务程序
{if(RI==1){RI=0;   //重新清0等待接收a=SBUF;//接收电脑传输过来的数据//SBUF=a;//单片机把接收到的数据返回给电脑//这里可以放置舵机中断服务程序需要处理的逻辑//下面加入智能小车指令解析AA[i++]=a;if((AA[i-1]=='\n')&&(AA[i-2]=='\r')){//判断是否遇到了"\r\n"AA[i-2]='\0';   //用"\0"替代了"\r"的字符变量if((strstr(AA,"FFF")!=0)){//使用了字符串查找函数,这是第二种方法send(AA);front();//前进}else if((strstr(AA,"BBB")!=0)){//使用了字符串查找函数,这是第二种方法send(AA);back();//后退}else if((strstr(AA,"LLL")!=0)){//使用了字符串查找函数,这是第二种方法send(AA);left();//左转?}else if((strstr(AA,"RRR")!=0)){//使用了字符串查找函数,这是第二种方法send(AA);right();//右转}else {send(AA);stop();//停止}i=0;for(j=0;j<20;j++){AA[j]='\0';}   //逻辑结束flag=1;//接收标志位置1TI=0;   //清除发送中断标志位}}}

完善舵机转动控制函数和激光控制函数:

void stop(void){//停止laser=~laser;//开启激光或者是关闭激光}void front(void){//摄像头仰视jd2--;if(jd2<5)jd2=5;}void back(void){//摄像头俯视jd2++;if(jd2>25)jd2=25; }void left(void){//摄像头左转jd1++;if(jd1>25)jd1=25;   }void right(void){//摄像头右转jd1--;if(jd1<5)jd1=5;}

最关键的是定时器中断函数,关键的地方就是修改定时器寄存器TL0和count变量。详情请到博文最后去下载,尊重原创技术从你我做起。

3.舵机原理分析

    根据工作原理,舵机的具体控制方法就是需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms2.5ms范围内的角度控制脉冲部分。脉冲宽度从0.5ms2.5ms,相对应舵盘的位置为0~180度,呈线性变化。一般舵机脉冲宽度20ms,高电平宽度与角度对应关系

0.5ms————0度;

1.0ms————45度;

1.5ms————90度;

2.0ms————135度;

2.5ms————180度;
根据上面的原理,我们知道单片机只要产生20ms的脉冲信号,通过改变高电平时间从0.5ms到2.5ms变化,就能使舵机转动到对应的角度。最后程序的功能就是按下增加按键,舵机从0度到180 ,按10次;舵机从180到0也需要按10次减少按钮。


三、仿真与调试

1. 准备好硬件,上电。

硬件连线都比较简单。

2. 操控舵机

还是需要用到手机蓝牙调试助手
(1)发送十六进制指令,因为控制器接收指令 要加\r\n作为结束符号,所以指令后面要加上十六进制0d 0a
比如FFF\r\n是仰头,指令转化为十六进制是 4646460d0a

(2)下面是低头:BBB\r\n
(3)下面是左转: LLL\r\n
(4)最后是右转: RRR\r\n
(5)控制激光的指令是:SSS\r\n
舵机从0度到180 ,发送10次指令;舵机从180到0也需要发送10次减少指令。每次可以转18度。

注意:串口蓝牙的波特率是9600,所以用串口调试助手测试的时候也要把波特率设为9600,指令再也不需要转化为16进制,勾选默认打算回车和换行符号即可。把蓝牙模块拆除接上USB转ttl线,TX端接P3.0,RX端接P3.1


发送FFF 看到舵机抬头
发送SSS 看到激光点发生变化

总结

    如果用stm32来控制舵机,一般人都觉得没有问题,因为有现成的库函数可以调用,但是用51单片机定时器0通过两个IO口同时输出两路不相互干扰的PWM波来控制舵机就不是那么容易了,同时又要使用定时器1作为波特率发生器实现串口蓝牙通信。原来的开源舵机程序0到180度一共有五档,现在有10档,也就是最小翻转角度达到18度,那是因为修改了定时器中断。本次设计绝对是单片机串口编程和PWM编程最好的学习资料。
    下一篇设计开源安卓手机app来控制舵机,该开源app留到下一篇博文,敬请期待!这里可以给出一个app的截图作为宣传。

代码工程下载链接:https://www.cirmall.com/circuit/21238/
点我直接跳转

最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器相关推荐

  1. 最简单DIY基于C#和51单片机上下位机一体化的PCA9685舵机控制程序

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  2. 最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  3. 最简单DIY基于51单片机的舵机控制器

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  4. 最简单DIY基于STM32单片机的蓝牙智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 文章目录 STM32库函数开发系列文 ...

  5. 最简单DIY基于STM32单片机的WIFI智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  6. 最简单DIY基于STM32的远程控制电脑系统②(无线遥杆+按键控制)

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  7. 最简单DIY基于STM32的远程控制电脑系统①(电容触摸+按键控制)

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  8. 最简单DIY基于ESP8266的物联网智能小车①(webserver服务器网页简单遥控版)

    ESP8266和ESP32物联网智能小车开发系列文章目录 第一篇:最简单DIY基于ESP8266的物联网智能小车①(webserver服务器网页简单遥控版) 文章目录 ESP8266和ESP32物联网 ...

  9. 最简单DIY基于ESP32CAM的物联网相机系统④(用调试串口助手实现串口图传)

    第一篇:最简单DIY基于ESP32CAM的物联网相机系统①(用网页实现拍照图传) 第二篇:最简单DIY基于ESP32CAM的物联网相机系统②(在JAVAWEB服务器实现图片查看器) 第三篇:最简单DI ...

最新文章

  1. 唐山一个葬礼上的豪华车队
  2. python time.time和time.clock_Python中time.clock和 time.time的对比探究
  3. 设计模式——开发常用的设计模式梳理
  4. 新分享一种解决ie6下PNG图片透明的方法
  5. jquery ajax 防止浏览器缓存
  6. 利用 Node.js 实现 SAP Hana 数据库编程接口
  7. 单片机实验:外部中断按键
  8. 关于ThreadLocal
  9. SpringBoot解决redirect参数中文乱码问题
  10. java连接kvstore_Tendermint ABCI 应用 KVStore 源码详解
  11. hnu暑期实训之日历问题
  12. 超高薪的机器学习工程师和现在的前后端们有什么不同?
  13. C#中常用字符串操作
  14. 计算机网络连接图标 红叉,Win10网络图标显示红叉叉 检测不到网卡驱动解决方案...
  15. matlab四宫格画图_Matlab绘图初级教程
  16. 水果店快开业怎么发朋友圈,水果店开业怎么发朋友圈图片
  17. 电容笔有什么用?适合iPad画画的电容笔推荐
  18. Katalon自动化测试
  19. 绝对值不等式解绝对值二次函数的最值_Simplelife_新浪博客
  20. 终端(terminal)打印彩色文字

热门文章

  1. html图片排列布局下面字_div+css(ul li)实现图片上文字下列表布局
  2. relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recom
  3. 【计算机毕业设计】459汽车维修管理系统
  4. k线图中的三条线是什么?
  5. 【大物第七版·电磁感应 电磁场理论】感生电动势 感生电场总结
  6. .log .clf文件转化为 .bag文件 github
  7. #HDU 4417 Super Mario (主席树 + 二分)
  8. 计算机科学与技术专业教学大纲,《计算机科学与技术专业》教学大纲
  9. 华为android系统6.0,基于安卓6.0!华为全新系统EMUI4.0降临:赞
  10. 2022年二级建造师施工进度计划的编制方法模拟题及答案