Uprocessor для роботизированного проекта

Dong99
Солнце 21 июня 2015 г., 19:48
Всем здравствуйте,
Это удивительный форум, на котором есть такая богатая информация и так много полезных людей!
Я буду тренировать нескольких детей для роботизированного проекта, и я изучаю, какой Uprocessor использовать. Поскольку дети использовали гибридную систему Lego NXT и Arduino в прошлый раз, я хочу, чтобы они изучали более продвинутую и способную систему на этот раз на этот раз. Я наткнулся на STM32 и нашел всех вас, ребята. STM32 кажется такой мощной системой и быстрее, чем обычный Arduino.
Поэтому я купил плату STM32F103C8 для игры, и смог загрузить к нему код через Arduino IDE, прочитав пост здесь и блог Роджера. Также установлен загрузчик, базовые вещи (GPIO), кажется, работают хорошо. Однако, когда я попробовал библиотеку Encoder (https: // www.PJRC.com/teensy/td_libs_encoder.HTML), он не скомпилируется, если я выберу плату STM32 (но тот же код отлично работает для Arduino Nano). Библиотека Timer1 отказывается сотрудничать либо.
Мой вопрос: это хорошая идея, чтобы заставить детей попробовать STM32? Мне бы хотелось ваше мнение, если эта система достаточно зрелая для детей с твердым опытом Arduino. В настоящее время я подумываю использовать одну плату STM32 в качестве контроллера, она будет использовать встроенные аппаратные квадратурные декодеры и ШИМ для управления двигателями. Также нужно прочитать пару других датчиков, через ADC, I2C и, возможно, интерфейс SPI.
Спасибо!

Мадиас
Солнце 21 июня 2015 г., 21:23
Библиотека таймеров: да, это не будет компилироваться для STM32. Вы должны позаботиться обо всем таймере самостоятельно и переписать его. К счастью, в ядре есть - более или менее - «библиотека таймеров»: http: // Leaflabs.com/документы/таймеры.HTML и http: // static.Leaflabs.com/pub/lefflabs ... Дваретимер
Хорошая идея, чтобы заставить детей попробовать STM32? ... Дети с твердым опытом Arduino. мхм...Хороший вопрос. Как ваша проблема выше, не очень готовые библиотеки для платформы STM32Duino. На большинстве из них вы должны переписать какой -то код. Сама «основная система» хорошо работает для большинства приложений. Осталось несколько ловушек (сбой, в то время как PinMode, DigitalWrite/Read в конструкторе библиотек), но Роджер и остальные люди здесь усердно работают, чтобы устранить эти ошибки. С другой стороны, если вы собрали набор с хорошо известным и работающим аппаратным обеспечением (например,: Maple Mini Clone, ILI9341 TFT, SSD1306 OLED (i2c или SPI) см. В разделе «Библиотеки» на форуме) ничего не существует против использования это для детей, но вы, должно быть, действительно вписываются в это.

Матиас

Rogerclark
Солнце 21 июня 2015 г., 21:34
@dong99

Траймеры аппаратного обеспечения работают, но ни у кого не было времени, чтобы написать Timer1 Обертку.

Вероятно, это не так сложно писать, но займет некоторое время.

Если ваша цель - просто заставить ваших детей начать с вычислений, то STM32 может быть слишком много на «кровотечении»

Основными преимуществами STM32 являются скорость (72 МГц) и размер оперативной памяти и флэш -памяти.

Так что, если у вас есть проект, который нуждается в любом из них, STM32 хорошо подходит.

Однако, если для вашего применения достаточно 16 МГц, то безопасный и простой маршрут определенно просто использовать ООН.

Mrburnette
Солнце 21 июня 2015 г. 22:31
Dong99 написал: <...>
Мой вопрос: это хорошая идея, чтобы заставить детей попробовать STM32? Мне бы хотелось ваше мнение, если эта система достаточно зрелая для детей с твердым опытом Arduino. В настоящее время я подумываю использовать одну плату STM32 в качестве контроллера, она будет использовать встроенные аппаратные квадратурные декодеры и ШИМ для управления двигателями. Также нужно прочитать пару других датчиков, через ADC, I2C и, возможно, интерфейс SPI.
Спасибо!

Ахулл
Солнце 21 июня 2015 г., 22:38
Dong99 написал:Всем здравствуйте,
Это удивительный форум, на котором есть такая богатая информация и так много полезных людей!

Dong99
Пн 22 июня 2015 г., 3:21
Это удивительно! Я никогда не мечтал об этом, я получу так много отличных ответов так быстро, спасибо!
Думаю, мне не очень ясно, когда я опубликовал свой первоначальный вопрос. Эти дети были выбраны вручную из роботизированного клуба, и они действительно очень хороши. Они будут участвовать в роботизированном конкурсе, и они только начинают разрабатывать свою систему. Теперь у них есть все виды идей от простого старого Arduino до Android. Тем не менее, я не хочу, чтобы они выбрали систему, которая требует огромных усилий, чтобы начать. Им придется создать физического робота со всеми видами датчиков и разработать программное обеспечение для искусственного интеллекта для автономной миссии. Плюс время тоже очень ограничено.
Причина, по которой STM32 настолько привлекательна, заключается в том, что, как отметил Роджер, они действительно могут использовать многие из своих функций, такие как встроенная флэш-память, более высокая скорость, больше памяти и аппаратные квадратурные декодеры, а также множество контактов GPIO для Более дюжины датчиков, которые им нужны. И самое главное, они смогут учиться гораздо больше в программировании Uprocessor, чем использование Arduino. Тем не менее, это может быть мечом с двойным крахом, так как в этом можно втянуть огромное количество времени. Другой выбор - Arduino, он также не сможет запустить все стандартные библиотеки из коробки, как я понимаю. Так что это будет действительно сложное решение, и это было причиной, почему я разместил свой вопрос.
Оценит ваше понимание этого...

Rogerclark
Пн 22 июня 2015 г., 3:38
@dong99

Это тяжелый звонок.

Если бы вы строили робота для решения лабиринта, дополнительная скорость была бы выгодой.
Я не уверен, какую доску вы имели в виду, но на доске STM32F103VET и STM32F103ZET есть множество GPIO (я думаю, что у Zet более 100 GPIO !)

Re: Должно быть

Я не уверен, что это будет проще, чем использовать STM32, если кто -то уже не перенесли необходимые вам либера.
У меня есть 2 доски, но я никогда не использую их сейчас, когда у меня есть доски STM32.


Другим вашим вариантом будет Teensy (о котором вы упоминали ранее), но я думаю, что цена может быть проблемой E.глин. Teensy стоит около 20 долларов, а Maple Mini - около 6 долларов, поэтому это будет зависеть от того, сколько вам нужно купить, а также от шансов на уничтожение студентов.

Я подозреваю, что есть высокая легкая, что вы уничтожите несколько досок - множество опытных людей на этом форуме жарили свои доски, просто подключив вещи к не тем штифтам, его очень легко сделано и даже проще по 3.Устройства 3V я подозреваю, чем на досках AVR 5V.


В конечном счете, это зависит от того, сколько времени вы должны поместить в проект, и получат ли студенты пользу от использования более новой архитектуры

Если это меж школьный вызов, я думаю, что есть и крутой фактор нестандартного, E, E.глин. Если у всех есть 16 МГц AVR, а у ваших учеников есть 72 МГц STM32
Но все это ничего не будет иметь в виду, если все не сработает ;-)

