|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以前在老站回复过一个坛友的帖子,是关于手机没有电池如何直接插电池开机的。。
恰巧最近获得一个没电池的手机,改无电池开机,其基本方法和那个帖子差不多:
https://www.mydigit.cn/forum.php?mod=viewthread&tid=750
基本步骤简述:
1、在主板上找到一个+5V的测试点(有些手机主板上没有测试点,那就找等电位点)。飞线一根。
2、飞线串两根并联的4007二极管(为什么是两根4007,因为4007正向电流只有1A有些手机开机瞬间需要2A左右的电流,1根会负载不够,大电流二极管又会比较粗,造成后盖盖不上)
3、将二极管负极(白色横杠测)焊接在电池触点正极(利用二极管0.7V压降形成5-0.7=4.3V的电压)这样模拟电池供电。
4、找电阻(10K、20K、30K、40K……)插在电池触点的负极和电池检测极(四个触点的一般在负极旁边那个,五个触点还有个温度检测,)。模拟电池检测电阻。骗手机,电池存在
这里说一下,绿蓝厂的手机比较坑爹,温度检测触点不接也能开机,但开机一会,会报警电池温度过高。。所以有些手机需要电池检测电阻,和电池温度电阻都要。这里需要说明的是,不同手机电池的检测电阻不一样,大多是10K的,也有30K的,自己试。。如果你本来就有原装电池,只需要自己万用表测量一下电池的负极和检测极的电阻,找个差不多的就行了。功率很小的,贴片,环形电阻都行。
5、参考上面我回复的贴子,有些手机(现在已知高通的CPU,可以修改boot.img包里面的init.rc里面的语句on charger class_start charger后面加上一句重启命令setprop sys.powerctl reboot然后重新打包boot.img刷入手机,就可以实现插充电器自动开机了)(但是MTK平台的CPU需要MTK平台修改Bootloader源代码,也是能修改的,需要修改两处,找到mediatek\config\sanstar82_cwet_kk目录projectconfig.mk 文件里的MTK_DISABLE_power_ON_OFF_VOLTAGE_LIMITATION=yes改成MTK_DISABLE_power_ON_OFF_VOLTAGE_LIMITATION=yes和MTK_kernel_POWER_OFF_CHARGING=no)这个目前比较麻烦,当然rom厨房修改也行。。
当然作为本贴,我们还有另外一个方法,就是用硬件直接模拟开机键实现上电自动开机(改车载智能系统,汽车发动,上电手机自动开机)
简述一下步骤:
1、找到手机主板上电源键两个触点(其实一个负极,只需要找到电源键正极就行了,如果不知道,负极接根线,然后在开键附近试试,能亮屏或者能开机就是),飞线出来
2、找一个单片机,我用的是STC15F104W,体积小巧,和一个光耦。
3、给单片机写程序,模拟上电后出现电池充电标志(一般上电后会有10s~16s之后才会出现电池充电标志)给一个高电平,控制光耦导通,相当于开机键被按下2S.。实现自动上电开机
下面给出我写的单片机程序,本程序适用于不同开机长度的需要,目前3.3脚到3.5脚都有开机信号,从10秒到16秒,,根据手机出现充电标志的时间自由选用。
单片机正极接刚才第一步飞线接出来的那个5V,负极接电池触点负极,根据需要将模拟开机信号的引脚,接光电耦合器的输入正极,光耦输入负极并在电池触点负极上
光耦的输出正极接开机键飞线出来的正极,负极还是并联在电池触点负极上。
当手机通电,单片机也上电工作,当手机系统跑码到开机检测完成,显示充电图标的时候,这时单片机引脚给了一个高电平信号,让光耦导通,这时候开机键信号在光耦的输出端接通(也就相当于按下了开机键)此时手机正常开机。。然后单片机恢复低电平,光耦关闭,相当于松开开机键。
4、手机进入开发者模式,设置充电屏幕常亮,取消屏幕解锁(或者用tasker模拟触摸滑动屏幕解锁也行,或者root后删除解锁程序也行)。
5、安装tasker软件,写自启动脚本,如自动打开行车记录软件,自动打开网络,自动打开热点,自动打开地图导航(这里我装了tasker语音控制插件,用语音唤醒导航,默认是车速油耗等信息的软件)。具体tasker软件使用方法这里不赘述,自己百度。
废旧手机取消电池后,能自由发挥。。。比如做个家用监控(掌上看家、星智装等app)、软路由、中继、移动wifi、微型服务器、电子钟、车载智能控制系统、定时器(利用闹钟功能输出定时信号,驱动继电器)物联网智能开关等等等等
图示中,我用了单片机P3.4脚控制光耦触发开机键信号,其实程序我写了四组,每个引脚时间不一样,便于大家直接用,或者简单修改。
P3.0和P3.1其实还能增加两组控制信号,考虑到有以后有可能要烧写程序,就没用他们了,
8脚有4脚用应该也足够了,VCC和GND用掉两个脚。
其实8脚单片机足够了。
/*开发板STC89C52测试,如果要换成STC15F104W用延时子程序要用软件重新生成,这两个狗屌延时不一样*/
/*(如果使用15F104W单片机,替换下延时子程序)
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 23;
j = 205;
k = 120;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
/*目前实现的功能是P3.2口10秒按下开关2秒,P3.3口12秒按下开关2秒……………………………………P3.5口16秒按下开关键2秒的功能*/
#include<reg52.h> //52单片机头文件
#include "intrins.h" //程序中_nop_()函数需用
unsigned char x;
unsigned char y;
sbit K2=P3^2; //3.2脚定义
sbit K3=P3^3; //3.3脚定义
sbit K4=P3^4; //3.4脚定义
sbit K5=P3^5; //3.5脚定义
/*以下是0.5秒延时子程序*/
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
/*以上是0.5秒延时子程A序*/
void main(void) //主函数
{
K2=0; //3.2脚开机置0 (这时候低电平)
K3=0;
K4=0; //3.4脚开机置0 (这时候低电平)
K5=0; //3.5脚开机置0 (这时候低电平)
for(y=20;y>0;y--)
{
Delay500ms();
}
K2=1; //通电10秒后3.2口置1 (这时候高电平)
for(y=4;y>0;y--)
{
Delay500ms();
}
K3=1; //通电12秒后3.3口置1 (这时候高电平)
K2=0; //通电12秒后3.2口置0 (这时候低电平)
for(y=4;y>0;y--)
{
Delay500ms();
}
K4=1; //通电14秒后3.4口置1 (这时候高电平)
K3=0; //通电14秒后3.3口置0 (这时候低电平)
for(y=4;y>0;y--)
{
Delay500ms();
}
K5=1; //通电16秒后3.5口置1 (这时候高电平)
K4=0; //通电16秒后3.4口置0 (这时候低电平)
for(y=4;y>0;y--)
{
Delay500ms();
}
K5=0; //通电18秒后3.5口置0 (这时候低电平)
while (1); //自循环空程序,啥也不干,一直持续
}
|
打赏
-
查看全部打赏
|