树莓派系列教程15:红外遥控
红外遥控开关的制作方法

红外遥控开关的制作方法红外遥控开关是一种方便实用的电子设备,可以用来控制灯光、电视、空调等家电设备的开关。
今天我们将介绍10条关于红外遥控开关的制作方法,并详细描述每种方法的步骤和材料。
1. 可编程红外遥控开关制作方法这种制作方法需要使用一个可编程芯片,例如AT89S52芯片,以及一些基本电子元件。
这种方法的优点是能够对红外遥控信号进行编程,使得开关变得更加智能化。
步骤:1. 连接AT89S52芯片和基本电子元件,例如电容和电阻。
2. 下载具有红外信号解码功能的程序到芯片中。
3. 制作一个红外发射模块,并将其连接到芯片上。
4. 输入你想要编程的红外遥控信号,并将其保存在芯片中。
5. 通过程序对这些信号进行处理,以制作智能红外遥控开关。
2. 简单红外遥控开关制作方法这种制作方法基于一个比较简单的电路,只需要较少的电子元件,适合初学者制作。
步骤:1. 使用NE555定时器芯片、红外遥控解码器和一些电容和电阻组成电路。
2. 制作电路板,将芯片和电子元件进行焊接,并安装红外发射模块。
3. 制作一个红外遥控器,通过它对电路进行遥控。
3. 光敏红外遥控开关制作方法这种制作方法基于一个光敏电阻,利用它的特性来控制红外遥控开关。
这种方法的优点是简单易用,价格便宜。
步骤:1. 制作出一个光敏电阻,并将其放入一个黑色的管子中。
2. 连接红外接收模块,并用热缩管将其封装起来。
3. 将一些电阻和电容连接到电路板上,用它来控制光敏电阻输入的信号。
4. 制作一个红外遥控器,向电路板发送控制信号。
4. CD4017红外遥控开关制作方法这种制作方法基于一个CD4017集成电路,利用它的内部逻辑来控制红外遥控开关。
这种方法的优点是实现方便,性能稳定。
步骤:1. 连接CD4017集成电路、电容、电阻和LED灯,制作出一个电路板。
2. 连接红外接收模块和CD4017集成电路,以接收红外信号并对其进行处理。
3. 制作一个红外遥控器,并用它来控制CD4017电路板。
Arduino之红外遥控的制作——基础

