本文主要是介绍基于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;}}
这篇关于基于51单片机、SG90舵机的笔记本电脑遥控远程开机方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!