wasdpkj 发表于 2014-9-16 20:44:44

Microduino 公益项目 -- 聪明的鸟蛋!完结前的汇报

本帖最后由 wasdpkj 于 2014-10-10 16:17 编辑

Step 1: 项目由来


International Centre for Birds of Prey (国际猛禽中心)要做一个保护秃鹫的公益项目。
主要是要做一个假鸟蛋,放到猛禽窝里,来观察猛禽到底是怎么孵蛋的。
这个假鸟蛋里面要有温度、湿度和姿态传感器,一个MCU和数据记录装置。
考虑到对方是猛禽,这个系统需要把鸟蛋内监测到的数据以无线的方式传输出来,电池要求至少70天的电池续航时间。
另外需要一个数据库/图形界面来显示这些数据, 最好有实时曲线。

Step 2: 项目规划


这个应用有很多挑战:

[*]在鸟蛋的狭小空间中集成所有所需功能,并保证其可靠性。
[*]70 天的续航时间,对系统功耗、系统稳定性是个巨大考验。
[*]社区项目的组织、执行、协调和完成是个难题。
Microduino计划将此项目分为以下几部分来做:

[*]蛋内采集端
[*]数据中继端
[*]服务器云端
我们将此项目拆分成三个部分,每个部分都需要招募志愿者负责,最为关键的是志愿者之间工作的协调,这将成为本项目成功与否的决定性因素。
我们还要设计三个部分的通信方式以及协议,还有至关重要的续航挑战:70天!

Step 3: 志愿者



http://www.ucarecdn.com/5e2d4d59-6a3c-45a6-b857-400c99e482a1/-/preview/@小文 作为项目的硬件支持
家乡是江西省九江市的,目前是在校学生,学的是应用电子专业。会一些电子硬件电路设计。
参加这个项目主要是对它比较感兴趣,同时也想为这种公益项目作一点小小的贡献!



http://www.ucarecdn.com/ad4cb933-f1c0-4d17-86bc-ae043571263b/-/preview/@袖手蹲 作为项目的中继支持
厨师 原来专业化工自动化仪表 法律专业 爱好电子。                                          



http://www.ucarecdn.com/565b5cbd-f16b-4ddf-bd6b-dfa68e32c817/-/preview/@火卫一 作为项目的鸟蛋端支持
祖籍是黑龙江省宁安县;现在是北京人儿。03年开始进入手机行业,负责软件开发。现在专注于蓝牙产品的设计、开发。
参加这个项目,是希望通过自己的努力对“公益项目”做出一点儿贡献,同时学到更多的东西、认识更多的志同道合的人。



http://www.ucarecdn.com/45b49f4e-6664-424f-8cc6-4cee104ecdf0/-/preview/@leeturn 作为项目的云端&网页支持
湖北人,从事web开发,熟悉PHP。
希望能更多地接触硬件,在提升自己的同时也为公益奉献一份微薄之力,也希望自己在快乐中与大家共分享、共进步。



http://www.ucarecdn.com/91472f01-8113-487a-8947-c01e4c3c244a/-/preview/@铵君 作为项目的中继端支持(香蕉派)
内蒙古人,喜欢树莓派,捣鼓程序的的高中生。                                                         



http://www.ucarecdn.com/520dba18-a86f-4000-b85a-8f8b323efbd3/-/preview/@老锅 作为项目的云端&数据库支持
现在在深圳工作,资深工程师,喜欢Microduino,喜欢开源精神。                  
被年轻人的热情感动了,毅然决定支持这个公益项目。



http://www.ucarecdn.com/4410735a-ca0e-4b03-b4b4-b6415af66cfe/-/preview/@问天鼓 作为项目的云端&网页支持
祖籍湖北,现在北京工作,老程序员,基本上从前到后什么都干过,目前专注于智能硬件、大数据分析领域。
从小就爱看动物世界,喜欢亲近自然,能参与动物保护是件很cool的事。参加这个项目为了能更深入地了解智能硬件相关技术,认识更多志同道合的朋友。



Step 4: 项目要求


我们所需要的数据有:

[*]蛋内的温度分布数据
[*]蛋内的湿度数据
[*]蛋在孵化时候的姿态数据
我们将要把以上数据都进行储存,还需要一个网页来展现出这些数据:

