码迷,mamicode.com
首页 > 其他好文 > 详细

(原创)天气又转热了,我给她做了个智能小风扇

时间:2014-09-29 01:27:46      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   color   ar   strong   for   sp   

黄花深巷,

红叶低窗,

凄凉一片秋声。

豆雨声来,

中间夹带风声。

疏疏二十五点,

丽谯门、不锁更声。

故人远,

问谁摇玉佩,

檐底铃声。

彩角声吹月堕,

渐连营马动,

四起笳声。

闪烁邻灯,

灯前尚有砧声。

知他诉愁到晓,

碎哝哝、多少蛩声。

诉未了,把一半、分与雁声。

一首短诗《声声慢 秋声》献与大家。蒋捷的这首短诗共96字,其中有十个“声”字;其通过风声、雨声、更声、铃声、笳声、砧声、蛩声、雁声来形容秋天的到来,颇有节奏感。

一直颇喜欢古典诗词,怎奈天赋不佳,至今连完整的四言诗都木写出来过……哎……不提伤心往事了……五音不全不能阻止我喜爱音乐,不能作诗亦不能阻止我爱诗哒!!记得小时候在乡间,对四季的变化非常敏锐,树枝张新芽了,知春来了;知了叫了,知夏来了,树叶黄了,知秋来了;雪花飘了,知深冬了。如今,生活在钢筋水泥之间,对季节的感觉淡漠了,似乎是麻木了,唯一触发人知觉的只有温度,冷了暖气,热了风扇/空调;对于季节的感受全然变了被遗弃的孩子,尽管它在冬天里猛力的哭号,也没有多少人能听见……向往古人感受季节的敏锐……

……

我这是说哪去了呢……哎……情不自禁啊……大家谅解……

话说,长沙天气的热是出了名的,四大火炉之一啊!只是今年天气有点异常,只有在7月热了一小段时间,后面一直是清凉气爽的天!!!在这样的天气下,舒服地过了几个月后(咱家席子都换成被子了),现在又突然变热,大家都有点不适应,GF表现得尤为突出。坐一会就焦躁不安地站起来,说热死了,热死了,显得燥热难耐的样子(她本身散热面积就挺大,不知为啥比我还热……)。好吧,那就开风扇吧,可没吹多久,又说这风吹着不舒服,风大了点还冷。额……,这可是开得最小档啊!为了让GF乖乖的做在我旁边陪我写代码(当然她可以用手机玩游戏),我试着用技术来解决这个问题……

学技术,去哪里,当然是山东蓝翔啊,哈哈……开个玩笑,最近关于蓝翔的段子还真不少,咱就不跟这个风了。 咱可是程序员,用一现有技术拼凑(高大上的说法是集成)就能解决问题好不。下面就说说我要做的智能风扇的功能吧:

1、  风速无级调节

2、  手机控制风扇开关及风速

3、  语音控制风扇开关及风速(能够根据语义进行智能控制)

4、  通过检测皮肤的温湿度控制风扇开关及风速(手环啊)

要做的功能确定了,那就设计方案和准备材料吧。

硬件

1、风扇

bubuko.com,布布扣

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7寸大号丝雨usb电风扇,用着好用就帮人家推荐下(塑料的,轻,便宜),这是我做人的原则

 

2、主控板

bubuko.com,布布扣

拿着师弟做的带WiFi功能的Arduino板子,不给钱的,光线暗拍着不好看,其实做的还蛮精致的。

bubuko.com,布布扣

 

3、  控制接口电路

通过主控板pwm输出控制电源给风扇供电,用万用板焊接好后如下
bubuko.com,布布扣

 

 

 

 

 

 

 

 

 

 

 

 

3、  手机

bubuko.com,布布扣

如果配送这个手机的话,风扇应该会被扔掉,所以坚决不用这种档次的手机。

 

3、  手环

听说又要变天了,为了在天气变凉前把风扇做出来,这个还是在第二版再做吧。

软件

1、  Arduino IDE编程

是的,控制端的程序我就是用arduino写的,你们就尽情的鄙视我吧。

bubuko.com,布布扣

而且关于pwm调节只要这么一条语句就实现了哦。

