Саша Дегтярев

Трансляция творческой жизни
Мой сайт | Все заметки

Макет стенда для выставок

Сделал два макета для выставок HTB 2024 и WBCE 2024.

Задачи было две:

  1. Рассказать про ассортимент нашего оборудования и его преимущества. Этот стенд поедет на обе выставки.
  2. Рассказать посетителям нашей WBCE о будущем: новые продукты и сервисы, изменение привычных.

Размеры стендов и положение шапка-контекстная часть менять было нельзя.

Пустые места на макетах для реальных железок.

Скриншоты макетов

Короткий видеоролик про выставку

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

Решил смонтировать короткий ролик, который расскажет, что ожидает посетителей: большой зал, доклады, живое общение с единомышленниками, классные интерактивные стенды и экскурсия на производство.

Монтаж

Публикация: https://t.me/wirenboard_official/919

 4   1 мес   kdenline   видео   выставки   реклама

Статья «Как мы сделали Embedded Controller для ПЛК на Linux» вошла в топ-5

Написали с коллегами новую статью о разработке продукта.

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

Так примерно за неделю рабочего времени мы написали статью, вошедшую в топ-5 на самом популярном техническом ресурсе рунета. Разработчик потратил при этом не больше 4-5 часов.

Читать статью: Как мы сделали Embedded Controller для ПЛК на Linux

Пишем код на python с помощью нейронки

В ноябре я писал статью про Быстрый Modbus и мне стало интересно, а возможно ли с помощью нейронки написать код сканирования устройств на шине?

Оказалось очень даже возможно. Взял демку альфы DeepSeek Coder, описал русскими словами, что хочу и через несколько итераций получил рабочий код на Python! Прям магия, мне понравилось.

Кусочки процесса

Выхлоп скрипта в консоли:

Выхлоп + я вывел кусочек содержимого скрипта командой cat

Итоговый код:

import serial
import time

# Константы для настройки порта
SERIAL_PORT = '/dev/ttyACM0'
BAUD_RATE = 115200

# Отдельные байты для команд
BROADCAST_ADDRESS = 0xFD
EXTENDED_FUNCTION_CODE = 0x46
START_SCAN_SUBCOMMAND = 0x01
CONTINUE_SCAN_SUBCOMMAND = 0x02
END_SCAN_SUBCOMMAND = 0x04

# Функция для вычисления контрольной суммы
def calculate_crc(data):
    crc = 0xFFFF
    for pos in data:
        crc ^= pos
        for _ in range(8):
            if ((crc & 1) != 0):
                crc >>= 1
                crc ^= 0xA001
            else:
                crc >>= 1
    return crc

# Функция для создания команды с контрольной суммой
def create_command(broadcast, function_code, subcommand):
    command = bytes([broadcast, function_code, subcommand])
    crc = calculate_crc(command)
    command += crc.to_bytes(2, 'little')  # Контрольная сумма в little-endian
    return command

# Функция для отправки команды и получения ответа
def send_command(ser, command):
    ser.write(command)
    time.sleep(0.1)  # Ждем ответ
    response = ser.read(ser.inWaiting())
    # Фильтруем ответ, удаляя лишние байты 0xFF в начале
    response = bytes(b for b in response if b != 0xFF)
    return response

# Функция для преобразования массива байтов в массив строк в шестнадцатеричном формате
def bytes_to_hex_array(byte_array):
    return [f"0x{byte:02X}" for byte in byte_array]

# Функция для обработки ответа
def process_response(response):
    if not response:
        print("Сканирование завершено.")
        return True  # Возвращаем True, чтобы остановить цикл
    # Проверка, что ответ содержит функцию конца сканирования
    if response[2] == END_SCAN_SUBCOMMAND:
        print("Сканирование завершено.")
        return True  # Возвращаем True, чтобы остановить цикл
    else:
        # Преобразуем байты в строки в шестнадцатеричном формате и выводим их
        hex_array = bytes_to_hex_array(response)
        print("Ответ устройства:", hex_array)
        return False  # Возвращаем False, ч�бы продолжить цикл

# Главная функция
def main():
    # Открываем последовательный порт
    ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1)

    # Создаем команду начала сканирования
    start_scan_command = create_command(BROADCAST_ADDRESS, EXTENDED_FUNCTION_CODE, START_SCAN_SUBCOMMAND)

    # Начинаем сканирование
    response = send_command(ser, start_scan_command)
    if not process_response(response):
        # Если сканирование не завершено, продолжаем
        while True:
            continue_scan_command = create_command(BROADCAST_ADDRESS, EXTENDED_FUNCTION_CODE, CONTINUE_SCAN_SUBCOMMAND)
            response = send_command(ser, continue_scan_command)
            if process_response(response):
                break  # Выходим из цикла, если сканирование завершено

    # Закрываем последовательный порт
    ser.close()

if __name__ == "__main__":
    main()
 24   2 мес   ai   python   эксперимент

Баннер на сайт для выставки и конференции

Наша компания ежегодно проводит мероприятие, где собираются партнёры и единомышленники, чтобы себя показать и на людей посмотреть.

Особенность мероприятия в том, что здесь одни инженеры, которые отлично знают своё оборудования и решения на нём. А изюминка — живое общение с разработчиками оборудования Wiren Board и экскурсия на производство.

Чтобы привлечь туда посетителей нашего сайта, сделал баннер с атмосферными картинками с прошлого года. Также сбоку есть небольшой текст с пятью пунктами, что ждёт гостя, если он придёт.

Скриншот с сайта
 3   2 мес   дизайн   реклама   текст

Статья «Прокачиваем Modbus: арбитраж, сканирование шины, события»

Опубликовал на Хабре статью про Быстрый Modbus.

Писать было сложно: много работы с экспертами, изучение документации и эксперименты на столе. Но оно того стоило — получился отличный лонгрид, который подробно описывает протокол.

Статья: Прокачиваем Modbus: арбитраж, сканирование шины, события

Картинка к статье о быстром Modbus

Тема прокачки классического протокола вызвало у меня ассоциации с программой «Тачка на прокачку», так родилась эта картинка.

 8   6 мес   иллюстрации

Статья про HMI-панели для контроллеров Wiren Board

Опубликовал статью на Хабре для пользователей контроллеров Wiren Board, которым нужно сделать графическую панель.

Написано в формате инструкции, в статье рассмотрены основные принципы, даны примеры, а результат опубликован на Гитхабе.

Статья: Делаем HMI-панель из планшета для системы автоматизации на контроллере Wiren Board

Картинка из статьи
 24   6 мес   инструкции   текст

Пишу статью о расширении протокола Modbus

Довольно интересная задача — понятно проиллюстрировать работу протокола для начинающих разработчиков.

Сложность в том, что документацию на протокол писали его разработчики и для них там всё суперочевидно и понятно. Чего не скажешь о тех, кому адресована эта документация.

Надо помирить два мира между собой. В результате будет статья на Хабр и много правок в документацию.

Стенд с устройствами
Байтики на компьютере
 8   6 мес   байтики

Новая статья на Хабр о принципах проектирования УД

Сборник рецептов про подключение любого компонента инженерной системы к системе автоматизации.

Чтобы написать статью я исследовал текущие решения интеграторов и привёл их к единому формату подачи.

Читать: Как собрать бюджетный умный дом. Общие принципы проектирования на оборудовании Wiren Board

Скриншот из статьи
 7   6 мес   текст
Ранее Ctrl + ↓