Мобильная версия Форум Arduino Документация Гарантийные условия 0 0
UA RU
График работы магазина:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Вс: выходной
Каталог
Напиши статью и получи скидку!

Як програмувати мікроконтролери на мові Rust

2023-04-06

Все статьи →

Вступ: Вітаю Вас! В цій статті Ви можете дізнатися як програмувати майже всі відомі мікроконтролери на мові програмування Rust. В якості прикладу будемо програмувати ESP32.

Для початку для тих хто не знає, або просто чув про цю мову коротко про Rust:

Rust це мова програмування яка націлена на безпеку пам’яті від багів та помилок за рахунок сурового компілятора, з цією мовою легко створювати програми з багатьма потоками та має дуже зручну екосистему з якою дуже зручно програмувати.
Що б почати писати програми на Rust нам треба встановити саму мову та інструменти для прошивки. Встановити Rust можна на офіційному сайті, там є інструкції як встановити під вашу операційну систему.

Сам сайт де є інструкції: посилання

P.S.: Якщо у Вас MacOS або ОС на базі Linux вам треба лише в терміналі ввести цю команду:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Встановлюємо версію для вашої Windows . Думаю тут все зрозуміло. Після відкриття програми відкриється термінал, нам треба просто в самому терміналі написати 1 та натиснути Enter і у Вас піде встановлення мови. Якщо ж виникнуть якісь проблеми перевірте чи встановилися шляхи мови, ось як встановити шляхи Windows: https://users-rust--lang-org.translate.goog/t/cargo-bin-path-issue-on-windows-absolute-beginner/38932?_x_tr_sl=auto&_x_tr_tl=uk&_x_tr_hl=uk&_x_tr_hist=true

Після цього що б перевірити в терміналі напишіть:

cargo -v

Ця команда покаже вам всі команди для маніпуляцій з мовою Rust (наперед скажу що користуватися терміналом прийдеться майже завжди). Далі вам потрібно встановити все що треба для програмування для ESP32.

Треба встановити espup для того що б ми мали компілятори для ESP32:

cargo install espup

Після встановлення введіть:

espup install

Коли все встановиться вам треба налаштувати з допомогою цієї команди:

# Linux або Mac

. $HOME/export-esp.sh

# Windows

%USERPROFILE%\export-esp.ps1

Також що б прошивати треба встановити espflash:

cargo install espflash

Можливо деякі інструменти потребують ldproxy. На всяк випадок встановіть:

cargo install ldproxy

Ми встановили все потрібне і тепер ми розберемо приклад коду який блимає кожні пів секунди світлодіодом. Знайдіть для себе вільне місце для проєкту і там же відкрийте термінал що б можна було в терміналі працювати в цьому місці. Введіть цю команду яка створює готовий проєкт з налаштованим кодом:

cargo generate -a esp-rs/esp-template

Ось що вам треба обирати:

Проєкт є, і нам треба відкрити цей проєкт в будь якому IDE для редагування коду (взагалі для цього треба встановити плагін для Rust якщо такий є). В проєкті який створився є каталог src , в ньому ж є наш основний файл коду main.rs (всі файли коду мають розширення .rs) .

Відкриваємо в IDE (або main.rs в каталозі src якщо у Вас простий текстовий редактор з підтримкою підсвічування коду) та дивимося що тут вже є код , зараз розберемо все що з’явилося, а потім вже додамо блимання світлодіодом.

Зараз поступово розберемося що тут де як! Одразу ж говорю якщо Ви маєте якийсь досвід з програмування наприклад Arduino Ви можете і зрозуміти що тут.

Перше що треба розуміти так це те що ми беремо модулі з так званої бібліотеки підтримки (в мові Rust це називається “крейтом” від слова “crate”).

Тут ми викликаємо всі необхідні модулі для загальної роботи. Важливо! Додайте внизу ось цей рядок після того рядка який був показаний:

Тут в нас вже починається основний код. Знайомо? Так це як в Arduino та в інших С подібних мовах. Вам лиш треба знати що всі ці змінні які викликані за допомогою “let” є налаштуванням та зручним використанням периферії мікроконтролера.

Далі нам треба вимкнути rtc та watchdog тому що вони блокують прошивання ESP32 чомусь.


Далі йде “loop {}” в ньому ми і виконуємо весь основний код (звісно можна і без циклу, але все ж таки...), так тут теж схоже на Arduino... але скоріше це схоже на необхідність.

Далі тепер ми додамо код для блимання вбудованого світлодіода на платі ESP32. Тут ми створюємо змінну для маніпуляціями з пінами та створюємо змінну що б зручно керувати світлодіодом. Також повинен бути delay щоб ми могли почекати.

Блимати ми будемо вбудованим світлодіодом який висить на Pin:2 на платі ESP32

Далі в самому циклі loop нам треба додати цей код який перемикає стан світлодіода, а потім чекаємо 500 мілісекунд.


Ми майже закінчили , По бажанню! Тепер нам треба що б компілятор зробив нашу програму менше при прошивці. В проєкті є файл Cargo.toml, відкриваємо його і нам треба додати позначення що ми хочемо оптимізувати наш проєкт. Додаємо цей код в кінці.

Код готовий, тепер нам треба прошити його, треба відкрити термінал в каталозі проєкту, Важливо! Не в самому каталозі де ваш код, а саме де всі каталоги.

Підключаємо нашу плату до комп’ютера.

Що б прошити нам треба затиснут и кнопку boot

Якщо Ви встановили програму espflash, то вводимо команду:

cargo espflash flash --release

В Вас може бути таке що espflash не визначив на який порт прошивати, тому оберіть там де

C P210X

І далі в нас йде прошивання, коли закінчиться програма повідомить про це:

Потім перезапускаємо ESP32 і бачимо що світлодіод блимає.

Якщо Вас зацікавила тема Rust, або програмування Rust для микроконтролерів то є купа матеріалу.

Відповідаючи на питання які мікроконтролери підтримує, одразу скажу що майже всі, і навіть всі модулі підтримуються. Ось деякі посилання якщо вам цікава ця тема:

Переклад офіційної книги Rust на українську для навчання: посилання

Книга Rust Embedded (англійська) (націлена на STM32): посилання

Коротка книга про Rust на ESP32(англійська): посилання

Сторінка зі всіма відомими бібліотеками підтримки: посилання

Висновок: Все ж таки завдяки Rust можна програмувати різні мікроконтролери, і навіть AVR (тобто Arduino), STM32 та багато інших . Я сподіваюсь що вам буде цікаво програмування на Rust. Дякую Вам якщо прочитали статтю і бажаю вам гарного дня!

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Общая оценка:

Оценка "Як програмувати мікроконтролери на мові Rust"
5 из 5
сделана на основе 5 оценок 5 клиентских отзывов.

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Євген
24.07.2024 20:46:33
А що замість espup треба встановити, щоб компілювати для інших мікроконтролерів, наприклад, для Apollo3?
Ярослав
16.07.2024 17:12:32
Корисно, дякую
Anatoly
29.02.2024 21:07:48
Шикарна стаття, дякую!
Igor
15.10.2023 01:24:05
Korisna stattja
Сергiй
12.07.2023 21:50:56
Ціквий огляд!
оплата картами Visa и MasterCard