🖥️ Серверная система ARD
🚀 Основа системы - Hypervisor Proxmox VE
Nginx для управления веб-доступом
Защита данных и снапшоты
KVM + LXC контейнеры
Управление через браузер
💾 Аппаратная часть
⚡ Процессор
Intel Xeon E3-1240 v6
4 ядра / 8 потоков
🧠 Память
32 ГБ DDR4 ECC
2 слота из 4 занято
🛡️ Материнка
Supermicro X11SSL-F
Серверная плата
🏗️ Структура виртуальных машин
🗄️ Файловые сервисы
kladovka - общие папки для компании
Samba - доступ с Windows/Linux
📧 Коммуникации
mail - корпоративная почта
Asterisk - телефонная связь
🛡️ Безопасность
AD - учетные записи
PACS - контроль доступа в помещения
🌐 Доступ
RDP-Gateway - удаленная работа
webserver - сайты компании
💽 Система хранения данных
🏗️ Системный пул (rpool)
💿 Диски: sda + sdb (зеркало)
 📊 Размер: 930 ГБ
 🎯 Назначение: Система Proxmox + ВМ
🗄️ Пул данных (hdd2)
💿 Диски: sdc + sdd (зеркало)
 📊 Размер: 931 ГБ
 🎯 Назначение: Данные виртуальных машин
✨ Преимущества системы
ZFS Mirror + автоматические снапшоты
7 виртуальных серверов в одной системе
Все сервисы управляются через один веб-интерфейс
Добавление новых ВМ за 5 минут
🎉 Итог
Современная enterprise-инфраструктура на базе Proxmox VE,
объединяющая все ключевые сервисы компании в одной системе!
ПРОСТАЯ НАСТРОЙКА ФАЙЛОПОМОЙКИ НА БАЗЕ SAMBA
📁 Как правильно настроить Samba-сервер для маленькой компании (пошагово, без лишней мозгоебли)
Привет! 👋 Эта инструкция — для тех, кто хочет поднять простой файловый сервер на Linux (например, Debian в Proxmox), чтобы коллеги могли заходить с Windows и спокойно работать с общими папками.
Не нужно Active Directory, не нужно быть админом-джедаем. Достаточно базовых знаний Linux и 15 минут времени.
✅ Что мы хотим получить?
- Сервер с двумя папками: kladovka(все пишут) иVsyakoepoleznoe(только чтение, админы — могут писать)
- Подключение с любого ПК в локальной сети по логину и паролю
- Работает на 2, 5 или 20 компьютеров — без ошибок вроде «имя уже используется»
🔧 Шаг 1. Установи Samba (если ещё не установлен)
sudo apt update
sudo apt install samba👥 Шаг 2. Создай пользователей и группы
Представим, у тебя есть два коллеги: ivan и maria. Иван — обычный пользователь, а Мария — админ.
# Создаём группы
sudo groupadd ard-users
sudo groupadd ard-admins
# Создаём пользователей
sudo adduser ivan
sudo adduser maria
# Добавляем в группы
sudo usermod -a -G ard-users ivan
sudo usermod -a -G ard-users maria
sudo usermod -a -G ard-admins maria⚠️ Пароли, которые ты вводишь при adduser, — это для входа в Linux. А для Samba — свои пароли!
# Задаём Samba-пароли (они нужны при подключении из Windows!)
sudo smbpasswd -a ivan
sudo smbpasswd -a maria📂 Шаг 3. Подготовь папки
sudo mkdir -p /mnt/storage/kladovka
sudo mkdir -p /mnt/storage/vsyakoepoleznoe
# Назначь права
sudo chown -R root:ard-users /mnt/storage/kladovka
sudo chown -R root:ard-users /mnt/storage/vsyakoepoleznoe
sudo chmod -R 0775 /mnt/storage/kladovka
sudo chmod -R 0755 /mnt/storage/vsyakoepoleznoe⚙️ Шаг 4. Настрой /etc/samba/smb.conf
 Замени весь файл на этот (скопируй и вставь):
