Съдържание:

Мониторинг на интелигентен дом с помощта на Alexa и Arduino: 9 стъпки (със снимки)
Мониторинг на интелигентен дом с помощта на Alexa и Arduino: 9 стъпки (със снимки)

Видео: Мониторинг на интелигентен дом с помощта на Alexa и Arduino: 9 стъпки (със снимки)

Видео: Мониторинг на интелигентен дом с помощта на Alexa и Arduino: 9 стъпки (със снимки)
Видео: BroadLink RM4 mini - IR контролер за умен дом, заместител на дистанционно управление 2024, Ноември
Anonim
Image
Image
Събиране на материалите
Събиране на материалите

В днешния свят хората прекарват повече време на работното място, а не в домовете си. Следователно има нужда от домашна система за наблюдение, където хората могат да се запознаят с условията на къщата, докато са на работа. Би било още по -добре, ако човек може просто да попита „някой“за дома си в работно време. Това може да се постигне, като се използва Amazon Alexa като помощник, който може да даде на потребителя необходимата информация за дома им.

Не само работно място, потребителите могат да се запознаят със състоянието на къщата на всяко място по света, стига да имат интернет връзка и Amazon Alexa.

В този проект са изпълнени следните функции:

1) Контролирайте домакинските устройства като вентилатор и светлина

2) Разказва състоянието на устройствата

3) Разказва за метеорологичните условия на къщата (температура и влажност)

4) Изпраща моментна снимка на интериора на къщата на потребителя чрез Gmail, когато е необходимо.

5) Изпраща известие в случай на -

* Натрапник (изпраща и снимка)

* Пожар

* Гост (изпраща и снимка)

Стъпка 1: Събиране на материалите

Събиране на материалите
Събиране на материалите
Събиране на материалите
Събиране на материалите
Събиране на материалите
Събиране на материалите

Необходими материали

Arduino Uno

ESP8266 Wifi модул

Linkit Smart 7688 Duo

DHT11

Релета

IR сензор за препятствия

Уебкамера

Amazon Echo Dot

Проводни платки и джъмпери

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

Thingspeak.com

Arduino IDE

Комплект от умения на Amazon Alexa

Amazon Alexa Echosim.io (за умения за тестване)

Без гръб

PushingBox

Стъпка 2: Програмиране на Arduino и ESP8266

Програмиране на Arduino и ESP8266
Програмиране на Arduino и ESP8266
Програмиране на Arduino и ESP8266
Програмиране на Arduino и ESP8266

Изтеглете Arduino IDE от официалния уебсайт:

Отворете Arduino IDE и отидете на файл-> предпочитания-> в допълнителен тип URL адрес на мениджъра на платката-https://arduino.esp8266.com/stable/package_esp8266…

Отидете на инструменти -> дъски -> Board Manager и инсталирайте най -накрая намерения пакет esp8266.

За да програмирате arduino, просто включете USB кабела от arduino към компютъра и изберете Arduino/Genuino UNO в инструменти-> дъски. Също така се уверете, че сте избрали права COM портове в Инструменти (номерът на COM порта може да бъде намерен в Мениджър на устройства). Напишете необходимата програма, компилирайте я и щракнете върху качване, ако няма грешки.

За да програмирате ESP8266, направете връзката, както е показано на диаграмата. свържете usb от arduino към компютър. В Tools-> board-> изберете Generic ESP8266 и също изберете десния COM порт. Напишете необходимата програма, компилирайте я и щракнете върху качване, ако няма грешки. Уверете се, че сте свързали Arduino RST към GND (arduino действа като програмист към ESP8266).

В този проект първо се програмира ESP8266 и след това връзките на веригата се премахват. След това веригата се свързва отново, както е показано на фигурата, наречена "Връзки на веригата". И тогава arduino се програмира.

Стъпка 3: Конфигуриране на Thingspeak.com

Конфигуриране на Thingspeak.com
Конфигуриране на Thingspeak.com

Създайте акаунт в thingspeak.com.

ние използваме канали в Thingspeak, за да съхраняваме контролната информация за устройството и да я насочваме към arduino/alexa. съхраняваме и стойностите на температурата и влажността в каналите. Това е като място за съхранение на информацията.

Влезте в Thingspeak, отидете на каналите ми канали и създайте нов канал. Дайте име и описание на каналите си. В нашия проект имаме нужда от 8 канала (можете да свършите работата, като използвате по -малко канали, но това ще бъде малко сложно при програмиране). Също така thingspeak има ограничение във времето при актуализиране на канал. Между последователното актуализиране на определен канал трябва да има интервал от 10-15 секунди.

По -долу са дадени осем канала с техните стойности и значение

име на канал (стойност1-значение, стойност2-значение и т.н.):