Arduino之红外遥控的制作——基础⼀、红外遥控制作——基础1、作品应⽤⽬的:制作红外遥控器,可代替电视机顶盒的遥控对其进⾏控制。
2、所需设备材料:1)、arduino uno板⼦ x12)、arduino 扩展板 x13)、红外接收模块 x14)、红外发射模块 x15)、电视机顶盒遥控器 x16)、跳线 x23、制作的原理:电视机顶盒遥控利⽤红外发射编码对机顶盒进⾏控制;获取机顶盒遥控的红外发射码,同时利⽤红外发射模块发射相同的红外码就可对机顶盒进⾏控制。
4、获取电视机顶盒遥控红外编码:——————————获取遥控红外发射编码—————————————————#include // 引⽤ IRRemote 函式库const int irReceiverPin = 12; // 红外线接收器 OUTPUT 讯号接在 pin 2IRrecv irrecv(irReceiverPin); // 定义 IRrecv 物件来接收红外线讯号decode_results results; // 解码结果将放在 decode_results 结构的 result 变数⾥void setup(){Serial.begin(9600); // 开启 Serial port, 通讯速率为 9600 bpsirrecv.enableIRIn(); // 启动红外线解码Serial.print("begin:\n");}// 显⽰红外线协定种类void showIRProtocol(decode_results *results){Serial.print("Protocol: ");// 判断红外线协定种类switch(results->decode_type) {case NEC:Serial.print("NEC");break;case SONY:Serial.print("SONY");break;case RC5:Serial.print("RC5");break;case RC6:Serial.print("RC6");break;default:Serial.print("Unknown encoding");}// 把红外线编码印到 Serial portSerial.print(", irCode: ");Serial.print(results->value, HEX); // 红外线编码Serial.print(", bits: ");Serial.println(results->bits); // 红外线编码位元数}void loop(){if (irrecv.decode(&results)) { // 解码成功,收到⼀组红外线讯号showIRProtocol(&results); // 显⽰红外线协定种类irrecv.resume(); // 继续收下⼀组红外线讯号}}———————————————————————————机顶盒遥控上数字1⾄9及0的红外编码如下:Protocol: NEC, irCode: 806F807F, bits: 32 //数字1Protocol: NEC, irCode: 806F40BF, bits: 32 //数字2Protocol: NEC, irCode: 806FC03F, bits: 32 //数字3Protocol: NEC, irCode: 806F20DF, bits: 32 //数字4Protocol: NEC, irCode: 806FA05F, bits: 32 //数字5Protocol: NEC, irCode: 806F609F, bits: 32 //数字6Protocol: NEC, irCode: 806FE01F, bits: 32 //数字7Protocol: NEC, irCode: 806F10EF, bits: 32 //数字8Protocol: NEC, irCode: 806F906F, bits: 32 //数字9Protocol: NEC, irCode: FFFFFFFF, bits: 0 //重复码Protocol: NEC, irCode: 806F00FF, bits: 32 //数字0—————————————————————————————————————利⽤红外发射模块,每五秒钟依次发送数字键0⾄9的红外编码—————#includeIRsend irsend;void ircodeSEND(){irsend.sendNEC(0x806F00FF, 32); // channel 0 红外发射码前需要加上“0x”delay(5000);irsend.sendNEC(0x806F807F, 32); //channel 1delay(5000);irsend.sendNEC(0x806F40BF, 32); //channel 2delay(5000);irsend.sendNEC(0x806FC03F, 32); //channel 3delay(5000);irsend.sendNEC(0x806F20DF, 32); //channel 4delay(5000);irsend.sendNEC(0x806FA05F, 32); //channel 5delay(5000);irsend.sendNEC(0x806F609F, 32); //channel 6delay(5000);irsend.sendNEC(0x806FE01F, 32); //channel 7delay(5000);irsend.sendNEC(0x806F10EF, 32); //channel 8delay(5000);irsend.sendNEC(0x806F906F, 32); //channel 9delay(5000);}void setup(){pinMode(3,OUTPUT);Serial.begin(9600);}void loop(){ircodeSEND();}——————————————————————————下载完程序后,就可接上外接电源,在机顶盒前进⾏测试,控制电视频道啦!5、思考:⽬前的红外遥控控制机顶盒只限于固定的0⾄9红外码的顺序发送,可否进⼀步升级,与arduino其他模块结合对电视机顶盒进⾏多样化的控制呢?此问题,将在下⼀博⽂中进⾏研究;也欢迎⼤家提供更好的控制形式或⽅法,若本⽂有错误之处也请批评指正!谢谢!。
采用树莓派与L298N制作遥控小车全攻略

