亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用 SMS 本地化您的电路板

组件和用品

Arduino MKR GSM 1400
× 1

关于这个项目

注意:本教程可能已过时,请转到 这里 获取最新版本。

该项目的目的是展示如何使用 Arduino MKR GSM 1400 的蜂窝定位。为此,我们实现了一个简单的应用程序,允许您在收到带有安全检查的 SMS 时重试 MKR GSM 的纬度和经度信已收到。从收到的 SMS 中恢复发件人号码,并使用适当的 Google 地图链接创建回复,该链接由 u-blox 模块提供的位置服务提供的坐标完成。

你需要什么

该项目基于 Arduino MKR GSM 1400、天线、锂聚合物电池组、智能手机和一张数据 SIM 卡。

  • Arduino MKR GSM 1400 执行草图并支持允许我们项目所需的本地化功能的 GSM 连接;
  • 分别使用天线和电池组,以便在信号良好的情况下连接到蜂窝数据网络,并在其他电源不可用时为设备供电;
  • 需要智能手机向 MKR GSM 1400 发送 SMS 并要求进行 GPRS 定位;
  • 需要SIM卡才能访问数据网络并允许网络运行;
  • 需要 PIN、APN 和访问凭据才能连接到数据网络。

硬件设置

这个项目不需要任何特别的东西。将天线连接到板上,插入 SIM 卡并将 LiPo 电池连接到 JST 连接器。

锂聚合物电池是可选的,但它可以应对 GSM 模块在覆盖差的特定条件下可能需要的电流峰值。

工作原理

该项目使用 MKRGSM 库来管理 SMS 消息和基于单元的地理参考。

收到短信后,会检查内容是否包含字母“L”。只有在这种情况下,草图才会进行定位和 SMS 传输。使用此解决方案,任何号码都可以请求系统的位置,但只有知道密码(“秘密信件”)的人才能得到答复。这是检查 if (c !=76) 的行 76是“L”的ASCII码。您可以更改该值以更改识别的字母。

GSM 模块没有 GPS 接收器,但制造商有一个 GSM 网络每个小区位置的数据库,因此它为所提供的每个小区 ID 提供坐标。该系统在城市地区非常准确,其中每个小区覆盖一小块区域。在农村地区,每个小区的覆盖范围要大得多,所提供的位置也更粗略。

为了创建 Google Maps 的链接,我们使用标准 URL,我们只是在最后连接正确的 Long 和 Lat 值。此 URL 类似于“https://www.google.com/maps/place/, ”。地图上显示的位置将是单元格所在的位置;我们的电路板在单元格覆盖的半径内。

草图

下面是对 Sketch 的详细描述;第一个代码部分用于包含应用程序所需的库。

MKRGSM 包括所有 GSM 连接、定位和 SMS 管理功能,这些功能可通过对象 GSMClient、GPRS、GSM 获得 和 GSM 位置, SMS 管理 API 可通过对象 GSM_SMS 获得 , 标题 ArduinoLowPower 导入允许对 Board 模块进行低功耗管理的 API。

如果您从 Web 编辑器下载代码,您将找到一个 arduino_secrets.h 包含敏感数据的文件,如PIN、APN、用户密码。 在网页编辑器中,您必须在“秘密”选项卡中填写合理数据。

//包含GSM库#include #include "ArduinoLowPower.h"char PINNUMBER [] =SECRET_PINNUMBER;char GPRS_APN[] =SECRET_GPRS_APN;char GPRS_LOGIN [] =SECRET_GPRS_LOGIN;char GPRS_PASSWORD[ ] =SECRET_GPRS_PASSWORD;//初始化库实例GPRS gprs;GSM gsmAccess;GSM_SMS sms;GSMLocation location; 

measureLocation() 查询模块以通过蜂窝网络重试坐标,如果有新坐标可用,则将其分配给全局变量,否则再次请求 45 秒,如果没有符合精度约束的可用度量,则返回最后一个好的度量

//用于位置管理的全局变量String GSMlatitude ="0.000000";String GSMlongitude ="0.000000";//该函数使用位置的API来获取设备坐标并更新globa变量,如果所有要求都满足满意void measureLocation() {unsigned long timeout =millis();while (millis() - timeout <45000) {if (location.available() &&location.accuracy() <300 &&location.accuracy() !=0) { GSMlatitude =String(location.latitude(), 6);GSMlongitude =String(location.longitude(), 6);break;}}} 

connectNetwork() 函数使用 API smAccess.begin gprs.attachGPRS 将开发板连接到数据网络;使用凭据数据 pin , apn , 用户通过 由 arduino_secrets.h 中的声明分配。

//connectNetwork()函数用于板子数据connectionvoid connectNetwork(){bool status =false;//设置全局AT命令超时这允许从samd模块和samd模块之间的uart通信中恢复//冻结ublox module.gprs.setTimeout(100000);gsmAccess.setTimeout(100000);// 启动GSM连接while (status ==false) {if ((gsmAccess.begin(PINNUMBER) ==GSM_READY) &(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) ==GPRS_READY)) {status =true;} else {delay(1000);}}}setup部分允许初始化草图使用的所有对象,调用connectionNetwork()函数来建立数据连接和定位结构开始。//代码部分用于初始化数据连接和定位 objectvoid setup() {connectNetwork();location.begin();} 

最后一个代码部分是循环功能,其中实现了 SMS 管理和位置测量,每次有新的 SMS 可用时,电路板都会使用带有电路板坐标的 SMS 向 rsender 响应,以减少电路板关闭模块和进入深度睡眠 60 秒。

void loop() { int c;字符串响应; String messager ="";测量位置();无符号长超时 =毫秒(); while (millis() - timeout <5000) {if (sms.available()) { //检查短信可用char senderNumber[20] ={"0"};sms.remoteNumber(senderNumber, 20); //获取远程号码int c =sms.read();if (c !=76) {sms.flush();break;}//连接要发送到远程号码的字符串消息String txtMsg ="https:// www.google.com/maps/place/" + GSMlatitude + "," + GSMlongitude;// 发送消息ms.beginSMS(senderNumber);sms.print(txtMsg);sms.endSMS();break;} } // gsmAccess.shutdown(); LowPower.sleep(60000); //启用低功耗60秒,然后重试板connectNetwork(); //开启模块并重新连接到数据网络} 

使用方法

如上所述设置硬件,使用您的访问凭证个性化草图,将草图加载到板上,然后等待与 GSM 网络建立连接。这可能需要 30 秒。

建立连接后,只需向 MKRGSM SIM 号码发送一条短信,其中包含“L”作为文本:这将启动本地化过程,董事会将回复一条短信,其中包含请求位置的谷歌地图链接。

代码

阿杜诺

制造工艺

  1. 将新产品设计做大或回家
  2. 与您的气象站一起加入 IOT – CWOP
  3. 使用 PSoC 6 Pioneer Board 和 Pioneer IoT Add-on Shield
  4. 在您的 CMMS 中使用二维码:逐步
  5. 使用碳纤维行李箱升级您的行李箱
  6. 使用雕刻机填料标记您的零件
  7. 明智地使用您的物联网美元
  8. 网络安全从您的员工开始
  9. 网络研讨会:使用 Techman Robot 实现流程自动化
  10. 降低 PCB 成本的 7 种方法
  11. 通过农场维护扩大您的运营
  12. 如何处理二手设备