Умные дома, автомобили и офисы стали довольно популярны в последние годы. Неудивительно, что в этом сегменте требуется немало специалистов, способных обеспечить правильную и безопасную работу сетей и устройств. Попробуем разобраться, какие навыки необходимы начинающему IoT-разработчику для освоения профессии.
Языки программирования С и C++
Синтаксис C/C++ достаточно сложен, однако изучить его придется. Языки этого семейства активно используют для эффективного кодирования встроенных систем, взаимодействующих с базовым оборудованием. Возможности работы с памятью и оптимизации вычислений в C/C++ позволяют выжать максимальную производительность из устройств с недостаточным объемом ресурсов. Если у вас нет практических навыков программирования, необходимо освоить базовые вещи:
- Двоичная и шестнадцатеричная системы счисления.
- Константы. Типы данных.
- Операторы и выражения языка С. Функции (объявление, вызов).
- Переменные. Типы данных (примитивные типы, строки, структуры).
- Управляющие операторы.
- Функции. Работа с памятью.
- Типы данных. Основы объектно-ориентированного подхода к программированию (C++). Пользовательские типы данных.
- Структура программы на C.
- Препроцессор.
- IDE и средства разработки.
- Стандартные библиотеки С/C++.
Разрабатывать программное обеспечения для устройств интернета вещей можно и на других языках программирования: Java, Python, Javascript, Swift, PHP и т.д.
Linux
Для управления умными устройствами используются разные встраиваемые операционные системы и даже системы общего назначения, многие из которых основаны на GNU/Linux – будущему инженеру умных устройств необходимо знать основы работы с этой ОС. Если вы никогда не сталкивались с Linux, стоит выбрать какой-нибудь дистрибутив и восполнить пробелы. Уделите внимание следующим темам:
- Установка ОС.
- Настройка системы и знакомство с интерфейсом командной строки.
- Пользователи. Управление пользователями и группами.
- Загрузка ОС и процессы.
- Устройство файловой системы Linux. Понятие файла и каталога.
- Введение в скрипты bash. Планировщики задач crontab и at.
- Управление пакетами и репозиториями. Основы сетевой безопасности.
Стоит установить второй системой дистрибутив, основанный на Debian/Ubuntu (например, Linux Mint). Такие системы используются, в частности, на популярном у самодельщиков микрокомпьютере Raspberry Pi, так что опыт работы с ними будет не лишним.
Микроконтроллеры
Хотя микроконтроллеры обладают меньшими возможностями, чем стандартный компьютерный процессор, низкая стоимость делает их более практичным вариантом для добавления возможностей объекту, пространству или процессу.
Чтобы определить, какой микроконтроллер будет лучше всего работать с вашим приложением, необходимо знать некоторые ключевые его особенности:
- Биты (фьюзы) – инструмент для тонкой настройки микроконтроллера. Он нужен для изменения частоты и источника тактового сигнала, включения или выключения таймеров и многого другого.
- RAM – это оперативная память с быстрым доступом, которая не сохраняет данные при отсутствии питания. Все микроконтроллеры поставляются с определенным объемом памяти. Чем он больше, тем лучше, но добавленная оперативная память увеличивает стоимость MCU.
- Флэш-память – это память микроконтроллера, в которой хранятся данные при отсутствии питания. Своего рода автономное хранилище.
- GPIO – контакты ввода/вывода общего назначения. Их используют для подключения датчиков и исполнительных механизмов к MCU. Количество выводов может варьироваться от одного до сотен, в зависимости от модели микроконтроллера.
- Возможности подключения. Плата и само приложение могут подключаться к интернету через Wi-Fi, Ethernet или другие интерфейсы.
- Энергопотребление. Потребляемая мощность критически важна для приложений с подключенными датчиками, особенно когда вашему устройству необходимо использовать аккумулятор или обычные батарейки.
Существует немало хороших микроконтроллеров. Среди прочих можно выделить платы марки Arduino и контроллеры семейства STM32, подходящие, как для новичков, так и для профессионалов. Они имеют хорошую производительность и работают с большинством современных датчиков и приборов. Помимо микроконтроллеров, для создания решений IoT могут использоваться и более производительные встраиваемые компьютеры.
Основы электроники и схемотехники
Чтобы работать с различными устройствами и платами микроконтроллера, потребуется базовое понимание электроники и схемотехники. Вам необходимо ознакомиться с материалами по следующим темам:
- Схемотехника. Знакомство с основными компонентами и инструментами.
- Расчеты электронных соединений.
- Транзисторы.
- Подключение и управление нагрузками.
- Ток. Источники питания и фильтры. Гальваническая развязка.
- Линейные преобразователи. Современные LDO.
- Операционные усилители.
- Логические элементы.
Усвоить необходимые знания можно из книг:
- «Электроника. Теория и практика» [2018], авторы: Монк С., Шерц П.
- «Электроника. от Arduino до Omega» [2018], автор: В. Ященков.
- «Электроника. Arduino и Raspberry Pi в проектах Internet of Things» [2018], автор: В. Петин.
- «Компьютер в лаборатории радиолюбителя» [2018], автор: Гололобов.
- «Микроконтроллеры для начинающих» [2014], автор: М. Хофманн.
Специфика работы
Чтобы запрограммировать оборудование, потребуется три инструмента: среда разработки (IDE), программатор-отладчик и оценочная плата от производителя. Среди прочих IDE можно выделить следующие:
- Для архитектуры ARM – Embedded Workbench от IAR Systems и uVision от компании Keil.
- Для архитектуры AVR – CodevisionAVR и AVRstudio.
Программатор-отладчик – это устройство, подключаемое к плате устройства через USB для исправления ошибок в программном обеспечении. Оценочная плата служит тренировочным полигоном для создания прототипов, а также для внедрения и тестирование новых идей. Чтобы начать работать с платами, потребуются и практические навыки пайки.
Немного о безопасности
IoT-разработчику необходимо учитывать, что умные вещи не только чрезвычайно удобны, но и уязвимы – они дают киберпреступникам точки входа в личную жизнь пользователя. Поскольку внутренняя функциональность устройства остается неизменной, захват сложно обнаружить. При атаке с постоянным отказом в обслуживании (PDoS) IoT-устройства могут быть повреждены настолько, что им потребуется замена. Регулярный мониторинг безопасности и обновление встраиваемого ПО являются обязательными, поэтому разработчику стоит изучить следующие темы:
- Системы контроля доступа.
- Механизмы аутентификации и авторизации.
- Шифрование.
При изготовлении коммерческого IoT-продукта важно придерживаться высоких стандартов качества, основываясь на предыдущем пользовательском опыте. Качество и надежность имеют первостепенное значение и должны быть частью менталитета любого разработчика.
Хочу научиться программировать с нуля, но не знаю, с чего начать. Что делать?
Можно учиться самостоятельно (долго) или пойти на курсы с преподавателями (быстро). Плюс нужно учитывать, что джунов много, конкуренция выше и работодатели повышают порог вхождения при найме на работу. Чтобы получить актуальные знания, мы в proglib.academy запустили курсы:
- Основы программирования на Python.
- Профессия Python-разработчик.
- Алгоритмы и структуры данных.
- Математика для Data Science.
- Профессия Data Science.
- Frontend Basic: принцип работы современного веба.
- Профессия Фронтенд-разработчик.
- Обработка естественного языка. Полный курс.
На подходе еще больше 10 курсов для взрослых и детей.
Комментарии