采用树莓派与L298N制作遥控小车全攻略 本文主要描述使用树莓派和L298N制作一个简单的遥控小车,遥控器使用简单的WEB来实现。
准备工作 树莓派,(本文使用的是Raspberry PI 2 B型,即2B) 8G以上TF卡树莓派上可用和不可用的SD卡列表 四驱小车底(含电机,注:本文中的小车底盘佩戴的是高扭矩直流电机) 母对母、公对母、公对公(可不用)杜邦线 L298N双HD桥电机驱动板 无线网卡(最好支持AP的) 充电电池组(7V以上的,镍氢或者18650充电电池皆可) 系统安装没什幺说的,系统烧到SD就可以了,我使用的Raspbian,这货是基于Debian的,配置命令习惯几乎和ubuntu/debian一样,接上网线开机进入系统配置。
换上中科大的源,再apt-get update一次; 为root用户设置密码; 配置无线网卡有两中方案,编辑/etc/network/interface,网上教程蛮多 自动连接到路由器,家里有无线路由器,小车在WIFI覆盖的地方; 树莓派上搭建WIFI热点,信号更好,可以在小区里面开,顺便勾搭妹子,哦哦哦,不对,应该是淘气小孩。
唯一需要注意的是网卡芯片。
底盘组装 拼装没啥难度,亚克力板上的牛皮纸沾得简直是丧心病狂,马蛋,废了好一会儿功夫才撕干净(⊙﹏⊙)b; 马达那货就比较坑了,没有带线是裸机的,手中也恰巧没有电烙铁,当时我就懵逼啦。
好吧,手中还有多余的公对公杜邦线,拔掉其中一头的接头,打火机烧一下(小时候学会的神技),拔掉一部分把铜线拧紧。
最后铜线穿过马达接口的小洞里面,再拧紧。
哎丫,没有胶带,最后用透明胶凑合凑合,绑紧。
repeat 4次。
线路连接 +12V接口 +5V~+35V,如需要板内取电,则供电范围Vs:+7V~+35V 电机 OUT1、OUT2 为电机A输出;OUT3、OUT4为电机B输出 IO接口 ENA和ENA分别为A、B电机的使能端,一开始ENA和ENB各自的上下两个针脚是用跳线帽连接起来的,拔掉就可以接线了。
RaspberryPi入门及应用指南

RaspberryPi入门及应用指南第一章:Raspberry Pi简介Raspberry Pi,简称树莓派,是一款由英国树莓派基金会开发的单板计算机。
它采用ARM架构的处理器,运行Linux操作系统,功能强大,体积小巧。
树莓派具有低功耗、低成本和丰富的扩展性等特点,因此被广泛应用于教育、嵌入式系统、物联网等领域。
第二章:Raspberry Pi的硬件配置树莓派的硬件配置包括处理器、内存、存储、输入输出接口等。
最新的Raspberry Pi 4模型B配备了1.5 GHz的四核ARM Cortex-A72处理器,4GB的LPDDR4内存,以及支持高速SD卡和USB存储设备的多种存储选项。
此外,树莓派还具备HDMI接口、USB接口、以太网接口和GPIO(通用输入输出)等丰富的接口,方便用户进行扩展和连接其他设备。
第三章:Raspberry Pi的操作系统Raspberry Pi支持多种操作系统,包括Raspbian、Ubuntu Mate、Windows 10 IoT Core等。
其中,Raspbian是专为树莓派定制的基于Linux的操作系统,提供了丰富的软件包和工具,非常适合初学者学习和实践。
第四章:Raspberry Pi的编程语言树莓派支持多种编程语言,如Python、C/C++和Java等。
Python是树莓派最常用的编程语言,易于学习且功能强大,适合初学者。
C/C++语言可以直接调用底层硬件接口,提供更高的性能和灵活性。
Java语言适用于开发基于JVM的应用程序,如图形界面和网络应用。
第五章:Raspberry Pi的网络应用树莓派可以通过有线或无线方式连接到互联网,实现各种网络应用。
例如,树莓派可以充当无线路由器或者物联网网关,连接多个设备和传感器。
同时,树莓派也可以搭建Web服务器、FTP 服务器、数据库服务器等,满足个人或小型企业的需求。
第六章:Raspberry Pi的物联网应用由于树莓派具备丰富的硬件接口和低功耗特性,它非常适合用于物联网应用。
Arduino教程Lesson15:红外接收

