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

SmartWay

组件和用品

跳线(通用)
总体
× 1
通用晶体管 NPN
用于振动电机电路
× 1
陶瓷电容 0.1µF
用于振动电机电路
× 1
电阻 1k ohm
用于振动电机电路
× 1
电阻 221 ohm
RGB LED 电路
× 1
RGB 扩散共阴极
× 1
GPS 模块 GY-NEO6MV2
× 1
振动电机
× 1
用于 RTC 的 UDOO 2AA 电池座
× 1
Arduino MKR Fox 1200
× 1

必要的工具和机器

烙铁(通用)

应用和在线服务

Arduino 网页编辑器
Sigfox

关于这个项目

概览

父母总是为孩子担心。父母希望他们的孩子准时到达学校并按时回家,走指定的路线。

SmartWay 旨在消除父母日常生活中的这种担忧。 SmartWay 将在您的孩子上学和放学时对其进行监控,确保您的孩子始终选择合适的路径到达他/她的目的地学校。

SWay 将使用 GPS 监控您孩子的地理位置,如果孩子偏离您分配给他/她的路径,它会立即向父母发送电子邮件。 SmartWay 还会在孩子到家或上学时向家长发送电子邮件,并在孩子迟到时通知他们。这样,父母可以坐下来享受咖啡,知道他们的孩子安全到达学校和家。

功能

SmartWay 将持续监控您孩子从醒来到回家的地理位置。该设备还配备了一个RGB LED和一个振动电机,如果您的孩子没有走正确的上学路线或迟到,就会警告您的孩子,并在他/她到达学校时祝贺他/她。

该设备通过多种功能工作,以确保您的孩子安全。

  • 第一个循环if(off track) 检测孩子是否偏离了指定的路径,设备有一个系统来检测这种情况发生的次数;如果您的孩子第一次偏离航线,设备会通过将 LED 变为红色并振动电机来警告他/她,然后孩子将有两分钟时间重新回到航线上。如果孩子继续偏离航线两分钟,家长将收到一封电子邮件,警告他们他们的孩子偏离航线以及他/她的地理位置,该电子邮件将每隔 2 分钟发送一次,直到孩子到达在家或在学校。
  • if(上学时间)if(home time) 循环检测是否到了上学和回家的时间,然后设备检查孩子是否到了学校或家,如果他/她准时到达,LED 将变为绿色,设备将向家长发送一封电子邮件,通知他们孩子与到达时间一起到达他/她的目的地。否则,如果到了开学时间而孩子不在学校,它也会

设备只能发送 12 个字节的信息,因此发送时需要一个紧凑的数据包。其他变量将在 SigFox 后端配置。

设备可以发送四个数据包

  • 孩子偏离了路线 -(“偏离路线”)
  • 孩子到家 -(“在家”)
  • 孩子到了学校 -(“在学校”)
  • 孩子迟到了 -(“迟到”)

警告系统

佩戴该设备的孩子无论何时到校、到家、到达目的地迟到或偏离航线都会收到提醒

正在运行的设备

好处

使用此设备的家长将受益于:

  • 确保他们的孩子安全上下学
  • 确保他们的孩子准时到达这些地点
  • 确保他们的孩子不会偏离路线
  • 节能和低成本 - 持久耐用的电池

建设项目

第 1 步:所需设备

要开始制作项目,我们需要收集材料。对于这个项目,你需要:

  • 跳线
  • 1、NPN三极管
  • 1、陶瓷电容(0.1μF)
  • 3、电阻(220Ω)
  • 1、电阻(1KΩ)
  • 1、RGB LED
  • 1、GPS模块
  • 1、振动电机
  • 1、Arduino MKR1200 狐狸
  • 1, 2x AAA/AA 电池盒
  • 2节AA电池

第 2 步:连接电路

下一步是连接电路;下面的 Fritzing 图像将说明这是如何完成的。接线有多个部分,所以它们被分成不同的图像。

第 3 步:确认代码

代码由多个函数组成,每个函数在项目的组成中扮演特定的角色。

  • 警告系统
  • 获取 GPS
  • 同步实时时钟
  • 处理位置
  • 发送包裹
  • 执行操作

这些部分解释如下。

  • 警告系统