1) Контрол на устройството (0 -lightON, 1- lightOff, 2- вентилатор ON, 3- вентилатор изключен)

2) състояние на светлината (0- лампата е изключена, 1- светлината е включена)

3) състояние на вентилатора (0- вентилатор изключен, 1 вентилатор включен)

4) влажност (стойност на влажността)

5) температура (стойност на температурата)

6) известие за нарушител (1 сигнал за нарушител)

7) известие за пожар (1 сигнал за пожар)

8) известие за гости (1- предупреждение за гост)

когато щракнете върху който и да е канал, можете да видите неговия идентификатор на канал и да напишете API ключове в раздела API ключове. Идентификаторът на канала е необходим за получаване на информацията/ стойността в канала. И ключът за запис е необходим за съхраняване на стойност в канала.

http заявката за актуализиране на канал е:

api.thingspeak.com/update?api_key=&field1=

се заменя със съответните клавиши за запис на канала и може да бъде (0/1 в случай на управление на устройството или стойности на температура/влажност)

http заявката за четене на стойност от канал е:

api.thingspeak.com/channels//field/field1/last.html

се заменя с конкретния идентификационен номер на канала, от който искаме да четем.

Стъпка 4: Програмата

Програмата е разделена на 3 части:

А) Програма за Arduino: Програмата за arduino е много проста. Той получава данните от ESP8266 последователно и въз основа на получените данни устройствата се контролират. Повече информация за програмата можете да намерите в коментарите в самата програма.

Б) Програма за ESP8266: Програмата за ESP8266 включва 3 неща

1) актуализиране на температурата и влажността чрез http заявка

client.print (String ("GET") + "/update? key = & field1 =" + влажност + "HTTP/1.1 / r / n" + "Хост:" + хост + "\ r / n" + "Връзка: затвори / r / n / r / n "); // актуализиране на влажността

client.print (String ("GET") + "/update? key = & field1 =" + температура + "HTTP/1.1 / r / n" + "Хост:" + хост + "\ r / n" + "Връзка: затваряне / r / n / r / n "); // актуализиране на температурата

той се заменя със съответния ключ за запис, който се намира в канала на говорител за съответно влажност и температура. а хостът е api.thingspeak.com.

изтеглете dht библиотека от:

2) четене от съответните канали на говорител и контролиращо устройство въз основа на получените стойности: client.print (String ("GET") + "/channels//field/field1/last.html HTTP/1.1 / r / n" + " Хост: " + хост +" / r / n " +" Връзка: затваряне / r / n / r / n ");

където се заменя със съответния идентификатор на канал, намерен в thingspeak.

3) Изпращане на предупреждение в случай на висока температура чрез бутане

Низ host1 = "api.pushingbox.com";

client.print (String ("GET") + "/pushingbox? devid = HTTP/1.1 / r / n" + "Host:" + host1 + "\ r / n" + "Връзка: затваряне / r / n / r \н");

където се заменя с идентификатора на вашето устройство в pushbox.

Стъпка 5: Конфигуриране на Linkit Smart 7688 Duo и уеб камера

Конфигуриране на Linkit Smart 7688 Duo и уеб камера
Конфигуриране на Linkit Smart 7688 Duo и уеб камера
Конфигуриране на Linkit Smart 7688 Duo и уеб камера
Конфигуриране на Linkit Smart 7688 Duo и уеб камера
Конфигуриране на Linkit Smart 7688 Duo и уеб камера
Конфигуриране на Linkit Smart 7688 Duo и уеб камера

В този проект уеб камера и linkit smart 7688 duo се използват за заснемане на необходимата снимка и изпращането й до потребителя. Можете също да използвате модул за камера arduino и да го свържете с arduino или да използвате всяка IP камера.

Натиснете и задръжте бутона wifi на linkit smart 7688 за 20 секунди, за да нулирате платката. След като нулирате настройката за wifi, ще можете да видите името на точката за достъп в безжичните мрежови връзки. Сега свържете компютъра към тази мрежа. след като го свържете, отворете браузъра и въведете 192.168.100.1 в адресната лента. Ще можете да видите неговия портал. задайте парола, за да влезете в нейния портал.

След като влезете, отидете в раздела мрежа и изберете Режим на станция (имаме нужда от него (linkit smart 7688 duo) за достъп до интернет) и го свържете към вашата Wifi мрежа и натиснете Конфигуриране и рестартиране.

След рестартирането на платката ще й бъде присвоен локален IP адрес. Разберете адреса, като използвате всички IP инструменти или портала на вашия рутер. В моя случай беше 192.168.1.4. Сега въведете локалния IP адрес в адресната лента на браузъра. уверете се, че компютърът е свързан към същата мрежа като linkit smart. Ще бъдете помолени да влезете отново.

За да активирате стрийминг от уеб камера, трябва да активирате-j.webp

