数码之家

 找回密码
 立即注册
搜索
查看: 28192|回复: 40

[C51] 菜鸟单片机 - 废旧手机改车载智能系统

    [复制链接]
发表于 2020-2-24 12:02:41 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

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);                   //自循环空程序,啥也不干,一直持续
}




2704508-7c145eaafc96c99c.webp.jpg
2222222222.png
11111111111111.png
微信图片_20200224135557.jpg
微信图片_20200224135605.jpg
微信图片_20200224135612.jpg
微信图片_20200224135617.jpg

打赏

参与人数 5家元 +141 收起 理由
o759 + 50 怎样查看哪些手机开机瞬间需要2A左右的电流.
jackydiy + 6 原創內容
yangjinghuan + 10 很棒,一直想弄
家睦 + 60
人艰不拆了 + 15

查看全部打赏

发表于 2020-2-25 10:24:30 | 显示全部楼层
夏天车内高温,小心手机不能工作:lol:
回复 支持 反对

使用道具 举报

发表于 2020-2-25 11:47:25 | 显示全部楼层
夏天停车时车内温度高,小心使用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-25 13:58:21 | 显示全部楼层
sz1988 发表于 2020-2-25 10:24
夏天车内高温,小心手机不能工作

取消了电池有什么危险,危险的是锂电池,就剩下一个主板和屏幕了,有什么危险?行车记录仪和中控也是只有显示器和主板,熄火不带电,难道还会自燃???
回复 支持 反对

使用道具 举报

发表于 2020-2-26 17:25:31 | 显示全部楼层
没有自动关机吗?https://www.mydigit.cn/forum.php ... &extra=page%3D1这个比较简单,不用单片机基础
回复 支持 反对

使用道具 举报

发表于 2020-2-29 20:36:08 | 显示全部楼层
高人,佩服佩服,学习了。
回复 支持 反对

使用道具 举报

发表于 2020-2-29 22:31:42 | 显示全部楼层
:biggrin:高手啊,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2020-3-1 01:17:21 | 显示全部楼层
这个不错,很有参考意义
回复 支持 反对

使用道具 举报

发表于 2020-3-2 12:03:21 | 显示全部楼层
单片机上电延时给光耦一个信号关掉手机开机信号导致手机成功开机,如果延时时间过长,手机还会开机吗:biggrin:
回复 支持 反对

使用道具 举报

发表于 2020-3-2 12:04:53 | 显示全部楼层
ddaniell 发表于 2020-2-25 13:58
取消了电池有什么危险,危险的是锂电池,就剩下一个主板和屏幕了,有什么危险?行车记录仪和中控也是只有 ...

手机太热了,会工作缓慢,手机系统的芯片都不耐高温,不过你放在车内,开空调冬暖夏凉没有影响的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-2 20:18:27 | 显示全部楼层
se7ens 发表于 2020-3-2 12:03
单片机上电延时给光耦一个信号关掉手机开机信号导致手机成功开机,如果延时时间过长,手机还会开机吗:biggr ...

所以程序写了五组延时,其实可以并联,不信你试试,当你按一次开机键,系统开机了,但还没进入系统。这时候再给开机信号。不会关机的,必须完全进入系统,关机才有效。如果你担心延时,五五组开关信号可以并联
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 10:08:14 | 显示全部楼层
由于主帖已经不能编辑了,今天正好拍了一张装车图,,,由于正在开车,就没拍视频了,安全重要嘛。。。
我用tasker  input X,Y 命令模拟触屏操作。自动开机解锁,打开指定的软件(当然包块声控插件,可以语音唤醒导航地图,音乐播放器等等)这里拍的的是默认软件“图吧汽车卫士”能看到车辆实时状况,包括油耗,健康状况,车速,本次费用,转速等信息

装车图

装车图
回复 支持 反对

使用道具 举报

发表于 2020-3-5 08:45:40 | 显示全部楼层
非常好!决定仿一个了。看上去关机是采用直接切断电源的方式?如果用车上常电供电,ON电检测车辆状态,stc15f104w模拟手机开关键,这样软关机是否有必要?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-5 10:50:21 | 显示全部楼层
jmkl128 发表于 2020-3-5 08:45
非常好!决定仿一个了。看上去关机是采用直接切断电源的方式?如果用车上常电供电,ON电检测车辆状态,stc1 ...

你忽略了一个细节,,我帖子里说了,我的tasker装了声控插件,可以熄火直接断电关机(实测丝毫没影响,手机系统有这个功能,不会丢失设置和数据的,就像你电池老化了,也会突然掉电关机一样)。我是用tasker的声控插件,语音控制的。。一定记得不要调用谷歌的语音服务,,最好用讯飞的。。讯飞语音引擎apk。。谷歌的识别不太好,可能和服务器在国外有关系,,讯飞准确且反应迅速。。。我连唤醒导航地图都用语音唤醒。。。。。然后直接对着导航说:小度小度,我要去XXXX。。。。很方便。。关机就说:关闭系统、确认关闭。。。。。。语音命令最好用tasker写脚本的时候增加一个确认,有时候识别太灵敏,车上放歌或者聊天也会被错误识别。。。哈哈哈哈哈
回复 支持 反对

使用道具 举报

发表于 2020-3-6 07:51:17 | 显示全部楼层
有高手直接只用屏做个同功能的板子就好了,不过一个人不好完成
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-6 19:46:45 | 显示全部楼层
感谢楼主,三星note3通过刷写固件实现了插电开机。剩下再捣鼓无电池开机了
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-19 22:55:35 | 显示全部楼层
楼主楼主,我的usb连的otg带充电,otg是连到ODB,传输信号给软件观测行车数据的,有办法结合这个开关机吗
回复 支持 反对

使用道具 举报

发表于 2020-3-20 22:03:34 来自手机浏览器 | 显示全部楼层
手机不能root能不能修改开机文件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 14:12:24 | 显示全部楼层
枫亭 发表于 2020-3-19 22:55
楼主楼主,我的usb连的otg带充电,otg是连到ODB,传输信号给软件观测行车数据的,有办法结合这个开关机吗 ...

没太理解你的意思。。如果是OBD给信号给OTG线,直接用通断信号判断作为触发条件啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-3-29 23:38 , Processed in 0.171601 second(s), 15 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表