Mrburnette
Пн 22 июня 2015 г., 3:50 утра
C:\Users\Matjas\AppData\Local\Temp\build108003128975008063.tmp\Adafruit SSD1351 library\Adafruit_SSD1351.cpp.o: In function `Adafruit_SSD1351::spiwrite(unsigned char)': C:\Users\Matjas\Documents\Arduino\hardware\Arduino_STM32\STM32F4\libraries\Adafruit_SSD1351-STM32-master/Adafruit_SSD1351.cpp:41: warning: undefined reference to `SPIClass::transfer(unsigned char) const' C:\Users\Matjas\Documents\Arduino\hardware\Arduino_STM32\STM32F4\libraries\Adafruit_SSD1351-STM32-master/Adafruit_SSD1351.cpp:69: warning: undefined reference to `SPI' C:\Users\Matjas\AppData\Local\Temp\build108003128975008063.tmp\Adafruit SSD1351 library\Adafruit_SSD1351.cpp.o: In function `Adafruit_SSD1351::begin()': C:\Users\Matjas\Documents\Arduino\hardware\Arduino_STM32\STM32F4\libraries\Adafruit_SSD1351-STM32-master/Adafruit_SSD1351.cpp:356: warning: undefined reference to `SPIClass::begin()' C:\Users\Matjas\Documents\Arduino\hardware\Arduino_STM32\STM32F4\libraries\Adafruit_SSD1351-STM32-master/Adafruit_SSD1351.cpp:357: warning: undefined reference to `SPIClass::setDataMode(unsigned char)' C:\Users\Matjas\Documents\Arduino\hardware\Arduino_STM32\STM32F4\libraries\Adafruit_SSD1351-STM32-master/Adafruit_SSD1351.cpp:443: warning: undefined reference to `SPI'

victor_pv
Пн 22 июня 2015 г., 21:18
Если я могу высказать свое мнение, от кого -то, кто не участвует в обучении, и не является профессионалом программирования:

Я бы купил Maple Mini или два, проверил ли вещи, которые вам строго нужно работать, как вам нужно, чтобы они работали (кодеры или что -то еще). Если это работает нормально, то после этого все, что является приятным, но не обязательным, так что вы знаете, что можете пройти курс, даже если дополнительные вещи не работают, как ожидалось, или проблемы не могут быть решены своевременно.
Если вы обнаружите, что ваши предметы первой необходимости не работают с Maple Mini, и вы не сможете заставить их работать на вашем.

Вот как меня засосали в этом вещах STM. Я видел потенциал, купил Maple Mini, чтобы проверить свои хобби.

Как заметил Рэй, люди здесь обязательно попытаются помочь, но никто не может дать вам гарантию, что у этой или иной периферийной.

Так что просто перейдите на один из этих Maple Mini за 4 доллара на eBay или AliexPress, протестируйте его и посмотрите, делает ли он то, что вам нужно прямо сейчас.
Если они работают, вы можете заказать платы с помощью ветеринаров или чипсов RET примерно за 10 долларов, которые имеют дополнительную вспышку, RAM, Timers, DAC и GPIO, чтобы сделать все дополнительные крутые вещи, которые могут быть не важны, но могут быть довольно крутыми, например, игра крутые звуки через ЦАП, но если вы не заставите его работать, робот все равно будет работать как задумано.

Rogerclark
Пн 22 июня 2015 г., 21:39
Ребята,

Я посмотрел на квадратурный энкодер и существующий код E.глин. на PRJC.COM должен быть перенесен, так как он получил большие полосы кода в блоках #IFDEF, некоторые из которых являются кодом компилятора AVR.

На самом деле, непосредственное портирование кода - не единственный подход, потому что некоторые из таймеров предназначены для работы в качестве квадратурных декодеров.
Но, если эти таймеры решили бы декодировать квадратуру, они не могут делать другие вещи, такие как ШИМ, которые нуждаются в OP.

Таким образом, также может потребоваться наличие класса, который использует прерывания на квадратурных входах.

У меня нет каких -либо квадратурных энкодеров, поэтому я закажу несколько маленьких на eBay, как и интересный вопрос (но они не будут здесь в течение нескольких недель)

Другая вещь, о которой упоминалось, была Timerone.
Об этом упоминалось несколько других людей, но я не уверен, что стоит попытаться сделать версию этой LIB STM32, потому что вещи, которые он достигает, уже доступны без использования LIB, E.глин. Постоянный цикл на прерываниях PWM и таймера.

Я подозреваю, что лучшим подходом будет переносить либера.

Мадиас
Пн 22 июня 2015 г., 21:40
особенно для кодеров, библиотека не требуется.
Это мой код для нескольких кодеров с ускорением с использованием HW Timer 1, я написал несколько месяцев назад. Недостаток: вам нужны 2 контакта для каждого энкодера (невозможно мультиплексирование).

Редактировать: Я вижу, что есть много места для польского кода: измерение времени ускорения с Millis () не требуется, пока таймер не станет ровно 1 мс каждые продолжительность, поэтому простой счетчик для каждого энкодера в подпрограмме ISR также сделает свое дело.

Edit2: Позор, я полностью забыл автора гениальной «логической рутины», пожалуйста, дайте мне знать, если кто -то это угадает!
РЕДАКТИРОВАТЬ3: Хорошо, я беру код много лет назад отсюда: http: // www.Electronicaestudio.com/docs/sht-153.текст
C:\Users\Matjas\Documents\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple

Dong99
Вт 23 июня 2015 г., 3:53
Еще раз спасибо вам все за ваши предложения и идеи, особенно Роджер за то, что он изучил квадратурный декодер и мадиас для вашего образца кода!
Я попробую еще несколько вещей, а затем решу, подходит ли STM32 для этого проекта. Насколько я понимаю, большинство вещей можно сделать, но некоторые могут потребовать немало усилий.

@Roger, как вы сказали, что каждый таймер может сделать только одну вещь: ШИМ или квадратурный декодер, хотя у них есть 4 независимых канала для IC/OC/PWM. Так что это означает, что нам понадобится что -то вроде STM32F103ZE.

victor_pv
Вт 23 июня 2015 12:32
Dong99 написал:Еще раз спасибо вам все за ваши предложения и идеи, особенно Роджер за то, что он изучил квадратурный декодер и мадиас для вашего образца кода!
Я попробую еще несколько вещей, а затем решу, подходит ли STM32 для этого проекта. Насколько я понимаю, большинство вещей можно сделать, но некоторые могут потребовать немало усилий.

@Roger, как вы сказали, что каждый таймер может сделать только одну вещь: ШИМ или квадратурный декодер, хотя у них есть 4 независимых канала для IC/OC/PWM. Так что это означает, что нам понадобится что -то вроде STM32F103ZE.

пико
Вт 23 июня 2015 г., 16:59
Dong99 написал:Я попробую еще несколько вещей, а затем решу, подходит ли STM32 для этого проекта. Насколько я понимаю, большинство вещей можно сделать, но некоторые могут потребовать немало усилий.

Rogerclark
Вт 23 июня 2015 г., 21:30
Виктор

КСТАТИ. Я боюсь, что мне было немного лениво с портированием карты штифтов серии V и Z, и я не выполнял задания по таймеру для дополнительных булавок GPIO, которые находятся в этих досках, поэтому я подозреваю, что PWM не будет работать на всех контактах GPIO на этих досках.

Я думаю, что это просто вопрос прохождения руководства и выяснения, на какие штифты применяются каждый из таймеров, но я не смотрел подробно.

В целом код ядра, по -видимому, имеет IFDEF для устройств, которые недоступны на Maple Mini и т. Д., Но опять же, я не тщательно просмотрел код, чтобы увидеть, установлены ли таймеры серии Z и т. Д.

Dong99
Ср 24 июня 2015 г., 2:15
Пико, я рассмотрел Teensy 3.1, это кажется гораздо более зрелым с хорошей поддержкой. Тем не менее, у него может быть недостаточно булавок, и у него только 2 квадратурные декодеры. Я боюсь, что дети должны будут управлять двумя из них, чтобы получить то, что они хотят, так как они говорят о 4WD, и у них будет много датчиков. Это создаст другие проблемы, такие как проблемы с задержкой связи между двумя единицами.
STM32 имеет аппаратные квадратурные декодеры, все, что нам нужно сделать, это настроить несколько реестров. Это может быть очень полезно для быстро запущенного робота во время запуска кода искусственного интеллекта - аппаратные декодеры не пропустит бит.
Я знаю, что это будет намного больше работы для детей, если мы пойдем с STM32, но они изучат некоторые навыки программирования более низкого уровня таким образом. Тем не менее, я не могу решить, какую часть они должны тратить больше времени, на низком уровне управления оборудованием или алгоритма ИИ высокого уровня. Это очень маленькая команда, в противном случае их можно разделить на три команды, одна строит аппаратное обеспечение, одно программы управление двигателем / датчиками (низкий уровень), а другая - часть ИИ.
Еще раз, спасибо всем за ваши предложения и комментарии.

Martinayotte
Ср 24 июня 2015 г., 3:07
Привет, Dong99,
Тем не менее, у него может быть недостаточно булавок Это зависит от того, какие виды вам нужны. Любой MCU может быть расширен с помощью GPIO Expander, такой MC23017.
Если ваши потребности в отношении много контактов Timer, возможно, вы правы, но, возможно, Maplemini тоже недостаточно !
Вы создадите свою собственную печатную плату ? Ваш проект чувствителен к стоимости ? Может быть, STM32F4XX еще лучше ?

Rogerclark
Ср 24 июня 2015 г., 3:22
Мартин,

Я знаю, что F4 - отличный чип, но я думаю, что это, вероятно, слишком далеко в этом случае мост. Я думаю, что у них будет вырезать свою работу даже с F103 ;-)

Zoomx
Ср 24 июня 2015 г. 6:16
Dong99,
Может быть, вы можете использовать более одного микроконтроллера. Другим вариантом может быть Raspberrypi и один или несколько микроконтроллеров.

пико
Ср 24 июня 2015 г. 12:11
Dong99 написал:Пико, я рассмотрел Teensy 3.1, это кажется гораздо более зрелым с хорошей поддержкой. Тем не менее, у него может быть недостаточно булавок,

victor_pv
Пт 26 июня 2015 г., 16:36
Rogerclark написал:Ребята,

Я посмотрел на квадратурный энкодер и существующий код E.глин. на PRJC.COM должен быть перенесен, так как он получил большие полосы кода в блоках #IFDEF, некоторые из которых являются кодом компилятора AVR.

На самом деле, непосредственное портирование кода - не единственный подход, потому что некоторые из таймеров предназначены для работы в качестве квадратурных декодеров.
Но, если эти таймеры решили бы декодировать квадратуру, они не могут делать другие вещи, такие как ШИМ, которые нуждаются в OP.

Таким образом, также может потребоваться наличие класса, который использует прерывания на квадратурных входах.

У меня нет каких -либо квадратурных энкодеров, поэтому я закажу несколько маленьких на eBay, как и интересный вопрос (но они не будут здесь в течение нескольких недель)

Другая вещь, о которой упоминалось, была Timerone.
Об этом упоминалось несколько других людей, но я не уверен, что стоит попытаться сделать версию этой LIB STM32, потому что вещи, которые он достигает, уже доступны без использования LIB, E.глин. Постоянный цикл на прерываниях PWM и таймера.

Я подозреваю, что лучшим подходом будет переносить либера.

123Francoz
Пн, 01 февраля 2016 г., 9:23 утра
Привет, @dong99. Вы использовали STM32 с аппаратными квадратурными декодерами в конце? victor_pv написал:Я читал все о таймере в последнее время, и, кажется, мы сможем прочитать несколько энноров с одним таймером, и мы получили 4 из них, по крайней мере, в Maple Mini.
Мы можем легко иметь 2 таймера, которые делали ШИМ, с еще 2, читая несколько энкодеров, и все используют DMA и прерывания.