跳舞机器人软件部分,这样实现“简单粗暴”

发布者:czc天天最新更新时间:2018-04-07 来源: eefocus关键字:单片机  蓝牙  跳舞机器人 手机看文章 扫描二维码
随时随地手机看文章

通过上周介绍的小π机器人硬件电路部分和3D打印部分,你是否已经打造出一款属于自己的小π机器人呢?这周小编将要给大家介绍小π机器人的软件部分,让属于你自己的小π动起来。


一、软件架构与通信协议

1、软件架构

在开始前,我们来复习一下第一期文章中提到的软件架构图。

 

首先介绍一下软件的架构,小π机器人的软件部分主要包含手机APP程序、上位机程序、主控单片机程序和从机程序构成。本周主要讲解主控单片机程序和从机程序,下周将讲解手机APP程序和上位机程序。小π机器人的软件架构图如下图所示:

 

 

主控单片机收到数据以后先判断是动作指令还是其他指令。如果是动作指令,直接将指令发给动作控制单片机,动作控制单片机调用不同的数组,输出不同的PWM,使舵机的转过不同角度,从而实现各种不同动作。如果是其他指令,比如三色RGB灯的控制,解析出三色的数据,输出不同电压,实现脸部变色功能。比如喇叭,可以播放SD卡中的音乐。

 

2、通信协议

为了方便手机与单片机之间、上位机与单片机之间、主机与从机之间的通信,我们定义了属于自己的通信协议。

 

通信协议的基本格式为<指令,参数>。

例如动作指令。其中,“<”代表指令开始;指令“FW”是英文向前forward的缩写,代表向前的命令;英文“,”把命令和参数分隔开;参数“5”代表指令FW的参数为5;“>”代表指令结束。这句话的意思就是向前走5步。其它动作指令也是类似的。

灯光颜色选择指令由三条指令构成,分别为。众所周知,红、绿、蓝是光的三原色,通过控制红、绿、蓝的比例,就可以实现任意颜色的输出。R、G、B是英文红色red、绿色green、蓝色blue的首字母,分别代表红色、绿色和蓝色。R、G、B的参数变化范围为0-255,这样就可以变化出1600多万种颜色。

 

二、单片机选择

为了方便大家编写单片机的程序,我们采用的是完全开源的Arduino系列单片机。Arduino由一个欧洲开发团队于2005年冬季为艺术生开发,所以比较简单,容易上手。Arduino由硬件(各种型号的Arduino板)和软件(Arduino IDE)组成。下图为常用的几款Arduino。

 

 

Arduino IDE可以在Windows、Macintosh OSX、Linux三大主流操作系统上运行。Arduino语言基于wiring语言开发,是对 avr-gcc库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,人人都可以快速的进行开发。Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。

 

总之,Arduino具有跨平台、开发简单、开源的优点,所以我们采用的Arduino系列单片机。

 

三、运动控制简析

小π机器人有4个自由度,换句话说,小π机器人的运动主要是通过控制4个舵机来实现的。4个舵机在一定时间内依次转动不同的角度,再通过一定的排列组合,就可以实现前进、左转、右转、后退等简易动作和摇头、抬脚、晃腿、弹跳等复杂的动作。

 

 

舵机的输入线共有三条,红色中间,是电源线,一边黑色的是地线。舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。

 

由于一次改变PWM占空比太多,舵机转动速度过快、转动角度太大,会造成动作不协调、也不美观,而且运动过快容易造成小π机器人的不平衡。所以要控制小π机器人做一个特定的动作,只能分多次控制舵机的角度,每次只转动一点角度,延时一定时间后再次改变舵机的角度,这个延迟时间一般为几个毫秒,这样就可以使舵机比较平缓的转动相应的角度。

 

四、其余硬件部分程序

1、蓝牙模块

   蓝牙模块使用的是HC-06,负责与手机之间进行通信。单片机与蓝牙模块之间的通信采用的是串口通信。波特率设置为115200,设置代码为Serial.begin(115200)。发送命令代码为Serial.println(””)。

 

 

2、音频播放模块

主控单片机通过模拟人按压独立按键产生一个脉冲信号控制蓝牙音频模块,实现切换歌曲、调节音量、播放与暂停的功能。

 

 

例如,定义播放/暂停键为2号端口,初始化代码为:

pinMode(2,OUTPUT);

产生一个脉冲信号代码为:

digitalWrite(2,HIGH);//2号端口置为高电平

delay(200);//延时200毫秒

digitalWrite(2,LOW); //2号端口置为低电平

delay(1000);//延时1秒

3、七彩LED控制

主控单片机产生三个不同PWM信号实现对七彩LED的控制,最终达到灯光秀的效果。

 

 

PWM信号是数字方波,其中频率是恒定的,但信号接通时间的一小部分(占空比)可以在0和100%之间变化。

 

 