analogWrite( 7 , hp*25 );

  

2、  Alljoyn通信

用Alljoyn完全是为了装逼,可以对别人吹牛说,我的风扇里用了最先进的物联网技术,其实用tcp通信就能实现。

主控板端Alljoyn接口代码:

static const char* const testInterface[] = {
    "org.alljoyn.sample.ledcontroller",
    "?Flash msec<u",
    "?On",
    "?Off",
    NULL
};

  

3、  科大飞讯语音引擎

大家用着都说好,我试了下,果然不错!科大飞讯,中国人都用它。

语音识别关键部分代码:

private InitListener mInitListener = new InitListener() {

		@Override
		public void onInit(int code) {
			Log.d(TAG, "SpeechRecognizer init() code = " + code);
        	if (code == ErrorCode.SUCCESS) {
        		findViewById(R.id.isr_recognize).setEnabled(true);
        	}
		}
    };
    	

	/**
     * 构建语法监听器。
     */
	private GrammarListener grammarListener = new GrammarListener() {
		@Override
		public void onBuildFinish(String grammarId, SpeechError error) {
			if(error == null){
				String grammarID = new String(grammarId);
				Editor editor = mSharedPreferences.edit();
				if(!TextUtils.isEmpty(grammarId))
					editor.putString(KEY_GRAMMAR_ABNF_ID, grammarID);
				editor.commit();
				showTip("语法构建成功:" + grammarId);
			}else{
				showTip("语法构建失败,错误码:" + error.getErrorCode());
			}			
		}
	};
	
	/**
     * 识别监听器。
     */
    private RecognizerListener mRecognizerListener = new RecognizerListener() {
        
        @Override
        public void onVolumeChanged(int volume) {
        	showTip("当前正在说话,音量大小:" + volume);
        }
        
        @Override
        public void onResult(final RecognizerResult result, boolean isLast) {
        	runOnUiThread(new Runnable() {
				@Override
				public void run() {
					if (null != result) {
						Log.d(TAG, "recognizer result:" + result.getResultString());
						String text = "";
						if(mEngineType.equals(SpeechConstant.TYPE_CLOUD))
						{
							//解析云端结果
							text = JsonParser.parseGrammarResult(result.getResultString());
						}else {
							//解析本地结果
							text = XmlParser.parseNluResult(result.getResultString());
						}
		            	// 显示
						//((EditText)findViewById(R.id.isr_text)).setText(text);   
						
						//分析识别结果
						Boolean analyzeRelult = analyzeWords(text);
						
						//发送控制指令
						if(analyzeRelult)
						{
							controlFan(mWindLevel);
						}
						
						
		            } else {
		                Log.d(TAG, "recognizer result : null");
		            }	
					SystemClock.sleep(100);
					//下一次语音识别
					Button recognizeButton = (Button)findViewById(R.id.isr_recognize);
					 
					recognizeButton.performClick();
				}
			});
            
        }
        
        @Override
        public void onEndOfSpeech() {
        	showTip("结束说话");
        	   
        }
        
        @Override
        public void onBeginOfSpeech() {
        	showTip("开始说话");
        }

		@Override
		public void onError(SpeechError error) {
			showTip("onError Code:"	+ error.getErrorCode());
			SystemClock.sleep(100);
			//下一次语音识别
			Button recognizeButton = (Button)findViewById(R.id.isr_recognize);
			 
			recognizeButton.performClick();
		}

		@Override
		public void onEvent(int eventType, int arg1, int agr2, String msg) {
		}
    };

  

4、  Android

做出来手机软件界面是这样的

bubuko.com,布布扣

 

结果

我最初想做出来的智能风扇应该是这样的:

bubuko.com,布布扣

但事实上做出来却是这样的:

bubuko.com,布布扣

至于具体功能怎么样,我晚点上视频。至于GF用着什么反应,这个……

 

 欢迎转载,请保留博客园原创连接。

(原创)天气又转热了,我给她做了个智能小风扇

标签:android   style   blog   http   color   ar   strong   for   sp   

原文地址:http://www.cnblogs.com/alljoyn/p/3999122.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!