微信号:programmer_club

介绍:程序员第一自媒体,与你探讨码农人生路上遇到的各类泛技术话题,定期为你推荐码农人生思考、感悟以及启迪!

太热了,程序员为女朋友做了个智能小风扇

2016-06-26 21:58 程序员之家

来自:alljoyn物联网 - 博客园
作者:alljoyn
网址:http://www.cnblogs.com/alljoyn/p/3999122.html 

内容视频



黄花深巷,红叶低窗,凄凉一片秋声。

豆雨声来,中间夹带风声。

疏疏二十五点,丽谯门、不锁更声。

故人远,问谁摇玉佩,檐底铃声。

彩角声吹月堕,渐连营马动,四起笳声。

闪烁邻灯,灯前尚有砧声。

知他诉愁到晓,碎哝哝、多少蛩声。

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



一首短诗《声声慢 秋声》献与大家。如今,生活在钢筋水泥之间,对季节的感觉淡漠了,似乎是麻木了,唯一触发人知觉的只有温度,冷了暖气,热了风扇/空调;对于季节的感受全然变了被遗弃的孩子,尽管它在冬天里猛力的哭号,也没有多少人能听见……向往古人感受季节的敏锐……

……

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

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

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


下面就说说我要做的智能风扇的功能吧:

1、  风速无级调节

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

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

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

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

硬件

1、 风扇

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


2、主控板



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



3、  控制接口电路


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


4、  手机



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


5、  手环

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


软件


1、  Arduino IDE编程


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


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

analogWrite( 7 , hp*25 );


2、ALLJOYN通讯


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


主控板端Alljoyn接口代码:

static const charconst testInterface[] = { 

"org.alljoyn.sample.ledcontroller" ,
"?Flash msec<u" ,
"?On" ,
"?Off" ,
NULL
};


语音识别关键部分代码:

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


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



结果

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

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

至于具体功能怎么样,我晚点上视频。

看上面的视频,至于GF用着什么反应,这个……

程序员之家

programmer_club


▲长按二维码“识别”关注


了解野狗,点击阅读原文“报名”

 
程序员之家 更多文章 你知道你的电脑 1 秒钟能做多少事情吗? 深圳巨乳美女程序员再出黑科技,请文明观看! 为什么上帝是个程序员——从幂律分布说开去 XX主播第一次经历分享给大家! 【励志】程序员马铮,身残志不残!
猜您喜欢 干货:业务对数据需求的四大层次 Swift 烧脑体操(一) - Optional 的嵌套 教程序员泡妞 QCon 上海行(中) 当你买了一辆全车搭载Android操作系统的某侠电动汽车以后