基于51单片机、SG90舵机的笔记本电脑遥控远程开机方案

1、前提:现在的电视就是个广告播放器,所有内容都要开会员,并且电视自带软件看视频总是有一种模糊的感觉。家中闲置一Z480笔记本电脑,连接HDMI可输出1080P分辨率,日常看电视足够了。于是将笔记本电脑屏幕拆下,笔记本主机放到电视后面,刚好可以完美隐藏各种线。

2、问题:每次开机都要去电视后面按按钮,实在不符合本人懒惰的习惯,因此要想个办法远程开机。但是经过查询,笔记本电脑不支持上电开机,也不支持网络开机,比较好的办法就是每次关机都点睡眠,然后通过鼠标就可以开机,虽说点睡眠也不是很麻烦,一个批处理就能搞定的事情,但鼠标总是误触,或者有时候睡眠会死机,不太完美。

3、想法:经过网上查询,现成的遥控手指需要搭配网关,一套需要将近200元,太贵。正好手头有个射频继电器可以用来控制电路通断。因此想自己做一个遥控开机的装置。

4、实现:网上教程很多,舵机原理不再赘述,我本人也不明白。在开发板上连接好线路,程序烧进去,开始测试。程序自己当然是不可能写的,照搬的这位老哥的程序,一字未改。用51单片机怎么玩SG90舵机?_单片机 舵机_知名摸鱼大学生的博客-CSDN博客https://blog.csdn.net/m0_56852164/article/details/124915860

 5、意外:

①通过在程序中加入一些让LED闪烁的代码来判断程序是否运行,发现SG90舵机和开发板共用同一个电源时,程序不运行且舵机发出“咔咔”声音,纹丝不动。

②开发板连接电脑USB电源,舵机连接另一个电脑USB电源,运行一切正常。(但我总不可能用台式机USB当电源吧,,那就太扯了,我要的是远程控制)

③开发板和舵机共用手机5V充电器电源,程序可以运行,但是舵机无规律抖动。

④用不知道哪里拆下来的12V电源适配器连接7805做电源(7805用法查百度,简单的很)连接舵机,电脑USB电源连接开发板,舵机依然无规律抖动。

⑤自己焊了一个51小板子(如下图),有上电自动复位电路。用手机5V电源适配器做电源,舵机和单片机都连接在小板子上,程序依然无法正确运行,舵机偏转角度错误,运行异常。

⑥经过网上查询,说是手机或者光猫等电源适配器输出的不是稳定的电压,所以又在板子上加了7805稳压器,使用不知道哪里拆下来的某调制解调器的12V电源适配器做电源(7805不能用5V电源起码要7V以上),这次终于运行正常了。原来是电压不稳造成SG90舵机不知道该怎么转。(我猜的)

 由于本人学艺不精,,也许是个很简单的问题,却费了这么大劲才找到原因。归根到底是电压不稳,一开始没有稳压模块。来来回回折腾三天才找到办法。

然后有人要问,怎么远程控制呢,这就要用到 我之前买的遥控继电器。

       这个东西有很多功能,可以延时,可以自锁,可以点动。把他接到电源上,就可以遥控控制电路的通断了。

    当然用ESP8266应该更方便,还能连接wifi直接手机控制远程控制,但是本人手头没有ESP8266的板子,只有51单片机,所以才用了这个办法。终于不用再去电视后面找按钮了!

 演示:

 代码来自:https://blog.csdn.net/m0_56852164/article/details/124915860

#include "reg52.h"
 
