#226 Re: Різне » Література для дітей та початківців » 2025-05-22 16:24:07

Також я б рекомендував почати з інтерпретатора типу MicroPython. З ардуінівською недо-C++ легко отримати хибні уявлення про програмування, потім буде нелегко перевчатися.

#227 Re: Різне » Література для дітей та початківців » 2025-05-22 14:57:39

jokeer пише:

Рано.

Чому це? Від конкретної дитини залежить. У 8 років я вже ZX Spectrum на бейсіку програмував.

#228 Re: Проекти » Поскажите новичку » 2025-05-22 09:19:02

Можна все. Питання в тому, що для цього потрібно зробити і скільки це займе часу.

Malich пише:

один проект на базі esp8266

Проект в чому, Arduino IDE, PlatformIO, чи може якась кастомна система збірки? Який фреймворк використовується? Arduino Core, RTOS SDK, Non-OS SDK?

Malich пише:

перевесті на esp32

Це називається "портувати". Щоб відповісти на ваше питання, потрібно знати:
Чи використовує код напряму якісь специфічні для ESP8266 властивості, які в ESP32 працюють по-іншому або відсутні?
Якщо використовуються сторонні бібліотеки, чи підтримують вони ESP32?

#229 Re: Програмування Arduino » Вопрос по цифровому реле с питанием 12В » 2025-05-15 19:16:30

Але тоді цей програмований модуль не потрібен. Звичайний модуль з реле плюс Arduino або будь-який інший контролер. Якщо потрібна привʼязка до реального часу, то ще плюс модуль RTC.

#230 Re: Проекти » Лінійний сервопривід » 2025-05-12 16:05:20

Ще додати відтворення звукового фрагмента: "Обережно, двері зачиняються. Наступна станція ..." (жартую smile )

#231 Re: Апаратні питання » Блок контролю цілісності ламп » 2025-05-11 00:40:04

B21 пише:

У вас дуже цікава схема, як я зрозумів поріг включення лампи на панелі регулюється підстроювальним резистором?

Це умовно, щоб показати принцип. Якщо потрібна можливість регулювати поріг, то можна і підстроювальний.  Якщо порогові значення струму відомі заздалегідь, то краще дільник на звичайних резисторах, так надійніше.

B21 пише:

4 лампи 21/5вт, на задні габарити/стопи

Задні габарити та стопи хіба не окремо? Питав, щоб оцінити, яка потрібна точнісь для розрізнення "працюють всі" від "одна згоріла". А це залежить від кількості ламп, що підʼєднані до однієї лінії, в якій вимірюється струм.

B21 пише:

Ідея із захистом така: Ардуїно через транзистор розмикає "нормально замкнуте реле", через яке йде +12 на пряму до ламп, якщо ардуїно виходить з ладу, то транзистор закривається і контакт на реле замикає 12в на пряму з ліхтарями.

Так ардуїно може "вийти з ладу" і залишити пін в будь-якому стані, в тому числі тримаючи транзистор відкритим.
Взагалі, ні ардуіно, ні будь-яка інша схема не повинна керувати лампами, тільки аналізувати струм.

B21 пише:

Рідний блок тому доказ, що щось перегоріло і ні стопів ні габаритів, добре що поворотники поза цією схемою, і немає жодного "аварійного режиму", тільки паяльник із собою возити.

Щось там у вас дуже дивне відбулося. Якщо в тойотівському блоці такий же принцип як в тому вазівському, то він не керує самими лампами. Струм ламп тільки проходить через шунти (оті дротяні "перемички" на фото мабуть вони і є). Тобто щоб перестало працювати все, потрібно щоб одночасно згоріли всі шунти або доріжки до них. Ну, ще чисто теоретично, один із входів могло би коротнути на масу і згорів би запобіжник.
Хоча, не виключаю, що там якийсь зовсім інший принцип, і ті мікросхеми дійсно керують лампами.

B21 пише:

