转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇

红外解码/编码模块介绍

模块上搭载了红外接收头、红外发射器以及编码芯片。主要功能:

1、具备红外发射功能。

2、具备红外编码功能。

3、带红外发射头扩展接口。

4、具备串口通信功能,通信电平为TTL。

5、可控制红外格式设备,包括电视机、电风扇等电子电器设备。

6、支持编码芯片

7、可作为红外无线数据通信、数据传输、红外控制等功能

该模块使用方法非常简单,只需要掌握基本的单片机TTL串口通信知识即可。将模块与开发板进行串口连接,通过串口发送指定的指令进行控制模块发射;通过串口接收方式进行红外解码操作,获取遥控编码信息。

解码

解码时不需要发送任何指令,只需要拿起遥控对准模块的接收头按下某一个键,这时模块的串口就会输出该键的红外编码值给开发板,开发板只要从串口里读取到数据,进行分析就会得出按下的是哪一个键。

编码(发射)

编码时需要根据一定格式发送指令,通过串口发送5个字节的指令,就可以将对应编码的红外信号发送出去。利用这红外的收发功能,我们可以做红外数据传输和控制,使用2个就可以完成收发操作了。

红外解码/编码模块相关资料 下载

本次教程仅来学习解码功能。开发板写个串口读取的程序,先来看下遥控器按下之后,我们到底能接收到什么样的数据。这里,我们选取开发板UART3(TX-Y9,RX-Y10)。

接线图

TPYBoard v102 红外解/编码模块
VIN 5V
Y10 TXD
Y9 RXD
GND GND
from pyb import UART

uart = UART(3,9600,timeout=50)

while True:
if uart.any() > 0:
print(uart.read())

程序保存后运行,打开PuTTY工具,按下遥控器左上角的第一个键CH-。

PuTTY打印:

b'\x00\xffE'

micropython进行串口读取时,返回的是bytes类型,是一种不可变序列,跟字符串类似。返回了3个字节的内容,多按几个键你就会发现,前面2个字节是用户码固定不变,也就是说我们只要判断第3个字节就可以找到对应的键。bytes中可以直接通过索引来获取元素,也支持负数的索引。比如-1,就是从右向左数的第一个,依次类推。这里需要注意一点,获取某个元素时,他返回的是对应的十进制的数值。

例如:

>>> b = b'\x00\xffE'
>>> b[1]
255
>>> b[-1]
69

咦?最后一个元素E为什么是69呢?这是因为在bytes保存的就是原始的字节(二进制格式)数据,它会将一些16进制的值转换为对应的ascii字符。ascii中大写的E对应的十进制就是69。如果你用电脑接红外解编码模块的话,串口调试助手里打印的就应该是 00 FF 45。

根据上面的经验,总结了键值对应关系表,大家可以直接拿到程序中用。

接下来,结合舵机做个实例。用遥控器上的|<<快进键和快退键>>|,控制舵机进行正反方向的转动。micropython中Servo类使用参考 点击查看

TPYBoard v102 舵机
VIN 电源正极(红色线)
X1

信号线(橙色线)

GND 电源负极(棕色线)

首先,将舵机通过程序设置到0角度的状态,安上个小翅子方便查看转动效果。

from pyb import Servo

#舵机信号线接X1,可以创建4个Servo,分别是1~4,对应的引脚是X1~X4
s1 = Servo(1)
#调整舵机转动到0角度的位置
s1.angle(0)

程序增加上对按键的判断,每按一次转动15度,整体代码如下。

from pyb import UART,Servo

#舵机信号线接X1,可以创建4个Servo,分别是1~4,对应的引脚是X1~X4
s1 = Servo(1)
#调整舵机转动到0角度的位置
s1.angle(0) uart = UART(3,9600,timeout=10) def setServoTurn(flag):
turn_angle = s1.angle()
if flag:
#逆时针 值递增 最大值90度
turn_angle += 15 #每按一次转15度
if turn_angle <= 90:
s1.angle(turn_angle)
else:
#顺时针 值递减 最小值-90度
turn_angle -= 15
if turn_angle >= -90:
s1.angle(turn_angle)
while True:
if uart.any() > 0:
val = uart.read()[-1]
if val == 68:
setServoTurn(True)
elif val == 64:
setServoTurn(False)

下载源码

