-
Публикации
111 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
15
Сообщения, опубликованные пользователем svchekalin
-
-
Уважаемые форумчане испытываю желание нарисовать печатную плату под проект метеостанции для заказа на производстве в связи с этим хотелось бы спросить как видите это вы ? какие элементы добавить ? на данный момент понятно одно - она должна быть круглая для того чтобы поместить ее в будку стивенсона , у платы центральное отверстие под шпильку которое будет обведено полигоном для возможности использовать саму шпильку если возникнет необходимость , питание 5 вольт чтобы меньше было проблем с подбором блока питания. Жду пожеланий и уточнений .
-
10.11.2017 в 13:06, Kitsum сказал:@LogOFF хорошо, с гаражом мы разберемся. Но в любом случае, вся силовая часть ляжет на Ваши плечи и именно Вам решать, как управлять вентиляторами и нагревателями.
Что касаемо метеостанции на улице, то в принципе все уже готово, плюс ко всему будет описание, как перевести все на единый датчик BME280. А значит уменьшится бюджет всего проекта. Пока ждем датчики. Теплицы тоже подпадают под этот пункт.
А вот общение с центральным сервером это уже интересный вопрос связанный непосредственно с коммуникацией. Могу предположить, что имеются три разных объекта:
- Квартира с центральным сервером
- Удаленный участок с домиком и теплицей
- Гараж
Таким образом на всех трех объектах должна быть инфраструктура, позволяющая выходить в интернет и если он есть, то не вижу никаких трудностей с организацией передачи данных. В противном случае, придется запланировать дополнительные расходы.
У меня тоже малина с москитом и я искренне не понимаю зачем заставлять контроллер принимать решение когда это может сделать малина. Добавляем node-red и получаем гибкую систему настроек и логики событий доступных в браузере
-
Не пойму эти стиралки полоскалки на атмеге ?
-
Может сопротивление добавить ?
-
12.04.2019 в 08:50, ykamerton сказал:А как быть у кого нет домофона и частный дом. С почты приходит звонок что получено какое письмо и просьба забрать его, или использовать услуги доставки
потом уже кидают квитанции
и у нас почтальон разносит корреспонденцию примерно в одно и тоже время
Тут проще, у почты России есть приложение по которому можно отслеживать ваши доставки а вот спамеры вам скорее всего не докучают
-
Хорошая поляна ! Но я знаю что у тебя несколько большее есть ))
-
3 часа назад, ykamerton сказал:Чего там мудрить. во внутрь на дно ящика радио звонок кнопка, до кнопки линейку на весь ящик ширина.Упало что то сигнал 100 метров.
В принципе идея достойна внимания по крайней мере можно вместо автоматики самому реагировать и затолкать спамеру его спам в одно место
-
-
12.08.2017 в 13:14, alexd6969 сказал:Спасибо автору за проделанную работу. Отличная метеостанция, но не хватает измерения скорости ветра. Может подумать над реализацией....?
533,64 руб. 11%СКИДКА | MPXV7002DP скорости полета Сенсор коммутационная плата преобразователя APM2.5 APM2.52 дифференциальный Давление Сенсор игровые джойстики
https://s.click.aliexpress.com/e/c9kuxyBu14 часов назад, Convix_Maximus сказал:Друзья дайте пожалуйста прошивку с библиотеками. Я что-то не нашел. Функционал очень заинтересовал.
Так там вроде все в архиве есть , в коде посмотри китсум обычно коментить ссылки
-
Ну я понимаю что насиловать память контроллера не нужно но вот в mqtt можно по подробней сбрасывать . На данный момент нахожусь в состоянии бетатестера , вроде считает только что пока не понятно похоже сотнями литров хотя я так воду не лью ... Будем тестить дальше . А да настройки по дефолту. Внесу свою лепту ; собираю данные через node-red группирую через переменные данные с двух счетчиков дополнив текстом холодная вода и горячая вода а потом отправляю на мыло.
Код для импорта в node-red watercounter
Скрытый текст[{"id":"2c7de2c3.9bc00e","type":"mqtt in","z":"da66859c.abc4c8","name":"","topic":"waterCounter/hot","qos":"2","broker":"54e6c737.26fcc8","x":426.58331298828125,"y":318.33334159851074,"wires":[["29b449ae.c601e6"]]},{"id":"ce313c65.e51fe","type":"mqtt in","z":"da66859c.abc4c8","name":"","topic":"waterCounter/cold","qos":"2","broker":"54e6c737.26fcc8","x":420.83331298828125,"y":378.33335876464844,"wires":[["896559df.03e9f8","d63099a.696fc68"]]},{"id":"29b449ae.c601e6","type":"function","z":"da66859c.abc4c8","name":"variables_hot","func":"flow.set(\"water_hot\",msg['payload']); // установить значение\nreturn msg;","outputs":1,"noerr":0,"x":782.7380676269531,"y":317.61903190612793,"wires":[[]]},{"id":"896559df.03e9f8","type":"function","z":"da66859c.abc4c8","name":"Variables_cold","func":"flow.set(\"water_cold\",msg['payload']); // установить значение\nreturn msg;","outputs":1,"noerr":0,"x":797.5000305175781,"y":379.5238609313965,"wires":[[]]},{"id":"d63099a.696fc68","type":"function","z":"da66859c.abc4c8","name":"hot+cold","func":"var vc_name, vh_hame, water_cold, water_hot, vhn, vcn, water_counter;\nvc_name = 'холодная вода:';\nvh_hame = ' горячая вода:';\nwater_cold = flow.get(\"water_cold\");\nwater_hot = flow.get(\"water_hot\");\nvhn = vc_name + water_cold;\nvcn = vh_hame + water_hot;\nwater_counter = vhn + vcn;\nmsg['payload'] = water_counter;\nnode.send([msg]);\n","outputs":1,"noerr":0,"x":792.8333625793457,"y":444.6666431427002,"wires":[["80435cd6.ace54"]]},{"id":"80435cd6.ace54","type":"blynk-api-out-email","z":"da66859c.abc4c8","name":"","x":795.0000076293945,"y":520.0000133514404,"wires":[]},{"id":"54e6c737.26fcc8","type":"mqtt-broker","z":"","broker":"127.0.0.1","port":"1883","clientid":"nodered","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","willTopic":"","willQos":"0","willPayload":""}]
-
Вот и все уважаемые , первая часть марлезонского балета окончена . Часть проекта по созданию автоматического регулирования микроклимата под названием умная вытяжка считаю оконченным.
И так , немного по эксперементировав стало понятно что датчики dht-22 никуда не годятся , разница в показаниях двух лежащих рядом просто чудовищная и от оных решено отказаться в пользу bme-280 . Было заказано аж три и до кучи ccs-811 (прилетели достаточно быстро всего пару недель) два bme-280 управляются контроллером вытяжки а два других датчика будут принимать участие в дальнейшем развитии проекта по контролю домашнего микроклимата. В общем данные пересылаются в mqtt а оттуда обрабатываются мощнейшей софтинкой на андроид по имени tasker (подробней о возможностях чудо софта https://xakep.ru/2014/05/25/tasker-full-using/) и плагина к нему mqtt client . На данный момент имеются гибко настраиваемые действия по событию будь то сообщение в топике или голосовая команда. Скетч с разрешения уважаемого kitsum прикладываю.
Скрытый текст#include <ESP8266WiFi.h> #include <PubSubClient.h> #include <Servo.h> #include <Wire.h> #include <BME280I2C.h> // https://github.com/finitespace/BME280 /* Настройки подключения d1 white d2 black*/ String ssid = "точка достура"; String pass = "пароль точки доступа"; String server = "ip адрес mqtt"; String device = "AirPump"; // Обязательно уникальное имя для каждого MQTT клиента /* Сетевой клиент */ WiFiClient espClient; PubSubClient client(espClient); /* Сервы */ Servo myservo1; Servo myservo2; /* Таймеры */ uint32_t timer_bme = 0; /* BME */ BME280I2C::Settings settings1( BME280::OSR_X1, BME280::OSR_X1, BME280::OSR_X1, BME280::Mode_Forced, BME280::StandbyTime_1000ms, BME280::Filter_Off, BME280::SpiEnable_False, BME280I2C::I2CAddr_0x76 ), settings2( BME280::OSR_X1, BME280::OSR_X1, BME280::OSR_X1, BME280::Mode_Forced, BME280::StandbyTime_1000ms, BME280::Filter_Off, BME280::SpiEnable_False, BME280I2C::I2CAddr_0x77 ); BME280I2C BME1(settings1), BME2(settings2); void setup() { /* Serial */ Serial.begin(115200); /* i2c scaner */ Wire.begin(4, 5); i2c_scaner(); /* Сервы */ myservo1.attach(14); myservo1.write(170); myservo2.attach(12); myservo2.write(103); /* Нагрузка*/ pinMode(13, OUTPUT); digitalWrite(13, HIGH); /* BME */ BME1.begin(); BME2.begin(); /* Режим клиента */ WiFi.setAutoConnect(true); WiFi.setAutoReconnect(true); WiFi.mode(WIFI_STA); WiFi.begin(ssid.c_str(), pass.c_str()); /* Подключаемся */ while(!WiFi.isConnected()) { delay(500); Serial.print('.'); } Serial.print("!\r\n"); /* Подключаемся к брокеру */ client.setServer(server.c_str(), 1883); client.setCallback(callback); } void loop() { client.loop(); if (client.connected()) { /* Тут можно что-то свое слепить */ /* Отправка показаний с сенсоров каждые 10 секунд */ uint32_t currentTime = millis(); if (currentTime - timer_bme > 10000 or currentTime < timer_bme) { /* BME */ float humidity, temperature; temperature = BME1.temp(BME280::TempUnit_Celsius); humidity = BME1.hum(); if (!isnan(humidity) and !isnan(temperature)) { mqttsend("bme1/humidity", humidity); mqttsend("bme1/temperature", temperature); } else Serial.println("Ошибка данных полученых от BME 1"); temperature = BME2.temp(BME280::TempUnit_Celsius); humidity = BME2.hum(); if (!isnan(humidity) and !isnan(temperature)) { mqttsend("bme2/humidity", humidity); mqttsend("bme2/temperature", temperature); } else Serial.println("Ошибка данных полученых от BME 2"); /* Обновляем таймер */ timer_bme = millis(); } } else reconnect(); } void reconnect() { while (!client.connected()) { if (!device.length()) device = WiFi.hostname(); if (client.connect(device.c_str())) { /* На какие топики подписаться */ client.subscribe((device + "/control/#").c_str()); Serial.printf("Оформлена подписка: %s\r\n", (device + "/control/#").c_str()); } else { Serial.printf("Подключение не удалось, ошибка %d. Повтор через 5 секунд\r\n", client.state()); delay(5000); } } } void callback(char *gtopic, byte *payload, unsigned int length) { String msg; for (unsigned int i = 0; i < length; i++) msg += (char)payload; Serial.printf("\r\nСообщение[%s]: %s ", gtopic, msg.c_str()); /* Тут обрабатываются команды */ if (find(gtopic, "gpio13")) gpio(13, msg, "on", "off", LOW, HIGH); else if (find(gtopic, "servo1")) servo(myservo1, msg, "open", "close", 80, 170); else if (find(gtopic, "servo2")) servo(myservo2, msg, "open", "close", 18, 103); else Serial.print("Топик не поддерживается"); } void gpio(byte port, String msg, const char *c1, const char *c2, bool st1, bool st2) { if (msg == c1) digitalWrite(port, st1); else if (msg == c2) digitalWrite(port, st2); else Serial.print("Команда не поддерживается"); } void servo(Servo s, String msg, const char *c1, const char *c2, byte g1, byte g2) { if (msg == c1) s.write(g1); else if (msg == c2) s.write(g2); else Serial.print("Команда не поддерживается"); } bool find(char *gtopic, char *topic) { return (String(gtopic) == (device + "/control/" + topic)); } void mqttsend(String subtopic, int32_t message) { mqttsend(subtopic, String(message)); } void mqttsend(String subtopic, uint32_t message) { mqttsend(subtopic, String(message)); } void mqttsend(String subtopic, float message) { mqttsend(subtopic, String(message)); } void mqttsend(String subtopic, String message) { client.publish((device + "/" + subtopic).c_str(), message.c_str()); } void i2c_scaner() { byte count = 0; Serial.println("Scanning..."); for (byte address = 1; address < 127; address++) { Wire.beginTransmission(address); byte status = Wire.endTransmission(); if (status == 0) { Serial.print("I2C device found at address "); Serial.println(address, HEX); ++count; } else if (status == 4) { Serial.print("Unknow error at address "); Serial.println(address, HEX); } } if (!count) Serial.println("No I2C devices found"); Serial.println("done\n"); }
-
В 10.06.2018 в 21:07, Alex_DIY сказал:мне кажется, что это определяется больше способом передачи. Если он беспроводной, то логично, что тянуть линию передачи к месту расположения сенсора затруднительно, следовательно и питать данный сенсор логичнее автономно с помощью батарейки/аккумулятора.
вот позволю себе не согласится с вами . Логично предположить что в доме разеток 220 гораздо больше чем rg45 и собственно отсюда все вытекающие . Я бы использовал wemos mini и шилд зарядки , стоит не дорого а марока сводится к нулю
-
А что скажет kitsum ? корректен ли такой код с использованием двух библиотек ? на сколько мне известно достаточно адреса датчика
-
Постоянное низковольтное питание через DC-DC преобразователь 5-12V + 18650
-
Все конечно убого но все будет скрыто от посторонних глаз так что особо внешним видом не парюсь
-
-
В общем тяга к автоматике давно у меня в оном месте свербит а в городской однушке много не автоматизируеш . С подачи уважаемого Kitsum узнал о преимуществах MQTT перед мускулом и родилась идея контроля качества воздуха с заменой оного в жилище (после 9го мая с утра это особенно актуально) Собрал из аргалита коробку и обклеил стеклотканью на эпоксидной смоле внутри и снаружи ,поместил туда центробежный вентилятор (фоток нет так как я заклеил его в коробке раньше чем мысль оставить на память потомкам образ этого агрегата посетила меня) вклеил прямоугольные воздуховоды и модернизированные обратные клапана клапана . Клапана изготовил очень легко . До этого месяца два ждал с али потшипники и думал схему как этот самый клапан я сделаю но купив стандартные обратки понял что тут особо думать не нужно отрезав с одной стороны ось на которой качается запирающий лепесток я на это место поместил качалку из комплекта сервопривода . Рычаги кочалки распилены пополам так чтобы обеими своими концами захватывали лепесток а в корпусе клапана грубо прожжена дырень паяльником куда входит серва и вставляется в штатную качалку а чтобы серва держалась на корпусе применил холодную сварку из автомагазина , причем эта холодная сварка держит весь этот пластик не хуже горячей , покрайней мере когда я понял свой косяк (разместил под разными углами сервы ) и попытался оторвать серву от корпуса, мне это удалось далеко не сразу хотя дядька я не маленький. Ну в общем получилось то что получилось , агрегат вроде интересный но без мозгов... ESP8266 а точнее NodeMcu ESP12e которая валялась у меня с незапамятных времен была призвана частично решить этот недостаток, прикрутил реле на включение мотора вытяжки а также добавил два датчика DHT22 для измерения температуры и влажности в помещении и за стенкой где расположена ванная и началась глубоко интелектуальная работа по поиску и копипаста чужого кода .после пары безсонных ночей на свет был рожден некий франкинштейн которого Kitsum безжалостно унизил и уничтожил родив при этом код в котором я тоже поучавствовал добавив пароль, имя точки и адрес сервера ! В общем теперь это полноценный умный агрегат который шевелит клапанами и включает мотор в зависимости от данных MQTT. А собственно чего я добиваюсь ? Малинка едет , едет датчик CJMCU-811 CCS811 для определения количества выпитого на днях витаемого в воздухе , проломлена стена куда помещен и запенян воздуховод (создание фильтра очитки воздуха , запирания и подогрева в скором времени тоже будет изложено сдесь)
-
больше автоматизации ! больше ! хочу три датчика ! в ванной ,в комнате , и на улице
-
Уважаемые ! Хочу предложить вот такие качественные замки по демократичной цене ! Всего-то хочу 2500 . На форуме я проверенный человек кидалово не предвидится. https://www.perco.ru/products/vreznoy-elektromekhanicheskiy-zamok-lc85.4.php
- 1
-
Отличная идея !
-
Ясен красен , dhcp сервер нужен или ручками в скейче айпишничек править
-
На выход кнопка работает и потом зачем интернет ?
-
В 17.05.2017 в 08:47, maxim сказал:Всем привет. Во-первых спасибо Kitsum за проделанную работу.
Во-вторых переделываю это все на ESP8266, так как под рукой нет ethernet шилда для Arduino.
Сразу с работой с MySQL.
У меня вопрос такого плана: есть ли смысл UID переводить из 16 в 10 и писать в базу как число? Или проще в базу писать как varchar и потом просто сравнить посимвольно?
И еще одна проблема: при работе по I2C в инете у всех используется только SDA, SCL. У меня на ESP8266 так работает, но через какое-то время перестает принимать карты пока не перезагрузишь ESP. И иногда не видит PN532, приходится ему питание передергивать. Получается что без IRQ и RESET по I2C все таки работать не будет? На Arduino такая-же ерунда. По SPI все работает.
Уважаемый вы бы скинули свои наработки всё-таки Kitsum постить свои работы не просто так а для того чтобы тема развивалась
- 1
-
хотя деревянная наверное будет правильней
Замок с радиочастотной идентификацией
в Arduino
Опубликовано: · Жалоба на ответ
https://www.paypal.com/paypalme/kitsum