На жаль з компараторами ще не мав справи та не знаю як вони працюють roll

Якщо дуже умовно і приблизно, то так:

while (true) {
    if (analogRead(pinInPos) < analogRead(pinInNeg)) {
        digitalWrite(pinOut, LOW);
    } else {
#ifdef OPEN_DRAIN_OUTPUT
        pinMode(pinOut, INPUT);
#else
        digitalWrite(pinOut, HIGH);
#endif
    }
}

  smile

#232 Re: Апаратні питання » Блок контролю цілісності ламп » 2025-05-10 15:46:22

duron пише:

У корчах типу ВАЗ є такий самий блок, 4452.3747

Ось. ASXP194P (УР1101ХП34).
Датчики струму на шунтах, компаратори, логіка для холодного тесту та таймер затримки.
Зверніть увагу на наявність захисту від високовольтних викидів по живленню.

#233 Re: Апаратні питання » Блок контролю цілісності ламп » 2025-05-10 00:00:29

jokeer пише:

Так то воно так wink а потім виясниться, що там 2 групи ламп, кожна заживлена через свій запобіжник, і треба ще датчик і якусь логіку допаяти wink

Так отож, спочатку треба схему бачити, що звідки куди йде, а потім уже щось вигадувати.

jokeer пише:

В одноразових саморобках економити 100 грн немає особливого смислу.

Та не в економії справа. Якщо просто вимірювати напругу з датчика відносно напруги живлення ардуіни чи його внутрішнього опорника, воно не працюватиме як задумано. Щоб працювало, потрібно вимірювати відносно напруги бортового живлення. Але тоді виходить, що ардуіна лише виконує роль компаратора і потребує такої ж самої обвʼязки. Тоді чому не взяти просто компаратор?

Ну якщо хочеться, щоб при перегорянні лампочки індикатор блимав, програвалась мелодія та відсилалось повідомлення у вайбер, то можна і ардуіно. Але щоб воно виконувало свою основну функцію не гірше за звичайний компаратор, вихід датчика потрібно міряти відносно бортового живлення, про що я і писав.

Не зовсім зрозуміло, що там у автора за ідея з "захистом" та реле, що та від чого захищати.

#234 Re: Апаратні питання » Блок контролю цілісності ламп » 2025-05-09 22:00:59

jokeer пише:

Не проблема насправді.

Та хто ж каже, що проблема. Проблема зʼявиться, якщо перемудрити.

jokeer пише:

В древній тойоті це ж працювало.

Але ж без ардуіни smile Не думаю, що там якась цифра була. Там взагалі, мабуть, на кожну лампу свій "датчик", інакше навіщо виносити окремий блок в багажник?

Навряд чи там потрібне щось складніше за таку схему (малював умовно):
blown-lamp-sensor_20250509-2209.png
Тут U1, R1, C3 - сам датчик ACS712 (EDIT: забув, що ACS712 на датчику Холла, шунт не потрібен).
Q1 буде потрібен і в схемі з ардуіною, якщо індикаторна лампа 12-вольтова. Якщо світлодіод, то тут не потрібен.
Тобто замість ардуіни - компаратор, 7805, три резистори і пара кондьорів. Сумарно менше 20 грн.

А якщо замість ACS712 взяти ZTCT1009 або щось подібне, то і 7805 не буде потрібна.

#235 Re: Апаратні питання » Блок контролю цілісності ламп » 2025-05-09 20:39:11

jokeer пише:

Датчик струму, мабуть, краще підходить для визначення чи жива лампа.

Я ж так розумію, там дві або чотири лампи в паралель. Щоб розрізнити "всі живі" від "одна згоріла", потрібно умовно вимірювати опір з точністю 1/N. А опір - це відношення напруги до струму. Якщо напруга фіксована, достатньо виміряти тільки струм. Але ж напруга не фіксована. Тому при вимірюванні абсолютного значення струму необхідна така точність, щоб дозволяла відрізняти "всі живі" при мінімальному значенні напруги від "одна згоріла" при максимальному. Або вимірювати відносний струм. Датчик і так видає напругу, пропорційну струму. ЇЇ достатньо порівнювати з напругою, пропорціїною напрузі бортової мережі. Тоді абсолютне значення напруги бортової мережі не має значення.

