Съдържание:
- Стъпка 1: Очертание, предпоставки и части
- Стъпка 2: Хардуер: кутията, превключвателят и окабеляването
- Стъпка 3: Хардуер: ESP-01
- Стъпка 4: Програмиране на ESP-01
- Стъпка 5: Сглобяване на всичко
- Стъпка 6: Използване на Node-RED за действие върху съобщението MQTT
- Стъпка 7: Последващи мисли
Видео: Флаг на MQTT и Wifi задвижвана пощенска кутия: 7 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Забележка: актуализиран с нов фърмуер, схема и съвети за програмист
Няколко години започнах собствен проект за домашна автоматизация. Той започна с изграждането на управляван от сървър 433 MHz предавател с Arduino за превключване на много евтини PT2262 базирани дистанционни превключватели. По -късно добавих приемник, базиран на Arduino, за моята метеорологична станция, свързах контролния контакт на моето EV зарядно устройство и т.н. Нещата все повече се преплитаха (и се усложняваха!). И така, преди няколко месеца реших да стандартизирам всичко на базата на MQTT за съобщения, Node-RED за автоматизация (и двете работят на един Raspberry Pi B+) и MariaDb за регистриране (работи на моя Synology NAS). По-късно преместих брокера MQTT (Mosquitto) и Node-RED към NAS също.
Тази инструкция описва глупав проект за забавление, свързващ моята пощенска кутия, монтирана на улицата, в тази домашна инфраструктура. Идеята е, че ако някой отвори пощенската кутия, монтирана на оградата, на около 10 метра от входната врата, той ми сигнализира по телефона и евентуално други устройства.
Стъпка 1: Очертание, предпоставки и части
Контур
На високо ниво пощенската кутия, когато се отвори, трябва да изпрати уникално MQTT съобщение до брокера, така че абонатите на тази тема да бъдат информирани. Node-RED също се абонира и прави известна автоматизация, като в този случай изпраща имейл и/или push съобщение до телефона ми.
Пощенската кутия трябва да работи на батерии и да работи поне една година и трябва да го направи с помощта на моята WiFi мрежа. Тъй като събуждането на микроконтролер и свързването към WiFi мрежа може да отнеме няколко секунди, не успях да използвам превключвателя за активиране, за да прекъсна захранването. Вместо това на процесора трябва да бъде позволено да завърши работата си, след като капакът на пощенската кутия вече е затворен.
Предварителни условия
Предполагам, че имате скромни умения за запояване, работили сте малко с Arduino IDE и сте инсталирали платките ESP8266 с помощта на Boards Manager. Също така трябва да имате 3.3-волтов USB сериен адаптер, за да програмирате микроконтролера.
Предполагам също, че имате работещ MQTT брокер и Node-RED сървър. Ако не, има много инструкции в Интернет, но бих посъветвал да поемете по мързеливия маршрут и да използвате отличния скрипт за инсталиране на Питър Скаргил, ако искате да го изпълните на всеки Pi или Ubuntu, или да използвате изображението на Andreas Spiess за Pi Zero W (връзки в описанието на това видео), което ще ви спести няколко часа гледане на инсталационни скриптове. Като алтернатива можете да накарате фърмуера да изпраща имейл директно, но ще загубите много гъвкавост, като го направите.
Части
- 1 затворена, 3 кутия за батерии AA
- 2 батерии тип АА
- 1 модул ESP8266. За този проект използвах ESP-01
- 1 микропревключвател
- 1 47K резистор
- 1 резистор 4M7
- 1 2.2uF кондензатор
- 1 тънка пластмасова тръба. Използвах химикалка
- 1 дебел, дълъг кибрит или пръчка за близалки. Тя трябва лесно да се побере и да се движи в пластмасовата тръба
Стъпка 2: Хардуер: кутията, превключвателят и окабеляването
Започнах със стара кутия за батерии от несъществуваща коледна украса. Той е проектиран за три батерии с размер AA. Тъй като ESP8266 ще работи добре на 3 волта, бих могъл да използвам две батерии и да използвам третата позиция за микроконтролера. Забележете как кутията имаше малко допълнително отделение, което можех да използвам за превключвателя за активиране. Използвах много често срещан тип превключвател, показан на снимките, но премахнах пружината, която го заключва в положение включено или изключено. Запоях два тънки проводника към NC контактите и го залепих в кутията с мъничка капка супер лепило.
След това пробих дупка в горния капак, съответстваща на пластмасова тръба, взета от химикалка. Дупката се подравнява точно с превключвателя и води бутало, направено от дебела клечка за кибрит.
Накрая запоявах още два проводника към контактите на батерията и насочих всичките четири проводника до позицията на третата батерия, където щеше да бъде микроконтролерът.
Стъпка 3: Хардуер: ESP-01
Като се има предвид изискването за WiFi, целият проект вика ESP8266. Този малък WiFi контролер се превърна в любимото работно място на общността на майсторство като модул, който може да бъде закупен под 2,50 евро и интегрира пълен WiFi и TCP/IP стек, с повече от достатъчно капацитет, за да стартирате свои собствени програми. Arduino IDE (или Atom с приставката PlatformIO) напълно поддържа ESP8266.
Обикновено бих взел ESP-12F, но имах малка дъска ESP-01, която беше идеална за работата и се побира добре в кутията за батерии. Единственият проблем е, че е доста сложно да мига фърмуера в ESP-01. Повече за това в следващата стъпка. Трябва да направите една модификация: Трябва да премахнете червения светодиод за захранване от платката, тъй като той непрекъснато черпи 3mA. С извадения светодиод, модулът използва само няколко десетки uA в режим на дълбок сън, което ще му позволи да издържи повече от година с две качествени батерии AA.
Оказа се, че мога да използвам две ленти с 4 пинови женски заглавки и запояване на няколко допълнителни компонента в свободна форма, за да мога да премахна ESP-01, за да актуализирам фърмуера, докато той все още ще се побере в третото отделение за батерии.
Много е важно правилно да свържете ESP. Използвайки горния мамят, свържете го, както следва.
- Батерия плюс към Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) и 47K резистор.
- Минус на батерията към GND (A1) и един проводник на превключвателя.
- Другият проводник на превключвателя към 100nF кондензатор и 4M7 резистор.
- Отворените краища на резисторите и кондензатора към RST (C2).
- TXD (A2) може да остане несвързан.
Редактиране: Трябваше да сменя ESP-01, защото направих глупава грешка и я унищожих. Оказа се, че за моя изненада новият ESP-01 не се нулира с оригиналния 100nF кондензатор. Вероятно има малко по -различен дизайн. Смених го с 2.2 uF и сега работи отново
Когато приключите, всичко може да се монтира в кутията, но задръжте, първо трябва да програмираме модула.
Стъпка 4: Програмиране на ESP-01
За да мигате фърмуера на вашия ESP-01, можете или да построите малка платформа или да купите (почти) пълен програмист за около 1 евро.
Програмиране на хардуерна платформа
Изградете малка платформа с отново две женски хедери за ESP-01. Също така се нуждаете от USB сериен модул, способен да осигури 3.3 волта. Обърнете внимание, че чипът ESP8266 не е закален с 5 волта, така че грешка тук може да убие вашия модул. Както и да е, отново използвайки шпаргалката, свържете вашата платформа, както следва:
- 3.3V от USB серийния модул към Vcc, CH_PD, RST и GPIO2.
- GND на USB серийния модул към GND и GPIO0.
- TXD на USB серийния модул към RXD.
- RDX на USB серийния модул към TXD.
Програмист за предварително изграждане
Колкото и забавно да създавате свои собствени неща, по-мързеливият подход е да получите ESP-01 към сериен интерфейс от любимия си сайт за търгове, вижте снимката по-горе. Това е много по -лесно, по -компактно и по -надеждно от платформата. Някои от тях обаче не са програмисти, а само серийни интерфейси. Трябва да запоите теленен мост между GND (щифт A1) и GPIO0 (щифт C1) на гърба на интерфейса, вижте втората снимка. Обърнете внимание, че ESP-01 трябва да бъде включен с антената обърната към USB щепсела, а не обратното!
Забележка: те също съществуват с превключвател, вижте третата снимка, много хубаво.
Заредете фърмуера
Ако приемем, че IDE на Arduino е 1.8.3 или по -нова, изберете Инструменти> Борд и изберете дъската, която имате. За ESP-01, който използвах, изберете „Generic ESP8266 Module“и задайте следните опции (това трябва да са всички настройки по подразбиране):
- Режим на светкавица: DIO
- Честота на светкавицата: 40MHz
- Честота на процесора: 80MHz
- Размер на светкавицата: 512KB (64KB SPIFFS) Забележка: ако използвате черна платка ESP-01, изберете 1MB (64KB SPIFFS)
- Порт за отстраняване на грешки: Деактивиран
- Ниво на отстраняване на грешки: Няма
- Метод за нулиране: ck
- Скорост на качване 115200
- Порт: изберете порта, който е свързан към вашия USB сериен интерфейс. За моя компютър с Ubuntu това беше /dev /ttyUSB0
Свържете платформата/програмиста, заредете скицата, която можете да намерите тук https://gitlab.com/jeroenmeijer/Mailbox.git. Предоставете вашите идентификационни данни за брокер за WiFi и MQTT и вашата IP конфигурация в config.h и изберете Качване.
Стъпка 5: Сглобяване на всичко
Пробих дупка за пластмасовата тръба във вътрешния капак на пощенската си кутия, възможно най-близо до пантите, след което горещо залепих кутията на батерията към долната страна на капака. След това използвах дебел кибрит като бутало. Използвах изрезка, за да отрежа мача до дължината, така че превключвателят да се отвори, ако външният капак е затворен. Проверих свързаността, като отворих капака, докато стартирах mosquitto_sub, за да наблюдавам MQTT съобщенията (заменете mqttbroker, потребител и парола с вашата MQTT конфигурация):
$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u потребител -P парола
Приблизително шест секунди след отваряне на външния капак се публикува следното съобщение MQTT. Времето се използва за събуждане на микроконтролера и установяване на WiFi и брокерска връзка.
stat/mailbox/trigger {"vcc": 3050, "flap": true, "prev": 0, "RSSI": 29, "version": "005"}
През това време микроконтролерът използва приблизително 70 mA. Когато приключи, той заспива дълбоко и в моя случай е използвал по -малко от 20uA. "flap" винаги е вярно, "vcc" посочва напрежението на батерията в mV и "prev" трябва да бъде 0. Ако е 1 или 2, това означава, че пощенската кутия не е била в състояние да изпрати съобщение по -рано, защото не може да се свърже с WiFi или защото не може да се свърже с брокера MQTT. "RSSI" е силата на WiFi сигнала. И двете са много удобни за диагностициране на проблеми.
Добра идея е да следите напрежението на батерията в продължение на няколко дни, за да сте сигурни, че устройството работи по предназначение и не изтощава батерията си по някаква причина.
Фърмуерът също може да се актуализира по въздуха (OTA), но това е малко извън обхвата на тази инструкция. За тези, които се интересуват, OTA конфигурацията също е в config.h.
Стъпка 6: Използване на Node-RED за действие върху съобщението MQTT
Накрая създадох прост поток в Node-RED. Първият възел се абонира за темата за пощенската кутия (stat/postbox/trigger). Когато се получи съобщение, вторият възел форматира имейл *). Последният възел го изпраща на моя gmail адрес, използвайки gmail като SMTP сървър. След това телефонът ми ще ме предупреди за нова поща.
Добавих потока Node-RED към фрагмент от gitlab, така че можете да го импортирате във вашите потоци от Node-RED.
Разбира се, можете да добавите още някои възли, например да регистрирате събитията от пощенската кутия в MariaDb или SqlLite, или да създадете допълнителни аларми, когато напрежението на батерията падне под 2,7 волта.
Честит лов на поща!
*) Вижте следващата страница, сега използвам PushBullet вместо имейл.
Стъпка 7: Последващи мисли
Винаги има чувството, че нещата биха могли да се направят по -добре.
Превключване
Бих предпочел да използвам (супер) магнит и тръстиков контакт вместо донякъде тромавия подход на буталото. Имаше две причини. Едното е, че нямаше как да направя тази работа със затваряне на контакта, когато кутията беше отворена, а това, че тя винаги беше затворена, означаваше, че винаги ще тече малък ток. В ретроспекция, по -малкото от 1uA, преминаващо през резистора 4M7, не би било голяма работа по отношение на живота на батерията. Другият беше по -практичен. Измислих този проект в събота и написах софтуера, изградих всичко в неделя от това, което се носеше наоколо. Просто нямах контакт с тръстика в боклука.
Забележка: както коментира diy_bloke, тръстиковите контакти имат склонност да се залепват, когато се намагнетизират за дълго време, така че може би буталото изобщо не беше толкова лоша идея. Ще видим. *)
Съобщение за изпразване
Пощенската кутия изпраща съобщение и при изпразване. Това не е голяма работа, но тъй като повече хора в къщата получават предупреждението, човек може да се окаже в цикъл, проверявайки пощенската кутия, която се противопоставя на нейната цялостна цел! Има няколко начина да заобиколите това, като например да проверите дали вътрешният капак е повдигнат и ако е така, не изпращайте съобщение. Или вместо да използвате превключвателя на капака, инсталирайте детектор в долната част на пощенската кутия. Или малък бутон за нулиране, който да се натисне при изпразването му. Всичко обаче би усложнило нещата и вероятно би влошило надеждността.
Съобщения
Изпращането на имейл е доста ефективен, но груб начин за отправяне на предупреждението. По -елегантен начин би било приложението за телефон, но не съм намерил приложение за табло на Android MQTT, което може да бъде конфигурирано да задейства предупреждение за операционна система, когато се получи определено съобщение. Ако има такъв наоколо, моля, добавете към коментарите. **)
*) След повече от година експлоатация се оказва, че пръчката за близалки, която използвах, основно твърдо навита хартия, има тенденция да се скъсява при постоянното налягане на пружината на превключвателя. След известно отстраняване на неизправности го замених с дървена пръчка.
**) Сега използвам PushBullet за push съобщения, отделно от таблото за управление на MQTT. Малък Node-RED нисък интерфейс към API можете да намерите тук. Уверете се, че сте предоставили маркера за достъп в възел „Подгответе се за pushbullet“и имейл адреса си за резервни цели в възел „Повторен опит“.
Препоръчано:
Сензор за пощенска кутия, използващ Arduino: 4 стъпки
Сензор за пощенска кутия, използващ Arduino: Здравейте, надявам се, че всички се справяте добре. Днес ще ви покажа как да направите пощенска кутия със сензор, използвайки платката arduino и IDE. Този проект е много прост и повечето от консумативите могат да бъдат намерени в повечето домове. Знайте, че Covid-19 удари, ние сме
Интелигентна пощенска кутия за пратки (Packr): 13 стъпки (със снимки)
Интелигентна пощенска кутия за колети (Packr): Някои хора не получават често писма или пакети. Те трябва да ходят до пощенската си кутия всеки ден, за да проверят дали има нова поща, както когато вали, така и когато грее слънце. За да използвате това време по -добре в живота си, ето тази интелигентна пощенска кутия. Тази майка
Известие за пощенска кутия и гаражни врати: 5 стъпки (със снимки)
Известие за пощенска кутия и гаражни врати: Тази инструкция се основава на Известие за пощенска кутия на Johan Moberg. В сравнение с този проект направих някои промени: Далеч от къщата ми е не само пощенска кутия, но и гараж. Те са на едно място близо до пътя и къщата се намира на около 5
Да - Не: Пощенска кутия, управлявана от Arduino: 4 стъпки (със снимки)
Да - Не: Пощенска кутия, управлявана от Arduino: В този проект ще ви покажем как да направите пощенската си кутия по -забавна и полезна. С тази пощенска кутия, ако писмото е във вашата поща, имате хубава светлина, която показва, ако имате поща, и можете да контролирате тази пощенска кутия с Bluetooth, за да автоматично
Френски флаг / Флаг на свободата: 6 стъпки
Флаг на Флаг / Флаг на свободата: Френският флаг е псевдонимът, даден на камерен инструмент, използван за блокиране на нежелана светлина от падащия обектив, което обикновено води до отблясъци на обектива или прави мръсотията по -видима върху обектива. Исках да копирам френското знаме, намерено на filmtools.com