Мазмуну:
- 1 -кадам: Глобалдык схема
- 2 -кадам: Шематикалык / зымдуу
- 3 -кадам: Power Management
- 4 -кадам: Магнит жана камыш Байланыштарды орнотуу
- 5 -кадам: Менин кичинекей үйүмө туташыңыз
- 6 -кадам: Үйдө…
- 7 -кадам: Turntable болсун …
- 8 -кадам: Кээ бир тесттер
- 9 -кадам: Кичинекей үй
- 10 -кадам: Эскиз
- 11 -кадам: Domoticz
- 12 -кадам: Жыйынтык
Video: Туташкан каттар күн энергиясы менен иштейт: 12 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Экинчи Ible үчүн, мен сизге туташкан кат кутуму жөнүндө өз эмгектеримди сүрөттөп берем.
Бул Instructable (+ башка көптөгөн нерселерди) окуп чыккандан кийин, жана менин почта кутум үйүмдүн жанында болбогондуктан, мага Open Green Energy чыгармаларын шыктандырып, кат кутучамды Domoticz сервериме туташтыргым келди.
Максаттар
- Каттар келе жатканда Telegramдан кеңеш алыңыз;
- Посылка келгенде телеграм аркылуу кеңеш алыңыз;
- Каттар / посылкалар алынганын текшериңиз.
Менин негизги чектөөм
Почта ящиги үйдөн салыштырмалуу алыс жана эч нерсени иштетүү үчүн ага электр кабелин тартуу мүмкүн эмес болчу.
Башка чечим табышым керек болчу: күн энергиясы жакшы чечим болчу!
БОМ
- Raspberry Pi (MQTT жана Domoticz бөлүктөрүн өткөрүү үчүн - бул жерде жазылган эмес)
- Telegram Bot эсеби
- Lolin D1 mini (же Wemos …)
- Plug-In Screw Terminal Block Connector
- TP4056 Батареяны кубаттоочу литий тактасы
- 6V 2W фотоэлектрдик күн панели
- Li-Ion 18650 батарейкасы
- Li-Ion батарея кармагыч
- PCB DIY Soldering Copper Prototype Printed Circuit Board
- Аналогдук Servo SG90
- 3 камыш которгучтар (бири тамгалар үчүн, бири посылкалар үчүн жана бири төлөө үчүн)
- Магниттер
- Кээ бир зымдар
- Жыгач ящик: Эч кандай 3D принтер жок болгондуктан, мен электрониканын тетиктерин алуу үчүн жыгачтан жасалган кичинекей үйүмдү түшүндүм …
- Запастык Ethernet кабели
-
RJ45 Ethernet Connector Breakout Board
- J-B Weld
- Кээ бир шар подшипниктери
- Бурамалар, гайкалар, шайбалар
1 -кадам: Глобалдык схема
Кооз чиймелер ар дайым узун сүйлөгөндөргө караганда жакшыраак;-)
Бирок MQTT, Domoticz жана Telegram жөнүндө бир нече түшүндүрмөлөр дайыма кабыл алынат!
MQTT (Message Queuing Telemetry Transport), IoT (нерселердин Интернети) дүйнөсүндөгү түзмөктөр менен башка системалардын ортосунда маалыматтарды жөнөтүү үчүн колдонулган билдирүү протоколу.
Чоо -жайын айтпастан, анын иштеши кардарлардын серверге туташуу принцибине негизделген. MQTTде кардарлар Жазылуучу же Жарыялоочу, ал эми Сервер Брокер деп аталат.
Бул Нускамада мен бир гана басмакананы колдоном, Лолин почтамдын кутусуна зымдуу: почта кутусуна орнотулган камыш контакттары аркылуу каттар же посылкалар аныкталганда (1 -кадам), анын MQTT билдирүүсүн WIFI аркылуу Брокерге жөнөтүү (2 -кадам)).
Брокердик бөлүк Raspberry Piге орнотулган Mosquitto тарабынан жасалат (3 -кадам).
Domoticz жөнүндө:
Булакта сүрөттөлгөндөй, Domoticz - бул ар кандай түзмөктөрдү башкарууга жана ар кандай протоколдордон маалыматтарды алууга мүмкүнчүлүк берген "үй автоматташтыруу системасы": MQTT - колдоого алынган протоколдордун бири …
Ага маалымат жетээр замат (4 -кадам), сиз окуяларды аныктай аласыз: кат кутусунда мен Telegram эскертмесин жөнөтүүнү чечтим (5 -кадам).
Акыры, Telegram кардары менин телефонумда конфигурацияланган (жана менин аялымдыкы! - 6 -кадам): акыркы максатка жетти…
2 -кадам: Шематикалык / зымдуу
Аналог жөнүндө бир сөз:
Биринчиден, мен кээ бир изилдөөлөрдөн кийин байкадым, Lolin mini D1 (эски Wemos сыяктуу), A0 пин үчүн чыңалуу бөлүштүргүчтү курган (R2 үчүн 220KΩ жана R2 үчүн 100KΩ - шилтемеленген маалымат барагынын оң жагын караңыз), 3.2 Вольт максималдуу аналогдук кирүү чыңалуусу катары.
Батареядан максималдуу чыгуу чыңалуусун эске алганда, 4, 2v (кубаттоочу тактасы менен чектелген) жана теориялык жактан алганда, максималдуу кирүү чыңалуу диапазонун жогорулатуу үчүн тышкы резисторду (R1 менен катар) кошуу керек. Андан кийин, эгер сиз R1 менен катар 100K кошсоңуз, анда бул жыйынтыкка ээ болосуз:
Vin * R1/(R1+R2) = Vout
4, 2 * 320K/(320K+100K) = 3, 2
Менин схемамда мен анын маанисин жөнгө салууну чечтим, ошондуктан мен өзүмдүн схемамда жөнгө салынуучу резисторду колдонууну туура көрдүм: балким бул сизге пайдасыз болуп калат, бирок менин жагдайымда анын маанисин болжол менен 10KΩ деп койдум Domoticzде шайкеш баалуулук…
A0 пиндин 10 бит токтому бар экенин эске алыңыз: бул сиздин эскизде аналогдук окууңуз 0дөн 1024кө чейинки маанини кайтарат дегенди билдирет.
Мен Domoticzге пайыздык маанини жөнөткүм келгендиктен, аналогдук окуу натыйжасын 10, 24кө бөлүүм керек.
3 -кадам: Power Management
Албетте, кат кутусу автономдуу болушун каалайм. Максатыма жетүү үчүн мен бул элементтерди колдоном:
- Li-Ion 18650 батарейкасы 4000 мАч;
- 6V / 2W жеткире ала турган күн панели;
- TP4056 литий батареясын заряддоочу такта.
Эң ылайыктуу күн панелин тандоо үчүн, мен анын ичинде кээ бир мисалдарды карап көрдүм: бул мисалда 5.5V / 0.66W күн панели колдонулат жана, балким, бул үчүн жетиштүү. Менин учурда, жана ESP8266 күндүз күйүп турушу керек жана үйдү күнгө каратып туруу үчүн серво моторун иштете алышы керек болгондуктан, мен дагы күчтүү күн панелинин моделин тандадым (6V / 2W) - Бул мага дагы мүмкүнчүлүк берет караңгы кыш мезгилдерин жана булуттуу күндөрдү алдын ала көрүү;-)
Ошондой эле, жана энергия чыгымдарын максималдуу азайтуу үчүн, мен төмөнкү сценарийлерди тандап алдым:
- почтальон эртең мененки саат 7ден кечки 8ге чейин өткөнүн билип, ESP түнү бою DeepSleepке жайгаштырылган;
- Факт ишемби күнү түштөн дүйшөмбүнүн таңына чейин өтпөйт: ESP бул мезгилде DeepSleep режимине да коюлат.
- Эртең мененки саат 7ден кечки 8ге чейин жана электр энергиясын керектөөнү азайтуу үчүн мен ESPтин тармак интерфейсин өчүрүп коём: тармак посылка же кат келгенде гана кайра жүктөлөт, маалыматты жөнөтүү үчүн жетиштүү убакыт Domoticz. Iге дароо эскертүүнүн кажети жок жана тармак интерфейсин өчүрүп -күйгүзүү үчүн кошумча бир нече секунд зыяндуу эмес!
Мен Lolin үчүн колдонгон ар кандай режимдеги керектөөнүн кээ бир мааниси - маалымат барагын караңыз, p18:
- Кадимки режимде (RF иштөө менен), энергия керектөө 170мАга чейин көбөйүшү мүмкүн! Менин почта кутум үйүмдөн болжол менен 50 метр алыстыкта болгондуктан (жана WIFI сигналынын чегинде …) Менимче, байланышты сактоо үчүн колдонулган күч максималдуу деңгээлде …
- Уйку режиминде, энергия керектөө 15 мА чейин түшөт. Бирок сиз маалымат барагынан көрүп тургандай, бул модемди толугу менен токтоткон жок, анткени ESP "маалымат берүүсүз Wi-Fi байланышын сактап турат".
- Deep-уйкуда, кубат 20uA чейин төмөндөйт.
Wi -Fi керексиз түрдө активдүү бойдон калбашы үчүн, мен аны төмөнкү буйруктар менен өчүрүүнү туура көрдүм. Көптөгөн кечигүү () чалууларына көңүл буруңуз … Аларсыз ESP бузулат:
WiFi.disconnect ();
кечигүү (1000); WiFi.mode (WIFI_OFF); кечигүү (1000); WiFi.forceSleepBegin (); кечигүү (1);
Жалпысынан алганда, бир нече күн иштегенден кийин, ал иштей баштайт жана айрыкча туура жүктөлөт:
- бул мага күн сайын үйдү жайгаштыруу үчүн сервомоторду иштетүүгө мүмкүнчүлүк берет;
- Мен дагы тармактын интерфейсин саат сайын жандандырууга уруксат бере алам да, Domoticzге батарейканын зарядынын деңгээлин жөнөтөм.
4 -кадам: Магнит жана камыш Байланыштарды орнотуу
Адаттагыдай эле, мен камыштын ордун жыгачтан жасоо үчүн Proxxon аппаратын колдондум.
Камыш контактты анын тешигине бекитүү үчүн мен бир аз J-B ширетүүчүсүн колдондум.
Посылка жана чыгаруу үчүн кичинекей лента, бир аз темир уста жана максатка жетүү!
Менин кат кутучамдын артыкчылыгы - бул металл, ал камыш контакттары менен туура өз ара аракеттениши үчүн магниттердин жайгашуусун жеңилдетет.
5 -кадам: Менин кичинекей үйүмө туташыңыз
Почта кутусунан үйгө камыш контактыларына кеткен кабелди оңой туташтыруу жана ажыратуу үчүн мен Ethernet туташтыргычын колдонууну чечтим.
Сиз бул моделди колдоно аласыз, же мен сыяктуу эле менин тартмаларымда илинип турган эски Arduino Ethernet калканчын колдонсоңуз болот: Ал кыйналган жок, аранын алдында эр жүрөк болгон, анын өлүмү бат эле ^^
Бул Arduino Ethernet калканы жөнүндө бир сөз: 8 өзүнчө драйвер болот деп күтпөңүз … Кабелдер экрандын ичинде 2 менен жупташкан… Бул мени көпкө чейин жинди кылды !!!
6 -кадам: Үйдө…
Батареяны кармагычты, сервону жана RJ45 фемальдык туташтыргычын оңдоо үчүн жетиштүү жер.
7 -кадам: Turntable болсун …
Максаты - аны күнгө каратпоо…
Айлануу мүмкүнчүлүгүнө ээ болуу үчүн, мен огу катары узун бураманы колдондум, кээ бир жаңгактар жана эки шариктүү подшипниктер менен…
Ушул убакка чейин мен SG90 сервосун колдоном (моменти: 1.8кг/см 4.8v).
Үйдү (жана анын бир нече граммын) буруш үчүн жетиштүү. Башка жагынан алганда, анын пластикалык тиштери менин чөлкөмдө болгон шамалдын катуу соккусуна узак убакыт бою туруштук берерине ишенбейм.
Мен дагы бирөөнү заказ кылдым (MG995 моменти: 9.4кг/см 4.8vде), өтө кымбат эмес, бирок металл тиштүү.
Мен аны алгандан кийин эмне кылышым керек: Мен анын келгенин кабарлоо үчүн туташкан кат кутумга таянам!
8 -кадам: Кээ бир тесттер
Бир нече эскертүүлөр:
Бул эскиз күндүн ичинде сааттын өзгөрүшүн туурап, мага сервонун абалын көзөмөлдөөгө мүмкүнчүлүк берет.
- SG90 менен: кошумча муктаждыктар жок, ал батарейканын контролерунан чыккан OUT чыңалуусу менен иштей алат.
-
Бирок, MG 995 менен:
- Айлануунун жалпы бурчу бирдей эмес (кененирээк): Мен аны азайтуу үчүн кошумча функцияны колдонууга туура келди (Servo_Delta ()).
- Сервого жетиштүү чыңалуу берүү үчүн DC/DC кадамы керек … улантуу…
/*
- SG90 менен ТЕСТ: кошумча муктаждыктар жок, ал батареянын контролерунан чыккан OUT чыңалуусу менен иштей алат - MG 995 ҮЧҮН: - Servo_Delta () функциясын колдонуңуз … - Сервого жетиштүү чыңалуу берүү үчүн DC/DC кадамы керек… уландысы: */ #include bool Logs = true; Servo myservo; #define PIN_SERVO D2 // servo position for: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h // int Arr_Servo_Pos = {177, 173, 163, 148, 133, 118, 100, 80, 61, 41, 28, 15, 2, 2, 2}; int Arr_Servo_Pos = {180, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 0, 0, 0}; int old; int pos; int i; void setup () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Logs) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); for (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; index 7 && i = Arr_Servo_Pos [i-7]; index-) {if (Logs) Serial.println (индекс); if (Logs) Serial.print ("Түзөтүлгөн маани:"); if (Журналдар) Serial.println (Servo_Delta (индекс)); кечигүү (200); //myservo.write(Servo_Delta(index)); myservo.write (индекс); } кечиктирүү (15); myservo.write (Arr_Servo_Pos [i-7]); // datach myservo.detach () качан кыймылга келбеши үчүн акыркы маанини кайра жазыңыз; }}} кечигүү (2000); }} int Servo_Delta (int мааниси) {int Temp_val; Temp_val = (мааниси*0,80) +9; кайтаруу Temp_val; }
9 -кадам: Кичинекей үй
Мен мурда айткандай, менде 3D принтер жок. Ошентип, мен эски жашылча коробкасын колдонууну чечтим …
Балким, бул аба ырайы көпкө созулбайт, бирок ошондо мен башка чечимди (же 3D принтерине ээ болгон досумду) карап көрмөкмүн: жыгачты коргоо үчүн мен бардык жерге көп лак коштум …
Сиз "татынакай көшөгөлөрдү" көрө аласыз … Аялыңыздан ишти аткарууну суранганыңызда ушундай болот ^^
10 -кадам: Эскиз
Иштеп жатат… Бирок туруктуу окшойт
Мен дагы эле коддун үстүндө иштеп жатам: бул акыркы версия эмес, сиздин комментарийлериңиз / кеңештериңиз кабыл алынат;-)
Кээ бир эскертүүлөр:
- Алар коддо көп кечигүүлөр () бар: бул Лолиндин көп бузулушуна жол бербөө үчүн, айрыкча баштапкы тармакты токтотуп жатканда …
- Мен күн азимутун алуунун оңой жана ишенимдүү жолун тапкан жокмун: мына ошондуктан мен серво маанисин мен байкагандардын функциясына орноттум … Менде аны алуунун жакшы (жана жөнөкөй) жолу бар, мага кызык! Бул жерде окуган трек, мен онлайн APIди тандагам да, мага күнгө, саатка жана географиялык позицияга жараша азимут берет …
- Уйку техникасы жөнүндө: Лолин 32 бит Tensilica процессору болгондуктан, 32 биттик белгисиз бүтүн сан үчүн анын максималдуу мааниси 4294967295… анда терең уйку аралыгы үчүн болжол менен 71 мүнөт берилет. Ошондуктан мен 60 мүнөткө чейин көп жолу уктатам …
EDIT - 2018-10-08:
Серводо көптөгөн кыймылдар бар экенин билдим, айрыкча тиркеме (), ажыратуу () алдында жана Лолин deepSleepтен ойгонгон сайын ().
Дагы бир аз маалымат барагын изилдеп жатып, мен эки нерсени түшүндүм:
- Lolin маалымат барагында D4 чыгаруу буга чейин BUILTIN_LED менен туташкан…
- ESP8266ex маалымат барагынан биз D4 чыгарылышы UART 1/U 1 TXD (универсалдуу асинхрондук алуучу өткөргүч) катары колдонулганын билебиз. Бул UART1 журналды басып чыгаруу үчүн колдонулаары да көрсөтүлгөн.
Бул маалыматты окуу менен, мен D4 чыгаруу жакшы идея эмес экенин түшүндүм, айрыкча, servo моторду башкаруу үчүн!
Ошентип, азыр сервомоторду башкаруу үчүн колдонулган продукция D2, төмөндөгү код тиешелүү түрдө жаңыртылды.
//****************************************
Түзүлгөн күнү: 08/Дата mise en: 08/Version: 0.9.4 Version IDE Arduino: 1.8.6 Жүктөө ылдамдыгы: 921600 Type de carte dans l'IDE: "LOLIN (WEMOS) D1 R2 & mini" Carte physiqueployée: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Pin Function ESP-8266 пин колдонуу тили ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Аналогдук киргизүү, макс 3.3V киргизүү A0 Tension d'alimentaion D0 IO GPIO16 Connecté à RST (терең уйку) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo moteur D3 IO, 10k pull-up GPIO0 D4 IO, 10k pull-up, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Reed reveve D6 IO, MISO GPIO12 Reed lettre D7 IO, MOSI GPIO13 Reed colis D8 IO, 10k pull-down, SS GPIO15 G Ground GND 5V 5V-3V3 3.3V 3.3V RST Resst RST Connecté à D0.yleep) **************************************/ #incolle bool Logs = true; // wifi const char* ssid = "LOL"; const char* password = "LOL"; IPAddress ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress шлюзу (192, 168, 000, 000); IPAddress субнети (255, 255, 000, 000); WiFiClient кардары; // Servo #include #define PIN_SERVO D2 Servo myservo; // серво позициясы: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h int Arr_Servo_Pos = {179, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 1, 1, 1}; // Камыштар #PIN_SWITCH_OUT D5 байтын Эски_Свичке_Мамлекет_ОЮУ; байт Switch_State_OUT; #PIN_SWITCH_IN_PARCEL D6 байт Эски_Свич_Мамлекет_IN_PARCEL; байт Switch_State_IN_PARCEL; #PIN_SWITCH_IN_LETTER D7 байт Эски_Свич_Мамлекет_IN_LETTER; байт Switch_State_IN_LETTER; кол коюлбаган узак switchPressTime; const unsigned long DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Сиздин MQTT дарегиңиз"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (кардар); char MQTT_Message_Buff [70]; String MQTT_Pub_String; // Tension float vcc; // NTP #убакытты камтыйт #tnow; int Old_Time = 0; int Int_Heures = 0; int Int_Minutes = 0; int Int_Sleep_Duration = 63; void setup () {Serial.begin (115200); тармак (чыныгы); pinMode (PIN_SWITCH_OUT, INPUT_PULLUP); Old_Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); pinMode (PIN_SWITCH_IN_LETTER, INPUT_PULLUP); Old_Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); pinMode (PIN_SWITCH_IN_PARCEL, INPUT_PULLUP); Old_Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); SendBatteryLevel (); тармак (жалган); // NTP коюлган tnow = убакыт (nullptr); Int_Heures = String (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Substring (14, 16).toInt (); // Түнкү уйку эгерде (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("мүнөт)"); уйку (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Substring (14, 16).toInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + String (ctime (& tnow)). Substring (11, 13)); //Serial.println (String (ctime (& tnow)). Substring (11, 13).toInt ()); // Servo башкаруу if (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Logs) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); for (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; index 7 && Int_Heures = Arr_Servo_Pos [Int_Heures-7]; index-) {if (Журналдар) Serial.println (индекс); кечигүү (200); myservo.write (индекс); } кечиктирүү (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // myservo.detach () ажыратылганда шашылыш кыймылдарды болтурбоо үчүн акыркы маанини кайра жазыңыз; } тармак (чыныгы); SendBatteryLevel (); тармак (жалган); }}} // Ишемби, эгерде ишемби күнү 13 сааттан кийин болсо ((String (ctime (& tnow)). Substring (0, 3) == "Sat") && (Int_Heures> = 13)) {if (Logs) Serial.print ("Sleep pour le samedi aprés midi ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Logs) Serial.println ("minutes)"); уйку (Int_Sleep_Duration - Int_Minutes); } // Уйку эгер жекшемби болсо (String (ctime (& tnow)). Substring (0, 3) == "Күн") {if (Журналдар) Serial.print ("Sleep pour le dimanche ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Logs) Serial.println ("minutes)")); уйку (Int_Sleep_Duration - Int_Minutes); } // Камыштарды башкаруу Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); if (Switch_State_OUT! = Old_Switch_State_OUT) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_OUT == HIGH) {Serial.println ("Courrier relaté!"); тармак (чыныгы); кечигүү (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); кечигүү (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); кечигүү (5000); тармак (жалган); }} Old_Switch_State_OUT = Switch_State_OUT; } Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); if (Switch_State_IN_LETTER! = Old_Switch_State_IN_LETTER) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_IN_LETTER == HIGH) {Serial.println ("Courrier arrivé!"); тармак (чыныгы); кечигүү (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Курьер"); кечигүү (5000); тармак (жалган); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); if (Switch_State_IN_PARCEL! = Old_Switch_State_IN_PARCEL) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_IN_PARCEL == HIGH) {Serial.println ("colis arrivé!"); тармак (чыныгы); кечигүү (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); кечигүү (5000); тармак (жалган); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {delay (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Журналдар) Serial.println ("\ tTension relatée:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); кечигүү (5000); } бош уйку (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } void network (bool UpDown) {if (UpDown) {Serial.print ("Network start"); WiFi.forceSleepWake (); кечигүү (1); // init WIFI WiFi.config (ip, dns, шлюз, кичи тармак); WiFi.begin (ssid, сырсөз); while (WiFi.status ()! = WL_CONNECTED) {кечигүү (500); Serial.print ("."); } кечигүү (5000); Serial.println ("."); Serial.print ("\ tConnected - IP дареги:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Init NTP Serial.print ("\ tTime Synch."); configTime (0, 0," fr.pool.ntp.org "); setenv (" TZ "," CET-1CEST, M3.5.0, M10.5.0/3 ", 0); while (убакыт (nullptr)) <= 100000) {Serial.print ("."); Delay (100);} Serial.println (".");} Else {Serial.println ("Network stop."); WiFi.disconnect (); кечигүү (1000); WiFi.mode (WIFI_OFF); кечиктирүү (1000); WiFi.forceSleepBegin (); кечиктирүү (1);}} жараксыз кайра туташуу () {while (! ClientMQTT.connected ()) {Serial.print (" / tАйрыкча MQTT туташуусу… "); // Туташуу аракети болсо (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" туташкан ");} башка {Serial.print (" ишке ашпай калды, rc = "); Сериялык.print (ClientMQTT.state ()); Serial.println ("5 секунддан кийин кайра аракет кылыңыз"); // Кайра аракетти кечиктирүүдөн мурун 5 секунд күтө туруңуз (5000);}}} боштук MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {if (! ClientMQTT.connected ()) reconnect (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tМКТТга маалымат жөнөт…"); MQTT_Pub_String = "{" idx / ":" + Стринг (Int_IDX) + ", \" Батарея / ":" + Стринг (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" баалуулугу / ": \" " + S_Value +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }
11 -кадам: Domoticz
Domoticzде:
Жалпы колдонуу үчүн:
-
Эки "Dummy (Эч нерсе кылбайт, виртуалдык которгучтар үчүн)" түзүңүз:
- Каттар үчүн биринчи…
- Посылка үчүн экинчиси…
- Алардын ар бири үчүн эскертмелерди жекелештирүү;
- Албетте, Tegegram токениңизди орнотушуңуз керек.
Кошумча:
Батареяңыздын кубаттуулугун көзөмөлдөө үчүн "Утилита сенсорун" кошсоңуз болот.
Кеңештер: бул жерден сиз көптөгөн бекер ыңгайлаштырылган сүрөтчөлөрдү таба аласыз …
12 -кадам: Жыйынтык
Бул көрсөтмө сизге жардам берет деп үмүттөнөбүз:
- байланышкан почта кутусун өзүңүз жасайсызбы;
- же жөн эле сизге долбоорлоруңуз үчүн кээ бир идеяларды берүү үчүн!
Эгерде сизде жакшыртуу боюнча идеялар болсо, мен угуп жатам!
PS: англисче кечирим сурайм, Google котормосу мага абдан жардам берет, бирок, балким, идеалдуу эмес;-)
Сунушталууда:
Күн энергиясы менен жарык берүүчү террариум: 15 кадам (сүрөттөр менен)
Күн энергиясы менен иштеген жарык берүүчү террариум: С: түнкү жарыкты скрапбук менен өткөргөндө эмне аласыз? . Бул жерде менин жигитим экөөбүз ижарага алган кабина сүрөттөлгөн
Күн энергиясы менен иштөөчү LED токтоочу сенсор: 8 кадам (сүрөттөр менен)
Күн энергиясы менен иштөөчү LED токтоочу сенсор: Биздин гараждын тереңдиги көп эмес жана анын шкафтары бар, андан ары тереңдикти төмөндөтөт. Аялымдын машинасы кыска эле, бирок ал жакын. Мен бул сенсорду унаа токтотуу процессин жөнөкөйлөтүү үчүн жана машинанын толуп жатканын камсыз кылуу үчүн жасадым
Күн энергиясы менен иштеген "Акылдуу" WiFi башкарган сугат системасы: 6 кадам (Сүрөттөр менен)
Күн менен иштөөчү "Акылдуу" WiFi башкарылуучу сугат системасы: Бул долбоор eBayден келген стандарттык DIY күн жана 12v бөлүктөрүн, Shelly IoT түзмөктөрүн жана openHABтын кээ бир негизги программалоолорун колдонуп, үйдө, толугу менен күндөн иштейт, акылдуу бакчанын электр тармагын жана ирригациясын колдонот. орнотуу.Системанын өзгөчөлүктөрү: Fu
Күн энергиясы менен иштеген WiFi Weather Station V1.0: 19 кадам (Сүрөттөр менен)
Күн энергиясы менен иштөөчү WiFi аба ырайы станциясы V1.0: Бул Нускамада мен Wemos тактасы менен күн энергиясы менен иштөөчү WiFi аба станциясын кантип курууну көрсөтөм. Wemos D1 Mini Pro кичинекей форма-факторго ээ жана плагин менен ойноочу калканчтардын кеңири спектри аны тез алуу үчүн идеалдуу чечимге айландырат
Күн энергиясы менен иштеген WiFi: 5 кадам (сүрөттөр менен)
Күндөн иштей турган WiFi: Интернетте жүргүзүү үчүн кээ бир маанилүү жумуштарыбыз болгондо, электр энергиясынын үзгүлтүккө учураган учурлары болот. Үйүңүздө электр энергиясы жок болгондо, үйүңүздөгү WiFi иштебейт. Бул маселени чечүү үчүн биз күндүн кубатын колдонуп, WiFi'ибизди иштетебиз