极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 27873|回复: 18

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

[复制链接]
发表于 2014-9-16 20:44:44 | 显示全部楼层 |阅读模式
本帖最后由 wasdpkj 于 2014-10-10 16:17 编辑

Step 1: 项目由来


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


Step 2: 项目规划


这个应用有很多挑战:
  • 在鸟蛋的狭小空间中集成所有所需功能,并保证其可靠性。
  • 70 天的续航时间,对系统功耗、系统稳定性是个巨大考验。
  • 社区项目的组织、执行、协调和完成是个难题。
Microduino计划将此项目分为以下几部分来做:
  • 蛋内采集端
  • 数据中继端
  • 服务器云端
我们将此项目拆分成三个部分,每个部分都需要招募志愿者负责,最为关键的是志愿者之间工作的协调,这将成为本项目成功与否的决定性因素。
我们还要设计三个部分的通信方式以及协议,还有至关重要的续航挑战:70天!


Step 3: 志愿者


@小文 作为项目的硬件支持
家乡是江西省九江市的,目前是在校学生,学的是应用电子专业。会一些电子硬件电路设计。
参加这个项目主要是对它比较感兴趣,同时也想为这种公益项目作一点小小的贡献!

@袖手蹲 作为项目的中继支持
厨师 原来专业化工自动化仪表 法律专业 爱好电子。                                          

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

@leeturn 作为项目的云端&网页支持
湖北人,从事web开发,熟悉PHP。
希望能更多地接触硬件,在提升自己的同时也为公益奉献一份微薄之力,也希望自己在快乐中与大家共分享、共进步。

@铵君 作为项目的中继端支持(香蕉派)
内蒙古人,喜欢树莓派,捣鼓程序的的高中生。                                                         

@老锅 作为项目的云端&数据库支持
现在在深圳工作,资深工程师,喜欢Microduino,喜欢开源精神。                  
被年轻人的热情感动了,毅然决定支持这个公益项目。

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



Step 4: 项目要求


我们所需要的数据有:
  • 蛋内的温度分布数据
  • 蛋内的湿度数据
  • 蛋在孵化时候的姿态数据
我们将要把以上数据都进行储存,还需要一个网页来展现出这些数据:
  • 温度、湿度、气象站数据以数字形式展现出来;
  • 建立3D鸟蛋模型,实时将姿态展现出来;
  • 温度以云图分布形式在3D鸟蛋上表现出来。



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

数据采集端
  • 检测鸟蛋温度、湿度、姿态
  • 无线传输数据到蛋外
  • 采集间隔时间频率,精度
  • 可以连续工作70天
数据中继端
  • 接受蛋内数据无线中继
  • 作为外界环境气象站
  • 拥有准确的RTC作为时间轴
  • 将数据存入树莓派部分数据库
  • 没互联网时,可以自带网页查看实时信息
  • 可以将数据库最新数据推入互联网
服务器&云端
  • 数据来自树莓派内数据库
  • 将最新数据在网页中展现
  • 建立鸟蛋3d模型以展示姿态与温度

有可能的话,将此套系统做成一个大平台,用作全世界的濒危猛禽保护工作:
因此我们需要在中继以及云端上面独立出每个蛋以及数据的唯一ID,以便今后的组网工作。


Step 5: 项目方案


系统框图:




数据要求:

数据 [@蛋内]
运动姿态:(有符号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 [type] [data] 0x0D 0x0A
  • 0xAA 0xBB 是固定的数据头
  • [type]是类型代码:
  • 姿态:0xAA,温度:0xBB,湿度:0xCC
  • [data]是数据,每个数据占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: 相关资源




    Step 8: 项目花絮


    中继通信调试成功:


    第一次联调:


    中继数据库通信成功:


    鸟蛋3D渲染成功:


    新版气象站底板:


    鸟蛋正常运转:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-9-16 20:56:17 | 显示全部楼层
赞赞                 
回复 支持 反对

使用道具 举报

发表于 2014-9-16 21:13:22 | 显示全部楼层
{:soso_e179:}好项目。。。赞
回复 支持 反对

使用道具 举报

发表于 2014-9-16 21:28:29 | 显示全部楼层
很漂亮啊,非常有意义的项目
回复 支持 反对

使用道具 举报

发表于 2014-9-16 21:38:19 | 显示全部楼层
不考虑无线供电吗?
回复 支持 反对

使用道具 举报

发表于 2014-9-16 23:49:46 | 显示全部楼层
好工艺 ,好公益,好公议
回复 支持 反对

使用道具 举报

发表于 2014-9-17 10:03:39 | 显示全部楼层
wow,很棒!
回复 支持 反对

使用道具 举报

发表于 2014-9-17 11:48:27 | 显示全部楼层
好棒,但是最关键的蛋壳传感的70续航的电力问题怎么办,蛋壳里不可以放个大电池吧,蛋壳的材料也挺关键的,如果感觉不对,有鸟儿不愿意孵化的可能性.

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

使用道具 举报

发表于 2014-9-17 15:00:18 | 显示全部楼层
厉害厉害
回复 支持 反对

使用道具 举报

发表于 2014-9-17 21:05:02 | 显示全部楼层
爱心串起来的开源项目。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-17 21:34:09 | 显示全部楼层
林定祥 发表于 2014-9-17 11:48
好棒,但是最关键的蛋壳传感的70续航的电力问题怎么办,蛋壳里不可以放个大电池吧,蛋壳的材料也挺关键的,如果 ...

蛋内用的是BLE,非常省电~~
回复 支持 反对

使用道具 举报

发表于 2014-9-18 13:24:20 | 显示全部楼层
太棒了!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2014-9-18 16:08:36 | 显示全部楼层
{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2014-9-18 19:49:15 | 显示全部楼层
好厉害啊!
回复 支持 反对

使用道具 举报

发表于 2014-10-7 14:56:58 | 显示全部楼层
赞一个!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 11:00 , Processed in 0.069338 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表