4、触摸功能

三根触须使用的是金属材料,人摸触须时,由于端口电平的改变触发中断,执行相应的操作。

 

 

中断设置代码如下:

pinMode( pinInterrupt, INPUT);//设置管脚为输入

//Enable中断管脚, 中断服务程序为onChange(), 监视引脚变化

attachInterrupt(digitalPinToInterrupt(pinInterrupt),onChange,CHANGE);

 

5、语音互动功能

将语音以数组的形式存到SD卡中,每次进行语音互动时,提取相应的数据,产生音频输出信号,经过滤波后通过喇叭播放相应的语音。

 

6、SD卡模块

SD卡模块读写可以采用SPI模式或者SDIO模式读写数据。

 

 

SD库允许读取和写入SD卡,例如在Arduino以太网盾上。该库支持标准SD卡和SDHC卡上的FAT16和FAT32文件系统。它使用简短的8.3名称作为文件。传递给SD库函数的文件名可以包含用正斜杠分隔的路径,例如“directory / filename.txt”。由于工作目录始终是SD卡的根目录,因此无论是否包含前导斜杠(例如,“/file.txt”等同于“file.txt”),名称都是指同一个文件。从版本1.0开始,该库支持打开多个文件。

 

微控制器和SD卡之间的通信使用SPI,它发生在数字引脚11,12和13(在大多数Arduino板上)或50,51和52(Arduino Mega)上。另外,必须使用另一个引脚来选择SD卡。这可以是硬件SS引脚 - 引脚10(在大多数Arduino板上)或引脚53(在Mega上) - 或调用SD.begin()时指定的另一个引脚。 请注意,即使您不使用硬件SS引脚,也必须将其保留为输出或SD库不起作用。

 

这些模块的代码都比较简单、网上也有大量的例程。需要什么程序,大家自由组合就好了。


关键字:单片机  蓝牙  跳舞机器人 引用地址:跳舞机器人软件部分,这样实现“简单粗暴”

上一篇:当你买家电时,实际也买下了这些激光工艺
下一篇:跳舞机器人之上位机,其实很简单

推荐阅读最新更新时间:2024-05-03 02:42

高性能MCU重塑行业的5大特性
自动化工厂和智能汽车的进一步发展需要高级联网、实时处理、边缘分析和更先进的电机控制拓扑。这些功能的加入使得对高性能微控制器 (MCU) 的需求快速增长,这种微控制器需要超越传统MCU并提供类似处理器的功能。本文将介绍高性能Sitara™ AM2x MCU帮助设计工程师克服当前和未来系统挑战的五大特性,如图1所示。 图1:Sitara AM2x高性能MCU的优势 实现更强大的性能 MCU最近在内存大小、模拟功能集成和低功耗方面取得了不少进步。但在很多应用中,快速处理大量实时控制和传感器数据的能力同样重要。在自动化工厂中,可编程逻辑控制器(PLC)和机器人电机控制系统的处理要求已从每个内核大约100MHz增加到
[单片机]
高性能<font color='red'>MCU</font>重塑行业的5大特性
PIC单片机在远程控制中的应用
本文介绍了一种用单片机控制的采用电话遥控的简易远程教学系统。它借助于现有的丰富的电话网络资源,具有结构简单,造价低廉,易于操作等特点,可以实现对录像机的各种远距离控制操作。 1 系统的总体结构 该电话遥控教学系统的总体结构如图1所示。 该系统由电话机、小型程控机、远程控制器和数台录像机、电视机组成,该系统既可以通过小型程控机构成一个局域的小系统,也可以利用电信网构成一个跨省市的远距离遥控系统。在该系统中,远程控制器的设计与制造是该系统的核心与关键。 2 远程控制器的结构及工作原理 该控制器的CPU采用美国Microchip公司生产的PIC16C54一次性用户可编程(OPT)单片机,同时,配以
[单片机]
PIC<font color='red'>单片机</font>在远程控制中的应用
基于蓝牙技术的LED点阵屏设计方案
本文设计一种内容更新便捷、可扩展、低价格的点阵LED 文字显示屏。降低成本的途径是①用几乎人人都有的手机的蓝牙数据传输功能进行LED 显示内容的更新,免去专业上位机软件和控制卡的成本,操作也更简单;②单次显示内容在5 ~ 30 个汉字或英文字母,因为显示内容较少,就可实现扩展电路的简单化。 1 系统设计方案 1. 1 系统组成 系统由带蓝牙功能的智能手机和LED 显示屏组成。其中,LED 显示屏由单片机、LED 点阵模块、字库芯片、蓝牙接收模块、5V 开关电源和3.3V 稳压电路组成,如图1 所示。系统工作过程是:用户通过智能手机的记事本编辑"数据",并经无线蓝牙发送到显示屏上的蓝牙接收模块。主控单片机读取蓝牙接收模块接收的"数据"
[单片机]
基于<font color='red'>蓝牙</font>技术的LED点阵屏设计方案
基于PIC16F877A单片机和SCA60C芯片实现帆船姿态仪的设计
  帆船运动越来越受到人们的重视,如何利用现代科技手段辅助训练,来提高比赛成绩显得尤为重要。从赛场实时采集数据指导训练和减轻帆船教练工作强度方面考虑,设计帆船姿态仪,可使教练员了解每位运动员具体的训练细节,提高工作效率。   1、帆船姿态仪的系统设计   基于PIC16F877A设计的帆船姿态仪,能采集帆船行驶过程中的前后仰俯角、左右摇摆角、桅杆旋转角和GPS系统记录帆船行驶轨迹。系统每0.5s将采集到的数据记录1次,记录时间大约为5 h(小时)。上位机通过RS232接口,可将存储的数据读取上来。上位机可以形象地将帆船行驶轨迹、帆船前后仰俯角、左右摇摆角等数据显示出来。它的系统结构框图如图1所示。     2、帆船姿态仪的硬