void setOutputs(){ pinMode(R, OUTPUT); pinMode(G,输出); pinMode(B,输出); pinMode(motorPin, OUTPUT);}void vibrateMotor() // 振动电机单元{ digitalWrite(motorPin, HIGH);延迟(1000); digitalWrite(motorPin, LOW);}void ledGreen() // LED, Green{analogWrite(R, 0);模拟写入(G,255); analogWrite(B, 0);}void ledOrange() // LED, Orange{analogWrite(R, 255);模拟写入(G,45); AnalogWrite(B, 0);}void ledRed() // LED, Red{analogWrite(R, 255);模拟写入(G,0); AnalogWrite(B, 0);}void resetLED() // 关闭 LED{analogWrite(R, 0);模拟写入(G,0);模拟写入(B, 0);} 

这部分代码位于 functions.h 文件。该代码将通知佩戴设备的孩子当前状态。总的来说,这些回路控制着 RGB LED 和振动电机。

  • 获取 GPS
bool getGPS(int run){ while(Serial1.available()> 0) { if(gps.encode(Serial1.read())) { if(run ==1) { processData(); } else if(run ==2) { synchRTC(); } if(gps.location.isValid() &&gps.time.isValid() &&gps.date.isValid()) { return true; } else { 返回假; } } } if(millis()> 10000 &&gps.charsProcessed() <10) { Serial.println("错误 - GPS 模块响应错误"); Serial.println("终止代码"); Serial.println("________________________________________");同时(1){}; }} 

这是负责从 GPS 模块接收位置和时间的循环。这个循环有 3 件事,它用在 setup loop 同步 GPS,然后用于将板载 RTC 同步到 GPS',并在主循环中用于获取设备的地理位置。

  • 同步实时时钟
