来龙去脉

  • 因为项目需要使用红外传感器来辨别方向,而且还是用的非标红外通讯协议(协议主要是通过载波脉冲的间隔时间来区别);
  • 需要直观地显示/测试红外信号的信息/质量,了解红外信号的在空间上的分布情况。
    故做了一个小工装,能够显示接收标准代码数据和自定义的代码数据;

目标功能

  • 接收38KHz红外载波信号,通过led闪烁表示接收到红外信号;
  • 解码信息/调试信息能够显示在OLED屏幕上;
  • 实现自定义和标准(如NEC)数据的解码;
  • [TODO]增加旋转编码器
  • [TODO]增加led UI,优化UI

硬件组成

  • nano,(红外接收头的引脚只做输入电平的检测,故使用普通的引脚即可)
  • 1838B红外接收头,带屏蔽罩一体化(集成了信号处理);
  • oled 0.96寸 I2C通讯
  • 支持NEC码的遥控器,用于测试

软件设计

IRremote库-通过测试NEC码,了解其工作原理

  • IRremote的工作原理:在周期是50us的中断函数isr中有个红外接收装态机(https://mc.dfrobot.com.cn/thread-440-1-1.html)
  • 在该状态机中记录了脉冲边沿的间隔时间计数值tick,以及间隔的次数 results.rawlen,保存在results.rawbuf[i] ;实际时间 = 50us*tick;
  • 同时结果还包含了解码的类型 results.decode_type,定义在 decode_type_t中,如 NEC=8
  • 接收到间隔数据后,就根据定义的解码方式进行解码,通常第一个数据为两个帧之间的间隔时间,处理时先跳过;
  • NEC编码的特点是 起始位为固定560us,然后载波之后的空格space不一样来区别0/1
  • 通过打印NEC码原始时间间隔数据;匹配到了与协议相符的时间数据;验证NEC的编码的解码方式,
    + 接下来就是根据自定义的时间间隔去匹配逻辑0/1

显示库

Adafruit_SSD1306

其他问题

测试中发现红外的散射能力太强,如果要测试红外信号分布的话,需要设计好光路,否则无法判别方向;

参考资源

  • 红外编码原理(https://blog.csdn.net/wuhenyouyuyouyu/article/details/105900088)
  • 太极创客(http://www.taichi-maker.com/oled-weather-time-tv/)
  • 显示参考(https://www.jianshu.com/p/82ba466a5369)
  • 红外参考(http://www.taichi-maker.com/homepage/reference-index/arduino-library-index/irremote-library/ir-send-example-1/)
  • Adafruit参考(https://blog.csdn.net/dpjcn1990/article/details/103376058)

又是填坑的一天

[arduino]红外接收测试工装相关推荐

  1. ESP8266+红外模块制作万能网路遥控器

    ESP8266+红外模块制作万能网路遥控器 通过红外模块模拟遥控发射指令 接入blinker平台,通过手机可以远程控制. 前提是先读取出你要操控设备遥控的发射码出来.参考<Arduino 红外接 ...

  2. Arduino 红外模块 红外接收 红外发射

    需要用到IRremote库文件 红外遥控按键16进制编码,使用时添加前缀 0X 红外接收 .源代码 //***************** //红外接收模块测试 //***************** ...

  3. arduino灯光装置_基于Arduino的智能家居灯控系统设计

    &能应用 ------ T X 阵 W S 2 8 1 2 全 彩 灯 带 R X 工 G N D r 0 引言 智能家居的概念虽然已经有了几十年,但进入我国并取 得一定发展还是最近几年的事, ...

  4. 自己动手做Arduino玩具(三)

    使用上一节的程序虽然可以实现一个靶,但功能上实在有点太简单了,而且有一个比较严重的问题,就是由于红外管有点敏感,环境光也自动触发了管子,所以这个方案实在是有点不合适,在Arduino库中有红外线接收及 ...

  5. arduino笔记20:红外遥控

    红外LED    红外接收器 红外遥控的通讯协议     用到一个库: arduino红外接收器:   IRrecvDemo . decode()库函数用于判断红外接收器所接收到的红外信号是否可以被解 ...

  6. Arduino Mixly入门到精通教程

    目录 1.介绍 2.实验器材和相关资料下载链接 3. Uno Plus 开发板和米思齐软件 第1小节  简单介绍 Uno Plus 开发板 第2小节 Uno Plus 开发板的驱动安装方法 第3小节 ...

  7. Fritzing软件绘制Arduino面包板接线图传感器模块库文件300

    一.硬件接线图 二.硬件材料 1)主控板 1.1*Arduino UNO开发板 2.1*Arduino UNO R3 CH340版本 3.1*Arduino Nano开发板 4.1*Arduino M ...

  8. arduino 的红外遥控解码

    测试发现   遥控器的角度不一样  或者有反射  导致解析的码也不一样 程序 /** IRrecvDemo-LED* =====================功能说明================ ...

  9. Arduino遥控小车

    需要下载ArduinoIDE,代码(Arduino C): #include<IRremote.h > //红外库//左1马达 const int leftPin1=8; //左2马达 c ...

  10. arduino的学习过程

    目录 一.引言 二.学习arduino的过程 三.学什么 1.编程思路 2.自学的习惯 3.做笔记 总结 4.灵活运用 四.怎么学 一.引言 作为一个专科大三的混子,写一篇文章给师弟师妹们,因为自己学 ...

最新文章

  1. 黑龙江专科大学计算机专业,黑龙江10大最好的专科学校,有你心仪的学校吗?...
  2. Elasticsearch启动问题:max number of threads [3753] for user [XX] is too low, increase to at least [4096]
  3. 单臂路由配置实验同一交换机上vlan间ping不通_【干货】什么是单臂路由?如何配置?...
  4. Exception在方法继承中的限制
  5. java绘制矩形 鼠标_如何用java在面板上用鼠标绘制出一个矩形
  6. ExtAspNet应用技巧(十四) - 系统设置
  7. 【安卓笔记】—— 页面导航 Navigation(2)
  8. php案例之后台数据显示-- PDO版(php data object)
  9. 实用Python程序设计测验 - 007:反向输出一个三位数
  10. java 裁剪 pdf_Java 合并、拆分PDF文档
  11. 什么是L2十档行情API接口
  12. 响应式网页设计学习笔记
  13. 远程网络教学系统功能(用例图)
  14. DeepFashion2: 一个针对衣服图片的检测、姿态估计、分割和重认证多用途基准
  15. centos下申请阿里云泛域名证书并自动更新
  16. Python练习3:求N的多次方
  17. 求解广州到上海用时最短的路径,使用中国地图超详细剖析Dijkstra算法思想
  18. Makefile 配置和使用
  19. 企业信息化由谁主导会更好?
  20. 在阿里云购买云服务器并安装宝塔面板

热门文章

  1. 2020.12.28Excel(数字到BZZ)
  2. 导数乘法/除法法则的证明
  3. 系统架构设计师:软件质量属性
  4. ker矩阵是什么意思_基向量、标准正交基、对称矩阵、Hermite阵
  5. 9.2 多元微分学及应用——偏导数
  6. 服务器分类方式和类型
  7. ios 博客及论坛整理
  8. php几种常用的加密解密算法
  9. 浅述SATA接口Raid、AHCI、IDE三种模式
  10. IDEA上传代码至github