回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

课时五:综合项目2--无人机灭火模拟(队伍:PlutoCharon) 简单

头像 宫冰玉 2021.01.06 645 0

一、课程引入

(1)DFRobot DF9GMS 180°微型舵机原理

(2)Color Sensor-TCS34725原理

(3)OLED-2864 Display原理

(4)设计3D打印件

(5)灭火思路

二、知识原理讲解

2.1 DFRobot DF9GMS 180°微型舵机原理

DFRobot DF9GMS 180°由DFRobot 出品的DF9GMS 180°微型舵机,该舵机采用高强度ABS透明外壳配以内部高精度尼龙齿轮组,加上精准的控制电路、高档轻量化空心杯电机使该微型舵机的重量只有9克,而输出力矩达到了惊人的1.6kg*cm。

project-image

工作电压:4.8V 转矩:1.6kg/cm(4.8V) 速度:0.14秒/60度(4.8V) 使用温度:-30~+60摄氏度 死区宽度:5微秒 外形尺寸:23x12.2x29mm 重量:9g

2.2 Color Sensor-TCS34725原理

TCS34725是一款低成本,高性价比的RGB全彩颜色识别传感器,传感器通过光学感应来识别物体的表面颜色。支持红、绿、蓝(RGB)三基色,支持明光感应,可以输出对应的具体数值,帮助您还原颜色本真。 为了提高精度,防止周边环境干扰,我们特意在传感器底部添加了一块红外遮光片,最大程度减小了入射光的红外频谱成份,让颜色管理更加准确。板载自带四个高亮LED,可以让传感器在低环境光的情况下依然能够正常使用,实现“补光”的功能。模块采用I2C通信,拥有PH2.0和XH2.54(面包板)两种接口,用户可以根据自己的需求来选择接口,更加便利。

project-image

工作电压:3.3-5V

工作电流:65uA

检测距离:3-10mm

时钟频率:0-400KHZ

接 口:I2C接口和2.54间距接口

I2C地址:0x29

温度范围:-30℃ ~ +70℃

尺 寸:18.5 mm * 23 mm

重量:12 g

引脚说明:

project-image
project-image

注意:

本模块的I2C地址是0x29

使用XH2.54(面包板兼容)接口时,需要自行焊接

底部红外遮光片上的一层保护纸可以撕下来

 

2.3 OLED-2864 Display原理

Gravity OLED-12864 显示屏是一款无需背景光源,自发光式的显示模块。模块采用蓝色背景,显示尺寸控制在0.96英寸,采用OLED专用驱动芯片SSD1306控制。该模块支持通过I2C接口与控制器通信,支持高传输速率,能够实现60Hz的刷新频率。模块采用Gravity I2C通用接口,无需额外杜邦线,即可直插Arduino主控器,从此摆脱繁杂的接线苦恼。另外显示屏采用了铝合金外框封装,在保护屏幕不受损伤的同时,也能防止您在使用过程中,不被屏幕的玻璃边缘划伤。 OLED又称作有机发光二极管,相比传统的LCD,OLED具备更快的响应速度和更轻薄的体积优势,屏幕厚度可以小于1毫米,仅为LCD屏幕的1/3左右。并且功耗更低,抗震性好,可以广泛应用于移动设备的显示应用上。配合一些mini的Arduino主控器,如BeetleCurieNano等小板,完全可以自己制作一款带显示功能的智能穿戴设备。

project-image

工作电压:3.3V~5V

显示颜色:蓝色

像素个数:128列 × 64行

接口方式:Gravity-I2C

刷屏速率:60帧/秒

亮度:60 (Typ) cd/m2

全屏点亮功耗:约22.75mA

工作温度:-30℃~+70℃

显示面积:21.744 × 10.864(mm)

模块尺寸:41.20 × 26.20 (mm)

安装孔尺寸:35 x 20 (mm)

模块重量:15克

引脚:

project-image

VCC:3V3~5V电源输入

GND:电源地

SCL:I2C时钟线

SDA:I2C数据线

2.4线路连接

project-image

扩展板:

project-image

2.5设计3D打印件

第一代:(尺寸有点大,TT吃不消)

project-image

第二代:(尺寸合适)

project-image

对比:

project-image
project-image
project-image
project-image
project-image

安装:

project-image

2.6 灭火思路

project-image

三、项目实施步骤

(操作时远离无人机桨叶,注意安全)

项目7:无人机检测火源并灭火模拟

项目描述:

该项目需要使用颜色传感器检测火源颜色,并在OLED上显示检测到火源,然后飞到火源的位置,通过微型舵机和3D打印爪投放“灭火弹(3D打印件)”,实现模拟无人机灭火的原理。

