天平
发布时间:2023-07-01
步骤1 结构设计

随着时代的发展,信息的普及度越来越超前,许多学龄儿童沉迷于网络,不能有一个好的启蒙教育,对数字的敏感度越来越低,为了让学龄儿童对数字保持敏感,我们设计了这个便设计了这个天平。

我们的启发来源于天平以及数字的对应关系,天平是学习物理和化学及生活中常用工具。一般用于科研机构、学校实验室、药店等场所,用来称一些小计量物品。但是,由于现实中的天平操作复杂,不便于学龄儿童的的操作。所以我们简化了天平的使用。

大致的流程就是当天平两端的托盘上没有任何物体的时候,会提醒使用者“正在初始化,请稍候”以及“请在左侧托盘放入物体,并在右侧托盘放入物品的个数,按下按钮开始检测。”,然后使用者便可以在天平的一个托盘上放上相同的物品,而另外一端放上数字卡片,然后会说“检查放入物品的个数”以及“检查写出的数字。”。在摄像头分别在两个托盘上扫描过物体的数字以及卡片上的数字后,便会比较他们的大小,如果是相等的话便会对使用者说“恭喜你数对了,托盘两侧的物品和数字相等。”,如果卡片数字小于物品的个数,则会说“写出的数字比放入的物品少一些。”,如果是卡片数字大于物品的个数,则会说“写出的数字比放入的物品多一些”。整个程序结束。

projectImage
步骤2 结构搭建

我们简单搭建了一个天平的外形,在上面加装一大一小的舵机以及一个语音合成模块,语音合成模块可以在使用者,大舵机用于调节天平的平衡,而小舵机则是用于摄像头在两个托盘上移动,使摄像头可以精准地分别照到托盘上的物体,从而去辨别托盘上的物体数量。托盘的一边可以放物体,而摄像头在此托盘上方时便可以识别物体的个数便记录,而托盘的另一边则是放数字卡片的,当数字卡片上的数字等于另一托盘上物体的个数时,大舵机便不动,使天平控制在平衡位置,若数字大于或小于物体的个数时,托盘便会向大的那一边倾斜。

projectImage
projectImage
projectImage
projectImage
projectImage
步骤3 软件源代码
projectImage
代码
/*!
 * MindPlus
 * uno
 *
 */
#include <DFRobot_Servo.h>
#include <DFRobot_HuskyLens.h>
#include <DFRobot_SpeechSynthesis_M.h>

// 动态变量
volatile float mind_n_geshu, mind_n_shuzi;
// 创建对象
DFRobot_SpeechSynthesis_I2C sstts;
DFRobot_HuskyLens           huskylens;
Servo                       servo_10;
Servo                       servo_11;


// 主程序开始
void setup() {
	Serial.begin(9600);
	servo_10.attach(10);
	servo_11.attach(11);
	delay(2000);
	sstts.begin(sstts.eV1);
	sstts.speak("正在初始化,请稍候");
	delay(1000);
	huskylens.beginI2CUntilSuccess();
	servo_10.angle(abs(90));
	sstts.speak("请在左侧托盘放入物品,并在右侧托盘放入物品的个数,按下按钮开始检测");
}
void loop() {
	if ((analogRead(A0)<500)) {
		servo_10.angle(abs(90));
		servo_11.angle(abs(10));
		huskylens.writeAlgorithm(ALGORITHM_TAG_RECOGNITION);
		sstts.speak("检查放入物品的个数");
		delay(3000);
		huskylens.request();
		mind_n_geshu = huskylens.readCount(HUSKYLENSResultBlock);
		Serial.println(mind_n_geshu);
		servo_11.angle(abs(165));
		huskylens.writeAlgorithm(ALGORITHM_OBJECT_CLASSIFICATION);
		sstts.speak("检查写出的数字");
		delay(3000);
		huskylens.request();
		mind_n_shuzi = huskylens.readBlockParameterDirect(1).ID;
		Serial.println(mind_n_shuzi);
		if ((mind_n_geshu==mind_n_shuzi)) {
			servo_10.angle(abs(90));
			sstts.speak("恭喜你数对了,托盘两侧的物品和数字相等");
		}
		else {
			if ((mind_n_geshu>mind_n_shuzi)) {
				servo_10.angle(abs(105));
				sstts.speak("写出的数字比放入的物品少一些");
			}
			else {
				servo_10.angle(abs(75));
				sstts.speak("写出的数字比放入的物品多一些");
			}
		}
		delay(2000);
		sstts.speak("请在左侧托盘放入物品,并在右侧托盘放入物品的个数,按下按钮开始检测");
	}
}
附件
icon 刘雯萱 彭楚寻 天平程序 .zip 167KB
下载
步骤4 结构设计文件
附件
icon 刘雯萱 彭楚寻 天平建模 .zip 1.09MB
下载
步骤5 作品演示视频
硬件清单
1x
数字大按钮模块
1x
图像识别
1x
语音合成
1x
DF15RMG机器人舵机
1x
DFRobot DF9GMS 180° 微型舵机
1x
Arduino UNO控制板
步骤6 硬件接线图
projectImage
参赛组别 初中
参赛学生 彭楚寻 重庆市第八中学校 刘雯萱 重庆第八中学校