sbit sg90_con = P1^0;
int jd;
int cnt = 0;
 
 
void Delay2000ms()		//@11.0592MHz
{
	unsigned char i, j, k;
 
	i = 15;
	j = 2;
	k = 235;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
 
 
void Time0Init()
{
	TMOD = 0x01;
	//2. ???,???0.5??
	TL0=0x33;
	TH0=0xFE;
	TR0 = 1;
	TF0 = 0;
	ET0 = 1;
	EA = 1;
}
 
void Delay300ms()		//@11.0592MHz
{
	unsigned char i, j, k;
 
	i = 3;
	j = 26;
	k = 223;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
 
void main()
{
	Delay300ms();
	Time0Init(); 
	jd = 1;      
	cnt = 0;
	sg90_con = 1;
	
	//??????????
	while(1){
		P0 = 0XFF;
		jd = 3; 
		cnt = 0;
		Delay2000ms();
		Delay2000ms();
		P0 = 0X00;
		jd = 1; //0?
		cnt = 0;
		Delay300ms();
	}
}
 
void Time0Handler() interrupt 1
{
	cnt++;  
	//?????
	TL0=0x33;
	TH0=0xFE;
	if(cnt < jd){
		sg90_con = 1;
	}else{
		sg90_con = 0;
	}
	
	if(cnt == 40)
    {
		cnt = 0;  
		sg90_con = 1;
	}
		
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 按键控制51单片机sg90舵机的步骤如下: 1. 准备好所需材料:51单片机SG90舵机、按键开关、杜邦线以及所需的电源。 2. 将SG90舵机的三个线(VCC、GND、Signal)分别连接到51单片机的电源和IO引脚。将VCC接到单片机的5V电源引脚上,将GND接到单片机的地(GND)引脚上,将Signal接到单片机的IO引脚上。 3. 将按键开关的两个针脚分别连接到单片机的IO引脚和地(GND)引脚上。 4. 编写51单片机的程序代码,实现按键控制SG90舵机的功能。首先,需要初始化IO引脚和按键开关的输入输出设置。然后,在主循环中,不断检测按键开关的状态。当按键按下时,单片机通过IO引脚控制SG90舵机的运动。可以根据需要设置舵机运动的角度和速度。 5. 通过编译、烧录和执行程序,将代码上传到51单片机中。 6. 连接好电源,并将程序运行起来。 7. 通过按下按键开关,检查SG90舵机是否按照预期的方式运动。根据需要,可以调整程序代码中的舵机运动参数,以获得所需的舵机运动效果。 总结:通过以上步骤,可以按键控制51单片机上的SG90舵机。按下按键开关可以触发单片机控制舵机的运动,从而实现各种舵机角度的控制和调整。这样的控制方式可以在很多场景中使用,例如车辆模型的遥控、机器人的动作控制等。 ### 回答2: 控制51单片机上的SG90舵机需要通过GPIO口输出PWM信号来实现角度调节。以下是一个简单的300字结果,供参考: 首先,需要了解SG90舵机工作原理。SG90舵机是一种小型、低成本、高性能的模拟舵机,其主要由直流电机、减速机构和位置反馈电路组成。舵机在工作时,接收到的PWM信号的占空比决定了舵机的位置,通常情况下,SG90舵机控制PWM信号频率为50Hz(周期为20ms),脉宽范围为0.5ms-2.5ms,其中0.5ms对应舵机的180°角度,1.5ms对应舵机的90°角度,2.5ms对应舵机的0°角度。 在51单片机上,可以利用其中的GPIO(通用输入/输出)口实现PWM输出。具体的步骤如下: 1. 配置GPIO口为输出模式,用于连接舵机。可以使用单片机的开发环境进行配置,具体方法视所使用的开发环境而定。 2. 通过编程控制GPIO口的输出信号,生成PWM波形。可以使用单片机的定时器/计数器模块来实现精确的控制。在每个周期内,根据所需要的舵机角度,计算出对应的脉宽,并将此脉宽赋值给GPIO口输出。 3. 根据实际需求,编写适当的延时函数,来控制舵机在给定的角度停留的时间。可以使用单片机的延时函数或者自行编写延时函数,保证舵机能够稳定运行。 以上是控制51单片机上的SG90舵机的基本步骤。需要特别注意的是,为了保证操作的稳定性,可以添加适当的保护电路,如电阻、电容等,以防止过电流或过电压的损坏。另外,在编程中要注意舵机的工作电压和电流限制,避免给舵机提供超出其能力范围的信号。 当以上步骤完成后,即可通过按键控制51单片机上的SG90舵机。根据按键的状态,编写相应的控制程序,通过改变PWM信号的占空比,实现舵机角度的调节。可以使用按键中断来检测按键状态的变化,然后在中断程序中更新舵机的PWM信号输出。在程序中可以设置不同的按键功能,如按下按键舵机逆时针旋转一定角度,松开按键舵机停止。根据具体需求,可以进行灵活的调整和扩展。 ### 回答3: 要按键控制51单片机上的sg90舵机,你需要做以下步骤: 1. 准备材料:51单片机sg90舵机、蓝牙模块、面包板、按键开关、跳线等。 2. 将sg90舵机连接到面包板上。将舵机的VCC连接到5V的电源,将GND连接到电源的GND,将信号线连接到51单片机的一个IO口,例如P1.1口。 3. 将按键开关连接到面包板上。一端连接到5V电源,一端连接到GND,中间引出的引脚接到另一个51单片机的IO口,例如P2.3口。引脚上需要加上一个上拉电阻。 4. 将蓝牙模块连接到面包板上。将TX引脚连接到P3.1口,将RX引脚连接到P3.0口。 5. 使用Keil等开发工具编写51单片机的程序代码。在程序中,对按键口进行轮询,如果检测到按键按下,则发送信号给舵机控制程序。在舵机控制程序中,根据接收到的信号来控制舵机旋转的方向和角度。 6. 将编写好的程序下载到51单片机中。可以选择通过USB转串口工具将程序下载到单片机中。 7. 打开蓝牙,以手机等设备与蓝牙模块进行连接。通过发送指定的命令给蓝牙模块,来控制舵机的旋转方向和角度。 通过以上步骤,你就可以实现按键控制51单片机上的sg90舵机了。你可以通过按下按键来控制舵机的旋转,也可以通过蓝牙发送命令来控制舵机的动作。这种方法可以应用于一些需要远程遥控或者按键控制舵机应用中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值