注:经过调试发现TT的载重能力实在太小,不加上3D打印件和舵机,只加上颜色识别模块和OLED显示屏TT都很难起飞,导致该项目改为只仅仅识别火焰颜色并在OLED屏上显示和让3D打印件运动,不在进行飞机起飞。

任务拆解:

project-image

学生能力基础:

(1)相应传感器原理

(2)编程思想

材料清单

  • RoboMaster TT无人机 X1 链接
  • Color Sensor-TCS34725 X1 链接
  • DFRobot DF9GMS 180° 微型舵机 X1 链接
  • OLED-2864 Display X1 链接
  • 3D打印件 X1

代码文件:

灯条程序:

project-image

主程序:

project-image
代码
/*!
 * MindPlus
 * telloesp32
 *
 */
#include <RMTT_Libs.h>
#include <DFRobot_Servo.h>
#include <DFRobot_TCS34725.h>
#include <DFRobot_SSD1306_I2C.h>

// 动态变量
volatile float mind_n_R, mind_n_G, mind_n_B;
// 静态常量
const chCode chBuf[] = {
	{0x53d1,0xe58f91,0xB7A2,{0x01,0x00,0x11,0x10,0x11,0x08,0x22,0x00,0x3f,0xfc,0x02,0x00,0x04,0x00,0x07,0xf8,0x0a,0x08,0x09,0x08,0x11,0x10,0x10,0xa0,0x20,0x40,0x40,0xa0,0x03,0x18,0x1c,0x06}},
	{0x73b0,0xe78eb0,0xCFD6,{0x00,0x00,0x01,0xfc,0xfd,0x04,0x11,0x04,0x11,0x24,0x11,0x24,0x11,0x24,0x7d,0x24,0x11,0x24,0x11,0x54,0x10,0x50,0x10,0x90,0x1c,0x90,0xe1,0x12,0x42,0x12,0x04,0x0e}},
	{0x706b,0xe781ab,0xBBF0,{0x01,0x00,0x01,0x00,0x01,0x00,0x11,0x08,0x11,0x08,0x11,0x10,0x21,0x20,0x21,0x00,0x42,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xc0,0x06}},
	{0x60c5,0xe68385,0xC7E9,{0x10,0x40,0x10,0x40,0x17,0xfc,0x10,0x40,0x1b,0xf8,0x54,0x40,0x57,0xfe,0x50,0x00,0x93,0xf8,0x12,0x08,0x13,0xf8,0x12,0x08,0x13,0xf8,0x12,0x08,0x12,0x28,0x12,0x10}},
	{0x5bfb,0xe5afbb,0xD1B0,{0x00,0x00,0x3f,0xf8,0x00,0x08,0x00,0x08,0x1f,0xf8,0x00,0x08,0x00,0x08,0x3f,0xf8,0x00,0x20,0x00,0x20,0xff,0xfe,0x08,0x20,0x04,0x20,0x04,0x20,0x00,0xa0,0x00,0x40}},
	{0x627e,0xe689be,0xD5D2,{0x10,0x90,0x10,0x88,0x10,0x88,0x10,0x80,0xfc,0xbc,0x13,0xc0,0x10,0x80,0x14,0x88,0x18,0x88,0x30,0x90,0xd0,0x60,0x10,0x44,0x10,0xa4,0x11,0x14,0x52,0x0c,0x20,0x04}}
};
// 创建对象
DFRobot_SSD1306_I2C oled12864;
RMTT_RGB            tt_rgb;
DFRobot_TCS34725    tcs34725;
Servo               servo_14;


// 主程序开始
void setup() {
	tt_rgb.Init();
	Serial.begin(9600);
	tcs34725.begin();
	oled12864.setChCode(chBuf);
	servo_14.attach(14);
	oled12864.begin(0x3c);
	oled12864.fillScreen(0);
	oled12864.setRotaion(eROTATION_180);
	tt_rgb.SetRGB(255,0,0);
	delay(1000);
	tt_rgb.SetRGB(0,255,0);
	delay(1000);
}
void loop() {
	mind_n_R = tcs34725.getRedToGamma();
	mind_n_G = tcs34725.getGreenToGamma();
	mind_n_B = tcs34725.getBlueToGamma();
	tt_rgb.SetRGB(mind_n_R,mind_n_G,mind_n_B);
	if (((mind_n_R>100) && (((mind_n_G>=0) && (mind_n_G<=8)) && ((mind_n_B>=0) && (mind_n_B<=8))))) {
		oled12864.setCursorLine(2);
		oled12864.printLine("    发现火情");
		Serial.println("警告!!!发现火情。");
		servo_14.angle(abs(32));
	}
	else {
		servo_14.angle(abs(18));
		oled12864.setCursorLine(2);
		oled12864.printLine("    寻找火情");
	}
}

演示视频:

评论

user-avatar