[global]
    workgroup = ARD
    server string = ARD File Server
    security = user
    encrypt passwords = yes
    interfaces = 192.168.88.0/24 lo
    bind interfaces only = yes
    map to guest = never
    guest ok = no
    socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536
    use sendfile = yes
    log file = /var/log/samba/log.%m
    max log size = 1000
    logging = file
    server min protocol = SMB2
    client min protocol = SMB2
[kladovka]
    path = /mnt/storage/kladovka
    browseable = yes
    writable = yes
    valid users = @ard-users, @ard-admins
    create mask = 0664
    directory mask = 0775
[Vsyakoepoleznoe]
    comment = Software archive (Read Only for users, Write for admins)
    path = /mnt/storage/vsyakoepoleznoe
    browseable = yes
    read only = yes
    valid users = @ard-users
    write list = @ard-admins
    create mask = 0644
    directory mask = 0755
    force create mode = 0644
    force directory mode = 0755🔄 Шаг 5. Перезапусти Samba
sudo testparm          # проверь, нет ли ошибок
sudo systemctl restart smbd💻 Шаг 6. Подключись с Windows
- Открой Проводник
- В адресной строке введи: \\192.168.88.230\kladovka(подставь свой IP!)
- Появится окно логина — введи: - Имя пользователя: ivanилиmaria
- Пароль: тот, что ты задал через smbpasswd -a
 
- Имя пользователя: 
- Готово! 🎉 Теперь папка доступна.
💡 Совет: если Windows «ругается», отключи старые подключения командой в командной строке:
net use * /delete /y🔍 Как проверить, кто подключён?
На сервере выполни:
sudo smbstatusТам увидишь список активных подключений.
🚨 ВАЖНО: НЕ используй Active Directory, если у тебя его нет!
Если в конфиге есть строки вроде security = ads, realm = ..., winbind — удали их. Это для больших компаний с доменом. У нас — просто логин и пароль. И это нормально!
🎉 Готово!
Теперь у тебя есть рабочий файловый сервер, который:
- ✅ Работает на всех ПК
- ✅ Не требует домена
- ✅ Понятен даже «маленьким и тупым» (это комплимент! 😄)
Сохраняй эту статью — пригодится через полгода, когда всё забудешь 😉
КАК Я ЧИНИЛ САЙТ
Кейс: Joomla показывает «Error», сайт за NAT (reverce-proxy Nginx→Apache), кончилось место на диске
Живой разбор: сайт на Joomla 3.5 за обратным прокси Nginx (192.168.88.202) → Apache (192.168.88.198) начал отдавать белую страницу с надписью Error. Диагностика показала: переполнен корневой раздел, в логах Apache — No space left on device. Ниже — симптомы, проверка и пошаговое восстановление.
- Платформа: Ubuntu, Nginx (reverse proxy) → Apache, MySQL/MariaDB, Joomla 3.5.
- Симптом: белая страница «Error».
- Причина: кончилось место на /— забиты/tmpи/var/log/journal.
- Итог: очистка и ограничение логов/кэша вернули сайт в онлайн.
Симптомы
- Joomla отдаёт белую страницу с «Error» (часто это скрытая фатальная ошибка PHP из-за невозможности записи в сессии/кэш/логи).
- В apache2/error.log— No space left on device, а ранее — server reached MaxRequestWorkers.
[mpm_prefork:error] AH00161: server reached MaxRequestWorkers setting
[log_config:warn] (28)No space left on device: AH00646: Error writing to /var/log/apache2/access.log
Быстрая диагностика
Проверяем диски и «тяжёлые» каталоги:
df -h
df -i
sudo du -xhd1 / | sort -h
sudo du -h -d1 /var/log | sort -h
sudo du -xha /var | sort -h | tail -50
В нашем кейсе было так:
Вывод 
 df -h (фрагмент)Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        46G   46G     0 100% /
/dev/sda3        46G  7,6G   36G  18% /webserver
/dev/sda4       359G  230G  111G  68% /home
...
Топ «пожирателей» места
 /tmp                     27G
