当前位置: 首页 > news >正文

记一次手机付费充电设备研究

1.前言

在某宝上买了一堆电子废品玩玩,这个设备在很多公共场合使用,一般是扫描二维码后,付费,获取一个秘钥,然后输入进去后,获得一定时长的充电。设备不会联网,而是根据设备具有固定设备号码,通过一定算法获得的秘钥,当然目前这个二维码提供的服务已经失效了
在这里插入图片描述

2.拆解以及电路分析

里面用卡卡扣,均匀撬开即可,无螺丝固定
在这里插入图片描述
主控用的mcu用的是 stm8s003f3p6,充电开启关闭是通过一个gpio口设置高低电平后经过俩个mos管输出的 ,所以改变对应的gpio引脚电平即可控制充电开启关闭。
板子预留的ttl 串口以及烧录接口
接入串口监控一下信息:
请添加图片描述
每次按键输入后会更新打印对应日志,并且在输入完成后会提示 几组可以使用的正确的秘钥,尝试输入提供的秘钥,可以正确开启充电,至于算法实现懒得研究了,毕竟我可以直接往里面烧录新的固件。

3. 分析主控stm8s003f3p6

根据数据手册 stm8s003f3p6 可以直接修改寄存器值来 设置gpio引脚功能,以及设置其高低电平
当然也可以引入标准库实现(标准库底层实现依然是修改寄存器实现的),不过这里只是为了测试,所有没有使用标准库
请添加图片描述
烧录器这里选择的是 stlinkv2
接入4个引脚:
RST GND SWIM 5V(3V3)

根据万用表测量:

单片机引脚控制
PD4充电电源
PC3D5灯
PC4D6灯
PC5D7灯
PA3D3灯
PA2D2灯
PA1D1灯
PB4D4灯

根据测试 led灯可以将对应的引脚置高电平点亮,充电也是置高电平

4. 编写程序以及烧录

demo

#define PA_ODR     (*(volatile unsigned char*)0x5000)
#define PA_IDR     (*(volatile unsigned char*)0x5001)
#define PA_DDR     (*(volatile unsigned char*)0x5002)
#define PA_CR1     (*(volatile unsigned char*)0x5003)
#define PA_CR2     (*(volatile unsigned char*)0x5004)#define PB_ODR     (*(volatile unsigned char*)0x5005)
#define PB_IDR     (*(volatile unsigned char*)0x5006)
#define PB_DDR     (*(volatile unsigned char*)0x5007)
#define PB_CR1     (*(volatile unsigned char*)0x5008)
#define PB_CR2     (*(volatile unsigned char*)0x5009)#define PC_ODR     (*(volatile unsigned char*)0x500A)
#define PC_IDR     (*(volatile unsigned char*)0x500B)
#define PC_DDR     (*(volatile unsigned char*)0x500C)
#define PC_CR1     (*(volatile unsigned char*)0x500D)
#define PC_CR2     (*(volatile unsigned char*)0x500E)#define PD_ODR     (*(volatile unsigned char*)0x500F)
#define PD_IDR     (*(volatile unsigned char*)0x5010)
#define PD_DDR     (*(volatile unsigned char*)0x5011)
#define PD_CR1     (*(volatile unsigned char*)0x5012)
#define PD_CR2     (*(volatile unsigned char*)0x5013)void main() {PC_DDR |= (1 << 3);  PC_CR1 |= (1 << 3);  PC_CR2 &= ~(1 << 3); PC_DDR |= (1 << 4);  PC_CR1 |= (1 << 4);  PC_CR2 &= ~(1 << 4); PC_DDR |= (1 << 5);  PC_CR1 |= (1 << 5);  PC_CR2 &= ~(1 << 5); PD_DDR |= (1 << 4);  PD_CR1 |= (1 << 4);  PD_CR2 &= ~(1 << 4); PA_DDR |= (1 << 3);  PA_CR1 |= (1 << 3);  PA_CR2 &= ~(1 << 3); PA_DDR |= (1 << 1);  PA_CR1 |= (1 << 1);  PA_CR2 &= ~(1 << 1); PA_DDR |= (1 << 2);  PA_CR1 |= (1 << 2);  PA_CR2 &= ~(1 << 2); PB_DDR |= (1 << 4);  PB_CR1 |= (1 << 4);  PB_CR2 &= ~(1 << 4); PD_ODR |= (1 << 4); //PD4设置高电平 while(1) {PC_ODR ^= (1 << 3); //对PC3设置取反,让其闪烁PC_ODR ^= (1 << 4);PC_ODR ^= (1 << 5);PA_ODR ^= (1 << 3);PA_ODR ^= (1 << 1);PA_ODR ^= (1 << 2);PB_ODR ^= (1 << 4);for(int i = 0; i < 300; i++){for(int i = 0; i < 300; i++){;}}}
}

这里功能是 开启所有led灯,并让其闪烁,并长开 充电

编译:

sdcc -mstm8 --out-fmt-ihx --std-sdcc11 main.c
packihx main.ihx > main.hex

烧录:

stm8flash -c stlinkv2 -p stm8s003f3 -w main.ihx

参考:stm8s003f3数据手册以及demo

5. 其他

还有开关gpio没有测量,如果使用开关,需要将开关对应的单片机引脚设置为输入,那么这个设备是一个支持4按键输入,并且具有led灯的单片机,设想可以编写一个程序 做一个定时充电设备,不过感觉也没什么用。

http://www.dtcms.com/a/437890.html

相关文章:

  • 做网站公司价格多少人事外包收费标准
  • 网站百度关键词排名软件网络舆情
  • 网站毕业设计任务书秦皇岛营销式网站制作
  • 注册公司网站源码建设银行企业网站无法打印回单
  • 文化馆的网站怎么建设seo文章外包
  • mvc5 网站开发之美百度沈阳分公司地址在哪里
  • 针对餐饮公司推广做网站方法高端的网站设计多少钱
  • 网站开发不用框架阳春县建设局网站
  • 优秀的网站建设开发案例网站商品管理功能
  • 做网站是什么时候分页贸易网站开发
  • 汕头整站优化wordpress 时区问题
  • 一条龙做网站郑州哪里有做网站
  • 在线制作网站的平台重庆市工程建设招标投标交易信息网
  • 网站基本流程wordpress主题 dux1.8
  • 网站怎么做必须交钱吗贵阳网站建设是什么
  • 深圳罗湖网站建设公司网站关键词排名系统
  • 便宜自适应网站建设厂家贵阳有哪些做网站的公司
  • 专业网站建设公司怎么选网站域名攻击
  • 宜昌网站建设开发费用岳阳网站开发公司
  • 回龙观手机网站建设服务池州做网站
  • 网站制作苏州企业网站建设展示型是什么
  • 推荐10网站网站怎么更新文章
  • 搜索引擎网站推广法旅游网站建设和开发
  • 网站建站建设联系电话中核正式员工年收入
  • 北京市住房与城乡建设厅网站用dw做购票网站
  • 黄冈网站推广软件男科医院网站模板
  • 做磁力链网站如何快速搭建网站
  • 9377 这种网站怎么做网页设计简单作业成品
  • 视频类网站备案外包网
  • 无锡网站的优化不知道是谁做的网站 输入学号