Arduino教程Lesson15:红外接收这节我们会接触一个新的元件——红外接收管。
所谓红外接收管,也就是接收红外光的电子器件。
红外接收管,看着离我们很遥远的感觉!其实不然,它就在我们身边。
比如我们电视机,空调这些家电,其实它们都需要用到红外接收管。
我们都知道遥控器发射出来的都是红外光,电视机上势必要有红外接收管,才能接收到遥控器发过来的红外信号。
我们这次就用红外接收管做个遥控灯,通过遥控器的红色电源键来控制LED的开关。
所需材料•1×红外接收管•1× Mini遥控器STEP 1:硬件连接看着是不是很高兴,这应该是我们看到最容易的连线了,只需要连接三根线就可以了,注意一下正负就可以了(图中表明部分)。
红外接收管Vout输出接到数字引脚11。
STEP 2:输入代码这段代码,你可以不用自己手动输入,我们提供现成的IRremote 库,把整个库的压缩包解压到Arduino IDE安装位置Arduino 1.0.5/ libraries文件夹中,直接运行Example中的IRrecvDemo代码即可。
如果还是不是很明白如何加载库,可看一下如何加载库的帖子,对如何加库做了详细说明。
1.//这段代码来自IRremote库中examples中的 IRrecvDemo2.#include <IRremote.h> //调用IRremote.h库3.int RECV_PIN = 11; //定义RECV_PIN变量为114.IRrecv irrecv(RECV_PIN); //设置RECV_PIN(也就是11引脚)为红外接收端5.decode_results results; //定义results变量为红外结果存放位置6.7.void setup(){8.Serial.begin(9600); //串口波特率设为96009.irrecv.enableIRIn(); //启动红外解码10.}11.12.void loop() {13.//是否接收到解码数据,把接收到的数据存储在变量results 中14.if (irrecv.decode(&results)) {15.//接收到的数据以16进制的方式在串口输出16.Serial.println(results.value, HEX);17.irrecv.resume(); // 继续等待接收下一组信号18.}19.}20.复制代码下载完成后,打开Arduino IDE的串口监视器(Serial Monitor),设置波特率baud为9600,与代码中Serial.begin(9600)相匹配。
树莓派与传感器系列一红外避障传感器

树莓派与传感器系列一红外避障传感器红外避障传感器红外避障传感器是专为轮式机器人设计的一款距离可调式避障传感器。
其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,此时指示灯亮起,经过电路处理后,信号输出接口输出数字信号,可通过电位器旋钮调节检测距离,有效距离2~40cm,工作电压为3.3V-5V,由于工作电压范围宽泛,在电源电压波动比较大的情况下仍能稳定工作,适合多种单片机、Arduino控制器、树莓派使用,安装到机器人上即可感测周围环境的变化。
跟此传感器类似的还有一个循迹传感器模块,工作原理是一样的,相比避障传感器少了“EN”的接口。
如图所示:规格参数:1.工作电压:DC 3.3V-5V2.工作电流:≥20mA3.工作温度:-10℃—+50℃4.检测距离:2-40cm5.IO接口:4线制接口(-/+/S/EN)6.输出信号:TTL电平(有障碍物低电平,无障碍物高电平)7.调节方式:多圈电阻式调节8.有效角度:35°7.尺寸大小:28mm×23mm控制红外避障传感器1、所需材料:· 红外避障模块一个· 树莓派· LED等一只· 连接线数根2、引脚连接说明:红外避障模块树莓派GND GND+ +5VOUT GPIO 23EN 不接悬空LED灯树莓派短脚GND长脚GPIO 21注:接树莓派的GPIO口可能略有不同,小编用的是树莓派2代版,有些GPIO口使用B版的同学可能找不到,这没有关系,懂了原理,无所谓接口。
整体实物连接图:python代码:#!/usr/bin/python#-*- coding: utf-8 -*-import timeimport RPi.GPIO as GPIOimport osGPIO.setmode(GPIO.BCM) #使用BCM编码方式#定义引脚GPIO_OUT = 23led = 21#设置23针脚为输入,接到红外避障传感器模块的out引脚GPIO.setup(GPIO_OUT,GPIO.IN)GPIO.setup(led,GPIO.OUT)def warn(): #亮灯来作为有障碍物时发出的警告GPIO.output(led,GPIO.HIGH)time.sleep(0.5)GPIO.output(led,GPIO.LOW)time.sleep(0.5)while True:if GPIO.input(GPIO_OUT)==0: #当有障碍物时,传感器输出低电平,所以检测低电平warn()GPIO.cleanup()保存代码执行,然后将手挡在传感器前,就会看到led灯一闪一闪的,拿开手时,led灯将熄灭。
红外遥控小米操作方法教程

