Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Обновленная версия 2018-май-12
Ниже приведены инструкции по созданию простого микробитового указателя поворота для велосипедных шлемов (или аналогичных). Он использует акселерометры, встроенные в micro: bit, в качестве элементов управления.
Предоставленные скрипты micro python оптимизированы для mu, редактора micro python с определенным «режимом» для micro: bit. В последней версии он поставляется с последовательным плоттером, и я сначала просто хотел понять, как использовать его для отображения измеренных значений (подсказка: отправлять данные в виде кортежей: print ((x, y, z)), используя двойные скобки).
На светодиодном дисплее micro: bit 5x5 отображаются четыре шаблона:
- В состоянии покоя отображается красивый случайный узор. В настоящее время вы найдете сценарии для трех различных шаблонов: "светлячок", "дождь" и "падающая звезда". Посмотрите и выберите тот, который вам больше всего нравится. Не стесняйтесь настраивать параметры, чтобы сделать их более или менее плотными или работать быстрее или медленнее.
- Затем есть указатели поворота направо или налево в виде движущихся стрелок. Они активируются при наклоне головы влево или вправо, при нажатии кнопок на micro: bit. В версии скрипта с внешней кнопкой активируйте, нажав одну из внешних кнопок, подключенных к контактам 0 и 1.
- Если вы наклоните голову назад или обе кнопки на micro: bit активируются одновременно, отображается шаблон «предупреждение» или «обрыв».
Этот micro: bit, отображающий паттерн, может использоваться как индикатор направления, например. для езды на велосипеде, коньках или лыжах. Закрепите микробит на шлеме и управляйте им положением головы. Или закрепите его на своем велосипеде, загрузите скрипт внешней кнопки и управляйте им с помощью двух внешних переключателей, подключенных к micro: bit через некоторые кабели.
Для тех, кто работает с MakeCode, на последнем шаге я добавил скрипт блока, который можно скопировать прямо в micro: bit. Он менее наворочен, но дает базовую функциональность без необходимости устанавливать mu.
Пожалуйста помни:
- Хотя этот проект может быть полезен для вашей безопасности, убедитесь, что вы всегда четко указываете, куда вы хотите водить, используя свои руки.
- Эта концепция не тестировалась всесторонне в дороге и предназначалась только в качестве примера программирования. Используйте это на свой страх и риск.
- Используйте базовую версию только в сухих погодных условиях, так как micro: bit и аккумулятор или блоки LiPo чувствительны к влажности. Ниже описано, как создать инкапсулированную версию.
Шаг 1. Используемые материалы
Micro: bit. Компьютер с установленным редактором mu. Аккумулятор или LiPo-пакет для micro: bit. Велосипедный шлем. Я использовал тот, который раньше имел светодиодную подсветку. Кусок полипропиленового картона толщиной 3 мм в качестве дистанционной вставки между micro: bit и шлемом. Двусторонняя клейкая лента, чтобы прикрепить micro: bit к распорке, а это - к шлему. скотч, чтобы закрепить micro: bit и аккумулятор в шлеме.
Для инкапсулированной версии: прозрачная пластиковая коробка 59 x 59 x 30 мм, Modulor, Берлин: 0, 70 евро Kitronic MI: силовая плата, двусторонняя клейкая лента 5 фунтов стерлингов и кусок полипропиленовых пластин.
Для версии с внешними переключателями (подробности здесь не показаны): перемычки и два переключателя, два белых светодиода, резистор 10 кОм, макетная плата. Зажимы типа "крокодил". Латунные винты M3 (20 мм), нейлоновые гайки M3; по четыре для контакта 0, контакта 1, 3 В и заземления. Вставьте винты в отверстия в печатной плате micro: bit и закрепите винтами. К ним проще прикрепить зажимы типа "крокодил".
Шаг 2: Настройка устройства, установка скрипта
- Установите редактор mu на свой компьютер.
- Подключите micro: bit к компьютеру.
- Загрузите нужный скрипт.
- Прошить скрипт на micro: bit.
- В случае скриптов акселерометра (шлема) прикрепите бит micro: bit и аккумулятор к шлему. Я использовал небольшой кусок пластикового картона, материал, который вы можете найти в хозяйственном магазине, в качестве проставки и двустороннего воздуховода. скотчем с обеих сторон, чтобы прикрепить micro: bit к шлему. Затем закрепите micro: bit и аккумуляторную батарею клейкой лентой на шлеме.
- Чтобы убедиться в погодных условиях, взгляните на следующий шаг.
- При необходимости отрегулируйте пороговые значения x и z в соответствии с вашими потребностями.
В случае сценария, управляемого кнопками, и если вы хотите использовать внешние кнопки, подключите шины питания макетной платы к портам Gnd и 3V микробита. Подключите кнопки к Gnd и портам Pin0 и Pin1
Шаг 3. Скрипты Micro Python
В приложении вы найдете скрипты micro python для mu и micro: bit.
Существует четыре скрипта: один, который управляет дисплеем с помощью встроенных и внешних кнопок, три - с помощью встроенных акселерометров micro: bit. У них есть разные генераторы случайных шаблонов для состояния покоя.
Есть узор "светлячок", узор "дождь" и узор "падающая звезда" (матричный). Скрипт светлячка / акселерометра приведен ниже. Существует также сценарий, который имеет все три шаблона и запускает их в случайном порядке, с новым выбором каждый раз, когда индикатор был активирован.
Значения акселерометра отправляются на компьютер и могут быть считаны через последовательный монитор редактора mu или отображены на последовательном плоттере.
Параметры легко изменить, чтобы настроить скрипты в соответствии с вашими требованиями и предпочтениями.
'' 'Версия с контролем угла / акселерометра или встроенными кнопками. 2018-May-07 Простой скрипт, который создает шаблон "светлячка" в состоянии покоя, стрелки влево или вправо, если m-бит скручен в соответствующем направлении, или кнопки A или B нажаты, или индикатор прерывания / шаблон предупреждения если обе кнопки нажаты или m-бит отогнут назад. Может использоваться для подсветки велосипедного шлема или подобного. Сборка для редактора mu micro python доктором Х. https://www.instructables.com/id/A-Microbit-Direction-Indicator-for-Biking-Helmets/ '' 'from microbit import * import random random.seed (3433) # введите свое счастливое число de = 100 # задает время задержки отображения в мс ff1 = 100 # задает время задержки светлячка 1 в мс ff2 = 50 # задает время задержки светлячка 2 в мс fn = 3 # задает количество точек семени светлячка thresh_z = 80 # пороговое значение для обратного thresh_x = 350 # пороговое значение для бокового # определить изображения image_l_1 = Image ("00900:" "09000:" "97531:" "09000:" "00900") image_l_2 = Image ("09000:" "90000:" "75319:" "90000:" "09000") image_l_3 = Изображение ("90000:" "00009:" "53197:" "00009:" "90000") image_l_4 = Изображение ("00009:" "00090: "" 31975: "" 00090: "" 00009 ") image_l_5 = Изображение (" 00090: "" 00900: "" 19753: "" 00900: "" 00090 ") image_r_1 = Изображение (" 00900: "" 00090: " "13579:" "00090:" "00900") image_r_2 = Изображение ("00090:" "00009:" "91357:" "00009:" "00090") image_r_3 = Изображение ("00009:" "90000:" "79135: "" 90000: "" 00009 ") image_r_4 = Изображение ("90000:" "09000:" "57913:" "09000:" "90000") image_r_5 = Изображение ("09000:" "00900:" "35791:" "00900:" "09000") image_z_1 = Image ("90009:" "00000:" "00900:" "00000:" "90009") image_z_2 = Image ("09090:" "90009:" "00000:" "90009:" "09090") # запускаем программу while True: print ((accelerometer.get_x (), accelerometer.get_y (), accelerometer.get_z ())) # для использования с последовательным монитором или плоттером для оптимизации пороговых значений; # отключение звука с помощью '#', если не используется if ((accelerometer.get_z ()> thresh_z) # голова наклонена назад, при необходимости отрегулируйте или (button_a.is_pressed () и button_b.is_pressed ())): # для отображения целей управления. показать (Image. DIAMOND_SMALL) sleep (de) display.show (Image. DIAMOND) sleep (de) display.show (image_z_2) sleep (de) display.show (image_z_1) sleep (de) display.clear () elif ((Accelerometer.get_x () thresh_x) # указатель направления вправо; чтобы активировать наклон головы примерно на 20 градусов вправо или button_b.is_pressed ()): display.show (image_r_1) sleep (de) display.show (image_r_2) sleep (de) display. show (image_r_3) sleep (de) display.show (image_r_4) sleep (de) display.show (image_r_5) sleep (de) display.clear () else: # генератор паттернов 'firefly' для g в диапазоне (0, fn): # семя заданного числа (fn) пикселей x = random.randint (0, 4) # выбирает случайную позицию y = random.randint (0, 4) v = 9 # максимальная яркость начального числа # v = random.randint (0, 9) # необязательно: рандомизированное отображение яркости семян. Set_pixel (x, y, v) # установить скорость светлячка sleep (ff1) # display for ff ms # уменьшает интенсивность всех пикселей на один шаг для j в диапазоне (0, 5): # для каждого пикселя светодиодной матрицы для i в диапазоне (0, 5): b = display.get_pixel (i, j) # получить текущую интенсивность if (b> 0): f = b - 1 # уменьшить яркость на единицу else: f = 0 # установить 0 как наименьшее допустимое значение display.set_pixel (i, j, f) sleep (ff2)
Шаг 4: инкапсулированная версия, защищенная от погодных условий
Как уже упоминалось выше, базовая версия не защищена от атмосферных воздействий. Поэтому я создал инкапсулированную версию.
Для питания micro: bit здесь я использовал плату питания Kitronic MI:. Он питается от батарейки на 3 В и может быть прикреплен к микробиту тремя болтами и гайками. Он также имеет встроенный выключатель питания. В качестве альтернативы вы можете использовать LiPo аккумулятор.
В качестве корпуса я использую прозрачную пластиковую коробку размером 59 x 59 x 30 мм. В качестве проставки использовался кусок пластикового картона толщиной 3 мм, покрытый двусторонней изолентой. Это необходимо, так как на задней панели MI: питание происходит даже не за счет гаек и удерживает micro: bit на месте.
Коробка с битом micro: bit затем прикрепляется к шлему другим куском пластикового картона, обтянутым двусторонним скотчем.
Шаг 5: скрипт MakeCode
Для тех, кто не желает или не может устанавливать mu, я добавил сценарий блока MakeCode с аналогичными функциями. Конечно, не так уж и необычно, но достаточно хорошо, чтобы показать принцип.
Вы можете просто скопировать файл на свой micro: bit и начать играть.