整理一下车载的定位和开锁

目标:使用到的从淘宝淘来的各种芯片,加上从chatgpt里学习到的各种知识, 尽量使用目前手头上的工具,重整了一个新的车载定位开锁。

新意:能够定位开锁及并且留出备份,1开锁能够当esp32无法工作时,不至于被锁门外.2当没有wifi时,能够继续上报定位.

开锁实现:使用了一个蓝牙开锁芯片,接近时输出一个短时间电平,达到开锁目标,但是由于只支持短时间高电平,无法兼容钥匙需要的低电平开/关锁.且需要和esp32开锁gpio共同做出”与门”开关.(任意低电平则输出低).

在组成与门开关时,需要注意esp32的gpio可以配置open-drain,从而直接能够接到开锁点,但蓝牙开锁芯片无法做到,而需要两者同时控制开关锁时,需要重新设计,考虑了使用反向器,等方案,最终找到一个三极管实现方案.

esp32 gpio设置为open-drain,接在2N2222的c极,同时c极上拉电阻10k到电源3.3V,同时B极接蓝牙开锁/关锁的点加接1K限流电阻, e极接地,组成一个低位开关.当esp32为低时,开锁点位拉低,当蓝牙开锁芯片输出高时,三极管导通从而拉低开锁点位,这个设计能够不相互干扰,达到目的.估算 钥匙开锁需要10mA的电流,此方案电路满足要求.

定位设计,原始定位是按照wifi连接上后,通过wifi发送定位数据来实现,此方案限于必须链接WiFi才能发送, 后来测试发现,使用ec800M,不打开GPS定位时,使用数据流量发送较为稳定,于是加入当wifi不存在时,ec800M来发送数据的备用方案.软件里设计为先通过wifi的sock尝试发送,出现exception后,继续尝试用ec800m发送,每次发送都时如此,ec800m的AT发送数据目前测试较为正常.

省电:为了省电,这次也做了相应的优化,首先是链接wifi的方式,之前是15秒休眠+5秒连接固定wifi, 改为8秒休眠,唤醒后先扫描列表,如果存在则继续尝试连接,否则进入休眠循环,扫描wifi列表的时间大约为2.5s.另外尝试使用at命令对EC800M进行休眠操作,然而可能是开发板限制无法达到,退而求其次的使用三极管并联作为低位开关,控制ec800M电路的上下电,同时配合at+qpowd先将模块关机.控制电路通断的GPIO2,同时也是控制GPS模块休眠, 能够在ESP32休眠时,保持电平状态.选择使用三个2N2222并联作为低位开关,估算EC800M开机最大电流为500MA,平均每个三极管需要166mA,平均下来B极电流需要10mA,采用310欧姆电阻.

另外,采用了淘宝上的主从蓝牙,当汽车ACC开关打开时,主蓝牙上电自动搜索连接从蓝牙,从蓝牙的status脚连接到GPIO4, 作为判断ACC是否打开.软件里,休眠唤醒之后,判断GPIO4的状态,如若ACC启动,则启动定位发送线程,启动GPS及EC800M.

当前这个方案的电路测试如下,整个休眠时,电路功率约为130mW, 当GPS启动时约为280mW, 再加上ec800M启动时,约为450mW.