В цій статті, як вже звично для мого блогу, ми з вами поговоримо про мову програмування Python. Але не про її застосування у світі вебу, а при програмуванні Embedded Systems. Програмуванні мікроконтролерів.

Цей пост є гостьовим постом Василя Йосипенка. У ній він поділиться з нами основами Embedded Програмування. Розкаже що це таке і з чим його їдять 😉 Ну і звичайно буде невеликий приклад з використанням програми написаної на мові Пітон.

Python Embedded

@opensourceforu.com

Коли готував дану статтю для блогу самому було дуже цікаво. Дійшло аж до того, що просидів 2 години, серфив за робототехнікою і останніми чудесами ембедид систем. Надіюсь вам також буде цікаво починати.

Всі приклади та детальні описи наведено для операційної системи Windows. Проте повторити дані приклади також можна без проблем на Лінуксі та Макінтоші. Система на самій платі – Лінукс.

Отже,

***

Вступ

Є дуже цікавий напрям програмування, який зараз активно розвивається. Це програмування вбудованих систем (Embedded Systems).

http://embedded.co.ua/

автор поста – Василь Йосипенко, http://embedded.co.ua

 В цій статті постараюсь коротко пояснити що це таке і де воно застосовується. Навиків написання не маю, тому не судіть строго 🙂

Embedded Systems  – це система, завданням якої є виконання конкретних вузькоспеціалізованих завдань. Такі системи, як правило, складаються з пристроїв вводу та сенсорів (освітленості, температури, тиску та ін.), мікроконтролерної чи мікропроцесорної системи, яка обробляє прийняту інформацію, та пристроїв виводу інформації (дисплеї)  чи виконавчих механізмів (різноманітні реле, клапани, драйвери двигунів, і т.д.).

Приклади таких систем: бортові комп’ютери автомобілів, медичні пристрої, банкомати, периферійні пристрої до PC.

Галузі застосування Embedded Systems

Галузі застосування Embedded Systems

Основу системи складає мікроконтроллер. Він являє собою мікрокомп’ютер з процесором, ROM, RAM та периферією. Для того, щоб така система могла працювати для неї потрібно написати програмне забезпечення, яке називають “firmware”.

Для цього можуть використовуватись  мови програмування С, С++, і навіть Java та Python. Дві останні вимагають інтерпретатора для їх виконання, тому як правило використовуються в потужніших системах з великим об’ємом RAM і відносно потужним мікропроцесором. Найбільше використовується мова С, тому що в багатьох системах програмування вона виконується без жодних операційних систем. Тобто пряма робота з пам’ятю та периферією.

Для прикладу наведу інформацію про ресурси одного мікроконтроллера:

Приклад Ресурсів Мікроконтролера

Приклад Ресурсів Мікроконтролера

Як правило цих ресурсів може бути досить, щоб зробити керування холодильником чи мікрохвильовкою 🙂

В залежності від функціоналу проектованої системи вибирають мікроконтролер.
Для кожної серії мікроконтролера є свої середовища розробки. Вони бувають безплатні та платні. Деякі виробники випускають своє середовище розробки. Наприклад фірма Atmel має безплатне IDE Atmel Studio.

Якщо проект дорогий, то, як правило, використовують платні середовища IAR, Keil, тому що їхні продукти сертифіковані. А це теоретично означає, що вони мають менше помилок.

Використання потужніших систем дозволяє використовувати високорівневі мови програмування. Це дозволяє скоротити час розробки, полегшує підтримку коду і зміну чи додавання нового функціоналу.

Практичний Приклад

Як програмувати одну з таких систем покажу на практиці. Основа проекту – це одноплатний комп’ютер Beaglebobe Black, який всі бажаючі можуть купити на офіційному сайті або в Україні. До цієї плати можна підключити монітор, клавіатуру та використовувати як звичайний комп’ютер. Також можна підключити відеоплеєр або web – камеру і транслювати відео чи зображення в інтернтет.

Застосування обмежується тільки власною фантазією. Основні характеристики:

Основні характеристики BeagleBone

Основні характеристики BeagleBone

Тажож приємна новина для веб дизайнерів є те, що одна з бібліотек для роботи з периферією написана на JavaScript. Для програмування використовується он-лайн середовище Cloud9. Оскільки це повноцінний Linux комп’ютер, тільки малих розмірів, то на ньому можна робити все що і на звичайному.

Покажу один з варіантів застосування в цій статті.

Підключаємо модель машинки до плати. Ця модель складається з 4 редукторів з колесами, 2 драйверів керування двигунами, 2 перетворювачів живлення 5V та 8V (8V для живлення двигунів, 5V для живлення електроніки керування двигунами), та Li-Ion батареї (хоча може бути замінена на будь-яку іншу).

