×

儿童友好型2键应急手机

消耗积分:0 | 格式:zip | 大小:0.76 MB | 2022-10-19

刘润生

分享资料个

描述

 

poYBAGNOTEyAAST6AAwGVECkf1o412.jpg
2 键儿童友好型手机
 

问题

我有 2 个年幼的儿子(6 岁和 8 岁)每天上学并乘公共汽车回家。有一天公共汽车没有准时到家,我很担心。他们是安全的,但公共汽车发生了一起轻微的交通事故,他们被困在公共汽车上等待警察的到来。

我需要一种让他们与我联系的方式,但我不想给我最年长的人一部手机,因为它会成为一种持续的干扰(游戏、互联网等)。我需要的是一部简化的手机,其唯一目的是在紧急情况下给我打电话。所以我开始着手建造一个。

TLDR :如果您只是在寻找代码:https ://github.com/contractorwolf/SIM7600Phone

寻找蜂窝板

我以前曾使用使用蜂窝的嵌入式 SIM IOT 设备从事过个人项目,但这个项目需要实际的语音通信。我需要一些可以通过简单的 Arduino 类型的微控制器使用串行命令进行控制的东西。我最终选择了Waveshare SIM7600x 4g HAT特别是 SIM7600A-H,因为我在美国(“A”代表“美洲”,请为您所在地区购买)。

该设备标配一个用于直接连接到 Raspberry Pi 顶部的接头(我不需要),但它有一些我特别需要的东西:3.5 毫米耳机和麦克风插孔。它具有可以打电话或发短信的手机所需的硬件,我可以通过 Arduino 使用串行命令(又名 AT 命令)来控制它。

pYYBAGNOTFCAGoQWAAIyDCGmlJY961.png
它来自工厂,带有一堆接头和我需要移除的超厚塑料
 

这个设备比我想要的要厚得多,所以我首先通过 USB 连接到它(使用 USB 到 UART 微连接)并确认它响应 AT 命令来测试它是否工作。使用 AT 命令和终端接口(如 Putty),您可以控制设备,询问它的信息,甚至告诉它发送 SMS 或拨打电话。

AT 命令的完整列表可在此处获得:SIM7600_Series_AT_Command_Manual_V3.00.pdf

在确认 AT 命令有效并测试标准命令以 1)拨打号码和 2)发送短信后,我开始着手将Waveshare SIM7600x 4g HAT最小化为我需要的外形尺寸。

修改 Waveshare SIM7600 HAT

我小心地用剪刀剪掉了所有的接头,剥去所有的塑料,使威廉希尔官方网站 板尽可能薄。我知道我将使用一个非常厚实的开/关开关,并且我希望开关成为整个设备中最厚的部分。Waveshare 板和电池必须相互叠放,因此所有接头都必须拆除。下图是我对威廉希尔官方网站 板进行瘦身的最终结果。

poYBAGNOTFOAMkizAAJKwlcll-k331.jpg
最终的 Waveshare 7600 外形尺寸
 

控制设备

接下来,我决定使用之前通过 USB 使用 Putty 测试过的 AT 命令来测试使用微控制器对设备的控制。我在面包板上做了一些临时接线,以确认它可以通过 Arduino 控制,方法是将其连接到Seeduino Xiao 板并将其连接到 Waveshare 7600 HAT 串行 (TX/RX) 线。在我证明我可以使用来自 Arduino over Serial (TX/RX) 的 AT 命令后,我开始制作一个小型载板,该载板可以容纳 Arduino (Seeeduino Xiao)、按钮和一个 4 针连接器Waveshare 板

poYBAGNOTFiAALiQAA1apSkupT4742.jpg
笔记; 这是在我砍掉所有黄色头球并硬连线跳线之前
 

跳线注意:上图显示了重要的黄色跳线,我后来通过焊接 SIM7600 板底部的引脚来替换它,这样我就可以修剪跳线和引脚。您可以看到 B 和 C 引脚并联跳线在一起,这允许在 Arduino 的 TX/RX 线上进行串行连接。3v 和电源引脚也跨接,允许 3v SIM7600 使用传入的 5v 电源线运行。您可以在下面的威廉希尔官方网站 板特写上看到焊点。

pYYBAGNOTF2AIPiHAAtMllMb3OM349.jpg
显示用于替换 SIM7600 帽子顶部跳线的焊点
 

定制肖载板威廉希尔官方网站

上图左侧所示的绿色载板只是为了容纳Seeduino Xiao 板,将串行连接线和电源线连接到与 SIM7600 上相同的位置。它还给了我连接 2 个按钮的位置:黄色的“呼叫”按钮和蓝色的“文本 GPS”按钮。按钮的电线有下拉电阻,我连接在肖板下面。

这是载板的初始设计以及它如何连接到 SIM7600 板:

poYBAGNOTGKAFz1EAAbQRtBsq84236.jpg
定制载板与 SIM7600 HAT 之间的接线图
 

下面是我制作的载板的另一张图片。当我改变充电控制并将开关从载板移到充电威廉希尔官方网站 时,左侧进行了多次返工。棋盘的右侧从未改变。检查上面的图表,以最好地了解您的需求。与上图的唯一区别是 5v 和接地引脚有一个 JST 连接器连接到充电威廉希尔官方网站 。