[*]温度、湿度、气象站数据以数字形式展现出来;
[*]建立3D鸟蛋模型,实时将姿态展现出来;
[*]温度以云图分布形式在3D鸟蛋上表现出来。
http://www.ucarecdn.com/cb4e4b8c-8ef5-4954-8c3e-974e244bc7b7/-/preview/


[*]因为蛋内待机要达到70天,必须考虑低功耗,因此我们将大多数数据的处理、计算、数据库、互联网都安排在蛋外;
[*]我们会在蛋外设置一个中继,用以作为数据的处理、储存以及连接网络的管理单元;
[*]当然,为了接入互联网,一个云端平台也是必不可少的。
到此为止,我们的三个平台就基本构思好了!下面是这三个平台具体任务分配:

数据采集端

[*]检测鸟蛋温度、湿度、姿态
[*]无线传输数据到蛋外
[*]采集间隔时间频率,精度
[*]可以连续工作70天
数据中继端

[*]接受蛋内数据无线中继
[*]作为外界环境气象站
[*]拥有准确的RTC作为时间轴
[*]将数据存入树莓派部分数据库
[*]没互联网时,可以自带网页查看实时信息
[*]可以将数据库最新数据推入互联网
服务器&云端

[*]数据来自树莓派内数据库
[*]将最新数据在网页中展现
[*]建立鸟蛋3d模型以展示姿态与温度
有可能的话,将此套系统做成一个大平台,用作全世界的濒危猛禽保护工作:
因此我们需要在中继以及云端上面独立出每个蛋以及数据的唯一ID,以便今后的组网工作。

Step 5: 项目方案


系统框图:
http://www.ucarecdn.com/9daa92a1-fe1c-4ba1-b2ed-fc729043d7c1/-/preview/


数据要求:

数据 [@蛋内]

运动姿态:(有符号int16)
需要获取:

[*]俯仰(pitch)
[*]偏航(yaw)
[*]滚转(roll)
[*]加速度(可选)
将用到三轴加速度和陀螺仪,在此选用MPU6050
需要实时性很高的数据,捕捉每一个动作发生时的变量:为了省电,不让MCU一直刷新,利用MPU6050内的中断

[*]附:“可程式控制的中断(interrupt)支援姿势识别、摇摄、画面放大缩小、滚动、快速下降中断、high-G中断、零动作感应、触击感应、摇动感应功能” (点击我)
为了降低蛋内的运算量,只要求蛋传出:

[*]三轴加速度数据
[*]三轴陀螺仪数据
温度数据:(直接取用18B20获取温度,不用除以16)

[*]需要14个温度传感器覆盖在蛋表面的各个位置,刷新速率10s到60s就行
[*]温度传感器选用DS18B20传感器,单总线通讯,只需一个I/O口即可连接十几个传感器
湿度数据:(将湿度数据乘以10发送)

[*]需要一个湿度传感器布置在蛋内,刷新速率10s到60s就行
[*]温度传感器选用sht21传感器,I2C通讯


数据 [@中继]

时间轴:

[*]中继需要一个准确的RTC提供时间,来创建时间轴匹配接受到的蛋内数据
[*]RTC采用Microduino RTC模块,PCF8563芯片
@中继(Microduino)将处理蛋内所有传来数据:

[*]将解析出蛋内传来的所有数据,存在@中继(树莓派)数据库中
中继需要作为一个小型气象站:

[*]当前环境的温度数据

[*]为了利于和蛋内数据相比较,温度传感器同样选用DS18B20传感器,单总线通讯
[*]当前环境的湿度数据

[*]为了利于和蛋内数据相比较,温度传感器同样选用sht21传感器,I2C通讯
[*]当前环境的光照数据

[*]选用TSL2561,I2C通讯
[*]当前环境的气压数据

[*]选用BMP180,I2C通讯


数据库 [@中继(树莓派)]

@中继(树莓派)会将收到@中继(Microduino)所处理好的@蛋内所有的数据储存到自己的数据库中
蛋内数据数据库:
   https://github.com/gaoyichuan/Vu ... ts/Egg_Database.sql
气象站数据数据库:
   https://github.com/gaoyichuan/Vu ... eather_Database.sql


通讯方式:

通讯方式 [@蛋内与@中继(Microduino)]

通讯实现方式:

