Начать было бы хорошо с изучения Arduino и Raspberry Pi(или его аналогов) и обязательно электроники, а продолжить изучением микроконтроллеров вроде Atmega и их программирования на C. Assembler не нужен, но знать его в любой сфере программирования полезно(правда в каком-нибудь фронтенде пользы мало, но всё же).
А вообще, языки для программирования микроконтроллеров используют самые разные, некоторые извращенцы пишут на Python(
https://en.wikipedia.org/wiki/MicroPython ) и, прости господи, JavaScript и даже Lua(
https://en.wikipedia.org/wiki/NodeMCU ). Высокоуровневые языки дадут оверхед, но в некоторых задачах они могут применяться, а в некоторых категорически нет(ещё не забываем про сборщик мусора).