VALKNUT 4289 Жалоба Опубликовано 4 марта Собратья и сосёстры, дратути! Хочу поделиться прошивкой для LUX метра, на основе датчика VEML7700 и микроконтроллера ARDUINO NANO (и то и другое дешевле на алике в 2-4 раза) Это очень простое в реализации решение, но есть нюансы. 1. Гермитизировать сам датчик от воды 2. Придумать корпус для устройства 3. Воплотить в граните =) У меня есть 2 "поциента" (семейство @shkush и @Камень), которым я сделаю этот девайс и отошлю, но это не серийное производство, да и не ширптреб, оно нужно тем, кто знает ЧТО с ним делать.. Понадобится (по минималке): 1. датчик VEML7700 2. контроллер Arduino NANO 3. дисплей SH1106 4. готовый код и шнурок USB Спойлер #include <Arduino.h> #include <U8g2lib.h> #include "Adafruit_VEML7700.h" #include <Wire.h> U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); Adafruit_VEML7700 veml = Adafruit_VEML7700(); unsigned long previousMillis = 0; const long interval = 2000; void setup() { Serial.begin(115200); Serial.println(F("Start!")); u8g2.begin(); u8g2.setDisplayRotation(U8G2_R2); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_luIS19_tf); u8g2.firstPage(); do { u8g2.setCursor(16, 40); u8g2.print(F("AQLUX")); } while ( u8g2.nextPage() ); u8g2.sendBuffer(); delay(2000); veml.begin(); if (veml.begin() == false) { StartErr(); while (1); } else { StartUp(); opros(); } } void StartErr() { u8g2.setFont(u8g2_font_smart_patrol_nbp_tf); u8g2.firstPage(); do { u8g2.setCursor(24, 20); u8g2.print(F("VEML7700")); u8g2.setCursor(40, 40); u8g2.print(F("ERROR")); } while ( u8g2.nextPage() ); } void StartUp() { u8g2.setFont(u8g2_font_smart_patrol_nbp_tf); u8g2.firstPage(); do { u8g2.setCursor(24, 20); u8g2.print(F("VEML7700")); u8g2.setCursor(40, 40); u8g2.print(F("FOUND")); } while ( u8g2.nextPage() ); } void opros() { float lux = veml.readLux(VEML_LUX_AUTO); Serial.print("LUX: "); Serial.print(lux); Serial.print(", WHT: "); Serial.print(veml.readWhite()); Serial.print(", ALS: "); Serial.println(veml.readALS()); u8g2.firstPage(); do { u8g2.setFont(u8g2_font_smart_patrol_nbp_tf); u8g2.setCursor(90, 12); u8g2.print(F("-WHT")); u8g2.setCursor(2, 12); u8g2.print(veml.readWhite()); u8g2.setCursor(90, 52); u8g2.print(F("-ALS")); u8g2.setCursor(2, 52); u8g2.print(veml.readALS()); u8g2.setCursor(2, 32); u8g2.print(F("Lx")); u8g2.setFont(u8g2_font_profont29_mn); u8g2.setCursor(28, 37); if (lux > 99 ) { u8g2.print(lux, 0); } else { u8g2.print(lux); } } while ( u8g2.nextPage() ); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; opros(); } } На максималках можно добавить аккумулятор, DC-DC повышайку и зарядку аккумулятора от USB (мой прототип так и сделан) Основная проблема, это гермитизация датчика, чтоб его можно было опустить под воду и получит данные там, где это востребовано. Свой "прототип" я долго держал в столе и никак его не юзал, но прикупив прозрачную эпоксидку, решил возобновить эксперименты.. удачно! На данном этапе нужно произвести юстировку "в смоле"/"as is". То есть сделать поправку на потери LUX в эпоксидной смоле и программно эту разницу компенсировать. 3 Поделиться сообщением Ссылка на сообщение
VALKNUT 4289 Жалоба Опубликовано 5 марта Один концепт готов.. Без экрана, без батарей, без повышаек и контроллеров зарядки... просто и надежно. Датчик + контроллер + приложение на смартфоне (Любое из семейства USBTerminal).. Так же на компе, используя любой терминал, я предпочитаю PuTTY Что "показывает" датчик: LUX: освещенность (амбиент) WHT: только белый свет ALS: рассеянный свет, закос под восприятие человеческим глазом 2 Поделиться сообщением Ссылка на сообщение
VALKNUT 4289 Жалоба Опубликовано 6 марта Провел тестирование.. датчиков: залитый прозрачной эпоксидкой и "голый" датчик //в одинаковых условиях. Отличие на улице 8,7%, отличие в помещении 11,8%, то есть грубо говоря 10% съедает эпоксидка. Убрал лишнее WHT и ALS, они используются для корректировок LUX, в зависимости от освещенности и практической пользы для конечного пользователя не имеют. Это под лампой на рабочем месте =) 2 Поделиться сообщением Ссылка на сообщение
Lx671 415 Жалоба Опубликовано 6 марта 18 часов назад, VALKNUT сказал(а): Датчик + контроллер + приложение на смартфоне (Любое из семейства USBTerminal).. Над народом не издевайся)) Для них это "темный лес". WEB-лист простейший как сервак пропиши вместо дисплея. И не надо ни приложений ни шнурков странных... Поделиться сообщением Ссылка на сообщение
AlexLi 6620 Жалоба Опубликовано 6 марта 5 минут назад, Lx671 сказал(а): Над народом не издевайся)) Для них это "темный лес". Батл назревает))) 2 Поделиться сообщением Ссылка на сообщение
VALKNUT 4289 Жалоба Опубликовано 6 марта 24 минут назад, Lx671 сказал(а): WEB-лист простейший как сервак пропиши вместо дисплея. И не надо ни приложений ни шнурков странных... Алексей, я искренне уважаю ваш опыт (мамай клянус), но иногда я просто не понимаю что Вы пишите. Буквы понимаю, содержание нет. Веб-лист.. что за нах Веб-лист???? Какой нафиг "сервак" для пользователя со знанием электроники (науки о контактах) ниже ПТУ, зачем давать ЛИШНЕЕ? Вот Вы (честно, реально, 100%) для меня являетесь "тем самым" (Киано Ривз - Матрица) в своих изысканиях - Вы очень молодец! (откровенно). Но у нас есть сообщество, которое может (если захочет) изучить предоставляемый нами с вами "трэш" (типа информацию) и попытается что-то сделать своими руками.. Алексей, положите руку на сердце или на любое другое место (по выбору) и скажите, только честно.. с нулевыми знаниями Вы (как участник форума) бы стали повторять свои же собственные наработки "с кембриками" и транзисторами "МП42"? Понимаете к чему я веду? Дайте НАРОДУ повторяемый "ништяк" и помогите реализовать, а не дайте ЛУЗЕРАМ неповторимость своего превосходства. Надо ПОМОГАТЬ, а не ВИНОВАТИТЬ (что не понимают). Грубо говоря, Вы ведете себя крайне эгоцентрично. Мы тут, между прочим - сообщество = банда! Не можете подтянуть, не опускайте. Я всё сказал. 20 минут назад, AlexLi сказал(а): Батл назревает))) Я со своего форума трех попов изжил знанием темы, баттла не будет, не тот "потенциал разности напряжений" Хотя... я давно попов не изгонял из светского форума лет 10... Поделиться сообщением Ссылка на сообщение
AlexLi 6620 Жалоба Опубликовано 6 марта 12 минут назад, VALKNUT сказал(а): Алексей, я искренне уважаю ваш опыт (мамай клянус), но иногда я просто не понимаю что Вы пишите. Буквы понимаю, содержание нет. Веб-лист.. что за нах Веб-лист???? Какой нафиг "сервак" для пользователя со знанием электроники (науки о контактах) ниже ПТУ, зачем давать ЛИШНЕЕ? Вот Вы (честно, реально, 100%) для меня являетесь "тем самым" (Киано Ривз - Матрица) в своих изысканиях - Вы очень молодец! (откровенно). Но у нас есть сообщество, которое может (если захочет) изучить предоставляемый нами с вами "трэш" (типа информацию) и попытается что-то сделать своими руками.. Алексей, положите руку на сердце или на любое другое место (по выбору) и скажите, только честно.. с нулевыми знаниями Вы (как участник форума) бы стали повторять свои же собственные наработки "с кембриками" и транзисторами "МП42"? Понимаете к чему я веду? Дайте НАРОДУ повторяемый "ништяк" и помогите реализовать, а не дайте ЛУЗЕРАМ неповторимость своего превосходства. Надо ПОМОГАТЬ, а не ВИНОВАТИТЬ (что не понимают). Грубо говоря, Вы ведете себя крайне эгоцентрично. Мы тут, между прочим - сообщество = банда! Не можете подтянуть, не опускайте. Я всё сказал. я мало что понял по существу, но по ощущениям ты прав на 100%!))) главное, что я понял: мы-банда, и это радует! 2 Поделиться сообщением Ссылка на сообщение
Lx671 415 Жалоба Опубликовано 6 марта 1 час назад, VALKNUT сказал(а): но иногда я просто не понимаю что Вы пишите. Буквы понимаю, содержание нет. Ну вы не парьтесь с этим. У меня IQ такое низкое, что за 30 лет в связи мне обычно сливали чужестранные разработки, которые должны стыковаться с нашими, в общем вы правы, я в банде не работаю)) Ни кто не понимает)) 1 час назад, VALKNUT сказал(а): что за нах Веб-лист???? Какой нафиг "сервак" для пользователя со знанием электроники Теперь по существу. --Эта ветка начиналась с настройки среды под ESP...у которых на борту Wi-Fi, а на кой вы начали грузить более старой платой? Если вы кидаете исходник, то его должны загрузить с компа, при этом установить правильно среду и плагины. 1 час назад, VALKNUT сказал(а): Дайте НАРОДУ повторяемый "ништяк" и помогите реализовать, Ну вы хотите, чтобы неподготовленный народ припаял датчик к плате, нашел шнур телефон-плата, а перед этим прошил с компа другим шнуром, как я понял. У многих компа нет(( Повторяемый - это вы спаиваете, прописываете, присылаете. Может в коробку засунуть смогут. Вот страница для сервера - https://rvideo-kaluga.ru/sho/ba0525a.htm она переспрашивает сама себя (с платы ESP), ее можно несложно переделать под люксы. А для соединения с телефоном, ESP можно просто включить через зарядник. А в телефоне найти Wi-Fi от платы ESP (вы его вводите) и в браузере просто набрать IP, который вы пропишите. 2 часов назад, VALKNUT сказал(а): Не можете подтянуть, не опускайте. ??? У каждого свое направление. Профессии разные. При чем тут "опускать". Я много другого не знаю, обои клеить не умею вообще)) Поделиться сообщением Ссылка на сообщение
VALKNUT 4289 Жалоба Опубликовано 6 марта 1 час назад, Lx671 сказал(а): При чем тут "опускать". Я много другого не знаю, обои клеить не умею вообще)) Я к тому, что надо подсказать КАК, а не рассказать почему только ТЫ можешь. Почувствуй разницу. Надо нести ЗНАНИЯ в массы (примеры, для повторения), а не делать из себя "форму для феонита, чтоб как брилиант".. понятно объясняю? Если кратко, народам нужен воспроизводимый эксперимент, а не "мазоль" от ника, который как божество с кембриками и дурацкими "Вебинтерфесами". Прошу прощения, считаю Ваши наработки интересными, но убогими, в плане реализации/привлекательности. Я бы, себе подобные вашим "интерфейсы" занулил на стадии разработки. Надо делать такое, что повторить могла и милфа. Поделиться сообщением Ссылка на сообщение
VALKNUT 4289 Жалоба Опубликовано 7 марта 13 часов назад, Lx671 сказал(а): Теперь по существу. --Эта ветка начиналась с настройки среды под ESP...у которых на борту Wi-Fi Если уж по существу, то тема называется (дословно) "Ардуино в помощь аквариуму" 13 часов назад, Lx671 сказал(а): а на кой вы начали грузить более старой платой? Эта "более старая плата" называется Arduino Nano, что даже в большей мере соответствует теме, чем те же контроллеры ESP. Более того, производство и поддержка этих контроллеров продолжается и они востребованы многими разработчиками, что в переводе с буржуйского "спрос рождает предложение". Более того, выбирая тот или иной контроллер для определенной задачи, лучше руководствоваться здравым смыслом. Для конкретно этой задачи: - "получить данные с датчика VEML7700 и предоставить их пользователю" я выбрал самый простой и доступный контроллер Arduino Nano. У меня есть и ESPшки разного калибра и Ардуинки (Уно и Мега), но забивать гвозди микроскопом = такое себе... Поделиться сообщением Ссылка на сообщение
AlexLi 6620 Жалоба Опубликовано 7 марта @VALKNUT а говорил, что батла не будет, обманщик))) 2 Поделиться сообщением Ссылка на сообщение
VALKNUT 4289 Жалоба Опубликовано 12 марта Немного допилил код для Arduino Nano (без собственного экрана, с выводом на смартфон/компьютер) - Добавил возможность внести коррекцию из консоли терминала в % и сохранить значение в энергонезависимую память (EEPROM). // Коррекция нужна для датчиков в "подводном" исполнении, т.к. любой прозрачный материал между датчиком и источником света является преградой для света и данные от "открытого" и "залитого" датчиков будут разными. Код для Arduino IDE (среда разработки) для простейшего контроллера Arduino Nano. Тем, кто хочет сам поиграться и/или модифицировать под свои нужды. Спойлер #include <EEPROM.h> #include "Adafruit_VEML7700.h" #define LOAD_VALUE_PARAMNAME_1 EEPROM.read(0) #define SAVE_VALUE_PARAMNAME_1(value) EEPROM.update(0, value) Adafruit_VEML7700 veml = Adafruit_VEML7700(); unsigned long previousMillis = 0; long interval = 2000; byte myPrc = 10; void setup() { Serial.begin(115200); Serial.setTimeout(5); veml.begin(); if (veml.begin() == false) { Serial.println(F("VEML7700 not found!")); while (1) ; } else { Serial.println(F("AQLUX start, VEML7700 found!")); loadParams(); // Чтение из EEPROM showParams(); // Отображение прочитанного в мониторе порта opros(); } } void loadParams() { myPrc=LOAD_VALUE_PARAMNAME_1; } void showParams() { Serial.println("Correction: " + String(myPrc) + "%"); } void opros() { float lux = veml.readLux(VEML_LUX_AUTO); Serial.print(F("LUX: ")); if (myPrc == 0) { Serial.println(lux); } else { Serial.println(lux + (lux * myPrc / 100)); } } void loop() { if (Serial.available()) { String s = Serial.readStringUntil("%"); myPrc = s.toInt(); if (s.toInt() > 255) myPrc = 100; if (s.toInt() < 100) { SAVE_VALUE_PARAMNAME_1(myPrc); } else { Serial.println(F("ERROR: <100%!!!")); myPrc = 100; } showParams(); } unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; opros(); } } На смартфоне я использую такое вот приложение. (Simple Serial Port) Спойлер На скрине: - запуск приложения - чтение коррекции из памяти (Correct: 15%) - вывод данных датчика - отправка новой коррекции в терминал "11%" /происходит и запись в память/ - чтение коррекции из памяти (Correct: 11%) - вывод данных датчика На компе (стандартными средствами) сложней передать данные для коррекции, но прочитать очень легко. Спойлер Чтоб читать данные из порта, на котором висит "устройство" необходимо: 1. Узнать номер этого COM порта. Нажимаем [Win]+[R], вводим в форму cmd и нажимаем [Enter]. Откроется консоль Windows, в которую можно вставить следующий текст команды (здесь можно скопировать, а вставляется текст в консоль однократным щелчком правой кнопки мышки) reg query HKLM\HARDWARE\DEVICEMAP\SERIALCOMM После выполнения команды (по кнопке [Enter] Получаем список активных портов.. C:\Users\***>reg query HKLM\HARDWARE\DEVICEMAP\SERIALCOMM HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM \Device\Serial0 REG_SZ COM1 \Device\VCP0 REG_SZ COM9 C:\Users\***> Нужный порт COM9 2. Не закрывая консоль вводим команду настройки порта. Скорость, четность, битность, градус, оборот... /и нажимаем [Enter] mode COM9 BAUD=115200 PARITY=n DATA=8 Выйдет вот такая техническая информация C:\Users\***>mode COM9 BAUD=115200 PARITY=n DATA=8 Состояние устройства COM9: --------------------------- Скорость: 115200 Четность: None Биты данных: 8 Стоповые биты: 1 Таймаут: OFF XON/XOFF: OFF Синхронизация CTS: OFF Синхронизация DSR: OFF Чувствительность DSR: OFF Цепь DTR: ON Цепь RTS: ON C:\Users\***> 3. И теперь, чтоб получить данные с устройства вводим в ту же консоль /и нажимаем [Enter] TYPE COM9 Теперь в консоль сыпятся данные от устройства.. для отключения от COM порта используется команда [Ctrl]+[C] C:\Users\***>TYPE COM9 AQLUX start, VEML7700 found! Correction: 0% LUX: 147.65 LUX: 147.17 LUX: 146.70 LUX: 147.17 LUX: 147.17 Операция ввода/вывода была прервана из-за завершения потока команд или по запросу приложения. C:\Users\***> Сторонние приложения более гибкие, но уже не являются стандартными средствами. Спойлер Например приложение "Serial Port Terminal" /бесплатная программа/ Позволяет и читать и писать в порт и подключаться не сложно, в общем.. покажу на скриншотах.. Настройка порта Подключение и работа Поделиться сообщением Ссылка на сообщение
VALKNUT 4289 Жалоба Опубликовано 2 апреля Время социальных ограничений привело меня к заботе: как получать уведомления от серверов, роутеров И! Аквариумов (Arduino и ESP), в Мах, вместо упокоенного Телегушки? На данный момент в Мах мне уже приходит информация из Windows, из Linux и из RouterOS (роутеры MikroTik). Осталось отправить хоть одно сообщение из ESP32 и для меня этот "переломный" момент можно считать закрытым. RouterOS cURL Windows (cmd) cURL Linux (bash) Но! Пока есть куча но. И желание заборцевать их. ESP, я иду к тебе. /ЗЫ Почему здесь (в этой теме)? Всё просто, мои аквасы постоянно мне рассказывают о своем состоянии (охлаждают или нагревают воду). Ну и просто я люблю такой контроль над устройствами. 1 Поделиться сообщением Ссылка на сообщение
VALKNUT 4289 Жалоба Опубликовано 3 апреля 16 часов назад, VALKNUT сказал(а): ESP, я иду к тебе. Есть пробитие ворот! 1 1 Поделиться сообщением Ссылка на сообщение
Lx671 415 Жалоба Опубликовано 8 апреля Очень актуальной вещью оказалось создание обычных кнопок для изменения яркости света, вкл/выкл каких-то устройств... Там, где есть аналоговый вход (esp8266-да, esp32-нет) - можно создать десятки кнопок. Там где обведено желтым - это "10 кнопок", сделаны с экономией места)) 2 кнопки переключаются (П1) 5 разных положений = 10. Ну и получился несложный модуль управления для диммируемых (с регулировкой яркости) обычных ламп 220В. Управляется от обычного ШИМ с контроллера. Качество работы у них, как через алису, только уровней яркости на много больше. И отлично регулируются лампы накаливания 220в до 25 вт. На небольшом радиаторе получилось 25 ВТ. Мне эта функция не нужна, но ради интереса собрал)). Если кто собрать захочет, схему нарисую... Поделиться сообщением Ссылка на сообщение