#236 Re: Апаратні питання » Блок контролю цілісності ламп » 2025-05-09 18:04:27

B21 пише:

просто пропустити 12в через 2 датчики струму

По скільки там у вас ламп в паралель на кожній лінії? Майте на увазі, що при 12 В і при 14.5 В струм відрізнятиметься на 20%. Ще й розбіжність опорів у різних ламп. Якщо так уже хочеться застосувати ардуіну, то подавайте бортову напругу через дільник на Vref та міряйте відносно Vref. Взагалі у атмеги і аналоговий компаратор є, можна було б його застосувати замість АЦП. Але чому б тоді просто не застосувати окремий дискретний компаратор із живленням напряму від бортової мережі, і не заморочуватись із різницею вольтажів? Ардуіна там зовсім не потрібна.

#237 Re: Апаратні питання » Блок контролю цілісності ламп » 2025-05-09 15:05:11

B21 пише:

Хочу зробити новий блок на основі ардуїно

Я би спочатку продумав метод, як контролювати цілісність ламп. Подивився б, як це реалізовано в існуючих системах. Тільки після цього вирішував, за якою схемою та на якій елементній базі робити.

B21 пише:

був варіант зробити так, щоб ардуїно зчитувала опір всіх ламп в робочій системі

Не дуже зрозуміло, що значить "зчитувала опір всіх ламп"? Ви хочете відключати лампи від бортової системи, подавати тестову напругу та вимірювати струм? Чи вимірювати струм за наявності напруги увімкнення?

B21 пише:

і якщо раптом ардуїно вийде з ладу і не керуватиме

За яким критерієм збираєтесь визначати, що ардуїно вийшло з ладу?

B21 пише:

Що скажете щодо цієї ідеї?

Якось занадто кучеряво. Вам як мінімум доведеться узгоджувати бортову напругу 12-14.5 В з напругою I/O ардуіно. Причому для ланцюгів габаритів та стопів окремо.

Тут мало би бути достатньо вимикати індикаторну лампу, коли струм в ланцюгу ламп перевищує пороговий. Тобто датчик струму (шунт?), компаратор та транзистор.

#238 Re: Проекти » Лінійний сервопривід » 2025-05-08 22:01:11

jokeR пише:

Встигає за 1 мс wink ESP32 капєц швидка штука wink

Та справа ж не у швидкодії процесора. Записати кілька байтів у регістри - це і на atmega займає мікросекунди. А фактичний запис байта в EEPROM - 3.4 мс (1.8 мс, якщо без стирання).

Тут же важливий проміжок часу між виникненням зовнішньої події (падіння напруги нижче заданного рівня) і завершенням запису на фізичному рівні. А він залежить від купи різних факторів.

Якщо для моніторингу використовується компаратор, який генерує переривання - це одне (я не в курсі, чи є такий в ESP32). Якщо періодично читається АЦП - це інше. Впливатиме, з якою частотою йде опитування, чи задіяно паралельно інші канали, чи виконуються інші задачі, які пріорітети у задач (якщо це RTOS).

ESP32 пише на зовнішню флешку, підʼєднану по SPI. Впливатиме, чи будуть в черзі інші SPI транзакції, чи встигла флешка закінчити попередню операцію. У типової XM25QH32C запис сторінки - 0.5 мс, але якщо для запису потрібно стерти сектор - це вже 50 мс.

#239 Re: Проекти » Лінійний сервопривід » 2025-05-07 15:11:26

jokeer пише:

Кінцевик один (не хочеться жмута проводів)