红外遥控小米操作方法教程
小米红外遥控是一款能够学习和发送红外遥控信号的设备,可以用来控制各种品牌的家电设备。
下面是小米红外遥控的操作方法教程:
1. 下载并打开小米智能家庭App,确保手机已经连接到小米智能设备的Wi-Fi 网络。
2. 在App的首页上,点击「设备」,再点击「添加设备」。
3. 在设备列表中选择「遥控器」,然后选择「小米红外遥控」。
4. 将红外遥控器对准需要学习的电视、空调等遥控器,在手机上点击「学习」按钮。
5. 按下需要学习的按钮(比如电视的开关键),保持按压直到红外遥控器的指示灯闪烁。
6. 当指示灯开始闪烁后,松开按钮,再次按下此按钮,指示灯将会停止闪烁,表示学习成功。
7. 重复步骤4-6,学习其它需要的按钮。
8. 学习完成后,可以使用小米智能家庭App来发送红外遥控信号,控制家电设备的开关和各种功能。
9. 在图形界面上根据需要可以自定义按钮名称和排序,以便更加方便使用。
注意事项:
- 在学习按钮时,尽量保持手机和红外遥控器的距离较近,以确保学习的准确性。
- 学习时最好在安静的环境中进行,以减少外界干扰。
- 如果有需要,可以在App中删除已学习的按钮,并重新学习。
以上就是小米红外遥控的操作方法教程,希望对你有帮助!。
STC15系列只用一个定时器的红外接收程序