MicroPython TPYBoard v102 无线红外遥控舵机(基于红外解/编码模块)的更多相关文章

  1. Micropython TPYBoard v102 温湿度短信通知器(基于SIM900A模块)

    前言 前段时间看了追龙2,感受就是如果你是冲着追龙1来看追龙2的话,劝你还是不要看了,因为追龙2跟追龙1压根没什么联系,给我的感觉就像是看拆弹专家似的,估计追龙2这个名字就是随便蹭蹭追龙1的热度来的. ...

  2. [Micropython]TPYBoard v102 DIY照相机

    摄像头(CAMERA或WEBCAM)又称为电脑相机.电脑眼.电子眼等,是一种视频输入设备,被广泛的运用于视频会议,安防系统 .图像采集系统. 环境监控 .工业现场过程控制 等方面.本实验用TPYBoa ...

  3. [MicroPython]TPYBoard v102炫彩跑马灯WS2812B

    一.实验目的 了解ws2812b的工作原理 学习ws2812b的驱动方法 二.实验器材 TPYBoard v102 1块 ws2812b RGB-Ring-8 1个 micro USB数据线 1条 杜 ...

  4. 基于Arduino、STM32进行红外遥控信号接收

    catalogue . 遥控器原理简介 . 红外遥控原理 . 常见红外遥控器红外线信号传输协议 . 遙控器的发展 . 实验过程 . 攻击面 . 基于STM32实现红外信号解码 1. 遥控器原理简介 0 ...

  5. [Micropython]TPYBoard v202 v102+v202 家庭无线温湿度检测

     一.实验器件 1.TPYBoard v102 1块 2.TPYBoard v202 1块 3.Nokia 5110LCD显示屏 1块 4.DHT11温湿度传感器 1个 5.micro USB 数据线 ...

  6. 基于MicroPython:TPYBoard心率监测器

    转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 一.前言 这几年智能穿戴设备大火,尤其是手环类,从A ...

  7. 基于FPGA的红外遥控解码与PC串口通信

    基于FPGA的红外遥控解码与PC串口通信 zouxy09@qq.com http://blog.csdn.net/zouxy09 这是我的<电子设计EDA>的课程设计作业(呵呵,这个月都拿 ...

  8. [TPYBoard - Micropython 之会python就能做硬件 9] 五分种学会用TPYBoard V102 制作避障小车(升级版)

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 感谢山东萝卜电子科技公司授权   一.实验器材 1.TPYboard V102板 ...

  9. MicroPython之TPYBoard v102开发板控制OLED显示中文

    转载请以链接形式注明文章来源,公众号:MicroPython玩家汇 0x00前言 之前看到一篇文章是关于TPYBoardv102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近 ...

随机推荐

  1. Web前端开发——Ionic 3.0【爱创课堂专业前端培训】

    前端开发——Ionic 3.0 一.Ionic 移动端有三种开发方向 源生APP开发, 移动端web开发 混合开发(介于以上两者之间的) 类微信小程序 reactNative,用react语法,开发a ...

  2. 又拍云叶靖:OpenResty 在又拍云存储中的应用

    2019 年 7 月 6 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·上海站,又拍云平台开发部负责人叶靖在活动上做了<OpenRest ...

  3. pythonday06数据类型(四)

    今日内容 1.集合 2内存相关 1.集合set 无序 无重复 v = {1,2,3,4,5,6,99,100} # 疑问:v = {} """ None int v1 = ...

  4. HTML文件上传与下载

    文件下载 传统的文件下载有两种方法: 使用<a/>标签,href属性直接连接到服务器的文件路径 window.location.href="url" 这两种方法效果一样 ...

  5. 原生js实现分页功能

    原生就是实现分页功能 代码如下: var pagination = function(option,fun){ this.parentId = option.id; //容器 this.pageSiz ...

  6. ggplot2: how to check the color and coreponding value pairs

    The way to check the color and coreponding value pairs in ggplot2 To see what colors are used to mak ...

  7. 逆向破解之160个CrackMe —— 016

    CrackMe —— 016 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  8. Python3 完美解决unittest框架下不生成测试报告

    前提: 1.运行测试用例一切正常,只是没有测试报告显示 2.使用命令行pyhon 脚本名字.py 却可以生成测试报告 3.pycharm 在运行测试用例的时候 默认是以unittest 框架来运行的, ...

  9. ubuntu 用户无法/循环登陆的问题

    安装oracle数据库的时候需要新建用户oracle,使用的命令为:useradd oracle.这样做直接创建了用户oracle,但并没有在home目录下创建oracle用户的文件.在log out ...

  10. Unity3D 基于ShadowMap的平滑硬阴影

    前言 传统的ShadowMap在明暗边缘处都会有很难看的锯齿,因此一般得到的结果会比较难看,常规的解决办法都会在使用ShadowMap渲染阴影的时候通过背面剔除把这种缺陷隐藏掉,最后剩下一个影子.但是 ...