一、课程引入
(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。
工作电压: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(面包板)两种接口,用户可以根据自己的需求来选择接口,更加便利。
工作电压:3.3-5V
工作电流:65uA
检测距离:3-10mm
时钟频率:0-400KHZ
接 口:I2C接口和2.54间距接口
I2C地址:0x29
温度范围:-30℃ ~ +70℃
尺 寸:18.5 mm * 23 mm
重量:12 g
引脚说明:
注意:
本模块的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主控器,如Beetle,CurieNano等小板,完全可以自己制作一款带显示功能的智能穿戴设备。
工作电压: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克
引脚:
VCC:3V3~5V电源输入
GND:电源地
SCL:I2C时钟线
SDA:I2C数据线
2.4线路连接
扩展板:
2.5设计3D打印件
第一代:(尺寸有点大,TT吃不消)
第二代:(尺寸合适)
对比:
安装:
附件
2.6 灭火思路
三、项目实施步骤
(操作时远离无人机桨叶,注意安全)
项目7:无人机检测火源并灭火模拟
项目描述:
该项目需要使用颜色传感器检测火源颜色,并在OLED上显示检测到火源,然后飞到火源的位置,通过微型舵机和3D打印爪投放“灭火弹(3D打印件)”,实现模拟无人机灭火的原理。
注:经过调试发现TT的载重能力实在太小,不加上3D打印件和舵机,只加上颜色识别模块和OLED显示屏TT都很难起飞,导致该项目改为只仅仅识别火焰颜色并在OLED屏上显示和让3D打印件运动,不在进行飞机起飞。
任务拆解:
学生能力基础:
(1)相应传感器原理
(2)编程思想
代码文件:
灯条程序:
主程序:
/*!
* 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(" 寻找火情");
}
}
演示视频:
评论