/var/log/journal          4G
/var/log/postgresql     332M
/var/lib/snapd           3.3G
/var/lib/mysql            3.1G (в т.ч. x9k26_session.ibd ~653M)
Восстановление за несколько минут (команды)
- Очистить старые файлы в /tmp(даст больше всего):sudo find /tmp -xdev -type f -mtime +2 -delete sudo find /tmp -xdev -type d -empty -delete
- Урезать systemd-журнал: sudo journalctl --vacuum-size=200M
- Подрезать логи PostgreSQL (оставив текущий): sudo rm -f /var/log/postgresql/*.log.[0-9] /var/log/postgresql/*.log.[0-9].gz
- Почистить APT-кэш: sudo apt-get clean
- Удалить старые версии snap-пакетов: sudo snap set system refresh.retain=2 snap list --all | awk '/disabled/{print $1, $2}' | while read name rev; do sudo snap remove "$name" --revision="$rev"; done
- Если нужно — обнулить логи Apache: sudo truncate -s0 /var/log/apache2/access.log /var/log/apache2/error.log
- Перезапустить веб-сервисы: sudo systemctl restart apache2 sudo systemctl restart php*-fpm 2>/dev/null || true
- Проверить бэкенд Apache в обход Nginx: curl -I -H 'Host: madmentat.ru' http://192.168.88.198/ curl -s -H 'Host: madmentat.ru' http://192.168.88.198/ | head -n 50
Joomla: разрослась таблица сессий
У Joomla 3.x сессии часто копятся в БД. Если таблица большая — можно её безопасно очистить (все пользователи разлогинятся):
-- подставьте свой префикс таблиц и имя БД из configuration.php
TRUNCATE TABLE mad.x9k26_session;
OPTIMIZE TABLE mad.x9k26_session;
Пути сессий PHP можно проверить так:
php -i | grep -i '^session.save_path'
Профилактика: чтобы не повторилось
1) Автоочистка /tmp
sudo tee /etc/tmpfiles.d/tmp.conf >/dev/null <<'EOF'
d /tmp 1777 root root 1d
EOF
sudo systemctl restart systemd-tmpfiles-setup.service
2) Ограничить journald
sudo tee -a /etc/systemd/journald.conf >/dev/null <<'EOF'
SystemMaxUse=200M
SystemMaxFileSize=50M
RuntimeMaxUse=100M
EOF
sudo systemctl restart systemd-journald
3) Ротация логов Apache
В /etc/logrotate.d/apache2 убедитесь, что есть что-то вроде:
daily
rotate 14
compress
delaycompress
missingok
notifempty
dateext
maxsize 50M
Применить принудительно:
sudo logrotate -f /etc/logrotate.d/apache2
4) Перенести «тяжёлые» каталоги на свободный раздел
Например, связать /var/log с /webserver/var_log через bind-mount:
sudo systemctl stop apache2 php*-fpm 2>/dev/null || true
sudo systemctl stop systemd-journald
sudo rsync -aHAX /var/log/ /webserver/var_log/
sudo mv /var/log /var/log.old
sudo mkdir /var/log
echo "/webserver/var_log /var/log none bind 0 0" | sudo tee -a /etc/fstab
sudo mount -a
sudo systemctl start systemd-journald
sudo systemctl start apache2
sudo systemctl start php*-fpm 2>/dev/null || true
sudo rm -rf /var/log.old
5) (Опционально) Крон-задача ежедневной гигиены
Пример для root (редактировать через crontab -e):
# чистим /tmp и урезаем journald раз в сутки в 03:15
15 3 * * * find /tmp -xdev -type f -mtime +2 -delete; find /tmp -xdev -type d -empty -delete; journalctl --vacuum-size=200M
# чистим APT-кеш раз в неделю
30 4 * * 0 apt-get clean
# удаляем старые ревизии snap раз в неделю
45 4 * * 0 snap list --all | awk '/disabled/{print $1, $2}' | while read n r; do snap remove "$n" --revision="$r"; done
# (по желанию) чистим таблицу сессий Joomla
0 5 * * * mysql -e "TRUNCATE TABLE mad.x9k26_session;"
Заметки по Nginx→Apache
Для обратного прокси важно пробрасывать заголовок Host, иначе может открыться не тот vhost:
location / {
    proxy_pass http://192.168.88.198;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_read_timeout 300;
}
Проверьте, что в Apache выбран корректный vhost:
<VirtualHost *:80>
  ServerName madmentat.ru
  ServerAlias www.madmentat.ru
  DocumentRoot /path/to/site
  ErrorLog ${APACHE_LOG_DIR}/madmentat_error.log
  CustomLog ${APACHE_LOG_DIR}/madmentat_access.log combined
  RemoteIPHeader X-Forwarded-For
  RemoteIPTrustedProxy 192.168.88.202
</VirtualHost>
# Диагностика раскладки vhost'ов:
apachectl -S
Joomla 3.5 и версии PHP
Если после восстановления места сайт всё ещё показывает «Error», проверьте совместимость версии PHP. Joomla 3.5 не дружит с PHP 8.x — для неё обычно нужен PHP 5.6–7.x (например, 7.4). Либо временно переключите сайт на подходящую версию PHP, либо обновляйтесь до Joomla 3.10.x (а затем 4/5) с учётом совместимости расширений.
php -v
apachectl -M | grep -i php
ps aux | grep php-fpm
php-fpm -v
Фрагменты из реального кейса
apache2/error.log
 [mpm_prefork:notice] AH00163: Apache/2.4.41 (Ubuntu) configured -- resuming normal operations
[core:notice] AH00094: Command line: '/usr/sbin/apache2'
[mpm_prefork:error] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
[log_config:warn] (28)No space left on device: AH00646: Error writing to /var/log/apache2/access.log
...
Самые большие файлы/каталоги
 /tmp — 27G
/var/log/journal — 4G
/var/lib/snapd — 3.3G
/var/lib/mysql/mad/x9k26_session.ibd — 653M
Чек-лист «сайт упал из-за места»
- Понять причину: df -h,df -i,duпо /tmp и /var.
- Быстро освободить: чистка /tmp,journalctl --vacuum-size, APT-кэш, snap-ревизии, ротация логов.
- Вернуть сервис: systemctl restart apache2(+php-fpmпри наличии), проверить бэкендcurl -H 'Host: ...'.
- Добить корень проблемы: обрезать таблицу сессий Joomla, настроить ротацию и автоочистку, по возможности вынести логи/кэш на отдельный раздел.
Готово: сайт встал, а повторения этой истории в будущем — гораздо менее вероятны.
Блок управления запайщика термоусадочной пленки
Врезной модуль для упаковочного станка
Назначение: управление импульсом нагрева тефлонового ТЭНа (запайка) с последующим включением конвейера.
 ⚠️ Оператор задаёт 4 интервала времени в миллисекундах (далее "мс."): импульс нагрева и продолжительность хода конвейера. Запуск цикла — концевик, который срабатывает при опускании рамки.
Внешний вид
Контрольно-индикационная (лицевая) панель:

- Светодиоды D1, D2, D3, D4, D5 указывают текущий режим отображения семисегментного индикатора.
- Четырехразрядный цифровой индикатор LED1 выводит задаваемые оператором параметры и прочую служебную информацию.
- Кнопка "mode" — переключение режима отображаемого параметра.
- Ручка энкодера - изменение настраиваемых параметров устройства.
Подключение⚡🔌
Вид сзади:
- Питание - осуществляется через внешний блок постояннного питания 5 Вольт, 0,5 Ампер (DC).
- Концевик - здесь подключается концевик, отвечающий за запуск упоковочного цикла, который срабатывает при опускании рамки запайщика.
- Термопара - реализовано через чип MAX6675, поддерживает тип термопары K.
- RS-485 - подключение HMI-панели DWIN (Опционально, в зависимости от прошивки).
- UART - инженерный отладочный интерфейс.
- Реле R1 - подключение контактора, управляющего мотором конвеера.
- Реле R2 - подключение контактора, управляющего нагревом тефлонового лезвия запайщика.
Клеммы 1–14: что и как подключать
Краткая шпаргалка по клеммнику устройства. Отдельно отмечена важность полярности. Для концевика и реле 1/2 полярность не важна (сухие контакты).
| № | Назначение | Что подключать | Полярность | Примечание | 
|---|---|---|---|---|
| 1 | 5V DC «−» | Минус блока питания 5 В | Важна (−) | Общая земля устройства | 
| 2 | 5V DC «+» | Плюс блока питания 5 В | Важна (+) | Не путать с «−» | 
| 3 | Концевик | Один провод концевого датчика | Не важна | Второй провод — на клемму 4 | 
| 4 | Концевик | Второй провод концевика | Не важна | NO/NC — по схеме | 
| 5 | Термопара «−» | Минус термопары (тип K — обычно синий) | Важна (−) | Использовать термопарный кабель | 
| 6 | Термопара «+» | Плюс термопары (тип K — обычно жёлтый) | Важна (+) | При переполюсовке температура «уходит вниз» | 
| 7 | RS-485 «A» | Линия A витой пары | Условная* | Если связи нет — поменять A/B местами | 
| 8 | RS-485 «B» | Линия B витой пары | Условная* | Экран/земля — по проекту линии | 
| 9 | UART «TX» | Передача устройства | Важна | Кросс: TX → RX внешнего; уровень 3.3 В | 
| 10 | UART «RX» | Приём устройства | Важна | Кросс: RX ← TX внешнего; общий GND обязателен | 
| 11 | Реле 1 (220 V AC) | Один контакт «сухого» выхода | Не важна | Разрывай фазу, а не ноль | 
| 12 | Реле 1 (220 V AC) | Второй контакт «сухого» выхода | Не важна | Смотри ток/напряжение в ТТХ | 
| 13 | Реле 2 (220 V AC) | Один контакт «сухого» выхода | Не важна | Аналогично реле 1 | 
| 14 | Реле 2 (220 V AC) | Второй контакт «сухого» выхода | Не важна | Аналогично реле 1 | 
* У RS-485 «полярность» условная: у разных производителей A/B могут быть переименованы. Главное — A↔A, B↔B. Если связи нет — просто поменяйте провода местами.
Короткие памятки
- Термопара: прибор поддерживает тип K. Соблюдайте полярность - иначе показания пойдут «в минус».
- UART: уровни 3.3 В TTL; подключение крест-накрест (TX→RX, RX←TX) + общий GND. Используется для для отладки. Без необходимости не подключать.
- RS-485: витая пара, по концам линии — терминатор 120 Ω (если линия длинная).
- Концевик: обычный сухой контакт, специальная механически-устойчивая кнопка, тип подключения - NO (normal open/нормально-открытая).
Индикация и сообщения
- Число на индикаторе — текущее значение выбранного режима (мс или счётчик).
- P в крайнем разряде — идёт процесс запайки.
- Служебные сообщения через UART (9600 бод) не относятся к работе оператора.
- Сервис: устройство ведёт счётчик циклов и хранит параметры во FRAM. Температура камеры считывается через микросхему MAX6675 (служебно).
Переключение режима отображения
Кнопка РЕЖИМ (Кнопка 1) циклически переключает, что показывает индикатор:
- Режим D1 — импульс нагрева ТЭНа в миллесекундах
- Режим D2 — счетчик упаковочных итерраций
- Режим D3 — время работы конвейера в миллесекундах
- Режим D4 — задержка перед включением тефлонового лезвия после срабатывания концевика (при опускании рамки) ⏳
- Режим D5 — задержка включения конвейерного механизма после поднятия рамки запайщика⏳
Индикатор показывает 4-значное число (0…9999). Точки/буквы не используются, кроме теста.
Настройка значения
Для изменения параметра поверните ручку энкодера. Диапазон каждого настраиваемого параметра: 0…9999 мс. 
 Ускорение прокрутки включается автоматически при быстром вращении — шаг становится больше, чтобы быстрее достигать нужных значений. Чтобы вернуться к точной прокрутке - сделайте паузу на одну секунду и продолжите крутить ручку энкодера медленней.
Запуск упаковочного цикла
Опустите рамку запайщика для старта. Сработает концевик. На время запайки на индикаторе LED1 появится символ P (процесс) . После завершения запайки, как только оператор поднимет рамку, включается конвейер на заданное время.
Рекомендации по настройке
- Начните с умеренного значения в режиме D1 (например, 500–800 мс) и сделайте пробную запайку.
- Если шов слабый — увеличьте значение D1; если подпаливает плёнку — уменьшите.
- Подберите D3 так, чтобы пакет успевал покинуть зону запайки и не цеплялся следующим.
- Сохраняйте разумный запас: разные партии плёнки могут требовать небольших коррекций.
Как работает цикл
- Оператор настраивает: - Импульс нагрева (мс) - параметр D1.
- Время конвейера (мс) - параметр D3.
- Задержку перед импульсом лезвия  (мс) -  параметрD4⏳.
- Задержка перед включением конвейер после поднятия рамки (мс) - параметрD5⏳.
 
- Импульс нагрева (мс) - параметр 
- Опускает рамку запайщика (срабатывает Концевик) .
- После задержки D4 реле R2 включает тефлоновый ТЭН на заданное время D1 (мс) — идёт запайка .
- После запайки, когда оператор поднимет рамку, включается таймер D5, а затем реле R1 (конвейер) на время, задаваемое в режиме D3 (мс) — пакет уходит .
- Оба реле выключаются, цикл завершён.
Примечание: счётчик упаковочных итераций увеличивается на 1 при каждом старте цикла .
Техника безопасности
- Не прикасайтесь к нагревателю и узлам механики во время работы .
- Перед обслуживанием обесточьте станок.
- Не перекрывайте движение на конвейере.
- Используйте заземление и штатные кожухи.
- Тефлоновое лезвие запайщика следует подключать через специальные контакторы, так как ток на каждом из реле R1/R2 контрольно-индикационного блока "Марс" не должен превышать 3-х Ампер.
FAQ
Индикатор показывает «P» — это ошибка?
Можно ли менять настройки во время работы?
Что за режимы D4, D5?
MARS V.1.5 / PHOBOS 1.4 - КОНТРОЛЛЕР ДЛЯ ПРОСТОГО УПАКОВОЧНОГО СТАНКА
- Пользовательская инструкция для готовой платы ЗДЕСЬ.
Тут у меня на главной странцие написано, что я работаю в фирме "АРД-Системы Северо-Запад", которая производит термоусадочное упаковочное оборудование. Моей изначальной задачей, как инженера, было создание таймера для контроля нагрева тефлонового лезвия для запайки пленочного рукава.
Первое время я валял дурака, даже пытался прибегнуть к такой хуйне как ЛУТ (лазерно-утюжная технология). Очень быстро выяснилось, что это, мягко говоря, недешевео и бестолково. Далее оказалось что я не так уж и хорошо знаю как устроен микроконтроллер Атмега, который я решил взять за основу. Пришлось нехило так подучиться, чтобы разобраться в нюансах программирования и дойти до интуитивного понимания, куда какой ставить резистор и почему. По началу-то надо было считать номиналы по известной формуле - а теперь нет. Теперь такие вещи делаются чисто умозрительно. Теперь смотрю на свои старые поделки и немножко офигеваю от того, какой огромный пройден путь с тех пор... Вот этот монстрик, сверху крайний левый, был одним из первых. Сразу после него нижний левый... Потом пришло понимание, что надо бы сделать систему модульной, чтобы можно было подключить контрольно-индикационный блок... Но, как видно на фото, выглядело все это так себе. Во-первых, мелкие циферьки, мелкие кнопочки... Во-вторых, там такой бред, вроде подключение семисегментника через сдвиговый регистр... Первый вариант слева (монстрик) у меня с кондочка не завелся, я даже поехал в Москву на консультацию к другу. Там я понял, что для такой работы необходим осциллограф и еще узнал про функцию millis(). Ну, далее оттуда же открылся новый дивный мир аппаратных таймеров и прерываний...

Крайний справа вариант оказался уже практически работоспособным, и уже планировался какой-то корпус, всякое такое...

И тут вдруг в сознании произошел очередной сдвиг: о корпусах надо думать заранее! Вообще, их дохера на рынке уже готовых и если у вас не огромное предприятие, которое может делегировать их производство какому-то подрядчику, то можно просто выбрать какй нравится из уже готовых и не париться такими вопросами, однако при проектировании электроники в дальнейшем следует учитывать размеры будущего корпуса, всякие там нюансы по монтажу и так далее.

Собственно, когда я взял в руки эту штуку, то у меня в голове как будто зажглась лампочка. Я как будто бы был слеп, но потом прозрел.

Крышку заказывал у одного чувака через Авито, он ее вырезал из оргстекла на ЧПУ фрезере. Встала на место как влитая, размеры попали тютелька в тютельку. Просто идеально. Если не считать досадного пролета с окном под семисегментник, которое пришлось раздрачивать напильником. Ну а тут скриншоты проекта:

Это крайняя версия контрольно-индикационной платы Фобос, которая подключается к основной плате Марс. Тут у нас довольно внятный катодный семисегментный индикатор, работающий на основе драйвера TM1637, энкодер, а также сдвиговый регистор 74HC595 для управления группой светодиодов, указывающих пользователю на текущий режим работы устройства.

На скриншоте такая версия, которая предшествует текущей рабочей. Тут уже задействованы практически все пины, используются микросхемы MAX3375, MAX485, память FM24C04B-GTR, кластер понижающих DC-DC преобразователей с монтажными отверстиями для радиатора, а также 2 силовых 2 опто-семисторных выхода. Монтажные отверстия по краям платы можно считать избыточными, в корпусе они нигде не задействованы. Но на цену производства это не влияет, а сама плата может быть довольно универсальной - так что решил оставить. Вообще, я любитель всего, что делается "для маленьких и тупых", и сам придерживаюсь этой парадигмы в проектировании. Поэтому каждый пин разъему IDC-16MS у меня подписан с двух сторон, там указаны номера пинов управляющего микроконтроллера. При написании и отладке ПО это просто офигенно здорово экономит время.

Тут такой прикол, вот эта группа пинов дублируется с обеих сторон платы, это удобно в разработке, но, наверно, в финальной версии необязательно. А, впрочем, хлеба не просит - и пофиг, тут не ВЧ схема. Из прикольного - эти отверстия по краям от контактной группы. Они задуманы для экономии на разъемах. То есть, шлейф подрезается скальпелем по линейке, кончики пролуживаются, выравниваются и припаиваются сюда. Затем сверху, по плану, должна быть капля компаунда, скрывающего неаккуратности, чтобы придать плате более товарный вид. А отверстия по бокам предназначены для закрппления шлейфа стяжками.

 
  
Зелененькая - старая версия. Ох, намучился с ними на этапе отладки... Прототипы часто выходят с ошибками.

На самом деле, путь к финальной версии был тернист. Сначала там были проблемы с запуском TM1637... Мешали 2 консетора, указанных на большинстве схем из Интернета. Затем выяснилось, что дорожки от чипа к пинам семисегментника практически все перепутаны. Потом я несколько раз закупал разные семисегментники, но они не заводились... Как выяснилось, потому что они были катодные. То есть, с общим катодом. Все чат-боты твердили, что TM1637 - катодный драйвер. А он оказался анодным. Потом еще была задрочкка с пинами под шлейф. Изначально они были инвертированы слева направо... Ну и с индикационными диодами косяк. Парочка из них попадали на уже задействованные пины микроконтроллера. Диодов по задумке 5, а свободных пинов после ревизии оказалось 3. Ну вот тут и пригодился опыт использования сдвигового регистра. Сдвиговый регистор восьмибитный. По идее, можно влепить еще 3 светодиода. Кстати, прикол... Я думал, что мои индикационные светодиоды точно такие же как и на семисегментнике, и поэтому ими тоже можно управлять через TM1637, через пятый грид (а всего их в документации фигурирует 6), но эксперименты показали, что хуй там плавал. До сих не понимаю, в чем дело, так и не смог добиться успеха. Впрочем, под данную конкретную задачу 74HC595 кажется даже еще более элегантным решением, потому что гриды переключаются по очереди, а тут что горит то горит без особых затей.

Проблема в том, что все эти косяки зачастую неочевидны на стадии гербера и всплывают только когда уже спаял прототип. А прототип едет месяц из Китая. И поэтому процесс выходит медленный, может даже запросто растянуться на полгода. Ну, пока они производятся и едут, можно заниматься чем-нибудь другим.


Кстате говоря, отверстия под радиатор придуманы не случайно - на самом деле, линейные DC-DC преобразователи - это такая простая штука, как топор, и она может быть довольно полезной, но вот эффективной ее не назовешь. Там все очень плохо с КПД и с тепловыделением. Таким образом, в зависимости от подаваемого на вход напряжения, теплопакет устройства может быть от 3 Ватт и более. Казалось бы, 3 Ватта не так уж много - да? На самом деле нет - это даже через чур! Я как-то по приколу сделал трехватную спираль из нихромовой проволоки в качестве экспериментальной нагрузки для аккумулятора - так она грелась как хер знает что, от нее можно было отапливать кабинет! То есть, в рабочем состоянии прибор ощутимо греется. Исходя из этого прискорбного факта, есть 2 пути дальнейшего развития: либо использовать импульсные понижайки, вроде xl6009, с ебанутыми схемами обязательного обвеса, либо...
Следующая версия платы будет уже с собственным flyback-блоком питания.
15.09.2025
Вот, прикол... Предложил Гроку изучить эту статью, там обсудили какие-то мелочи, потом он спросил, дескать, а как я буду решать проблему с флайбэк... Я ему искренне сказал, что мне лень этим заниматься, что это уже изобрели китайцы и мне надо лишь копировать их наработки, а затем выдать их за собственный успех... И вот она, "эврика"! HLK-PM01. Тут я сначала радовался, смеялся, хлопал в ладоши - сразу столько дофамина... Вот здорово, что можно будет удалить нахуй все эти кластеры горячих понижаек и заменить их одним модулем... А потом присел, задумался... А что делать со всякими кнопочками? Ну это ведь не можно в промышленном оборудовании использовать 5 Вольт! Стало быть...Теперь надо поработать... Теперь трындец сколько работы надо сделать! Но за то от скуки не помру ))
17.09.2025
Накидал набросок следующей версии, взяв за основу рабочий проект с flyback-БП, слизанного с копеечного китайского модуля. Тут модуль немножко дороже... Целых 200 рублей против изначальных 50, однако... Очевидное приемущество HLK-2M05 в том, что он уже считай готовое изделие в закрытом корпусе. Тут же еще поставил DC-DC понижайку от той же фирмы, B2405S-2WR3. Прикол в том, что концевик нельзя оставлять пятивольтовым, когда имеется техническая возможность подключить 24V DC... Раньше ее не было, а теперь, с этим модулем, появилась. Поэтому схема подключения теперь будет православная, с гальванической развязкой через оптрон. Ну и варистор, разумеется, по линии 220V AC. Как же без него?.. Сейчас думаю, не заменить ли MAX485 (которых у меня как у дурака фантиков) на ISO3082DW? Наверно, смысл все-таки есть... Потому что линия связи между DWIN панелью (или чем-то там еще) может работать как антенна, и если статический заряд пробъет микросхему, то может угробить микроконтроллер. А в случае изолированного трансивера ремонт все же выйдет подешевле и попроще. Кстате, цена у этих двух чипов примерно одинаковая, ISO3082DW даже дешевле.

