banner

盲文练习助手

icon
发布时间:2021-05-29
步骤1 作品背景

由于致盲的原因多种多样,很多视障者本该在接受教育的年龄在四处求医,从家长的角度考虑当然没问题,但对于残障者本身来说对他的发展是不利的。在校内年龄可能会相差较大,会出现超龄的情况。 在盲人学校里,同学一般都会学习用这种<帕金斯盲文打字机>。电子盲文显示机的打字方式也是一样的。为了减少视障人士教育学习的成本,我们打算设计一个便携式的<帕金斯盲文打字机>。直接使用六个按钮来模拟六个凸点。

projectImage

作品项目展示

 

projectImage
步骤2 作品功能与亮点

此设备盲人与聋哑人皆可使用

1、盲人

可以利用此设备进行盲文练习,六个按钮对应盲文的六个点,进行汉字拼写练习

2、语言障碍
简单盲文学习后,利用拼音机制进行简单文本拼写对话,也可以利用设备的发声装置进行简单对话

解决了语言障碍人士与健听人士的双向沟通障碍

通过盲文按键表达自己意思,机器同时播放声音便于健听人士接收信息

硬件清单
1x
掌控板
1x
掌控宝
6x
微动轻触按键开关
1x
中英文语音合成模块
6x
220R 电阻
1x
3D打印外壳
步骤3 电路连接图
projectImage
步骤4 作品原理

     盲文又称点字,国际通用的点字由6个凸起的圆点为基本结构组成,是专供盲人摸读、书写的文字符号。1829年,法国盲人路易•布莱尔(Louls Braille,1809-1852)受夜文的启发,创造出了以简单的凸点代替拉丁字母的盲文体系,国际上用他的名字来命名盲文(Braille)。   

      布莱尔创造的由6个点为基础结构的盲字,在纸面上有的凸起,有的不凸起,形成64种变化,即64种符形,在每个符号(单位称“方”)左右两列,每列各三个点,从左边自上而下叫做1、2、3点,从右边自上而下叫做4、5、6点。 

声母盲文格式:

projectImage

注意:
1、g、k、h与j、q、x在同一韵母里不能同时存在,故可放在一起。

2、zhi chi shi ri zi ci si视作零韵母,只要写出它的声母即可。

3、如果声母是y或w的,则视作零声母,直接写韵母即可。

4、声母g/k/h在韵母i/u/ü时变读为j/q/x。z/c/s/zh/ch/sh/r后面的i省略

韵母盲文格式:

projectImage
projectImage

声调盲文格式

projectImage
步骤5 制作过程

①:用3Done 设计盲文练习助手的外壳

projectImage

②:开始硬件组装

projectImage

③:焊接6个按钮,用于盲文的输入

projectImage

④:开始组装按钮

projectImage

⑤:固定按钮

projectImage

⑥:根据电路图连接各个传感器

projectImage

⑦:完成组装

projectImage
步骤6 程序设计
projectImage
代码
/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include<DFRobot_SpeechSynthesis.h>

// 动态变量
String         mind_s_WenBen, mind_s_ShengMu, mind_s_YunMu, mind_s_ShengDiao;
volatile float mind_n_ShuZhi, mind_n_ZhuangTai;
// 函数声明
void DF_ShengYunMuPanDuan();
void DF_WeiDiao();
void DF_ChuMoPanDuan();
void DF_HuoQuShuZhi();
void DF_HuoQuZhuangTai();
// 创建对象
DFRobot_SpeechSynthesis_I2C sstts;