void synchRTC(){ Serial.println("同步RTC"); Serial.println("________________________________________"); Serial.println(" OK - 正在初始化 RTC"); rtc.begin(); Serial.println("OK - 同步时间"); // 我们必须修剪变量的前 2 位数字 (2018 -> 18) uint16_t yearRAW =gps.date.year(); String yearString =String(yearRAW); yearString.remove(0,1); uint16_t 年 =yearString.toInt(); rtc.setTime(gps.time.hour(), gps.time.minute(), gps.time.second()); rtc.setDate(gps.date.day(), gps.date.month(), year); Serial.println("成功 - RTC 同步"); Serial.println("________________________________________"); Serial.println(""); Serial.println(""); Serial.println("");} 

这部分代码将板载 RTC 与从 GPS 模块接收到的时间同步,它首先从 GPS 模块读取数据,然后对其进行处理。然后循环将板载 RTC 的当前时间设置为接收到的时间并启动 RTC。

  • 过程 位置
bool processData(){ if(gps.location.isValid()) { latitude =gps.location.lat();经度 =gps.location.lng();纬度 =53.355504;经度 =-6.258452; if(check.isOut()) { if(check.track()) { Serial.println("OUT OF BOUNDS");警告.offTrackLoop(); } } if(check.isHomeTime() &&createdSchool) { if(check.isHome()) { Serial.println("AT HOME");警告.arrivedHomeLoop(); } else { Serial.println("LATE -> HOME");警告.lateLoop(); } } else if(check.isSchoolTime() &&created Home) { Serial.println("."); if(check.isSchool()) { Serial.println("AT SCHOOL");警告.arrivedSchoolLoop(); } else { Serial.println("LATE -> SCHOOL");警告.lateLoop(); } } else { Serial.println("ON WAY"); } }} 

这个循环将处理设备的位置并将其与当前时间进行比较,以查看孩子此时应该在哪里。然后它会根据结果执行相应的操作。

  • 操作
struct Do{ void offTrackLoop() { if(offTrackVar) { parseData(0); } 振动电机();红灯();延迟(1000);振动电机();重置LED(); offTrackVar =真;延迟(120000); } void lateLoop() { if(!lateVar) { parseData(1); } 振动电机(); ledOrange();延迟(1000);重置LED();后期变量 =真; } 无效到达HomeLoop() { lateVar =false; offTrackVar =假;振动电机(); ledGreen();延迟(1000);重置LED();解析数据(2);到达家 =真;到达学校 =假; } 无效到达SchoolLoop() { lateVar =false; offTrackVar =假;振动电机(); ledGreen();延迟(1000);重置LED();解析数据(3);到达家 =假;到达学校 =真; }}; 

调用此结构以对 Process Location, 给出的响应采取行动 它会警告孩子切换 RGB LED 和振动电机。如有必要,它还会向 SigFox 发送一个包裹。

  • 发送 包装
void parseData(int state){ SigFox.beginPacket(); // 开始消息发送过程 if(state ==0) // off track { SigFox.print("off track"); // 发送消息 } else if(state ==1) // late { SigFox.print("late"); // 发送消息 } else if(state ==2) // 到家 { SigFox.print("at home"); // 发送消息 } else // 到达学校 { SigFox.print("at school"); // 发送消息 } SigFox.endPacket();} 

该函数将数据发送到 SigFox,开始发送数据包,然后解析相应的值。

设置变量

代码将包含多个变量,在它们之后写有 TODO 作为注释,这些变量必须自定义以适合客户端,将要求客户端设置

  • 上学时间
  • 孩子旅行所需的时间
  • 放学时间
  • 调试?
  • 学校地理位置(LAT、LNG);
  • 家庭地理位置(LAT、LNG);

下面的指南将指导您设置变量。

图书馆

SigFox - 版权所有 (c) 2016 Arduino LLC GNU Lesser General Public License 该库属于公共领域

ctype - 版权所有 (c) 2006 自由软件基金会在 GNU 通用公共许可证下,该库在公共领域

RTCZero - 版权所有 (c) 2015 Arduino LLC,遵循 GNU 宽松通用公共许可证,该库属于公共领域

字符串 - 版权 (c) 2009-10 Hernando Barragan,版权 (c) 2011 Paul Stoffrengen 根据 GNU 宽松通用公共许可证,此库属于公共领域

TinyGPS++ - 版权所有 (c) 2008-13 Mikal Hart 根据 GNU 宽松通用公共许可证,该库属于公共领域

设置

确保电路接线正确。有关设置 MKR fox 的详细信息,请单击此处获取 Arduino 教程。如果您想了解有关 Arduino SigFox 库的更多信息,请单击此处。

后端程序

您必须拥有注册的 Arduino MKR1200 fox 才能对后端进行编程。

  • 第一步

打开 SigFox 后端并登录您的 SigFox 帐户。

  • 第 2 步

点击页面顶部下拉菜单中的“设备类型”

  • 第 3 步:

选择您的 Arduino MKRfox 并点击编辑

  • 第 4 步:

从左侧菜单中选择回调并导航至右上角的“新建”按钮。

  • 第 5 步:

点击新建后,会出现多个回调配置选项,点击自定义回调

接下来将打开一个窗口,您必须填写给定的表格以创建您的回调

最后,您的消息应如下所示:

现在点击确定,一切就绪。

决赛

您需要做的最后一件事是上传下面的代码,确保您根据自己的喜好自定义了标有“TODO”的变量,等待 GOS 模块上的蓝灯闪烁,然后断开微控制器与计算机的连接,然后将电池放入电池盒中。你已经准备好了。

我设计了一个外壳以确保设备安全并使其看起来很有吸引力,我使用了两块亚克力并将边缘熔化成 90 度弯曲。我把所有的电路都放在里面,把电池盒放在它们下面,然后用两个电缆扎带把塑料片捆在一起。

最后我覆盖了一块顶部(透明盖)以隐藏所有电线,只让项目的大脑可见。

背景

我个人知道执行送您的孩子上学的简单任务是多么紧张,每个人都担心孩子在上学的路上可能发生的所有事情。

该项目面向所有在送孩子上学时感到压力的人。 Sway 会让您放松,因为您知道您的孩子会安全到达学校。

代码

SmartWay
完整代码

定制零件和外壳

默认情况下不包含在 Fritzing 中 arduino_mkr_fox_1200_fixed_gwlzp1tuih_uh8ucYEGxI.fzpz

示意图

整体_WZeRYkIUCF.fzz

制造工艺

  1. 电位计作为变阻器
  2. 交流换向器电机
  3. Raspoulette 原型
  4. 简单的 Pi 机器人
  5. 如何检查直流电机
  6. 什么是直线电机?
  7. BLDC 电机简介
  8. 什么是齿轮减速电机?
  9. 什么是伺服电机?
  10. 什么是伺服电机减速器?
  11. 了解发动机起动电机
  12. 无框电机集成