Модель Нашої Машинки

Модель Нашої Машинки

embedded_4

Інформацію про номери пінів берем тут. Підключаємо плату BeagleBone Black до драйвера двигуна L298 відповідно до таблиці:

 L298  BeagleBone Black
 EN  14 (GPIO_40)  Вкл/виключення двигуна
 IN1  12 (GPIO_60)  Зміна напряму обертання
 IN2  11 (GPIO_11)  Зміна напряму обертання

Більш детально прочитати як саме відбувається керування двигуном можна в документації.

Нам необхідно підключитись до плати щоб мати можливість писати програми для неї. Є два варіанти:

  1. Підключити монітор через mini hdmi та клавіатуру, і після запуску Linux можна програмувати.
  2. Підключитись до плати через USB, Ethernet Wi-Fi використовуючи програмy Putty.

Тепер детальніше по кожному з типів з’єднань:

  • USB з’єднання. Для роботи через USB необхідно встановити драйвер з офіційного сайту. Оскільки плата живиться від USB, додаткового блоку живлення не потрібно.
  • Ethernet з’єднання. Для роботи через Ethernet потрібно підключитись до роутера. Він присвоїть IP адресу і вже по ній можна буде конектитись до плати. Також можна в настройках роутера прописати DNS адресу (якщо є статична адреса, тоді можна використовувати її) і конектитись до плати через інтернет з будь якої точки світу. Недоліком такого типу з’єднання є те, що потрібно додаткове живлення плати. А також знаходитись близько біля роутера, для контролю результату роботи.
  • Wi-Fi з’єднання. Потребує додаткового живлення, а також Wi-Fi модуля. Але натомість дає свободу пересування, ніяких зайвих дротів (крім живлення, хоча можна живити плату від батареї).

Я буду працювати з  USB з’єднанням.

Завантажуємо програму Putty і налаштовуємо її як показано на малюнку нижче:

Настроюємо Putty

Настроюємо Putty

Відкриється вікно з пропозицією ввести ім’я користувача:

Embedded - Login

Логуємося

Вводимо “root” тому, що пароль по замовчуванню не встановлений. Просто натискаємо “Enter”.

Все. Можна працювати – в нас повноцінна Linux консоль. Можна створювати, редагувати файли та виконувати команди чи скрипти.

Для невеликих програм можна прямо із консолі створювати файли, командою nano <ім’я файлу>.<розширення>. Відкриється новий файл, який можна редагувати. Після чого потрібно натиснути «Ctrl+X» для збереження і виходу з редактора.

Для більших текстів програм зручніше використовувати текстові редактори з підсвіткою синтаксису. Наприклад «Notepad++» чи IDE. Після створення файлу потрібно його завантажити в файлову директорію на BeagleBone Black. Найпростіше це зробити через програму “FileZilla”. Налаштування і вигляд на малюнках:

Налаштування Filezilla

Налаштування Filezilla

Вхід у Filezilla

Вхід у Filezilla

Після налаштувань можна розпочинати програмування.

Для того, щоб ми могли писати на Python нам потрібно встановити Adafruit_BBIO бібліотеку.

Напишемо програму керування двигунами машинки на Python. Ця програма поступово збільшує швидкість обертання колеса, зупиняє колесо, і починає крутити його в зворотньому напрямку. А також виводить швидкість і напрям в консоль.

Якщо бракує базових знань мови програмування Python, тоді отут можна пройти базовий курс по даній мові.

Зберігаємо програму в файлі з назвою car.py. Для запуску потрібно набрати:

Для зупинки програми і повернення в консоль натискаємо комбінацію «Ctrl+C». Під час виконання скрипта відбувається керування двигуном і програма виводить в консоль наступну інформацію:

Вивід в консоль

Вивід в консоль

На відео ви можете побачити як це все працює:

Ось і ще одне застосування мови Python 🙂

***

Якщо вам цікава дана тема, тоді рекомендую відвідати сайт Василя, де він більше і детальніше висвітлює тематику Embedded Systems програмування.

Думаю кожен програміст в своєму житті мріяв хоча б спробувати написати гру та робота 🙂 Я наприклад так. Гру вже пробував, а от до роботів ще не добрався. Тепер маючи можливість писати логіку на рідній мові Пітон, шанси спробувати себе у цьому цікавому напрямку значно зросли!

І ще на завтравку кілька лінків:

Друзі, а хто знає на скільки зараз популярне програмування Ембедид Систем саме на мові Пітон? Цікаво чи перспективний напрям…

Хочете регулярно дізнаватися про новинки та події у світі програмування, зокрема в мові Python та у вебі загалом? Тоді підписуйтесь на мою емейл розсилки: