点击 蘑菇云创造 关注我们
作品来源:第五届全国青少年人工智能创新挑战赛——开源硬件创意智造专项赛
参赛学生:
彭楚寻 重庆市第八中学校
刘雯萱 重庆市第八中学校
原文链接:
https://contest.dfrobot.com.cn/tcwl2022/project/312685?p=dfrobot2022sh
步骤1 结构设计
STEP ONE
随着时代的发展,信息的普及度越来越超前,许多学龄儿童沉迷于网络,不能有一个好的启蒙教育,对数字的敏感度越来越低,为了让学龄儿童对数字保持敏感,我们设计了这个便设计了这个天平。
我们的启发来源于天平以及数字的对应关系,天平是学习物理和化学及生活中常用工具。一般用于科研机构、学校实验室、药店等场所,用来称一些小计量物品。但是,由于现实中的天平操作复杂,不便于学龄儿童的的操作。所以我们简化了天平的使用。
大致流程:当天平两端的托盘上没有任何物体的时候,会提醒使用者“正在初始化,请稍候”以及“请在左侧托盘放入物体,并在右侧托盘放入物品的个数,按下按钮开始检测。”,然后使用者便可以在天平的一个托盘上放上相同的物品,而另外一端放上数字卡片,然后会说“检查放入物品的个数”以及“检查写出的数字。”。在摄像头分别在两个托盘上扫描过物体的数字以及卡片上的数字后,便会比较他们的大小,如果是相等的话便会对使用者说“恭喜你数对了,托盘两侧的物品和数字相等。”,如果卡片数字小于物品的个数,则会说“写出的数字比放入的物品少一些。”,如果是卡片数字大于物品的个数,则会说“写出的数字比放入的物品多一些”。整个程序结束。
步骤2 结构搭建
STEP TWO
我们简单搭建了一个天平的外形,在上面加装一大一小的舵机以及一个语音合成模块,语音合成模块可以在使用者,大舵机用于调节天平的平衡,而小舵机则是用于摄像头在两个托盘上移动,使摄像头可以精准地分别照到托盘上的物体,从而去辨别托盘上的物体数量。托盘的一边可以放物体,而摄像头在此托盘上方时便可以识别物体的个数便记录,而托盘的另一边则是放数字卡片的,当数字卡片上的数字等于另一托盘上物体的个数时,大舵机便不动,使天平控制在平衡位置,若数字大于或小于物体的个数时,托盘便会向大的那一边倾斜。
步骤3 软件源代码
STEP THREE
代码(
CODE
/*!* MindPlus* uno**/// 动态变量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("请在左侧托盘放入物品,并在右侧托盘放入物品的个数,按下按钮开始检测");}}
(代码文件详见原文)
步骤4 结构设计文件
STEP FOUR
(代码文件详见原文)
步骤5 作品演示视频
STEP FIVE
硬件清单
HARDWARE LIST
1x 数字大按钮模块 链接
1x 图像识别 链接
1x 语音合成 链接
1x DF15RMG机器人舵机 链接
1x DFRobot DF9GMS 180° 微型舵机 链接
1x Arduino UNO控制板 链接
步骤6 硬件接线图
STEP SIX
往期推荐