pYYBAGNOTGiAacsTAAptmHei5bg030.jpg
在切割开关位置之前定制载板
 

您还可以在下面的这张照片中看到按钮和原始充电/电池威廉希尔官方网站 最初是如何设置的。

pYYBAGNOTISAaK9lAA48erp9864095.jpg
第一版充电威廉希尔官方网站 和按键
 

为董事会供电

后来我重新设计了充电威廉希尔官方网站 ,并用一个可以直接安装大开关的充电威廉希尔官方网站 替换它,这样我就可以在它关闭时给它充电,只需将电源插入载板。新的充电威廉希尔官方网站 看起来像这样,并且有开关连接到充电威廉希尔官方网站 板上。我改用Sparkfun Lipo 充电器/助推器,因为板上的开关意味着我可以在设备关闭时轻松充电。

poYBAGNOTImAHt8VAAwLU_Q-UcI745.jpg
Sparkfun Lipo 充电器/助推器
 

蜂窝服务

我最终使用Ting作为这个项目的移动运营商。这项服务每月只需花费我 10 美元,而且通话和短信不受限制。如果您想使用我的推荐代码并获得价值 25 美元的免费 Ting 服务,这里是我的推荐链接:https ://zq6htr31jna.ting.com/

当您单击上面的链接购买 SIM 卡(只需 1 美元)时,寻找购物部分,然后注册Flex 服务,享受每月 10 美元的即用即付计划。

手术

该设备设计简单,便于儿童使用。它有一个大的开/关开关,具有令人满意的“点击”。当开关打开时,所有 3 个内部板都有 LED 状态灯,因此您可以知道它们在做什么。发生的第一件事是 Waveshare SIM7600 尝试连接。SIM7600 连接后,状态 LED 将大约每秒闪烁一次。

Arduino 设置为(默认)每 30 秒轮询一次 SIM7600 板以获取 GPS 位置。一旦获得 GPS 位置,它将立即将该 GPS 位置(作为格式化的 Google 地图链接)发送到代码中硬编码的默认数字。之后,设备只是等待按钮被按下。

pYYBAGNOTI-Af-XoAAN7J9elhJk361.jpg
 

黄色按钮调用默认号码(在代码中设置),蓝色按钮将在需要时发送其他 Google 地图位置。为了保持设备简单,它使用 3.5 毫米耳机插孔进行通话。我儿子有一套不错的耳机,带麦克风,他用于远程学校和游戏,耳机每天都和他一起上学。

GPS 需要一个单独的天线,这就是您在一些最终照片中看到的 TAOGLAS 贴纸。启动后大约需要 5 分钟才能建立 GPS 信号。因此,我有按钮设置一个标志,等待 GPS 稳定后再发送 GPS 地图文本链接。

拥有如此简单的设备的要点是它超级实用。它在需要时工作,大部分时间都在休息,不会在学校分散注意力。到目前为止,我们已经在回家的公共汽车上对其进行了多次测试,效果很好。电池为 820mah,大约是普通手机的一半,因此在开机状态下应该可以持续约 6 小时,并且在关机状态下不消耗任何电量。如果需要,我通常每隔几天充电一次,以确保它准备就绪。

3d 打印案例

我为手机定制设计并打印了一个 3d 外壳。外壳上有用于将其固定在一起的 3 个 M2.5 x 25 纽扣头内六角螺钉的孔。有 2 个按钮、开关、耳机插孔插槽、Xiao USB C、USB Micro(用于充电威廉希尔官方网站 ),甚至还有一个额外的 USB Micro,用于与 SIM7600 直接 USB 串行通信。您还可以看到为肖 (arduino)、SIM7600 和充电威廉希尔官方网站 上的 LED 留有几个孔,以便您可以了解所有威廉希尔官方网站 板的状态。

我提供了用于 3D 打印外壳顶部的 STL 文件

poYBAGNOTJWATPPcAA-hLoNgxKI025.jpg
 
pYYBAGNOTJyAbZUKAA3mmKBq57M894.jpg
 

我试图让它尽可能小和紧。此外,它必须结构坚固,才能承受 7 岁儿童可能遭受的磨损。

编码

我一生都站在巨人的肩膀上,与 Arduinos 和 Raspberry Pi 一起工作。网上总是有一些例子和其他人的项目让我受益匪浅。我相信,如果你能清楚地记录你所做的事情,那么分享你能够弄清楚的事情将使其他人受益。

在这个想法中,我分享了我为这个项目编写的代码,希望将来有人可以使用它来为自己构建这些设备之一。也许甚至可以建造更好的东西!

无论如何,这是我尽可能多地评论的基本 Github 存储库,希望它能帮助您启动并运行它:https ://github.com/contractorwolf/SIM7600Phone

您要更改的代码中最重要的部分是在此处按下按钮时应调用的传出号码:

poYBAGNOTJ-ACwPvAACFexfTG5Q581.jpg
 

还有其他几个地方被注释为不需要,并且可以删除许多 Serial.print() 调试语句。注意:不要删除从 Arduino 到 SIM7600 的 Serial1.print() 语句这些是必需的通信,而不是调试,仅供参考。

感谢您阅读我的帖子。随时在评论中提出任何问题,我会尽我所能提供帮助。

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'儿童友好型2键应急手机',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);