[*]基于BLE协议饯:
[*]蛋内使用基于BLE协议饯编程后的CC2541
[*]蛋外使用BLE模块,与蛋内通过BLE协议饯串口透传数据
[*]要求在BLE协议饯的基础上,每个蛋要有唯一ID,中继也要有唯一ID
[*]@中继(Microduino)能够扫描到蛋的ID,并且与之建立连接
发送条件:

[*]各项类型数据采集到的时候,分别发送;比如采集完所有14个温度传感器后,发送温度数据,采集完姿态数据后,发送姿态数据
协议数据格式:

[*]0xAA 0xBB 0x0D 0x0A
[*]0xAA 0xBB 是固定的数据头
[*]是类型代码:
[*]姿态:0xAA,温度:0xBB,湿度:0xCC
[*]是数据,每个数据占2个字节,低位在前,比如:0xA9 0x01数据;数据是低位在前,所以0x01 0xA9是数据,值是425
[*]姿态数据:数据从前往后分别代表accelX-axis,accelY-axis,accelZ-axis,gyroX-axis,gyroY-axis,gyroZ-axis;6个数据,共12个字节;低位在前
[*]湿度数据:1个数据,共2个字节;低位在前
[*]温度数据:数据从前往后分别代表1~14个温度传感器值;14个数据,共28个字节;低位在前
[*]0x0D 0x0A是固定的数据尾
示例(温度):

[*]AA BB BB 1A 01 2A 01 3A 01 4A 01 5A 01 6A 01 7A 01 8A 01 9A 01 1B 02 2B 02 3B 02 4B 02 5B 02 0D 0A


通讯方式 [@中继(Microduino)与@中继(树莓派)]

通讯实现方式:

[*]串口
连接鸟蛋:

[*]中继可以从多个鸟蛋中获取数据,我们将需要获取的鸟蛋数目、对应ID事先在@中继(Microduino)内设置,中继将从第一个开始轮流连接/接收鸟蛋数据
发送条件:

[*]@中继(Microduino)获取到@蛋内传来数据后,配上中继时间轴、ID等数据,分别转发给@中继(树莓派),比如获取温度后发送温度数据,获取姿态后发送姿态数据
[*]@中继(Microduino)获取/发送气象站条件:

[*]接收到姿态数据:不需要气象站数据
[*]接收到温度或者湿度数据,需要气象站数据
数据协议:

[*]::= ...::= ;::= "Egg" | "Weather"if = "Egg"   ::= <蓝牙ID>;;[<加速度数据>];[<陀螺仪数据>];[<温度数据>];[<湿度数据>]if = "Weather"   ::= ;<温度数据>;<湿度数据>;<光照数据>;<气压数据>......................
详细说明:

[*]https://github.com/gaoyichuan/VultureEgg/blob/master/Documents/StringProtol.md


通讯方式 [@中继(树莓派)与@云端]

通讯实现方式:

[*]互联网
@中继(树莓派)会把最新数据传送到互联网的服务器
这个服务器面向公众,承受流量
今后的@云端维护都利用这个服务器
发送条件:

[*]有互联网
[*]得到最新数据后
数据协议:

[*]待定
详细说明:

[*]待定




硬件说明:
@蛋内:

所需模块:

[*]Microduino-Core BLE
[*]Microduino-10DOF


[*]所需传感器:

[*]温度传感器采用DS18B20,仅仅需要三条线:地、电源、信号;单总线通讯,只需一个I/O口即可连接十几个传感器
[*]湿度传感器选用sht21传感器,I2C通讯,需要四条线,地、电源、信号SDA、信号SCL



@中继(Microduino):


[*]所需模块:

[*]Microduino-Core+
[*]Microduino-BLE
[*]Microduino-RTC
[*]所需传感器:

[*]温度传感器采用DS18B20,单总线通讯;仅仅需要三条线:地、电源、信号
[*]湿度(SHT21)、气压(BMP180)、光照(TSL2561)的传感器都是I2C通讯;需要四条线,地、电源、信号SDA、信号SCL


@中继(树莓派):


[*]所需模块:

[*]树莓派
[*]所需转接底板:

[*]Microduino转树莓派
[*]采用串口通讯:

[*]Core+的串口1(D2、D3)作为与BT模块的通讯管脚    (需跳线BT模块)
[*]Core+的串口0(D0、D1)作为与树莓派的通讯管脚    (默认)


@云端服务器:




[*]服务器


Step 6: 项目进程



