开源智能鸟蛋演示系统/zh

来自Microduino Wikipedia
502748957@qq.com讨论 | 贡献2016年2月14日 (日) 08:58的版本 (Created page with "{| style="width: 800px;" |- | ==概述== *项目名称:开源智能鸟蛋演示系统 *目的:采集鸟蛋中各个位置的温湿度数据 *难度:高 *耗时:2小时...")
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

概述

  • 项目名称:开源智能鸟蛋演示系统
  • 目的:采集鸟蛋中各个位置的温湿度数据
  • 难度:高
  • 耗时:2小时
  • 制作者:
  • 简介:

本次教程我们将使用Microduino产品模块搭建鸟蛋温度检测系统,该系统通过温度传感器采集鸟蛋中各个点的内容,同时将数据传到手机中,实时生成温度表示图。

Egg1.jpg

材料清单

  • Microduino设备
模块 数量 功能
Microduino-Core+/zh 1 核心板
Microduino-USBTTL/zh 1 下载程序
Microduino-BM/zh(with shield) 1 电源管理
Microduino-Sensorhub/zh 1 传感器模块
Microduino-BT/zh 1 显示
Microduino-10DOF/zh 1 姿态采集模块
Microduino-LM75/zh 1 温湿度采集模块
  • 其他设备
模块 数量 功能
Micro-USB线 1 下载程序、供电
木质外壳 1 外观,固定

实验原理

智能鸟蛋系统主要由两大部分组成,数据采集部分由8个LM75温度传感器和一个10DOF模块组成,实时采集鸟蛋多个位置的温度和鸟蛋的位置状态,之后经过核心Core+的处理通过蓝牙模块Microduino-BT与手机联动将数据传输到手机中继上,继而上传到我们的云服务器mCotton,之后可通过网页查看温度示意图和鸟蛋姿态示意图。

  • 主要传感器

Microduino-LM75 Microduino-Module motion

文档

鸟蛋代码:【鸟蛋演示系统代码】 鸟蛋代码Github:SmartEgg

调试过程

Microduino-Core+/zhMicroduino-USBTTL/zh堆叠在一起.用数据线将写好的程序通过Microduino-USBTTL/zh上传到Microduino-Core+/zh上。 注意:最好不要将所有模块堆叠在一起之后再上传程序

打开Arduino IDE编程软件,点击 【文件】->【打开】,打开插卡音箱文件夹后选择Microduino_Audio_ble\ SmartEgg.ino

Eggdl1.jpg

点击"√",编译程序。 点击【工具】,选择正确的板+处理器+端口。 点击"→",进行上传。

Eggdl2.jpg

组装

  • Step1:拼装时首先确认外壳物料是否齐全。
Eggstr1.jpg
  • Step2:之后将Cube-S1底板固定在底板上,如图所示
Eggstr2.jpg
  • Step3:之后将Core+,BM,BT,10DOF插接好(无上下顺序),并插在Cube-S1底板上。将锂电池连接在BM模块的接口上。
Eggstr3.jpg
  • Step4:将传感器与传感器固定的木片使用螺丝固定好,如图所示
Eggstr4.jpg
  • Step5:将Sensorhub底板按照如图方式短接两个引脚,使得所有接口都改为IIC接口。之后将8个LM75传感器插在Sensorhub上,由于所有接口都是IIC接口所以没有位置之分,8个传感器全部插上即可。做完这一步将Sensorhub单独放在一旁
Eggstr5.jpg
  • Step6:使用两块侧柱木板,将三个环形木板夹住以形成支撑结构,如下图所示
Eggstr6.jpg
  • Step7:将插好传感器的Sensorhub从侧面缝隙中塞入鸟蛋结构,之后继续使用侧柱支撑木板将鸟蛋的轮廓摆出。
Eggstr7.JPG
  • Step8:之后将传感器分别插入侧面支撑柱上的插槽中,使用固定木插销每个传感器固定好,位置按照自己需求即可,但是力求采集位置均匀,这样更便于获取合理的数据。