След като влезете, отидете в раздела за услуги и проверете активирането на-j.webp

След настройката можете да свържете вашата уеб камера към usb хост linkit smart 7688 duo usb чрез OTG кабел. Сега, за да видите потока, отворете браузъра и напишете: в адресната лента. в моя случай е 192.168.1.4:4400

за да направите snap shot въведете командата:? action = snapshot

Сега това изображение е достъпно локално, но трябва да го направим достъпно за услугата push box. За да постигнем това, трябва да направим пренасочване на портове. Пренасочването на портове може да се извърши в портала на рутера. Идентификаторът на процеса е различен за различните рутери. Просто потърсете в Google, за да знаете как да пренасочите за конкретен рутер. Обикновено се предлага под услугата NAT. След като пренасочите порт, използването може да получи достъп до този порт (т.е… 4440) от вашия външен IP. Външният IP адрес може да бъде намерен, като свържете „whats my ip“в google.

Трябва да посочите този адрес

т.е… https://::? action = snapshot

в pushhingbox (което е обяснено в следващата стъпка), така че pushingbox да има достъп до това изображение и да го прикачи към пощата и да ви го изпрати, когато е необходимо.

Можете също да съхранявате изображението в sd карта, тъй като Linkit smart 7688 duo също идва със слот за sd карта за съхраняване на информация. Повече информация за това можете да намерите на:

docs.labs.mediatek.com/resource/linkit-sm…

Стъпка 6: Конфигуриране на PushingBox

Конфигуриране на PushingBox
Конфигуриране на PushingBox

pushingbox се използва за изпращане на известия за различни сигнали в проекта до gmail.

влезте в pushhingbox с Google акаунт:

отидете на моите услуги добавяне на услуга. има много услуги за избор, като Gmail, twitter, push известия за android и т.н.

изберете Gmail (тъй като трябва да изпратим снимка като прикачен файл) и попълнете подходящата конфигурация на име на gmail и gmail id на потребителя, на когото трябва да се изпрати предупреждението.

отидете на моите сценарии и създайте нов сценарий. дайте име на сценария (напр.: ALERT) добавете създадената по -рано услуга.

напишете подходящ предмет и текст на пощата и въведете url, за да направите екранна снимка на уеб камерата за прикачване на снимка. Създайте различни сценарии за различни сигнали.api за изпълнение на сценарий за натискане на кутия е:

Стъпка 7: Създаване на умение Alexa с помощта на Backendless

Създаване на умение Alexa с помощта на Backendless
Създаване на умение Alexa с помощта на Backendless
Създаване на умение Alexa с помощта на Backendless
Създаване на умение Alexa с помощта на Backendless
Създаване на умение Alexa с помощта на Backendless
Създаване на умение Alexa с помощта на Backendless

backendless се използва за създаване на умението alexa. Това е просто програмиране с плъзгане и пускане, използвано за създаване на умение alexa (или всякакви програми), до което може да се получи достъп без API.