А, тепер зрозумів.
Як варіант - сам датчик на рухомій частині, а магніти в крайніх стаціонарних положеннях.
Ще варіант без кінцевика - моніторити струм двигуна. Але може знадобитись фрікцион. Бо якщо момент у двигуна великий, та ще й червʼячна передача, то поки система зреагує на зростання струму, може встигнути щось поламати.

#240 Re: Проекти » Лінійний сервопривід » 2025-05-07 13:40:43

jokeer пише:

Зберігати положення приводу непогано було б.

Це, мабуть, потрібно краще розуміти логіку роботи системи. Бо як розумію на даний момент, є два положення: вікно відчинене, вікно зачинене. Відчиняється або зачиняється в залежності від поточної температури? Яке тут положення приводу?
Якщо на старті алгоритм потребує, щоб система була в детермінованому стані, то можна привести її в початковий стан безумовно, наприклад, вікно закрите. А далі нехай працює алгоритм.

jokeer пише:

Є ще дивна ідея зберігання в retain message в mqtt wink

Ще ідеї, щоб зберігати при кожній зміні, а не тільки при зникненні живлення: якщо раптом надумаєте ставити RTC з батарейкою, то зазвичай там є кілька десятків байтів CMOS-памʼяті. Або зберігати в зовнішню FRAM smile

PS: соррі, не розумію, jokeR та jokeer (Гість) - це одна і та ж особа, чи ні.

#241 Re: Проекти » Лінійний сервопривід » 2025-05-07 12:54:40

jokeR пише:

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

Це стандартна практика при механічній комутації силових ліній. Ніяких розмикань під струмом, ніяких замикань під напругою. Розмикання під струмом тільки в разі аварійного відключення.
В критичних застосуваннях ще й тест на залипання контактів. Але для вашого проекту це, мабуть, зайве smile

jokeR пише:

Була ідея ловити пропадання напруги живлення, і, поки є енергія в конденсаторах, зберігати налаштування програми на флешку.. Але завади від мотора досить інтенсивні, багато false positive.. Поки не придумав рішення.

Дуже приблизна оцінка порядку величин: ESP32 в активному режимі споживає біля 20 мА (а вона скоріш за все буде в активному, бо потрібно читати ADC і писати на флешку). Ємності 3000 мкФ після діода при падінні напруги з 5 В (не з 12, бо LM7805 зʼїдає 7 вольт) до 3 В (берем як мінімум для ESP32) має вистачити десь на 300 мс. Теоретично можна встигнути. Але це дуже оптимістична оцінка. Якщо працює вайфай, споживання ESP32 може бути в 3-4 рази більше. Якщо замкенене реле, це ще +30 мА.

12 вольт іде з мережевого БЖ? Я б запропонував детектити наявність напруги AC мережі. Баластний конденсатор + 814 оптопара (або 817 паралельно з діодом). Тоді в запасі вся ємність БЖ, в тому числі й високовольтна.

А взагалі, моя особиста думка, автоматичне збереження налаштувань - це зайве. Кнопка чи пункт меню "зберегти" - простіше, надійніше та зрозуміліше. Звісно, в деяких випадках аварійне збереження поточного стану системи необхідне, але не для користувацьких налаштувань.

#242 Re: Програмування Arduino » Бібліотека GyverOLED та OLED дисплей SSH1106 не працює » 2025-05-06 21:45:23

HelloArduino пише:

Спеціалісти середніх років ведуть себе як ВИ. замість направити та пояснити - насміхаються.

Та де ж ви побачили насміхання? Вибачаюсь, якщо когось образив мимоволі. В жодному разі не мав на увазі нікого з учасників. Я скоріше "жаліюся" на загальну тенденцію в IT, бо теж наболіло.

HelloArduino пише:

Треба вчити людей, пояснювати та направляти.

Саме цим і намагаюсь займатись тут на форумі. Комусь може здатись парадоксом, але як розробник, я хотів би бачити [майбутніх] колег по цеху кваліфікованими. А як користувач продукції, так тим більше.

HelloArduino пише:

Краще пояснюйте новачкам як правильно робити замість "бидло коментарів"

Це молоді спеціалісти завжди знають, як треба правильно робити. Старі та досвідчені добре знають, як НЕ треба робити smile
Щоб пояснити як правильно, потрібно спрочатку зрозуміти, що людина взагалі хоче отримати.
Та і як пояснювати, не вказуючи на поточні помилки?

#243 Re: Програмування Arduino » Бібліотека GyverOLED та OLED дисплей SSH1106 не працює » 2025-05-06 15:34:40

jokeer пише:

Щоб щось писати в резюме, досить просто вміти писати.

Нє, ну це трохи інше. Казкарі-фантасти зазвичай відсіюються на першому ж етапі співбесіди.
Гірше, коли людина наче б то і шарить, але щиро впевнена, що так можна і потрібно писати, бо, наприклад, так пишуть у бібліотеках для ардуіни.

jokeer пише:

А піонер, який приварив до мікроскопа трубу і забив шуруп у бетон, може вважати, що розбирається у мікроскопах, металопрокаті, електрозварюванні, бетоні і фітнесі smile Не бачу в тому нічого позорного smile

Та воно-то наче так, для самого піонера. Складно людям, яким доводиться працювати з таким або його "продуктом".

#244 Re: Різне » Передача телеметрии » 2025-05-04 19:13:28

vigor53 пише:

Просто подумал что на форуме может кто то имеет такие наработки .....

Ви сподіваєтесь, що у когось завалялись готові прошивки для ардуіно, одна з яких вимірює два параметра саме таким способом як у вас, передає їх по радіоканалу саме за допомогою nRF24, а друга приймає та відображає саме на такий як у вас дисплей у потрібному вам форматі?

Звʼязок по nRF24 - приклади в бібліотеці для nRF24.
Відображення символів на дисплей - приклади в бібліотеці для дисплея.
Вимірювання струму та напруги - залежить від того, чим будете міряти.
В якому форматі передавати дані - у якомось бінарному стандартизованому, у самописному, чи просто готовим текстом - вирішувати тільки вам. Найпростіший для вашої задачі варіант (з моєї субʼєктивної точки зору) - передавати готовий текст - я вже запропонував.

#245 Re: Різне » Передача телеметрии » 2025-05-04 17:31:03

vigor53 пише:

Но я так понимаю что должно быть прописана фунция обработки получаемых с датчика сигналов ?

Так, на передавачі. Наприклад, наміряли 13.6 В, 18.2 А. Передавач формує строку: "\002U: 13.6 V\nI: 18.2 A\003" і відсилає її.
Тут для прикладу застосовано символи керування ASCII:
'\002' - STX, start of text
'\003' - ETX, end of text
'n' ('\012') - LF, line feed

Приймач отримує цей потік байтів і обробляє символи керування.
Коли приймає '\002' - встановлює поточну позицію для виводу на початок екрана: row=0, col=0.
Коли приймає '\003' - очищає екран від поточної позиції до кінця екрана.
Коли приймає 'n' - переміщує поточну позицію на початок наступного рядка: row=row+1, col=0.

Інші ASCII символи просто виводить на екран у поточну позицію (row, col) та зсуває її на наступну: col=col+1.

Як організувати звʼязок - залежить від потрібної дальності та надійності. Можна взагалі взяти пару так званих "бездротових подовжувачів UART" на 433 МГц і передавати/приймати як через звичайний UART.
Можна приймати і по NRF24, але виводити не на окремий дисплей, а в смартфон через USB-UART конвертор.

Звісно, можна передавати і не готовий потік символів для відображення, а "сирі" дані, і обробляти їх уже на приймачі. Але тоді потрібно розробляти хоч і примітивний, але протокол передачі. А там і до protobuf чи efficient XML interchange недалеко. Воно вам треба? smile

Взагалі, розбийте задачу на окремі підзадачі:
1. Звʼязок
2. Формат даних (протокол)
3. Відображення інформації
і вирішуйте їх окремо.