[*]2014-09-11:设置Web显示最小屏幕尺寸,高度小于580时,显示区域不再缩小。2. 修正蛋的缩放只在WEBGL container内进行
[*]2014-09-09:四元数姿态调整实现并测试,针脚朝下时蛋小头朝上,红轴为10dof 的 x , 蓝轴为 y, 绿轴为 z
[*]2014-09-05:中继 数据库 网页都配合四元数做了改动
[*]2014-09-04:@火卫一 打通蛋内dmp数据
[*]2014-09-03:@火卫一 开始改写dmp程序,中继和服务器相继更新;鸟蛋专题页面搭建完毕
[*]2014-09-02:修正了一个中继数据溢出问题
[*]2014-08-31:姿态BUG修正!但姿态角的Z轴不可用,计划更新为DMP处理方式
[*]2014-08-29:经过志愿者们的努力,终于打通云端数据库!系统全部联通!
[*]2014-08-27:1.迁移数据库到pi_report,egg_report两个表中,修正数据服务,将以前需要四次数据库连接才能完成的数据请求,优化为只需一次即可。2,修正在firefox上会多出一段滚动条的问题。3,调整对于不支持webgl的浏览器的信息显示位置为显示蛋的位置。
[*]2014-08-24:@老锅 开始进行数据库&服务器调试工作!
[*]2014-08-23:web site 微调,更新了页面布局、修复不支持webgl的浏览器不能出数据的问题(数据可见,蛋不见),修正渲染切换时color略不一致的问题
[*]2014-08-22:web site 数据可视化实现,并对原实现方式进行了重构,将数据库连接部分单独抽取出来,形成一个返回JSON的数据服务。修正部分页面展示风格。
[*]2014-08-18:鸟蛋的温度可视化、姿态变化基本完成。并重构了代码。
[*]2014-08-15:@问天鼓 作为网页端志愿者加入了团队,完成了很酷的3d鸟蛋demo,包含温度云图
[*]2014-08-12:@小文 完成中继新款底板的设计与调试
[*]2014-08-11:湿度传感器读值问题成功解决!
[*]2014-08-08: 联调成功,蛋内-中继(Microduino)-中继(树莓派)通讯完毕,树莓派数据库连接成功
[*]2014-08-04: @蛋内和@中继(Microduino)通讯建立,解决几个BUG后正常运作
[*]2014-08-02: 重新确定项目要求,具体改动是将树莓派作为转发服务器,互联网作为主服务器
[*]2014-07-27: 网页和数据库对接完毕,但在构建3d鸟蛋的时候遇到了很多问题
[*]2014-07-23: 中继与树莓派的通讯处理完毕
[*]2014-07-22: 中继的气象站获取完毕
[*]2014-07-20: 中继的时间戳获取完毕,数据库样本建立完毕,准备开始和网页的对接
[*]2014-07-17: 蛋内到中继的通讯处理完毕,利用Microduino Core+即可解析蛋内发来数据
[*]2014-07-12: 再次明确蛋内、中继、树莓派的通信协议
[*]2014-07-10: 今天是创造性的一天,@火卫一 将蛋内Core BLE与蛋外BT模块的通讯成功打通!项目关键的一步完成了!
[*]2014-07-08:@leeturn 制定了网页的基本要求:要做到网页3d显示实时姿态,支持树莓派本地查看+云端查看,可能需要用到html5;@袖手蹲 先用一个Core与10DOF模拟蛋内情况,用BT模块把数据按照协议格式透传给中继,做好了以后可以兼容蛋内的CoreBLE
[*]2014-07-07: @铵君 和 @袖手蹲 在按照制订的协议规范研究串口通讯
[*]2014-07-06: @火卫一 还在研究串口,验证蛋内的CoreBLE把数据给中继的BT模块,BT模串口透传块出来
[*]2014-07-05: @老潘 制定出了详细的项目要求
[*]2014-07-03:今天@铵君 加入了我们团队,作为中继和鸟蛋的技术支持,他提出了将用树莓派进行中继数据的处理以及储存,于是Microduino就将准备好的Microduino&树莓派转接板交给了他!是的,你可以用Microduino连接树莓派!
[*]2014-06-30: 1.温度传感器纠结于要不要使用PT100 因为蛋内可能需要布置十几个温度传感器,每个PT100都需要设计运放底板,因此功耗和体积都成了影响因素。 再次考虑DS18B20、以及LM75A传感器。 2.完成对10dof中MPU6050中断引出的改版
[*]2014-06-29: @leeturn 作为志愿者D加入团队,提供网络支持。 @火卫一 成功将MPU6050程序移植到蛋内的CC2541上运行。 @小文 计划将湿度传感器在SHT20、SHT21、HTU21D几个中进行选型。 需要权衡几点: - 精度 - 功耗 - 体积 - 占用I/O口
[*]2014-06-27: 项目已经确定好了目标,志愿者手上已经收到了我们提供的硬件,项目正式启动。 @袖手蹲 将会先开始进行BLE通讯模块的采集实验、以及SD卡读写实验。 @火卫一 将会开始调试Microduino Core BLE(CC2541),在BLE协议饯的基础上展开数据采集实验。 @小文 将会开始PT100温度传感器的设计。
[*]2014-06-26: 开始确认项目要求以及可行性分析

