Съдържание:

ESP32 Хъб за интелигентен дом: 11 стъпки
ESP32 Хъб за интелигентен дом: 11 стъпки

Видео: ESP32 Хъб за интелигентен дом: 11 стъпки

Видео: ESP32 Хъб за интелигентен дом: 11 стъпки
Видео: Zigbee LAN координатор HamGeek - китайский клон Zigstar c POE и USB C 2024, Ноември
Anonim
ESP32 Хъб за интелигентен дом
ESP32 Хъб за интелигентен дом
ESP32 Хъб за интелигентен дом
ESP32 Хъб за интелигентен дом
ESP32 Хъб за интелигентен дом
ESP32 Хъб за интелигентен дом
ESP32 Хъб за интелигентен дом
ESP32 Хъб за интелигентен дом

Създаването на система, която може да обработва големи количества сензорни данни, да има множество изходи и да се свързва с интернет или локална мрежа отнема много време и големи усилия. Твърде често хората, които искат да създадат свои собствени мрежи за интелигентен дом, се борят с възможността да намерят и сглобят персонализирани компоненти в по -голяма система. Ето защо исках да направя модулна и богата на функции платформа, която да улесни конструирането на свързани с IoT сензори и изходи.

Благодаря на DFRobot и PCBGOGO.com за спонсорирането на този проект!

За по-задълбочена информация посетете репо Github:

Консумативи

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • Сензор DHT22

    www.dfrobot.com/product-1102.html

  • APDS9960 Сензор за светлина и жестове

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD модул

    www.dfrobot.com/product-590.html

  • Аналогова RGB LED лента

    www.dfrobot.com/product-1829.html

  • Драйвери за стъпков двигател DRV8825
  • Четец на SD карти
  • Стъпкови двигатели NEMA17

Стъпка 1: Функции

Характеристика
Характеристика
Характеристика
Характеристика
Характеристика
Характеристика

Основната характеристика на тази платка е ESP32 FireBeetle Development Board, която обработва цялата комуникация, показанията на сензорите и изходите. Има два драйвера на стъпкови двигатели, които управляват два биполярни стъпкови двигателя.

I2C шината също е разбита за използване с компоненти като APDS9960 или LCD. За отчитане на температурата има счупени щифтове за свързване към DHT22 сензор, както и фоторезистор за отчитане на нивата на околната светлина.

Има поддръжка за аналогова светлинна лента на дъската, която има три MOSFET -а върху нея за задвижване на LED светлините.

Стъпка 2: ПХБ

Печатни платки
Печатни платки
Печатни платки
Печатни платки
Печатни платки
Печатни платки
Печатни платки
Печатни платки

Започнах процеса на проектиране на печатни платки, като първо създадох схема в Eagle. Тъй като не успях да намеря библиотека ESP32 FireBeetle, просто използвах вместо това два щифта 1x18 пинови заглавки. След това създадох схема за управление на захранването, която може да приема 12v през жак за постоянен ток и да я преобразува в 5v за захранване на сензорите и ESP32.

След като схемата беше завършена, преминах към проектирането на самата платка.

Знаех, че щепселът на DC барела ще трябва да бъде близо до предната част на платката, а кондензаторите за изглаждане на захранването от 100uF трябва да са близо до входовете за захранване на драйвера на стъпковия двигател. След като всичко беше изложено, започнах да трасирам следи.

Докато Oshpark произвежда висококачествени печатни платки, цените им са доста високи. За щастие, PCBGOGO.com също прави страхотни печатни платки на достъпна цена. Успях да купя десет платки само за $ 5, вместо да платя $ 52 само за три платки от Oshpark.com.

Стъпка 3: Монтаж

Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж

Като цяло сглобяването на дъската беше доста лесно. Започнах със запояване на повърхностно монтираните компоненти и след това прикрепих конектора и регулатора. След това запоявах в щифтовете за компоненти като драйверите на двигателя и FireBeetle.

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

Стъпка 4: Преглед на програмирането

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

Стъпка 5: Входове

Входове
Входове
Входове
Входове
Входове
Входове

За обработка на входове създадох клас, наречен „Hub_Inputs“, който позволява на домашния хъб да комуникира с APDS9960, заедно със създаването и управлението на бутони и капацитивните сензорни интерфейси. Той съдържа следните функции:

Бутон за създаване

Вземете, ако бутонът е натиснат

Вземете брой натискания на бутони

Вземете най -новия жест

Вземете капацитивна стойност на докосване