#246 Re: Різне » Передача телеметрии » 2025-05-04 15:29:04

Вам просто отримувати значення струму та напруги в реальному часі?
Я би зробив уніфікований приймач, який отримує довільний потік символів та відображає його на дисплей. Типу read-only термінал. А передавач на кораблику нехай передає дані у вигляді готового потоку символів для відображення.

#247 Re: Програмування Arduino » Бібліотека GyverOLED та OLED дисплей SSH1106 не працює » 2025-05-03 11:56:54

jokeR пише:

До речі, ліба  Adafruit_SSD1306 всередині на ifdef smile

Не дуже розумію, що значить "всередині на ifdef". Застосовуються директиви препроцесора для умовної компіляції? Так це нормально, так забезпечується кросплатформенність. Тим більше, коли фреймворк не надає інших засобів. Та й ліби від Adafruit - теж далеко не взірець хорошого коду.

#248 Re: Програмування Arduino » Бібліотека GyverOLED та OLED дисплей SSH1106 не працює » 2025-05-03 11:45:35

jokeer пише:

Я погано уявляю смисл саморобки з 2 різними, але дисплеями wink

Для саморобки можна хоч в коді самої "бібліотеки" цвяхами прибити те що потрібно тут і зараз. Головне, не тягнути такі методи в продакшн. Ардуіно як навчальна платформа мала би сприяти грамотному підходу до розробки ПЗ, але ж там інша мета. Піонери купляють модулі, бо "все просто і зрозуміло", а більше і не треба. Потім ці піонери пишуть в резюме "я знаю кунг-фу".

#249 Re: Програмування Arduino » Бібліотека GyverOLED та OLED дисплей SSH1106 не працює » 2025-05-03 09:25:08

jokeer пише:

А щодо define/ifdef - на цьому весь Arduino core побудований, і нічого, працює якось wink

Так отож, що "якось". В core умовна компіляція в основному для різних цільових платформ, які взаємовиключні при збірці.
Поблимати світлодіодом та намалювати прямокутник на єдиному дисплеї - це ще ок. А коли потрібно більше одного інстанса з різними параметрами?

jokeer пише:

В будь яку функцію Ctrl click - і зразу видно, як воно побудоване всередині, що буде білдитись, що ні.

Де, в Platform IO? Так з шаблонами те ж саме, навести курсор на ідентифікатор, і спливає підказка, з якими параметрами клас інстанційовано. А в імплементації самого класу по-хорошому не має бути ніяких драбин з if ... else if ... else.

#250 Re: Програмування Arduino » Бібліотека GyverOLED та OLED дисплей SSH1106 не працює » 2025-05-03 08:03:30

jokeer пише:

Мені здається, що шаблони придумані для чогось іншого.

Так, для узагальнення алгоритмів та відвʼязки від конкретних типів.
Мали би бути окремі класи з імплементацією для SSD1306 та SSH1106, а також для SPI та I2C, які надають абстрактні інтерфейси. Той самий поліморфізм, тільки гарантовано під час компіляції.

jokeer пише:

ifdef це просто, і зразу видно, що відбувається.

Це просто, поки у вас один макрос з булевим значенням (defined / not defined). Якщо їх два, то кількість комбінацій уже чотири.
Крім того, добре, якщо автори фреймворку встановили конвенцію про іменування макросів, а автори коду її притримуються. Бо коли у вас зʼявляється дві бібліотеки з однаково названими макросами, то привіт.
Вже не кажу про бідолашних користувачів Arduino IDE, де нема штатного способа визначити макрос опціями компілятора.
У макросів є свої застосування, але не для поліморфізму в C++.

jokeer пише:

А в те що там написано у Гувера, треба спеціально врюхувати.

Звісно, якщо параметри шаблона використовуються тільки для розгалуження в if'ах, а їх значення визначаються тими ж макросами smile

Підвал форуму