#define User_code 0xFD02 //定义红外接收用户码
/************* 以下宏定义用户请勿修改 **************/
#include "reg51.H"
#define uchar unsigned char
#define uint unsigned int
sbit P_TXD1 = P3^1; //定义模拟串口发送脚,打印信息用
sbit P_IR_RX = P0^1; //定义红外接收输入端口
bit P_IR_RX_temp; //Last sample
bit B_IR_Sync; //已收到同步标志
uchar IR_SampleCnt; //采样计数
对于用户码与User_code定义不同的遥控器,程序会将用户码一起从串口输出。
使用模拟串口发送监控显示编码,显示内容为ASCII码和中文。
本接收程序基于状态机的方式,占用CPU的时间非常少。
HEX文件在本目录的/list里面。
******************************************/
/*------------------------------------------------------------------*/
/************* 功能说明 **************
红外接收程序。适用于市场上用量最大的HT6121/6122及其兼容IC的编码。
//*******************************************************************************************
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上一章我们介绍了如果通过树莓派device tree,将在ds18b20添加到linux系统中,并通过命令行读取温度数据,这一章我们也通过device tree添加红外接收lirc为linux系统中红外遥控的软件,树莓派系统已经有这个模块,我们只需设置一下就而已使用。
1 sudo vi /boot/config.txt在文件后面添加下面这一行1 doverlay=lirc-rpi,gpio_in_pin=18红外默认输出是18管脚,如果红外接收头接到其他管脚则需修改对应管脚,(管脚为BCM编码),Pioneer 600接收头默认接到18管脚故只需要添加1 doverlay=lirc-rpi在/boot/overlay/README文件中我们可以找到详细说明。
安装lirc软件1 sudo apt-get install lirc运行lsmod命令查看设备是否已启动,如若没有找到可运行sudo modprobe lirc_rpi加载驱动。
运行sudo mode2 –d /dev/lirc0,按遥控上任何键,查看是否接到到类似脉冲。
如有接到到脉冲测lirc正常使用。
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的"0";以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的"1协议:上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。
然后再通过红外发射二极管产生红外线向空间发射,如下图。
| 引导码 | 用户识别码 |用户识别码反码| 操作码 | 操作码反码 |一个命令只发送一次,即使遥控器上的按键一直按着。
但是会每110mS发送一次代码,直到遥控器按键释放。
重复码比较简单:一个9mS的AGC脉冲、2.25mS间隔、560uS脉冲。
bcm2835程序:[代码]php代码:01 #include <bcm2835.h>02 #include <stdio.h>03 #define PIN 1804 #define IO bcm2835_gpio_lev(PIN)05 unsigned char i,idx,cnt;06 unsigned char count;07 unsigned char data[4];0809 int main(int argc, char **argv)10 {11 if (!bcm2835_init())return 1;12 bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_INPT);13 bcm2835_gpio_set_pud(PIN, BCM2835_GPIO_PUD_UP);14 printf("IRM Test Program ... \n");1516 while (1)17 {18 if(IO == 0)19 {20 count = 0;21 while(IO == 0 && count++ < 200) //9ms22 delayMicroseconds(60);2324 count = 0;25 while(IO == 1 && count++ <80) //4.5ms26 delayMicroseconds(60);2728 idx = 0;29 cnt = 0;30 data[0]=0;31 data[1]=0;32 data[2]=0;33 data[3]=0;34 for(i =0;i<32;i++)35 {36 count = 0;37 while(IO == 0 && count++ <15) //0.56ms38 delayMicroseconds(60);3940 count = 0;41 while(IO == 1 && count++ <40) //0: 0.56ms; 1: 1.69ms42 delayMicroseconds(60);434 4 if (count > 25)data[idx] |=(1<<cnt); if(cnt="=" 7)="" {="" cnt="0;" idx++;="" }=""else=""cnt++;="" if(data[0]+data[1]="=" 0xff="" &&="" data[2]+data[3] ="=0xFF)" check="" printf("get="" the="" key:=""0x%02x\n",data[2]);="" bcm2835_close();="" return="" 0;="" <=""pre=""></cnt);></stdio.h></bcm2835.h><cnt); if(cnt="=" 7)="" {= "" cnt="0;" idx++;="" }="" else="" cnt++;="" if(data[0]+data[1 ]="="0xff="" &&="" data[2]+data[3]="=0xFF)" check="" printf("get ="" the="" key:=""0x%02x\n",data[2]);=""bcm2835_close();="" return="" 0;="" }<="" pre=""></cnt);>编译并执行,按下遥控按键,终端会显示接到到按键的键值。
1 gcc –Wall irm.c –o irm –lbcm28352 sudo ./irmpython程序01 #!/usr/bin/python02 # -*- coding:utf-8 -*-03 import RPi.GPIO as GPIO04 import time0506 PIN = 18;0708 GPIO.setmode(GPIO.BCM)09 GPIO.setup(PIN,GPIO.IN,GPIO.PUD_UP)10 print('IRM Test Start ...')11 try:12 while True:13 if GPIO.input(PIN) == 0:14 count = 015 while GPIO.input(PIN) == 0 and count <200: #9ms16 count += 117 time.sleep(0.00006)1819 count = 020 while GPIO.input(PIN) == 1 and count <80: #4.5ms21 count += 122 time.sleep(0.00006)2324 idx = 025 cnt = 026 data = [0,0,0,0]27 for i in range(0,32):28 count = 029 while GPIO.input(PIN) ==0 and count < 15: #0.56ms30 count += 131 time.sleep(0.00006)3233 count = 034 while GPIO.input(PIN) ==1 and count < 40: #0: 0.56mx35 count +=1 #1:1.69ms36 time.sleep(0.00006)3738 if count > 8:39 data[idx] |= 1>>cnt40 if cnt == 7:41 cnt = 042 idx += 143 else:44 cnt += 145 if data[0]+data[1] ==0xFF and data[2]+data[3] == 0xFF: #check46 print("Get the key:0x%02x" %data[2])47 except KeyboardInterrupt:48 GPIO.cleanup();执行,按下遥控按键,终端会显示接到到按键的键值。
1 sudo python irm.py。