// 主程序开始
void setup() {
	mPython.begin();
	sstts.begin();
	sstts.setVolume(10);
	sstts.setSpeed(3);
	sstts.setSoundType(sstts.MALE1);
	sstts.setTone(7);
	mind_s_WenBen = "";
	mind_s_ShengMu = "";
	mind_s_YunMu = "";
	mind_s_ShengDiao = "";
}
void loop() {
	DF_ChuMoPanDuan();
	if (((String(mind_s_ShengDiao).length())>0)) {
		DF_WeiDiao();
		sstts.speak((String((String((String("[i1]") + String(mind_s_ShengMu))) + String(mind_s_YunMu))) + String(mind_s_ShengDiao)));
		mind_s_WenBen = (String((String((String(mind_s_WenBen) + String(mind_s_ShengMu))) + String(mind_s_YunMu))) + String(mind_s_ShengDiao));
		mind_s_ShengMu = "";
		mind_s_YunMu = "";
		mind_s_ShengDiao = "";
	}
}


// 自定义函数
void DF_ShengYunMuPanDuan() {
	if ((mind_n_ShuZhi==110000)) {
		mind_s_ShengMu = "b";
	}
	if ((mind_n_ShuZhi==111100)) {
		mind_s_ShengMu = "p";
	}
	if ((mind_n_ShuZhi==101100)) {
		mind_s_ShengMu = "m";
	}
	if ((mind_n_ShuZhi==110100)) {
		mind_s_ShengMu = "f";
	}
	if ((mind_n_ShuZhi==100110)) {
		mind_s_ShengMu = "d";
	}
	if ((mind_n_ShuZhi==11110)) {
		mind_s_ShengMu = "t";
	}
	if ((mind_n_ShuZhi==101110)) {
		mind_s_ShengMu = "n";
	}
	if ((mind_n_ShuZhi==111000)) {
		mind_s_ShengMu = "l";
	}
	if ((mind_n_ShuZhi==110110)) {
		mind_s_ShengMu = "g";
	}
	if ((mind_n_ShuZhi==101000)) {
		mind_s_ShengMu = "k";
	}
	if ((mind_n_ShuZhi==110010)) {
		mind_s_ShengMu = "h";
	}
	if ((mind_n_ShuZhi==1100)) {
		mind_s_ShengMu = "zh";
	}
	if ((mind_n_ShuZhi==111110)) {
		mind_s_ShengMu = "ch";
	}
	if ((mind_n_ShuZhi==100011)) {
		mind_s_ShengMu = "sh";
	}
	if ((mind_n_ShuZhi==10110)) {
		mind_s_ShengMu = "r";
	}
	if ((mind_n_ShuZhi==101011)) {
		mind_s_ShengMu = "z";
	}
	if ((mind_n_ShuZhi==100100)) {
		mind_s_ShengMu = "c";
	}
	if ((mind_n_ShuZhi==11100)) {
		mind_s_ShengMu = "s";
	}
	if ((mind_n_ShuZhi==1010)) {
		mind_s_YunMu = "a";
	}
	if ((mind_n_ShuZhi==10001)) {
		mind_s_YunMu = "e";
	}
	if ((mind_n_ShuZhi==10100)) {
		mind_s_YunMu = "i";
	}
	if ((mind_n_ShuZhi==101001)) {
		mind_s_YunMu = "u";
	}
	if ((mind_n_ShuZhi==1101)) {
		mind_s_YunMu = "v";
	}
	if ((mind_n_ShuZhi==10101)) {
		mind_s_YunMu = "ai";
	}
	if ((mind_n_ShuZhi==11101)) {
		mind_s_YunMu = "ei";
	}
	if ((mind_n_ShuZhi==10111)) {
		mind_s_YunMu = "ui";
	}
	if ((mind_n_ShuZhi==11010)) {
		mind_s_YunMu = "ao";
	}
	if ((mind_n_ShuZhi==111011)) {
		mind_s_YunMu = "ou";
	}
	if ((mind_n_ShuZhi==110011)) {
		mind_s_YunMu = "iu";
	}
	if ((mind_n_ShuZhi==100010)) {
		mind_s_YunMu = "ie";
	}
	if ((mind_n_ShuZhi==11111)) {
		mind_s_YunMu = "ue";
	}
	if ((mind_n_ShuZhi==111010)) {
		mind_s_YunMu = "er";
	}
	if ((mind_n_ShuZhi==111001)) {
		mind_s_YunMu = "an";
	}
	if ((mind_n_ShuZhi==1011)) {
		mind_s_YunMu = "en";
	}
	if ((mind_n_ShuZhi==110001)) {
		mind_s_YunMu = "in";
	}
	if ((mind_n_ShuZhi==10010)) {
		mind_s_YunMu = "un";
	}
	if ((mind_n_ShuZhi==111)) {
		mind_s_YunMu = "vn";
	}
	if ((mind_n_ShuZhi==11001)) {
		mind_s_YunMu = "ang";
	}
	if ((mind_n_ShuZhi==1111)) {
		mind_s_YunMu = "eng";
	}
	if ((mind_n_ShuZhi==1000001)) {
		mind_s_YunMu = "ing";
	}
	if ((mind_n_ShuZhi==10011)) {
		mind_s_YunMu = "ong";
	}
	if ((mind_n_ShuZhi==110101)) {
		mind_s_YunMu = "ia";
	}
	if ((mind_n_ShuZhi==1110)) {
		mind_s_YunMu = "iao";
	}
	if ((mind_n_ShuZhi==111111)) {
		mind_s_YunMu = "ua";
	}
	if ((mind_n_ShuZhi==101111)) {
		mind_s_YunMu = "uai";
	}
	if ((mind_n_ShuZhi==100101)) {
		mind_s_YunMu = "ian";
	}
	if ((mind_n_ShuZhi==101101)) {
		mind_s_YunMu = "iang";
	}
	if ((mind_n_ShuZhi==110111)) {
		mind_s_YunMu = "uan";
	}
	if ((mind_n_ShuZhi==11011)) {
		mind_s_YunMu = "uang";
	}
	if ((mind_n_ShuZhi==11011)) {
		mind_s_YunMu = "van";
	}
	if ((mind_n_ShuZhi==100111)) {
		mind_s_YunMu = "iong";
	}
	if ((mind_n_ShuZhi==100000)) {
		mind_s_ShengDiao = "1";
	}
	if ((mind_n_ShuZhi==10000)) {
		mind_s_ShengDiao = "2";
	}
	if ((mind_n_ShuZhi==1000)) {
		mind_s_ShengDiao = "3";
	}
	if ((mind_n_ShuZhi==11000)) {
		mind_s_ShengDiao = "4";
	}
	display.setCursorLine(1);
	display.printLine(mind_s_ShengMu);
	display.setCursorLine(2);
	display.printLine(mind_s_YunMu);
	display.setCursorLine(3);
	display.printLine(mind_s_ShengDiao);
	display.setCursorLine(4);
	display.printLine((String((String(mind_s_ShengMu) + String(mind_s_YunMu))) + String(mind_s_ShengDiao)));
}
void DF_WeiDiao() {
	if (((mind_s_ShengMu==String("zh")) && (mind_s_YunMu==0))) {
		mind_s_ShengMu = "zhi";
	}
	if (((mind_s_ShengMu==String("ch")) && (mind_s_YunMu==0))) {
		mind_s_ShengMu = "chi";
	}
	if (((mind_s_ShengMu==String("sh")) && (mind_s_YunMu==0))) {
		mind_s_ShengMu = "shi";
	}
	if (((mind_s_ShengMu==String("r")) && (mind_s_YunMu==0))) {
		mind_s_ShengMu = "ri";
	}
	if (((mind_s_ShengMu==String("z")) && (mind_s_YunMu==0))) {
		mind_s_ShengMu = "zi";
	}
	if (((mind_s_ShengMu==String("c")) && (mind_s_YunMu==0))) {
		mind_s_ShengMu = "ci";
	}
	if (((mind_s_ShengMu==String("s")) && (mind_s_YunMu==0))) {
		mind_s_ShengMu = "si";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("iong")))) {
		mind_s_YunMu = "yong";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("ong")))) {
		mind_s_YunMu = "weng";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("un")))) {
		mind_s_YunMu = "wen";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("uang")))) {
		mind_s_YunMu = "wang";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("uan")))) {
		mind_s_YunMu = "wan";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("ing")))) {
		mind_s_YunMu = "ying";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("in")))) {
		mind_s_YunMu = "yin";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("iang")))) {
		mind_s_YunMu = "yang";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("ian")))) {
		mind_s_YunMu = "yan";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("ue")))) {
		mind_s_YunMu = "yue";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("uo")))) {
		mind_s_YunMu = "wo";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("ui")))) {
		mind_s_YunMu = "wei";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("uai")))) {
		mind_s_YunMu = "wai";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("ua")))) {
		mind_s_YunMu = "wa";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("iu")))) {
		mind_s_YunMu = "you";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("ie")))) {
		mind_s_YunMu = "ye";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("iao")))) {
		mind_s_YunMu = "yao";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("ia")))) {
		mind_s_YunMu = "ya";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("v")))) {
		mind_s_YunMu = "yu";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("u")))) {
		mind_s_YunMu = "wu";
	}
	if (((mind_s_ShengMu==0) && (mind_s_YunMu==String("i")))) {
		mind_s_YunMu = "yi";
	}
	if (((mind_s_ShengMu==String("m")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("d")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("t")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("n")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("l")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("g")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("k")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("h")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("r")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("z")) && (0==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("c")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("s")) && (mind_s_YunMu==String("o")))) {
		mind_s_YunMu = "e";
	}
	if (((mind_s_ShengMu==String("g")) && (mind_s_YunMu==String("in")))) {
		mind_s_ShengMu = "j";
	}
}
void DF_ChuMoPanDuan() {
	DF_HuoQuZhuangTai();
	delay(200);
	DF_HuoQuShuZhi();
	if ((mind_n_ShuZhi==mind_n_ZhuangTai)) {
		DF_ShengYunMuPanDuan();
		while (!(!(mind_n_ShuZhi==mind_n_ZhuangTai))) {
			DF_HuoQuZhuangTai();
			yield();
		}
	}
}
void DF_HuoQuShuZhi() {
	mind_n_ShuZhi = 0;
	if ((digitalRead(P13))) {
		mind_n_ShuZhi += 100000;
	}
	if ((digitalRead(P14))) {
		mind_n_ShuZhi += 10000;
	}
	if ((digitalRead(P15))) {
		mind_n_ShuZhi += 1000;
	}
	if ((digitalRead(P1))) {
		mind_n_ShuZhi += 100;
	}
	if ((digitalRead(P6))) {
		mind_n_ShuZhi += 10;
	}
	if ((digitalRead(P7))) {
		mind_n_ShuZhi += 1;
	}
}
void DF_HuoQuZhuangTai() {
	mind_n_ZhuangTai = 0;
	if ((digitalRead(P13))) {
		mind_n_ZhuangTai += 100000;
	}
	if ((digitalRead(P14))) {
		mind_n_ZhuangTai += 10000;
	}
	if ((digitalRead(P15))) {
		mind_n_ZhuangTai += 1000;
	}
	if ((digitalRead(P1))) {
		mind_n_ZhuangTai += 100;
	}
	if ((digitalRead(P6))) {
		mind_n_ZhuangTai += 10;
	}
	if ((digitalRead(P7))) {
		mind_n_ZhuangTai += 1;
	}
}
步骤7 视频演示
附件
icon 薛辙、李欣翰-盲文练习助手.zip 714KB
下载
队伍名称 雏鹰一队 参赛组别 初中
参赛学生 薛辙 南京师范大学附属中学江宁分校 李欣翰 南京市高淳区第一中学
指导老师
陶言成 江苏意若思科技有限公司
指导老师
程奥 江苏意若思科技有限公司