Step 7: 相关资源



[*]项目官网:http://www.eggduino.org
[*]项目管理:https://trello.com/b/QVV6CjHp
[*]项目起源:http://forum.arduino.cc/index.php?topic=247534
[*]鸟蛋演示:http://egg.clouduino.cc
[*]深度定制Arduino IDE:http://pan.baidu.com/s/1jGn56Ma
[*]github:

[*]蛋内:https://github.com/lixianyu/VultureEgg
[*]中继(Microduino):https://github.com/wasdpkj/VultureEgg
[*]中继(树莓派)https://github.com/gaoyichuan/VultureEgg

Step 8: 项目花絮


中继通信调试成功:
http://www.ucarecdn.com/b141e388-f870-4f3d-a5ea-8dcc14b82048/-/preview/

第一次联调:
http://www.ucarecdn.com/0a564f23-9b88-4a96-a0fe-84ef0ac52cb2/-/preview/

中继数据库通信成功:
http://www.ucarecdn.com/10a6fa7b-2824-4456-ac16-28f38b5c2dac/-/preview/

鸟蛋3D渲染成功:
http://www.ucarecdn.com/fc206011-5a61-4562-964d-bf9f46cb511e/-/preview/

新版气象站底板:
http://www.ucarecdn.com/82291b18-3e0b-4f74-a9f5-e8f2d2db8f78/-/preview/

鸟蛋正常运转:
http://www.ucarecdn.com/284288e0-7546-41d4-b147-3d243edd2841/-/preview/

井底添蛙 发表于 2014-9-16 20:56:17

赞赞               

Paderboy 发表于 2014-9-16 21:13:22

{:soso_e179:}好项目。。。赞

ranqingfa 发表于 2014-9-16 21:28:29

很漂亮啊,非常有意义的项目

thomas 发表于 2014-9-16 21:38:19

不考虑无线供电吗?

yyy_zc 发表于 2014-9-16 23:49:46

好工艺 ,好公益,好公议

baicaiby 发表于 2014-9-17 10:03:39

wow,很棒!

林定祥 发表于 2014-9-17 11:48:27

好棒,但是最关键的蛋壳传感的70续航的电力问题怎么办,蛋壳里不可以放个大电池吧,蛋壳的材料也挺关键的,如果感觉不对,有鸟儿不愿意孵化的可能性.

看题目有个鸟的窝,是否电力可以在窝里提供,类似无线充电.

ianon 发表于 2014-9-17 15:00:18

厉害厉害:lol:lol:lol:lol:lol

topdog 发表于 2014-9-17 21:05:02

爱心串起来的开源项目。

wasdpkj 发表于 2014-9-17 21:34:09

林定祥 发表于 2014-9-17 11:48 static/image/common/back.gif
好棒,但是最关键的蛋壳传感的70续航的电力问题怎么办,蛋壳里不可以放个大电池吧,蛋壳的材料也挺关键的,如果 ...

蛋内用的是BLE,非常省电~~

秋刀鱼z 发表于 2014-9-18 13:24:20

太棒了!!!!!!!!!

水涌沧 发表于 2014-9-18 16:08:36

{:soso_e179:}

wudan3551 发表于 2014-9-18 19:49:15

好厉害啊!

火卫一 发表于 2014-10-7 14:56:58

赞一个!:lol
页: [1] 2
查看完整版本: Microduino 公益项目 -- 聪明的鸟蛋!完结前的汇报