查看: 649|回复: 1

[项目] 虚拟与现实 当我的世界遇上你的世界

[复制链接]
  • TA的每日心情
    开心
    2018-3-23 19:49
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-3-22 12:05 | 显示全部楼层 |阅读模式
    本帖最后由 hongzailalala 于 2019-4-30 19:18 编辑

    我的世界智能家居系统!

    在最后我还是决定搞一个有特色的东西~

    这是一款基于Arduino UNO R3开发板的我的世界智能家居控制器,在传统的搭建上,我们需要购买零件,还有在搭建中的各种危险,比如(触电,被电烙铁烧到,短路,甚至爆炸!像这样)
    在功能上,我们通过指纹模块打开我们的Arduino大门,通过433M无线模块,远程打开我的世界窗口,电灯!

    10586038198644533598.jpg

    所以我把测试智能家居的部分放到了游戏里面,这样就可以扩展更多的东西!你们也知道我的世界里啥都有的对吧:lol


    接下来介绍一下游戏端

    大厅(电路部分是暗线噢~)

    建筑水平有限了啦,毕竟是打代码的,审美不行:(

    QQ截图20190419124021.png

    房间

    QQ截图20190419124042.png

    还没有埋的暗线(也能说是一张电路图!)

    QQ截图20190419123934.png

    然后我们封装我们的电路,简化系统,引出七条线(大门,窗户,房间灯,客厅灯,墙壁装饰灯,雨雪传感器,阳光传感器)

    QQ截图20190420010518.png

    进行与Arduino的接入,通过我们的UART协议进行通讯!

    QQ截图20190430141732.png

    封顶完成!就和普通的房子一般!功能却大大滴!

    QQ截图20190430142022.png
    到我们的Arduino代码,主要是指纹模块的处理,还有433M的获取,和我的世界通讯也有关键字,也可以说是通讯协议吧

    [pre]#include <Adafruit_Fingerprint.h>
    #include <TimerOne.h>
    
    SoftwareSerial mySerial(10, 11);
    
    Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
    
    int key1 = 6;
    int key2 = 7;
    int key3 = 8;
    int key4 = 9;//433M模块
    
    int a = 0;//定时器用
    
    void timerIsr()//定时器
    {
       a++;
    }
    
    void setup()  
    {
      Timer1.initialize(1000000); // set a timer of length 100000 microseconds (or 1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
      Timer1.attachInterrupt( timerIsr ); // attach the service routine here
      pinMode(key1,INPUT_PULLUP);
      pinMode(key2,INPUT_PULLUP);
      pinMode(key3,INPUT_PULLUP);
      pinMode(key4,INPUT_PULLUP);
      Serial.begin(9600);
      while (!Serial);  // For Yun/Leo/Micro/Zero/...
      delay(100);
      Serial.println("\n\nAdafruit finger detect test");
    
      // set the data rate for the sensor serial port
      finger.begin(57600);
      
      if (finger.verifyPassword()) {
        Serial.println("Found fingerprint sensor!");
      } else {
        Serial.println("Did not find fingerprint sensor :(");
        while (1) { delay(1); }
      }
    
      finger.getTemplateCount();
      Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
      Serial.println("Waiting for valid finger...");
    }
    
    void control()//控制函数
    {
      if(digitalRead(key1) == HIGH)//有按下
      {
        Serial.println("redstone 15 7");//让我的世界串口红石块激活
        Serial.println("redstone 0 8");//关闭二号红石块
        }
      if(digitalRead(key2) == HIGH)//有按下
      {
        Serial.println("redstone 15 8");//让我的世界串口红石块激活
        Serial.println("redstone 0 7");//关闭二号红石块
        }
      if(digitalRead(key3) == HIGH)//有按下
      {
        Serial.println("redstone 15 9");//让我的世界串口红石块激活
        Serial.println("redstone 0 10");//关闭二号红石块
        }
      if(digitalRead(key4) == HIGH)//有按下
      {
        Serial.println("redstone 15 10");//让我的世界串口红石块激活
        Serial.println("redstone 0 9");//关闭二号红石块
        }
      }
      
    void ZW()//指纹模块
    {
      int dat = getFingerprintIDez();
      if (dat != -1) //读取到指纹
      {
        Serial.println("redstone 15 1");//让我的世界串口红石块激活
        Serial.println("redstone 0 2");//关闭二号红石块
        a = 0;
      }else
      {
        if(a > 5)//时间大于五秒
        {
        Serial.println("redstone 15 2");//让我的世界串口红石块激活
        Serial.println("redstone 0 1");//关1号红石块
        }
        }
    }
    
    void loop()                     // run over and over again
    {
      ZW();//指纹模块
      control();//控制函数
    }
    
    uint8_t getFingerprintID() {
      uint8_t p = finger.getImage();
      switch (p) {
        case FINGERPRINT_OK:
          Serial.println("Image taken");
          break;
        case FINGERPRINT_NOFINGER:
          Serial.println("No finger detected");
          return p;
        case FINGERPRINT_PACKETRECIEVEERR:
          Serial.println("Communication error");
          return p;
        case FINGERPRINT_IMAGEFAIL:
          Serial.println("Imaging error");
          return p;
        default:
          Serial.println("Unknown error");
          return p;
      }
    
      // OK success!
    
      p = finger.image2Tz();
      switch (p) {
        case FINGERPRINT_OK:
          Serial.println("Image converted");
          break;
        case FINGERPRINT_IMAGEMESS:
          Serial.println("Image too messy");
          return p;
        case FINGERPRINT_PACKETRECIEVEERR:
          Serial.println("Communication error");
          return p;
        case FINGERPRINT_FEATUREFAIL:
          Serial.println("Could not find fingerprint features");
          return p;
        case FINGERPRINT_INVALIDIMAGE:
          Serial.println("Could not find fingerprint features");
          return p;
        default:
          Serial.println("Unknown error");
          return p;
      }
      
      // OK converted!
      p = finger.fingerFastSearch();
      if (p == FINGERPRINT_OK) {
        Serial.println("Found a print match!");
      } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
        Serial.println("Communication error");
        return p;
      } else if (p == FINGERPRINT_NOTFOUND) {
        Serial.println("Did not find a match");
        return p;
      } else {
        Serial.println("Unknown error");
        return p;
      }   
      
      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID); 
      Serial.print(" with confidence of "); Serial.println(finger.confidence); 
    
      return finger.fingerID;
    }
    
    // returns -1 if failed, otherwise returns ID #
    int getFingerprintIDez() {
      uint8_t p = finger.getImage();
      if (p != FINGERPRINT_OK)  return -1;
    
      p = finger.image2Tz();
      if (p != FINGERPRINT_OK)  return -1;
    
      p = finger.fingerFastSearch();
      if (p != FINGERPRINT_OK)  return -1;
      
      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID); 
      Serial.print(" with confidence of "); Serial.println(finger.confidence);
      return finger.fingerID; 
    }
    [/pre]

    最后我们就可以根据游戏世界里面的设计开始设计电路,看看能否是实现自己喜欢的功能~

    效果视频

    一分也是爱~
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    Blink——Arduino的Hello World!
    Blink——Arduino的Hello
    本教程节选自《Arduino程序设计基础》 Arduino编程基础(零)——Blink,Arduino的He
    ATmega2560-16AU刷BootLoader好慢
    ATmega2560-16AU刷BootLoa
    各位朋友,ATmega2560-16AU刷BootLoader好慢,有没有比较快的办法,一块板子要5分钟左
    【Arduino】108种传感器模块系列实验(104)---MAX30102手腕心率
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表