Luna记 | IoT project: Smart Baby

November 6, 2018 字数 2776 6 min


0. 前言

亲爱的读者朋友们,**我总算交完本学期最后一个作业啦!!!**怀着激动兴奋的心情,我认为非常有必要更新一下公众号。

近期准备做个第三学期课程总结系列,该系列的第一篇,就来谈谈我刚交完的这个**【超级】大作业**,也就是 FIT5140 Advanced Mobile Systems 的 Final assignment(这门课没有考试哦,所以这个作业占总分 50%)。

作业要求是 2-4 人组队,作业的复杂度随着人数的增加而增加,一开始我有点犹豫要不要组 4 人队(因为老师一直强调:如果是 4 个人的队伍,你们的 app 必须很复杂!!!)。

但是后来我跟 Peter 同学(嗯,就是之前采访过的那位学霸小哥)商量了一下,觉得人多可以把 application 的功能做的多一些,不管对于是自己能力的培养,还是以后的求职都有好处,分数倒是次要了。

于是乎,我和 Michael, Peter, Fred 就这么组队成功了。

组队之后的第一件事,就是确定我们的项目主题。目前物联网 IoT 很火,也有很多有趣的项目,比如智能检测土壤湿度给植物浇水,智能防盗系统,智能调节室温,还可以检测宠物跑到哪里,智能倒车系统(本课程 Lecturer 之一正在做的项目),智能厨房(本课程 Lecturer 之二感兴趣的项目)。。。。

我们最后选定的主题,和我个人的经历比较有关,是关于新手父母急需的 baby monitor 系统

我们家里之前用过带显示屏的那种监控器,一般用在宝宝睡着的时候,让父母可以在厨房或者客厅看宝宝睡眠的情况,如果发现有声音或者其他动静可以马上去照顾宝宝。不过呢,我们当时用的监控器是单独的一个设备,和手机没有产生任何关联,也就是说,大人要随身带着一个显示屏,其实还挺麻烦的。

我们的项目想提供的解决方案就是,父母直接下载 SmartBaby,然后宝宝房间的传感器就可以跟 app 进行交互,父母可以在手机上看到宝宝的视频,并且收到跟宝宝有关的提示(比如宝宝哭了闹了),是不是很方便呢~


1. SmartBaby 简介

该项目 (SmartBaby) 大致包括以下内容:

  1. 利用传感器检测宝宝所处环境的温湿度,给父母推送相关通知;

  2. 为了保证宝宝的安全,我们还可以通过声音传感器、移动传感器,以及摄像头来查看宝宝是否安全的待在自己的小床里面;

  3. 父母可以通过 app 远程控制宝宝房间的蜂鸣器和 Led 灯,给宝宝播放音乐或者展示灯光秀,哄宝宝开心;

  4. app 的功能:记录宝宝身高体重头围并且和标准范围进行对比;记录宝宝疫苗注射情况;添加宝宝日记等等。

**涉及到的技术:**nodeJS+expressJS,serialPort,MQTT,Firebase Realtime Database, Firebase Storage, Firebase Authentication,实时视频

**硬件:**Raspberry Pi(+摄像头模块),Arduino UNO, Arduino Nano, 面包板数块,公母线,motion sensor, sound sensor, led, buzzer, temperature&humidity sensor, led lights……

**项目开发时间:**满打满算,两周左右。从一开始的方案设计,资料查找,开始 coding,整合代码,到最后的撰写报告(上周日总算交稿了,✌️)。

话不多说,先看看 submission 的版本吧~(有很多地方还是可以做得更好,但是时间有限,加上各门考试排的很紧张,做成这样我们都已经挺满意了~)


2. APP 介绍页


3. Login - 结合了 Firebase Authentication,可以直接用 google 账号登录


3. Home

app 首页中显示的是用户当前宝宝的信息,包括身高体重头围,用户可以切换到不同的 tab 去使用其他功能。

Baby Information 里面可以记录宝宝的身高体重头围

Environment Information 里面可以直观的看到宝宝房间的相关信息

Home - Add Baby

用户可以添加多个宝宝哦,宝宝的出生时间和血型都可以记录下来~

Home - Switch

如果想查看自己所有的宝宝,并且进行当前宝宝的切换,可以点击【switch】进行操作。