[单片机]
基于PIC16F877A<font color='red'>单片机</font>和SCA60C芯片实现帆船姿态仪的设计
基于MSP430单片机的智能温度检测系统设计
1 引言 随着设备的电气化和自动化程度不断提高, 对设备和环境进行实时监控显得尤为重要。传统的测温器件热敏电阻测出的一般是电压, 需要再转化为相应的温度, 这就要有其它外部硬件的支持。因此硬件电路比较复杂, 设计成本也比较高。智能温度检测系统采用的是一种改进型智能温度传感器DS18B20, 数字温度传感器通过单总线与单片机连接, 系统结构简单, 抗干扰能力强, 适合于恶劣环境下进行现场温度测量, 也可应用于仓库测温、高层空调控制和农业生产过程监控等领域。 2 温度检测系统硬件构成 该温度检测系统由主控制器MSP430F149、存储模块CAT24WC64、液晶显示模块HTM1602A、语音报警模块ISD1420、矩阵键盘和单总
[单片机]
HOLTEK推出HT45R4U e-Banking单片机
Holtek推出e-Banking ASSP MCU - HT45R4U,内建LCD驱动器与高精准度32.768kHz RTC振荡器,RTC工作时MCU待机电流0.9uA (典型值),非常适合挑战应答产品的应用。 HT45R4U的特点在于工业规格(-40 ~ 85℃)、工作电压2.2V ~ 3.6V、具有16K Words程序内存、SRAM为1152 Bytes、内建ADC、LCD驱动器、内建精准RC振荡电路、休眠快速唤醒等功能。实为功能、性能、价格最具竞争力的MCU。 HT45R4U之Oscillator提供3种模式选择 -- HXT(高频Crystal)、LXT(32.768kHz Crystal)及HIRC,可由内
[单片机]
HOLTEK推出HT45R4U e-Banking<font color='red'>单片机</font>
51单片机定时器和中断的介绍
最近在学习51单片机,学到了定时器这块,由于自己的基础不太扎实,在这方面花了很多时间,这里通过对定时器和中断的介绍,用简易时钟这个例子来对学习的内容进行加深巩固,把自己的经验分享给大家,希望对大家能够有帮助。 一、定时器的功能以及定时器的结构 定时器的功能 其实就是单片机的内部,通过系统时钟的每一个机器周期产生一个记数脉冲,即每一个机器周期计数器加一。 比如,这里我的实验板的晶振是12MHZ,1MHZ信号每个脉冲的持续时间为1us,如果定时器T0对1MHZ的信号进行计数,从0~65536us,当达到最大的65536us的时候,定时器计数达到最大值,会溢出,于是产生中断信号,向中断系统申请中断,中断系统接受中断请求,执行中断
[单片机]
51<font color='red'>单片机</font>定时器和中断的介绍
瑞萨推出入门级低功耗MCU RA0
在今天的嵌入式世界博览会上,瑞萨电子宣布推出 RA 系列新的入门级 MCU系列。All About Circuits采访了瑞萨电子的 Masashi Ueda 以了解更多信息。 功耗是工程师选择微控制器 (MCU) 的主要因素之一。 在理想情况下,MCU 的性能需要满足监视和控制嵌入式系统,同时又可以最大限度地降低功耗,以延长电池供电系统的使用寿命。 然而,同时实现性能和功效通常是一项矛盾的任务。 今天,瑞萨电子推出了一个新的入门级 MCU 系列,可提供“同类最佳”的功耗数据。 All About Circuits 采访了瑞萨电子 RA0 系列产品营销经理 Masashi Ueda,以了解有关该新系列的第一手资料。 推
[单片机]
瑞萨推出入门级低功耗<font color='red'>MCU</font> RA0
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved