Реєстрація даних за допомогою VEX Brain і датчиків за допомогою Python

вступ

У цій статті ми обговоримо, як створити проект реєстрації даних, який дає команду VEX Robot збирати дані за допомогою VEX Brain і зберігати їх у файлі CSV на SD-карті для аналізу даних.

Реєстрація даних — це потужний інструмент, який ми можемо використовувати для допомоги в наукових дослідженнях, проведення власних експериментів і вирішення конкретних проблем. Існують різноманітні веселі та захоплюючі завдання, які ми можемо керувати роботом VEX, щоб виконати за допомогою реєстрації даних. Нижче наведено кілька прикладів:

  • Збір даних за допомогою датчика відстані для розрахунку швидкості робота.
  • Водіння робота по класній кімнаті та збір даних за допомогою оптичного датчика для спостереження за змінами освітленості в різних місцях.
  • Візьміть робота в пригоду та запишіть дані GPS-координат для створення карти.

Навички кодування, необхідні для розробки проекту реєстрації даних

  • Використовуйте різні команди для збору даних за допомогою VEX Brain/Sensors і додавання їх до структури даних.
  • Запишіть дані у файл із значеннями, розділеними комами (CSV) на SD-карті.

Обладнання, необхідне для реєстрації даних:

  • A VEX Brain (IQ, V5, EXP)
  • Картка SD
  • Датчик або кілька датчиків (додатково, відповідно до необхідних даних)

Отримання даних від датчика

Ми можемо запрограмувати робота VEX (IQ, V5, EXP) для отримання даних від таких датчиків:

  • Інерційний датчик
  • Датчик відстані
  • Оптичний датчик
  • Датчик зору
  • Датчик обертання (V5, EXP)
  • Датчик GPS (V5)

Примітка: VEX IQ (2-го покоління) Brain і VEX EXP Brain мають вбудований інерційний датчик. Ми можемо збирати дані інерційного датчика за допомогою цих мізків VEX.

У цій статті ми розробимо проект реєстрації даних, який збирає дані прискорення за допомогою VEX IQ Brain (2-го покоління) і зберігає їх на SD-карті. 

По-перше, нам потрібно написати коротку програму для отримання показань від таймера та інерційного датчика, вбудованого в VEX IQ Brain (2-го покоління).

  • На початку цієї програми нам потрібно буде імпортувати модулі Python для керування VEX IQ Brain (2-го покоління) і отримати з нього дані. Отже, почніть із додавання цих інструкцій до проекту.

    Діаграма, що ілюструє компоненти та функції робота V5, яка використовується в навчальних посібниках Python для освітніх цілей робототехніки.

  • Далі додайте код, щоб оголосити змінну numOfDataEntries для зберігання кількості записів даних для запису, оголосите змінну polling_delay_msec для збереження значення інтервалу часу для читання даних і створіть порожню рядкову змінну data_buffer для зберігання дані, зчитані з датчика.

    Діаграма, що демонструє, як зберігати дані, зчитані з датчика, у VEX V5 за допомогою Python, містить фрагменти коду та візуальне представлення потоку даних і методів зберігання.

  • Оскільки ми будемо використовувати поточне значення таймера для додавання мітки часу до даних, нам потрібно скинути значення таймера назад до 0 секунд перед початком збору даних.

    Знімок екрана, на якому показано процес скидання таймера VEX V5 у Python, і показано, як повернути значення таймера до 0 секунд перед збором даних.

  • Перш ніж використовувати інструкцію, яка отримує дані з VEX IQ Brain (2nd) і записує дані в буфер, нам потрібно спочатку це зрозуміти.
    Наступна інструкція додає поточне значення таймера до змінної data_buffer у певному форматі.

    Діаграма, що ілюструє формат змінної в Python, що використовується в Описі категорії V5 під посібниками з Python, показує структуру та компоненти змінної.

    Давайте розберемо рядок формату “%1.3f”

    • «%»: представляє специфікатор перетворення.
    • «1»: вказує на мінімальну кількість цифр у рядку.
    • “.3”: визначає кількість знаків після коми, які потрібно включити у відформатований номер.
    • «f»: вказує на те, що значення, яке потрібно відформатувати, є числом з плаваючою комою.

    Таким чином, ми можемо використовувати рядок формату «%1.3f» для форматування числа з плаваючою комою з мінімальною шириною 1 цифри та точністю 3 знаки після коми.

  • Тепер ми можемо прочитати таймер і значення прискорення інерційного датчика, вбудованого у VEX IQ Brain (2-го покоління), а потім додати дані до змінної data_buffer у вказаному форматі.

    Діаграма, що ілюструє формат змінної в Python, частина опису категорії V5, у посібниках з Python. Зображення візуально представляє структуру та використання змінних у програмуванні Python.

    Примітка: “\n” – символ нового рядка. Це вказує на те, що тут закінчується рядок і починається новий рядок.

  • Потім, щоб записати певну кількість записів даних у змінну data_buffer , ми можемо використовувати цикл for , щоб багаторазово виконувати інструкції, які отримують дані та додають дані до змінної data_buffer протягом кількох ітерацій. Наша стратегія полягає у використанні значення змінної numOfDataEntries для визначення кількості ітерацій.

    Графік, який ілюструє кількість ітерацій у навчальному посібнику VEX V5 Python, показуючи точки даних і тенденції, пов’язані з ітераціями програмування в робототехніці.

  • Поки що наша програма записує дані настільки швидко, наскільки це можливо. Однак ми хочемо записувати дані через певні проміжки часу. Таким чином, ми можемо використовувати функцію wait() у циклі for , щоб призупинити програму, щоб додати певний проміжок часу між двома читаннями. Використовуємо значення змінної polling_delay_msec для визначення значення інтервалу часу.

    Графік, що ілюструє процес визначення значення часового інтервалу в Python, демонструючи ключові змінні та їхні зв’язки. Відповідає навчальним посібникам Python V5.

Щиро вітаю! Ми завершили програму для отримання показань (даних прискорення) від інерційного датчика, вбудованого в VEX Brain. Далі ми розглянемо, як записати дані у файл CSV на SD-карті.

Діаграма, що ілюструє структуру категорії V5 для навчальних посібників Python, показуючи ключові компоненти та зв’язки в екосистемі VEX Robotics.




Приєднання SD-карти до VEX Brain

Перш ніж записувати дані у файл на SD-карті, спочатку вставте SD-карту в слот для SD-карти VEX Brain.

Діаграма, що ілюструє конфігурацію робота V5 для навчальних посібників Python, демонструючи ключові компоненти та їх з’єднання для навчальних цілей.

Примітка: Відформатуйте SD-карту у FAT32 для запису даних. Ми рекомендуємо використовувати SD-карти розміром 32 ГБ або менше.

Щоб переконатися, що запис даних у файл на SD-карті можна виконувати за відповідних умов, нам потрібно буде додати код, щоб перевірити, чи SD-карту правильно вставлено у VEX IQ Brain (2-го покоління).

  • Використовуйте функцію brain.sdcard.is_inserted() , щоб перевірити, чи вставлено SD-карту. Якщо SD-карта не вставлена, відобразіть відповідне повідомлення на екрані VEX IQ Brain і утримуйте програму.

    Screenshot of VEX IQ Brain screen displaying a message indicating that the SD card is not inserted, with instructions for holding the program. Relevant to Python tutorials in the V5 category.


    Примітка: функція brain.sdcard.is_inserted() повертає значення True, якщо SD-карту вставлено в Brain.

Запис даних у файл CSV на SD-карті

Наразі наша програма може збирати дані за допомогою VEX IQ Brain (2-го покоління). Щоб завершити проект реєстрації даних, нам потрібно записати дані у файл із значеннями, розділеними комами (CSV) на SD-карті для подальшої перевірки та аналізу.

  • Записуючи різні типи даних у файл CSV, ми хочемо знати, який тип даних містить кожен стовпець. Для цього ми можемо додати текст заголовка CSV до змінної data_buffer перед записом даних.
    Таким чином, додайте код для оголошення змінної csvHeaderText для зберігання тексту заголовка CSV, щоб указати назви стовпців для файлу CSV, і оголосите змінну sd_file_name для зберігання назви файлу CSV для запису в Флеш-картка.

    Діаграма, що ілюструє опис категорії V5 для навчальних посібників Python, демонструючи ключові компоненти та їхні зв’язки у візуальному форматі.