Home - record

用户可以直接在首页记录宝宝的身高体重头围,并且查看宝宝的生长情况是否符合标准,曲线图还可以一键保存到相册哦


4. Baby Diary

用户可以给宝宝们添加日记(文字+图片),日记会上传到 firebase,图片会传到 firebase storage,也就是说只要用同一个账号登录,在不同的设备都能看到同样的信息,因为数据存在云端

每个宝宝的日记可以单独记录,只要在主页 switch 就可以查看当前宝宝的成长日记啦~

考虑到 baby diary 的数量可能很多,所以我做了pagination 的处理,第一次只 load 最近的 12 条,用户如果滑到 tableview 的底部再 load 另一部分。并且因为图片下载比较慢,所以会先 check 用户本地是否已有这个图片,有的话就不从 firebase 下载了。

每条日记还会根据宝宝出生日期和当前日期计算出宝宝现在的年龄(精确到天)。


5. Monitor

在这个页面里,用户可以看到宝宝的实时视频哦!

还可以给宝宝播放音乐和灯光秀,让宝宝开心~

emmm,测试小白鼠一只。

(播放音乐和灯光秀都是通过连接在 arduino 上的 buzzer 和 led 灯完成的,naughty boy 其实就是葫芦娃,哈哈哈~)


6. Vaccination

疫苗列表是从 expressJS 搭建的 api service 拿到的,当前宝宝第一次拿到疫苗 list 的时候,系统会把这个 list upload 到这个宝宝的 firebase 里面,然后根据宝宝的出生年龄和疫苗规定的时间,用不同的颜色来代表宝宝是否已经逾期注册疫苗(灰色表示已注册,红色表示逾期,绿色表示待注射)。


7. Settings

User Profile

用户可以添加个人资料,上传头像。

Baby Profile

还可以在这里修改宝宝的信息~

Notifications

因为我们是做 baby monitor,所以用户随时随地都应该能收到一些推送通知,包括软件在后台运行,甚至软件关闭的情况。但是我们查了资料发现只有先加入 apple developer 才能在软件关闭的时候发送通知,所以这次只做了前台+后台运行的情况。

在这个页面,用户可以设置是否接收相关通知,并且自定义舒适的温度和湿度。如果 sensor 感知到的温湿度不在该范围内,用户就会收到通知。


8. Notification

baby awake

宝宝醒了会有推送提示,并且根据声音传感器的数据来计算 sound level,level 越高说明宝宝声音越高。

同时还有 motion sensor,可以感知到小床里面的宝宝是不是逃走了。。。

温湿度变化

房间的温湿度范围可以由用户自由设定,一旦超过或低于设定的值,会推送一次贴心通知。


9. About Page + References

非常有爱的团队~大家都很给力,合作非常愉快,项目也基本上按照预期完成了~


10. 结语

关于这个项目,我自己的部分多多少少还是有些遗憾的,例如:

  1. 没有成功使用 Github 进行版本控制(如果一次修改的内容太多,Merge 的时候需要通过 terminal 来进行处理,但是我们都对这方面不是很熟悉,所以最后都采用最原始的手动 merge;还有 storyboard 的 merge 也出过一些问题,加了 Pod 之后的 merge 也有点麻烦);
  2. CollectionView 用的不是很熟练,没有做到完美适配所有型号(如果小屏手机一行只能显示两张照片),而且本来想做的是 tableCell 的大小可以动态匹配内容多少,后来也没有完成(遗憾遗憾!!);
  3. 由于我对sensor 的连接和电路方面不是很有经验,arduino 的编程和 nodeJS 也是简单的学了一下,其实还可以扩展的更好,加一些其他的功能(比如同时播放音乐+灯光)。
  4. storyboard layout方面用的不太熟,研究的不够透彻,这次的 UI 也不是我负责,之后还是应该多看看相关教程。

还是那句老话,软件开发没有最好,只有更好。

不论如何,第一个版本还是挺满意的~ 以后继续加油!

PS:这门课是 FIT5046 的后置课,如果对 app 开发有兴趣的话,建议先选 5046 然后再选 5140,能学到很多东西!!而且看到自己的项目超级有成就感对不对!


Talk to Luna


Support Luna