Eggstr8.JPG
  • Step9:最后将顶部和底部的环形固定木片插好,用于固定所有侧柱
Eggstr9.JPG

至此鸟蛋部分拼装完成

mCotton设置

进入https://mcotton.microduino.cn/projects 点击右上角Sign in/Join,在下拉菜单中点击右下角的Create account创建自己的账号。

Eggcotton1.jpg

输入Email作为用户名和自己的密码,之后点击Create即可。 注册后会自动进入登录状态,若未登录则点击右上角Sign in输入用户名(邮箱)和密码登录。登陆后点击左上角的Projects。

Eggcotton2.jpg

此时网页上会显示很多个标签,找到Smart Egg标签,并点击Made It进入下一步页面

Eggcotton3.jpg

在此处填写自己项目的名称和项目描述。图中高亮部分ID需要记住,建议复制在txt中保存。之后点击√Save

之后进入myDevice页面,会看到出现了名为XXX(刚才设定好的名字)的项目,点Details进入详细页面。

Eggcotton5.jpg

在之后的页面中点击Data右边的蓝色图标进入数据观察页面

Eggcotton6.jpg

若连接成功则右侧可显示鸟蛋数据图,左侧为选项设置部分

Eggcotton7.jpg


操作说明

程序说明

主程序部分

  int vol=uiStep();	//检测输入动作
  //  Serial.print("vol:");
  //  Serial.println(vol);

  if(vol==1) key=true;
  else key=false;

  if(!key && key_cache)		//按下松开后
  {
    key_cache=key;		//缓存作判断用
    music_status=!music_status;	//播放或暂停
    if(music_status == true)	//播放
    {
      Serial.println("play");
//      audio_choose(1);
      audio_play();
    }
    else	//暂停
    {
      Serial.println("pause");
      audio_pause();
    }
  }
  else
  {
    key_cache=key;		//缓存作判断用
  }

  if(vol==0)
  {
    //    Serial.println("no");
    music_vol_time_cache=millis();
    music_vol_time=music_vol_time_cache;
    music_vol_sta=false;
  }
  else if(vol==2)
  {
    music_vol_time=millis()-music_vol_time_cache;
    //    if(music_vol_time>200)
    delay(500);
    if(uiStep()==0 && !music_vol_sta)
    {
      Serial.println("next");

      music_num++;	//歌曲序号加
      if(music_num>music_num_MAX)	//限制歌曲序号范围
      {
        music_num=1;
      }
      audio_choose(music_num);
      audio_play();
      //        delay(500);
      music_status=true;
      eeprom_WRITE();

    }
    else if(music_vol_time>1500)
    {
      music_vol_sta=true;
      music_vol++;
      if(music_vol>30) music_vol=30;
      audio_vol(music_vol);
      Serial.println("++");
      delay(100);
      eeprom_WRITE();
    }
  }
  else if(vol==3)
  {
    music_vol_time=millis()-music_vol_time_cache;
    //    if(music_vol_time>200)
    delay(500);
    if(uiStep()==0 && !music_vol_sta)
    {
      Serial.println("perv");

      music_num--;	//歌曲序号加
      if(music_num<1)	//限制歌曲序号范围
      {
        music_num=music_num_MAX;
      }
      audio_choose(music_num);
      audio_play();
      //        delay(500);
      music_status=true;
      eeprom_WRITE();
    }
    else if(music_vol_time>1500)
    {
      music_vol_sta=true;
      music_vol--;
      if(music_vol<1) music_vol=1;
      audio_vol(music_vol);
      Serial.println("--");
      delay(100);
      eeprom_WRITE();
    }
  }

  if(millis()-timer_draw>init_draw) //OLED显示部分
  {
    u8g.firstPage();  
    do {
      draw();
    } 
    while( u8g.nextPage() );
    timer_draw=millis();
  }
}

视频