Примітка: Переконайтеся, що заголовки розташовані в тому самому порядку, що й дані, що зберігаються в змінній data_buffer.

  • Далі додайте текст заголовка CSV до рядка data_buffer перед циклом for для збору даних.

    Діаграма, що ілюструє середовище програмування V5 Python, демонструючи ключові компоненти та їхні функції, що стосуються Опису категорії V5 і посібників з Python.

  • Перш ніж записувати дані у файл на SD-карті, давайте спочатку розберемося, як використовувати функцію brain.sdcard.savefile().

    Діаграма, що ілюструє опис категорії V5 для навчальних посібників Python, демонструючи ключові компоненти та функції робототехнічної системи VEX V5.


    Ця інструкція записує дані, що зберігаються в змінній data_buffer , у файл CSV з іменем на SD-карті.
    Давайте розберемо:
    • brain.sdcard.savefile(): функція зберігає масив байтів у файлі з назвою на SD-карті. Функція повертає кількість байтів, записаних у файл.

    • sd_file_name: перший параметр функції. Вказує назву файлу для запису. У цьому проекті ім'я файлу зберігається в змінній sd_file_name.

    • bytearray(datat_buffer,'utf-8'): другий параметр функції. Представляє масив байтів, який потрібно записати у файл.

        • bytearray(): метод створює змінний bytearray. У цій інструкції ми використовуємо його для перетворення рядка в байтовий масив, вказавши кодування.
        • data_buffer: перший параметр методу. Вказує джерело, яке потрібно перетворити на байтовий масив. У цьому проекті джерелом є дані, що зберігаються в змінній data_buffer. 
        • 'utf-8': другий параметр методу. Вказує вказане кодування, яке використовується для кодування рядка. У цій інструкції використовується кодування "utf-8". 
  • Після циклу for для збору даних використовуйте функцію brain.sdcard.savefile() , щоб записати дані, що зберігаються в змінній data_buffer , у файл CSV на SD-карті. Крім того, додайте код для перевірки значення, що повертається функцією brain.sdcard.savefile() , щоб переконатися, що дані були успішно записані у файл, і відобразіть відповідне повідомлення на екрані VEX IQ Brain, щоб отримати реальні час зворотного зв'язку.

    Diagram illustrating the V5 robot's components and their functions, used in Python tutorials for educational purposes.


    Примітка: Функція brain.sdcard.savefile() повертає кількість байтів, записаних у файл. У цьому проекті ми використовуємо його для запису зібраних даних у файл CSV, тому кількість байтів, записаних у файл, має бути більшою за нуль. Іншими словами, якщо функція brain.sdcard.savefile() повертає 0, ми можемо зробити висновок, що дані не були успішно записані у файл. В іншому випадку дані були записані у файл.

Щиро вітаю! Ми розробили проект реєстрації даних, який збирає дані прискорення за допомогою VEX IQ Brain (2-го покоління) і зберігає їх у файлі CSV на SD-карті. Далі ми розглянемо, як відкрити файл CSV для аналізу даних. 

Діаграма, що ілюструє компоненти робота V5 та їхні функції, використані в навчальних посібниках Python для програмування робототехніки VEX. Зображення надає візуальну довідку для учнів, щоб зрозуміти налаштування апаратного забезпечення.

Відкриття файлу CSV для аналізу даних

Після того, як дані будуть записані у файл CSV на SD-карті, ми можемо використовувати програму для роботи з електронними таблицями, щоб відкрити файл для читання та аналізу даних. 

Примітка. Двома найпоширенішими програмами для роботи з електронними таблицями є Google Таблиці та Microsoft Excel. У цій статті ми будемо використовувати Google Таблиці (веб-інтерфейс), щоб відкрити файл CSV на SD-карті. Процес використання інших програм аналогічний.

  • Вийміть SD-карту з гнізда SD-карти VEX IQ Brain. Якщо комп’ютер має вбудований слот для карт Micro SD, ми можемо вставити SD-карту безпосередньо в цей слот. В іншому випадку вставте SD-карту в адаптер SD-карти, а потім під’єднайте адаптер до комп’ютера. 
  • Увійдіть до нашого облікового запису Google і відкрийте Google Sheets. Створіть нову електронну таблицю.
  • В електронній таблиці відкрийте меню «File» , виберіть «Import» -> «Upload» -> «Browse» , потім виберіть файл CSV на комп’ютері. Після завантаження файлу CSV натисніть кнопку «Імпорт даних». Після імпортування даних натисніть «Відкрити зараз» , щоб переглянути зібрані дані у файлі CSV.

    Оглядове зображення підручника VEX V5 Python, яке ілюструє ключові поняття та ресурси для програмування за допомогою робототехніки VEX.

  • (Необов’язково) Один із простих способів аналізу даних – намалювати графік, а потім знайти тенденції в даних. В електронній таблиці відкрийте меню «Вставити» і виберіть «Діаграма» , щоб намалювати графік, використовуючи дані у файлі CSV. Наступний графік є результатом даних прискорення, зібраних за допомогою VEX IQ Brain (2-го покоління).

    Diagram illustrating the V5 Python tutorial structure, showcasing various components and their relationships in a clear and organized manner, designed to aid users in understanding the programming framework for VEX robotics.


    Примітка: Ми можемо використовувати редактор діаграм щоб вибрати інший тип діаграми або відредагувати діаграму відповідно до наших потреб.

До цього моменту ми завершили проект реєстрації даних, який збирає дані за допомогою VEX IQ Brain (2-го покоління) і зберігає їх у файлі CSV на SD-карті. Крім того, ми навчилися читати файл CSV на SD-карті за допомогою Google Таблиць і навіть створювати графік для подальшого аналізу. Що далі? Давайте спробуємо спланувати більш захоплюючі експерименти з використанням робота VEX для реєстрації даних, щоб спостерігати, як мінливі фактори навколишнього середовища впливають на різні типи даних, і отримати глибше розуміння навколишнього світу.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: