匿名
未登录
登录
丢石头百科
搜索
查看“树莓派智能车AlphaBot教程4:遥控”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
树莓派智能车AlphaBot教程4:遥控
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
遥控是小车的一个重要功能,常用的要控制方式有红外,蓝牙,wifi, NRF等。遥控程序大概类似,就是小车接受到传输过来的命令然后做相应的动作,只是传输的方式不一样而已。本章主要讲解红外以及蓝牙,后面章节讲到wifi. 红外遥控: 小车采用LFN0038K接收头,可以接受红外信号。配套的红外遥控器输出的脉冲信号遵循标准的NEC编码协议。 红外 NEC 协议编码采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的"0";以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的"1 [[File:105352wozunnltqdoann3o.gif]] 协议: 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如下图。 [[File:105352rooo6dhouh8bcoqm.gif]] | 引导码 | 用户识别码 |用户识别码反码 | 操作码 | 操作码反码 | 首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是否出错)。然后是8bit 的命令码(也是从低有效位开始发),而后也是8bit 的命令码的反码。 一个命令只发送一次,即使遥控器上的按键一直按着。但是会每110mS发送一次重复码,直到遥控器按键释放。重复码比较简单:一个9mS的AGC脉冲、2.25mS间隔、560uS脉冲。 [[File:105352yb0y3lol88bjbize.gif]] 一次完整的命令脉冲如下图: [[File:105353hgfugg2lg9y4ufg5.png]] 蓝牙遥控 蓝牙遥控通常采用蓝牙模块,蓝牙模块一般采用TTL串口控制。配对后即可作为全双工串口使用,无需了解任何蓝牙协议。Alphabot2-Ar留有Xbee接口,可以接入双模蓝牙串口模块。 [[File:105353dzfki7yhguui7idz.png]] 蓝牙模块发送命令可以是一个字符或者字符串,如下图ardiono程序。单片机接受到字符串是判断是否和已知的命令相匹配,然后做出相应动作。 [[File:105353r4omag6pfawf2gca.png]] 当命令比较多时,可以采用JSON格式的命令,区分各种命令的类别。JSON格式如下。 {"Forward":"Down"} {"Buzzer":"On"} JSON格式分表示为键/值对组合,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值。上图中"Forward",“Buzzer”为键,对应两种不同命令。"Down","On"为值,表示命令的值。 接收到命令后可以通过JSON库解析对应的键,得到值。例如下面程序。通过arduino的JSON库解析“Forward”键的值,如果是“Down”表示按键按下,小车前进。如果是“Up”表示按键松开。小车停止。 === cpp代码: ===<syntaxhighlight lang="python"> aJsonObject *Forward = aJson.getObjectItem(msg, "Forward"); if (Forward) { String str = Forward->valuestring; if(str.equals("Down")) { forward(); Serial.println("{\"State\":\"Forward\"}"); } else if (str.equals("Up")) { stop(); Serial.println("{\"State\":\"Stop\"}"); } }</syntaxhighlight>
返回至
树莓派智能车AlphaBot教程4:遥控
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志