създайте акаунт в backendless:

  • Влезте в акаунта си в акаунт без сървър. щракнете върху Създаване на приложение и дайте име на приложението си
  • Щракнете върху иконата Business Logic, разположена в лентата с икони вляво. Ще видите екрана API УСЛУГИ.
  • Щракнете върху иконата „+“, за да създадете нова услуга. Уверете се, че сте избрали CODELESS в изскачащия прозорец „Нова услуга“. Въведете „AlexaService“за името на услугата. Щракнете върху бутона ЗАПАЗВАНЕ:
  • Backendless създава API услугата и ще ви подкани да създадете метод за услугата. Това ще бъде методът, който ще обработва заявки от Alexa. Въведете “handleRequest” за името на метода. Уверете се, че сте избрали POST за операцията REST и декларирайте аргумент с името на „req“и въведете „Any Object“, както е показано:
  • Backendless създава заместител за кодираната логика на метода. Щракнете върху бутона РЕДАКТИРАНЕ, за да започнете превключването към Codeless Logic Designer. В създадения блок за заместители на функции щракнете върху областта, която казва „doSomething“и я променете на „sendAlexaResponse“. Тази функция се използва, за да накара Алекса да каже нещо, което може да бъде предадено като аргумент. Щракнете върху бутона ЗАПАЗВАНЕ, за да запазите функцията.
  • Щракнете върху иконата на зъбно колело, разположена в лилавия блок точно до думата „Функция“. Добавете два аргумента, като плъзнете входните блокове, както е показано на изображението по -долу. Задайте имената на аргументите като „whatToSay“и „waitForResponse“. Забележете, че докато добавяте аргументи, областта на контекстните блокове автоматично се попълва с блоковете, представляващи стойностите на аргументите.
  • Променете логиката на функцията, така че да изглежда като на изображението. За блоковете „Създаване на обекти“използвайте иконата на зъбно колело, за да промените името на свойствата на обекта. Не забравяйте да запазите работата си, като кликнете върху бутона ЗАПАЗВАНЕ.
  • Сега, когато персонализираната функция е изградена, преминете обратно към метода handleRequest на услугата AlexaService. Щракнете върху категорията Персонализирани функции в лентата с инструменти вляво и плъзнете блока sendAlexaResponse, за да се свържете с конектора за връщане на вашия метод на обслужване
  • Горните стъпки могат да бъдат намерени и на техния уебсайт:
  • Щракнете върху възела „Добавяне на нов“под Функции в секцията BROWSER. В създадения блок -заместител на функция щракнете върху областта, която казва „doSomething“и го променете на „getIntentName“, променете блоковете така, че функцията да изглежда като показаното изображение. ще получи името на намерението въз основа на примерни изказвания. Върнете се към api services-> handle request в секцията на браузъра. Променливи и логика се създават от системния раздел. Създайте следните променливи, показани на изображения.
  • след това съхраняваме името на намерението, за да поискаме променлива. И след това сравнете с намеренията. например, ако заявката е "въведение", тогава променливата за отговор е зададена на "здравей! Мога да контролирам …….". и този отговор най -сетне се чете на глас от Алекса. променете блока, както е показано.
  • ако заявката е с намерение LightsOn, тогава актуализираме канала на thingspeak на '0', като използваме http get request и в същото време актуализираме състоянието на устройството (1/0 в зависимост от On/Off). Същото се повтаря за LightsOff, FanOn и FanOff.
  • За времето четем от канала за температура и влажност и съхраняваме резултата в променливата response. Тъй като каналът дава само стойности, ние добавяме текстове, за да направим отговора смислен
  • за моментна снимка на хола изпълняваме сценария pushhingbox
  • за състоянието на устройството четем информация от канала за състоянието на thingspeak:
  • за известия и сигнали, които четем от канали за предупреждение (пожар, нарушител и гост):
  • въз основа на стойностите, които получаваме от полето за уведомяване, съответните предупредителни съобщения се съхраняват в променливата response0. ако няма известие, не се съхранява съобщение за известие.
  • след като известието бъде прочетено, „0“се актуализира в каналите за уведомяване, така че Алекса няма да прочете същото известие отново. Тогава най -сетне въз основа на заявката променливата response0/response се чете на глас.

Стъпка 8: Конфигуриране на Alexa Skill в конзолата за разработчици на Amazon:

Конфигуриране на Alexa Skill в конзолата за разработчици на Amazon
Конфигуриране на Alexa Skill в конзолата за разработчици на Amazon
Конфигуриране на Alexa Skill в конзолата за разработчици на Amazon
Конфигуриране на Alexa Skill в конзолата за разработчици на Amazon
Конфигуриране на Alexa Skill в Amazon Developer Console
Конфигуриране на Alexa Skill в Amazon Developer Console

отидете на конзолата за разработчици на Amazon и влезте с помощта на акаунт на Amazon.

отидете на конзолата за програмисти и щракнете върху раздела ALEXA. Кликнете върху комплекта за умения на alexa, за да започнете.

създайте персонализиран тип умение, дайте име и име на извикване на умението. съответните намерения и примерни изказвания са дадени в кода.

в раздела за конфигуриране изберете HTTPS като тип крайна точка на услуга, попълнете URL адреса по подразбиране с URL адреса на API от backendless. Изберете втората опция в Сертификат за крайна точка по подразбиране в SSL сертификата. Можете също да тествате уменията с помощта на симулатор за тестове.

След като тестът приключи, можете да публикувате умението с необходимата информация за публикуване.

Стъпка 9: Окончателна настройка и завършете

Окончателна настройка и завършване!
Окончателна настройка и завършване!
Окончателна настройка и завършване!
Окончателна настройка и завършване!

Направете свързване на веригата, както е показано.

Понякога ESP8266 ще се повреди поради недостатъчен ток. Така че, въпреки че не е споменато във веригата, се препоръчва да захранвате ESP8266 от отделен източник на 3.3v. Ако използвате банка за захранване, не забравяйте да намалите напрежението от 5v на 3.3v, като използвате регулатор на напрежението 3.3v. Качете програма до ESP8266 и arduino. Показах връзката с крушката, същото може да се разшири и до вентилатора или каквито и да е устройства. Накрая използвайте amazon echo или echosim.io, за да проверите уменията си.

Трябва да активирате умението, като използвате името на извикването (както е в моя случай - "myhome"). Понякога няма да работи, ако се използва без име на извикване, както съм показвал няколко пъти във видеоклипа си

Надявам се, че урокът ви е харесал!

Благодаря ти!

Препоръчано: