FreeTech – производственная компания, которая разрабатывает и внедряет решения для автоматизации и мониторинга инженерных систем. Мы создаем собственные программно-аппаратные устройства для объектов разного масштаба: от инженерного оборудования зданий и коммерческого холода до промышленных технологических процессов.
Наши устройства уже работают на реальных объектах: собирают данные с полевых датчиков, взаимодействуют с исполнительными механизмами, обмениваются данными по промышленным интерфейсам и помогают обеспечивать надежную работу инженерной инфраструктуры.
Сейчас мы ищем Embedded-разработчика для развития встроенного ПО устройств на базе микроконтроллеров STM32.
В этой роли вы будете заниматься низкоуровневой разработкой, интеграцией с периферией микроконтроллеров, реализацией протоколов обмена, настройкой интерфейсов связи, работой с датчиками и отладкой устройств на стендах и реальных объектах.
Система находится в промышленной эксплуатации, поэтому задачи будут связаны не только с разработкой нового функционала, но и с поддержкой, доработкой и повышением надежности уже работающих устройств.
Задачи
- Разработка встроенного ПО для устройств на базе микроконтроллеров STM32.
- Настройка и использование периферии микроконтроллеров: GPIO, ADC, DAC, UART, SPI, I2C, timers, watchdog, DMA, PWM, CAN.
- Реализация логики сбора, обработки и фильтрации данных с датчиков.
- Работа с промышленными интерфейсами связи: CAN и RS-485.
- Реализация и поддержка протоколов обмена с оборудованием и верхним уровнем.
- Разработка ПО для устройств автоматизации, мониторинга и управления инженерными системами.
- Интеграция устройств с датчиками, исполнительными механизмами, контроллерами и внешними модулями.
- Отладка встроенного ПО на аппаратных стендах, макетах и опытных образцах.
- Поиск и устранение проблем, связанных с обменом данными, электромагнитными помехами, нестабильной связью, сбоями питания и некорректной работой периферии.
- Разработка тестового ПО для проверки аппаратной части новых устройств: периферии микроконтроллера, интерфейсов CAN/RS-485, входов/выходов и взаимодействия с датчиками.
- Взаимодействие с инженерами-схемотехниками, разработчиками верхнего уровня и специалистами по внедрению.
- Поддержка существующей кодовой базы, рефакторинг, оптимизация и повышение надежности ПО.
- Подготовка технической документации по реализованным функциям, протоколам и настройкам устройств.
Требования
- Опыт разработки встроенного ПО от 3 лет.
- Уверенное знание C для микроконтроллеров.
- Опыт разработки под микроконтроллеры семейства STM32 с использованием CMSIS и HAL.
- Понимание архитектуры микроконтроллеров ARM Cortex-M.
- Опыт работы с периферией STM32: UART, SPI, I2C, ADC, PWM, timers, DMA, GPIO, watchdog, interrupts.
- Практический опыт работы с промышленными интерфейсами CAN и RS-485.
- Опыт работы с Modbus RTU поверх RS-485.
- Понимание особенностей обмена данными с полевыми датчиками и исполнительными устройствами.
- Опыт работы с Keil uVision, STM32CubeMX / MX Code, VS Code + GCC / arm-none-eabi-gcc.
- Навыки чтения электрических схем и понимание взаимодействия ПО с аппаратной частью устройства.
- Опыт поиска аппаратно-программных ошибок: инициализация периферии, тайминги, прерывания, обмен по шинам, ошибки связи, зависания устройства.
- Понимание принципов надежного embedded-ПО: обработка ошибок, watchdog, контроль состояний, восстановление после сбоев.
- Опыт работы с Git.
Будет плюсом
- Опыт работы с FreeRTOS или другими RTOS.
- Опыт реализации или поддержки протоколов Modbus RTU, CANopen, собственных бинарных протоколов и протоколов обмена со сторонним оборудованием.
- Опыт интеграции стороннего оборудования по документации производителя: карты регистров, команды обмена, нестандартное поведение устройств, диагностика ошибок связи.
- Опыт разработки bootloader, механизмов обновления прошивки и хранения настроек во Flash.
- Опыт работы с энергонезависимой памятью: internal Flash, EEPROM, external Flash.
- Опыт работы с модульными или расширяемыми системами.
- Опыт разработки ПО для серийных устройств, находящихся в эксплуатации.
- Опыт разработки устройств для автоматизации, диспетчеризации, мониторинга или промышленного оборудования.
- Опыт диагностики проблем на реальных объектах автоматизации.
- Понимание основ промышленной автоматики: датчики, исполнительные механизмы, шкафы управления, контроллеры, телеметрия, аварии, дискретные и аналоговые сигналы.
- Опыт разработки тестового ПО, стендов или утилит для проверки устройств.
- Базовое понимание схемотехники, питания, развязок интерфейсов, согласования линий RS-485/CAN.
- Опыт работы с CI/CD для embedded-проектов, автоматической сборкой прошивок и статическим анализом кода.
- Опыт работы с Python для вспомогательных скриптов, тестирования или автоматизации сборки.
Технологический стек
Микроконтроллеры
Языки
Интерфейсы и периферия
- CAN
- RS-485
- UART
- SPI
- I2C
- ADC
- GPIO
- timers
- PWM
- DMA
- watchdog
Среды и инструменты разработки
- Keil uVision
- STM32CubeMX / MX Code
- VS Code
- GCC / arm-none-eabi-gcc
- STM32CubeProgrammer
- ST-Link
- DAP-Link
- OpenOCD
Отладка и диагностика
- JTAG/SWD
- ST-Link
- DAP-Link
- логический анализатор
- CAN/RS-485 анализаторы
- терминальные утилиты
Системы контроля версий
Что мы предлагаем
- Работу над собственными устройствами для автоматизации и мониторинга инженерных систем.
- Участие в полном цикле разработки: от запуска платы и написания прошивки до испытаний и эксплуатации на объектах.
- Возможность влиять на технические решения по устройствам.
- Официальное трудоустройство по ТК РФ.
- Стабильную своевременную заработную плату, выплаты 2 раза в месяц.
- Уровень заработной платы обсуждается по результатам собеседования и зависит от опыта и технического уровня кандидата.
- Профессиональный рост внутри embedded-направления.
- Команду, в которой embedded-разработка напрямую связана с реальными промышленными задачами, оборудованием и эксплуатацией.
- Гибридный формат работы: офис / работа из дома, с учетом необходимости периодической работы с оборудованием и стендами.