资料介绍
描述
概述
父母总是担心他们的孩子。父母希望他们的孩子准时到校,按时回家,走指定的路。
SmartWay 旨在消除父母日常生活中的这种担忧。SmartWay 将在您的孩子上下学时监控他/她,确保您的孩子始终采取适当的路径到达他/她的目的地学校。
SWay 将使用 GPS 监控您孩子的地理位置,如果孩子偏离您分配给他/她的路径,将立即向家长发送电子邮件。当孩子到家或上学时,SmartWay 还会向家长发送一封电子邮件,并在孩子迟到时通知他们。通过这种方式,父母可以坐下来享受他们的咖啡,因为他们知道他们的孩子安全到达学校和家。
功能性
SmartWay 将持续监控您孩子从醒来到回家的地理位置。该设备还配备了一个 RGB LED 和一个振动电机,如果您的孩子没有采取正确的上学方式或迟到了,它会警告您的孩子,并在他/她到达学校时向他/她表示祝贺。
该设备通过许多功能工作,以确保您的孩子是安全的。
-
第一个循环
if(off track)
检测孩子是否偏离了指定的路径,设备有一个系统来检测这种情况发生的次数;如果您的孩子第一次偏离航向,设备将通过将 LED 变为红色并振动电机来警告他/她,然后孩子将有两分钟的时间回到航向。如果孩子继续偏离航线两分钟,家长将收到一封电子邮件,警告他们的孩子偏离航线以及他/她的地理位置,电子邮件将每隔 2 分钟发送一次,直到孩子到达在家或在学校。 -
if(school time)
并if(home time)
循环检测是否到了上学和回家的时间,然后设备检查孩子是否到校或回家,如果他/她及时到达,LED 将变为绿色,并且设备将向家长发送一封电子邮件,通知他们他们的孩子连同到达时间一起到达了他/她的目的地。否则,如果到了开学时间而孩子不上学,它也会
设备只能发送 12 个字节的信息,因此发送时需要压缩包。其他变量将在 SigFox 后端配置。
设备可以发送四个数据包
- child is off course - ("off course")
- 孩子到家了——(“在家”)
- 孩子到学校 - (“在学校”)
- 孩子迟到 - (“迟到”)
预警系统
佩戴设备的孩子在到达学校、到家、到达目的地迟到或偏离路线时都会收到提醒
设备在行动
好处
使用此设备的家长将受益于:
- 确保他们的孩子安全往返学校
- 确保他们的孩子准时到达这些地点
- 确保他们的孩子不会偏离路线
- 节能和低成本 - 长效电池
建设项目
第 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, OUTPUT);
pinMode(B, OUTPUT);
pinMode(motorPin, OUTPUT);
}
void vibrateMotor() // vibrate the motor cell
{
digitalWrite(motorPin, HIGH);
delay(1000);
digitalWrite(motorPin, LOW);
}
void ledGreen() // LED, Green
{
analogWrite(R, 0);
analogWrite(G, 255);
analogWrite(B, 0);
}
void ledOrange() // LED, Orange
{
analogWrite(R, 255);
analogWrite(G, 45);
analogWrite(B, 0);
}
void ledRed() // LED, Red
{
analogWrite(R, 255);
analogWrite(G, 0);
analogWrite(B, 0);
}
void resetLED() // Turn off LED
{
analogWrite(R, 0);
analogWrite(G, 0);
analogWrite(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
{
return false;
}
}
}
if(millis() > 10000 && gps.charsProcessed() < 10)
{
Serial.println("Error - GPS Module Responded with Error");
Serial.println(" Terminating Code");
Serial.println("________________________________________");
while(1) {};
}
}
这是负责从 GPS 模块接收位置和时间的循环。这个循环做了 3 件事,它用于setup loop
同步 GPS,然后用于将板载 RTC 与 GPS 同步,并在主循环中用于获取设备的地理位置。
- 同步实时时钟
void synchRTC()
{
Serial.println("Synching RTC");
Serial.println("________________________________________");
Serial.println(" OK - Initialising RTC");
rtc.begin();
Serial.println(" OK - Synching Time");
// we have to trim the variable's first 2 digits (2018 -> 18)
uint16_t yearRAW = gps.date.year();
String yearString = String(yearRAW);
yearString.remove(0,1);
uint16_t year = yearString.toInt();
rtc.setTime(gps.time.hour(), gps.time.minute(), gps.time.second());
rtc.setDate(gps.date.day(), gps.date.month(), year);
Serial.println(" Success - RTC Synched");
Serial.println("________________________________________");
Serial.println("");
Serial.println("");
Serial.println("");
}
这部分代码将板载 RTC 与从 GPS 模块接收到的时间同步,它首先从 GPS 模块读取数据然后对其进行处理。然后循环将板载 RTC 的当前时间设置为接收到的时间并启动 RTC。
- 工艺位置
bool processData()
{
if(gps.location.isValid())
{
latitude = gps.location.lat();
longitude = gps.location.lng();
latitude = 53.355504;
longitude = -6.258452;
if(check.isOut())
{
if(check.track())
{
Serial.println("OUT OF BOUNDS");
warn.offTrackLoop();
}
}
if(check.isHomeTime() && arrivedSchool)
{
if(check.isHome())
{
Serial.println("AT HOME");
warn.arrivedHomeLoop();
}
else
{
Serial.println("LATE -> HOME");
warn.lateLoop();
}
}
else if(check.isSchoolTime() && arrivedHome)
{
Serial.println(".");
if(check.isSchool())
{
Serial.println("AT SCHOOL");
warn.arrivedSchoolLoop();
}
else
{
Serial.println("LATE -> SCHOOL");
warn.lateLoop();
}
}
else
{
Serial.println("ON WAY");
}
}
}
该循环将处理设备的位置并将其与当前时间进行比较,以查看此时孩子应该在哪里。然后它将根据结果执行适当的操作。
- 做动作
struct Do
{
void offTrackLoop()
{
if(offTrackVar)
{
parseData(0);
}
vibrateMotor();
ledRed();
delay(1000);
vibrateMotor();
resetLED();
offTrackVar = true;
delay(120000);
}
void lateLoop()
{
if(!lateVar)
{
parseData(1);
}
vibrateMotor();
ledOrange();
delay(1000);
resetLED();
lateVar = true;
}
void arrivedHomeLoop()
{
lateVar = false;
offTrackVar = false;
vibrateMotor();
ledGreen();
delay(1000);
resetLED();
parseData(2);
arrivedHome = true;
arrivedSchool = false;
}
void arrivedSchoolLoop()
{
lateVar = false;
offTrackVar = false;
vibrateMotor();
ledGreen();
delay(1000);
resetLED();
parseData(3);
arrivedHome = false;
arrivedSchool = true;
}
};
调用此结构以对Process Location给出的响应采取行动,它会警告孩子切换 RGB LED 和振动电机单元。如有必要,它还会向 SigFox 发送一个包。
- 发送包裹
void parseData(int state)
{
SigFox.beginPacket(); // begin the message sending process
if(state == 0) // off track
{
SigFox.print("off track"); // send the message
}
else if(state == 1) // late
{
SigFox.print("late"); // send the message
}
else if(state == 2) // arrived home
{
SigFox.print("at home"); // send the message
}
else // arrived school
{
SigFox.print("at school"); // send the message
}
SigFox.endPacket();
}
该函数将数据发送到 SigFox,开始发送数据包,然后解析适当的值。
设置变量
代码将包含多个变量,TODO 写在它们之后作为注释,这些变量必须自定义以适合客户端,客户端将被要求设置
- 上学时间
- 孩子旅行的时间
- 学校结束的时间
- 调试?
- 学校地理位置(LAT、LNG);
- 家庭地理定位(LAT、LNG);
下面的指南将指导您设置变量。
图书馆
SigFox - 版权所有 (c) 2016 Arduino LLC GNU Lesser General Public License 此库属于公共领域
ctype - GNU 通用公共许可证下的版权 (c) 2006 自由软件基金会,该库属于公共领域
RTCZero - GNU Lesser General Public License 下的版权 (c) 2015 Arduino LLC,该库属于公共领域
字符串 - 版权所有 (c) 2009-10 Hernando Barragan,版权 (c) 2011 Paul Stoffrengen 在 GNU Lesser General Public License 下,该库属于公共领域
TinyGPS++ - 版权所有 (c) 2008-13 Mikal Hart 在 GNU Lesser General Public License 下,该库属于公共领域
设置
确保电路接线正确。有关设置 MKR fox 的详细信息,请单击此处查看Arduino 教程。如果您想了解有关 Arduino SigFox 库的更多信息,请单击此处。
后端程序
您必须拥有注册的 Arduino MKR1200 狐狸才能对后端进行编程。
- 步骤1
打开SigFox 后端并登录您的 SigFox 帐户。
- 第2步
点击页面顶部下拉菜单中的“设备类型”
- 第 3 步:
选择您的 Arduino MKRfox 并单击编辑
- 第4步:
从左侧菜单中选择回调,然后导航到右上角的“新建”按钮。
- 第 5 步:
单击新建后,您将看到一些回调配置选项,单击自定义回调
接下来将打开一个窗口,您必须填写给定的表格来创建您的回调
将类型设置为数据、上行链路
将频道设置为电子邮件
自定义有效负载将读取板发送的数据然后对其进行格式化,在我们的例子中,您必须声明一个变量str
,::
然后是变量类型char
和该变量占用的字符数10
。最后你应该有这样的东西str::char:10
将收件人设置为数据将发送到的电子邮件地址。
根据需要设置电子邮件的主题。
在消息字段中,您可以默认使用多个变量,无需从您的设备发送它们,我们将使用{device}
(设备 ID)、{lat}
(模块的纬度)和{lng}
(模块的经度),这些变量将自动发送到 SigFox到 12 个字节的有效负载中,因此您可以使用它们而无需专门从您的设备发送这些字符串。我们还将使用{customData#str}
这个变量来保存 Arduino MKR1200 fox 发送的数据,customData
指的是设备发送的个性化数据#str
表明设备将读取设备str
发送的字符串。
我们还将添加一个网站来检查接收到的坐标,使用谷歌地图,我们可以在地图上精确定位接收到的数据。这是 url https://www.google.com/maps/?q={lat},{lng}
, lat 和 lng 将自动更改为纬度和经度变量。
最后,您的消息应如下所示:
现在单击确定,一切就绪。
最后
您需要做的最后一件事是上传下面的代码,确保您已根据自己的喜好自定义了标有“TODO”的变量,等待 GOS 模块上的蓝灯闪烁,然后断开微控制器与计算机的连接,然后将电池放入电池盒中。你都准备好了。
我设计了一个外壳来保证设备的安全并使其看起来更有吸引力,我使用了两块丙烯酸并将边缘熔化成 90 度弯曲。我把所有的电路放在里面,把电池盒放在它们下面,然后用两条电缆扎带把塑料片绑在一起。
最后,我覆盖了一块顶部(透明盖)以隐藏所有电线,只让项目的大脑可见。
背景
我个人知道执行送孩子上学的简单任务会有多大压力,每个人都担心孩子上学时可能发生的所有事情。
该项目面向所有在送孩子上学时感到压力的人。SWay 会让您放松,因为您知道您的孩子会安全到达学校。
- 通过使用地理围栏和位置监控来保证安全
- 空间位置耦合的地理社交网络可视化布局 4次下载
- 一种门控循环单元兴趣点推荐算法 6次下载
- 空间位置耦合的地理社交网络力引导算法SCFDA 5次下载
- 跳频技术在GPS移动车辆监控系统中的应用分析 0次下载
- Android取证中地理位置信息提取分析实现 0次下载
- GPS车载定位装置设计 9次下载
- 低功耗群组电台的地理位置应用 0次下载
- 使用GSM的GPS车辆定位监控系统的应用 3次下载
- GPS与GPRS在车载无线监测系统应用 71次下载
- 近海船舶设备远程监控系统 28次下载
- 基于地理位置的无线传感器网络路由协议研究进展
- 基于GPRS的GPS车辆定位监控系统
- 基于MapX的客车监控系统的设计与实现
- GPS物流监控系统的增值应用
- 利用自定义数据传输在机智云上实现GPS定位数据的传输 289次阅读
- GIS可处理非地理空间数据吗 388次阅读
- arcmap如何设置地理坐标系 2817次阅读
- 什么是gps定位? gps定位放线的步骤有哪些 4523次阅读
- bds是什么地理技术 BDS与GPS的区别 1.5w次阅读
- 基于LPC2210芯片和uClinux实现导航定位信息获取模块的设计 1707次阅读
- 简易GPS车辆跟踪系统的工作原理、组成及应用设计 3583次阅读
- 基于LPC2210微控制器和卫星定位实现地面目标跟踪和报警系统的设计 2133次阅读
- GPS定位误差是怎么产生的 1.8w次阅读
- 云计算与数据存储的混乱怎么样来处理 346次阅读
- 基于ARM920处理器和嵌入式Linux操作系统的GPS智能终端设计解析 1670次阅读
- GPS定位技术中的GPS模块 4083次阅读
- 三分钟深入了解嵌入式无线远程监控系统 2712次阅读
- 智能交通GPS定位客车视频监控系统应用研究 996次阅读
- 基于GPS/北斗卫星技术的无盲区车辆调度系统 1565次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多