SmartHouse

Врата/Прозорец

В нашата къща серво мотора отваря и затваря вратите и прозорците.

В това ръководство ще ви покажем как да направите той да отваря и затваря прозорци и врати с гласови команди.

Хардуер

  • 1x Ардуино съвместим модул esp8266
  • 3x Проводника
  • 1x Серво мотор

Онлайн услуги и софтуер

  • Arduino IDE
  • Adafruit
  • IFTTT

Стъпки:

Стъпка 1:

Първо ще трябва да свържете пиновете на ардуиното към пиновете на Серво мотор, както е показано на схемата:
• Ардуино GND към Черният проводник на серво мотора
• Ардуино Пин D2 към Жълтия проводник на серво мотора
• Ардуино 3v3 към Червения проводник на серво мотора

Стъпка 2:

Следващата стъпка е да се влезнете в io.adafruit.com и да създадете нов feed с името servo.

Стъпка 3:

Ще трябва да създадете и нов Slider Block във вашия dashboard. Дайте му каквото име си искате, например: Servo.

Стъпка 4:

В Adafruit отиде на AIO key и копирайте вашия Active Key, ще ви трябва по-късно.

Стъпка 5:

Отворете нов ардуинo проект с името Servo. Отиде на file -> Preference. В полето „additional Boards Manager URLs“ въведете: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Стъпка 6:

В програмната среда на ардуино отиде на Tools -> Board -> Board Manager. Изберете ESP8266.

Стъпка 7:

В програмната среда на ардуино отиде на Tools -> Manage Libraries. Изберете Adafruit Io Arduino.

Стъпка 8:

Отворете File Explore и отворете папката на проекта. В нея създайте header файл с името config.h.

Стъпка 9:

Отвори програмната среда на Arduino. В нея се е появил един нов таб config.h. Отворете го и поставете следния код:


#define IO_USERNAME "твоето_потребителско_име"
#define IO_KEY      "твоят_ключ"

#define WIFI_SSID "твоят_ssid"
#define WIFI_PASS "твоята_парола_за_wifi"

#include "AdafruitIO_WiFi.h"

#if defined(USE_AIRLIFT) || defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE) || defined(ADAFRUIT_PYPORTAL)
#if !defined(SPIWIFI_SS) 
#define SPIWIFI SPI
#define SPIWIFI_SS 10 
#define NINA_ACK 9    
#define NINA_RESETN 6 
#define NINA_GPIO0 -1 
#endif
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS, SPIWIFI_SS, NINA_ACK, NINA_RESETN, NINA_GPIO0, &SPIWIFI);
#else
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
#endif
                
            

Стъпка 10:

Редактирайте кода като в полето „твоето потребителско име" сложете вашето потребителско име от adafruit, в „твоят ключ“ поставете ключа, който сте копирали по-рано, в „твоят_ssid“ поставете името на вашата мрежа, а в полето "твоята_парола_за_wifi" поставете паролата за мрежата.

Стъпка 11:

Отворете раздела Servo и поставете следни код:


    // Правим връзка с config.h файла
    #include "config.h"
    
    #include Servo.h>
    // сложете < на "Servo.h>"
    // дефинираме дигитален пин D2,
    // с който да контролираме серво мотора
    #define SERVO_PIN D2
    
    // Дефинираме servo от servo класа
    Servo servo;
    
    // Правим връзка с servo LED
    AdafruitIO_Feed *servo_feed = io.feed("servo");
    
    void setup() {
    
      // Започване на серейна комуникация 
      Serial.begin(115200);
    
      // изчакваме да се отвори серийния монитор
      while(! Serial);
    
      // tell the servo class which pin we are using
      servo.attach(SERVO_PIN);
    
      // свърваме се с io.adafruit.com
      Serial.print("Connecting to Adafruit IO");
      io.connect();
    
      // Настройваме функцията handleMessage,
      // която ще се извиква всеки път, когато
      // получим нова информация от adafruit
      servo_feed->onMessage(handleMessage);
    
      // Изчакваме да се свържим с adafruit
      while(io.status() < AIO_CONNECTED) {
        Serial.print(".");
        delay(500);
      }
    
      // Свързани сме
      Serial.println();
      Serial.println(io.statusText());
      servo_feed->get();
    
    }
    
    void loop() {
    
      // io.run() е функция, която трябва
      // да бъде винаги най-отгоре в loop,
      // тя отговаря за обмяната на данни
      // с adafruit
      io.run();
    
    }
    
    // Тази функция се извиква всеки път когата,
    // когата получим информация от adafruit
    void handleMessage(AdafruitIO_Data *data) {
    
      int angle = data->toInt();
    
      // застраговаме се, че серво моторя
      // няма да се отвори на повечеот 
      // 180 градуса
      if(angle < 0)
        angle = 0;
      else if(angle > 180)
        angle = 180;
    
      servo.write(angle);
    
    }
                               

                    

Стъпка 12:

Отворете www.ifttt.com и влезнете с вашия имейл. Кликнете върху профилната си снимка и изберете Create.
Внимание: Имейла трябва да бъде на Gmail и да е един и същи с този, с който сте влезли в Adafruit, за да може да използвате Google Assistant.

Стъпка 13:

Изберете “This”, потърсете “google assistant” и изберете “Say a simple phrase”. Въвеждате дума, при която да се активира Google Assistant, примерно „Open the window”. В отговор искате да Ви каже „OK”. Когато сте готови кликвате върху “Create trigger”.

Стъпка 14:

Изберете “That”, потърсете “Adafruit” и изберете “Send data to Adafruit IO”. Избирате „Servo Feed“ и на „Data to save” пишете “90”. Когато сте готови кликнете върху “Create action” и след това “Finish”.

Стъпка 15:

Отново кликнете върху профилната си снимка и изберете Create. След това изберете “This”, потърсете за “google assistant” и изберете “Say a simple phrase”. Въвеждате дума, при която да се активира Google Assistant, примерно „Close the window”. В отговор искате да Ви каже „OK”. Когато сте готови кликнете върху “Create trigger”.

Стъпка 16:

Изберете “That”, потърсете “Adafruit” и изберете “Send data to Adafruit IO”. Избирате „Servo Feed“ и на „Data to save” пишете “0”. Като сте готови кликнете върху “Create action” и след това “Finish”.

Стъпка 17:

Готово сте! Вече имате работещ серво мотор, който работи с гласови команди. Опитайте го