Бутоните се съхраняват като структура, с три атрибута: is_pressed, numberPresses и pin. Всеки бутон, когато е създаден, е прикрепен към прекъсване. Когато това прекъсване се задейства, рутинната услуга за прекъсване (ISR) се предава на показалеца на този бутон (даден като адрес на паметта в масива с бутони) и увеличава броя на натисканията на бутоните, заедно с актуализиране на булева стойност is_pressed.

Капацитивните стойности на докосване са много по -прости. Те се извличат чрез преминаване на сензорния щифт към функцията touchRead ().

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

Стъпка 6: Изходи

Изходи
Изходи
Изходи
Изходи
Изходи
Изходи

Хъбът за интелигентен дом разполага с няколко начина за извеждане на информация и смяна на светлините. Има щифтове, които разбиват I2C шината, позволявайки на потребителите да свържат LCD. Дотук се поддържа само един размер на LCD: 20 x 4. Използвайки функцията „hub.display_message ()“, потребителите могат да показват съобщения на LCD, като предават низов обект.

Има и заглавка на щифт за свързване на низ от аналогови светодиоди. Извикването на функцията „hub.set_led_strip (r, g, b)“, задава цвета на лентата.

Двата стъпкови двигателя се задвижват с помощта на чифт платки за драйвери DRV8825. Реших да използвам библиотеката BasicStepper за управление на управлението на двигателя. Когато платката се стартира, се създават два стъпкови обекта и двата двигателя се активират. За стъпване на всеки двигател се използва функцията „hub.step_motor (motor_id, steps)“, където id на двигателя е 0 или 1.

Стъпка 7: Регистриране

Дневник
Дневник
Дневник
Дневник
Дневник
Дневник

Тъй като дъската има няколко сензора, исках възможност за локално събиране и регистриране на данни.

За да започне регистрирането, се създава нов файл с „hub.create_log (име на файл, заглавка)“, където заглавката се използва за създаване на CSV файл, който обозначава колони. Първата колона винаги е времева отметка в Година Месец Ден Час: Мин: Формат на сек. За да получите времето, функцията hub.log_to_file () получава времето с функцията basic_functions.get_time (). След това структурата на времето tm се предава чрез справка във функцията за регистриране, заедно с данните и името на файла.

Стъпка 8: Звуков сигнал

Звуков сигнал
Звуков сигнал

Каква полза от платката за IoT, ако не можете да пускате музика? Ето защо включих зумер с функция за възпроизвеждане на звуци. Извикването на „hub.play_sounds (мелодия, продължителност, продължителност)“започва да възпроизвежда песен, като мелодията представлява масив от честоти на нотите, продължителността като масив от продължителността на нотите и дължината като броя на нотите.

Стъпка 9: Външни интеграции на IoT

Външни интеграции на IoT
Външни интеграции на IoT
Външни интеграции на IoT
Външни интеграции на IoT
Външни интеграции на IoT
Външни интеграции на IoT

Понастоящем хъбът поддържа уеб куки IFTTT. Те могат да бъдат задействани чрез извикване на функцията Hub_IoT.publish_webhook (url, data, event, key) или Hub_IoT.publish_webhook (url, data). Това изпраща POST заявка към дадения URL адрес с прикрепени данни, заедно с име на събитие, ако е необходимо. За да настроите примерна интеграция с IFTTT, първо създайте нов аплет. След това изберете услугата webhook, която се задейства при получаване на заявка.

След това извикайте събитието „high_temp“и го запазете. След това изберете услугата Gmail за частта „Това“и изберете опцията „Изпращане на имейл до мен“. В рамките на настройката за услугата поставете „Температурата е висока!“за обекта и след това поставям „Измерена температура от {{Value1}} на {{OccurredAt}}“, която показва измерената температура и времето, когато събитието е било задействано.

След като го настроите, просто поставете URL адреса на webhook, генериран от IFTTT, и поставете „high_temp“в секцията за събития.

Стъпка 10: Използване

Употреба
Употреба
Употреба
Употреба
Употреба
Употреба
Употреба
Употреба

За да използвате Smart Home Hub, просто извикайте всички необходими функции в setup () или loop (). Вече поставих примерни извиквания на функции, като отпечатване на текущото време и извикване на IFTTT събитие.

Стъпка 11: Бъдещи планове

Системата Smart Home Hub работи много добре за прости задачи за домашна автоматизация и събиране на данни. Може да се използва за почти всичко, като задаване на цвета на LED лента, мониторинг на температурата в помещението, проверка дали свети светлина и множество други потенциални проекти. В бъдеще бих искал да разширя функционалността още повече. Това може да включва добавяне на по -здрав уеб сървър, локален хостинг на файлове и дори Bluetooth или mqtt.

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