Небольшая предыстория


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

Мое обучение началось, когда я два года назад заинтересовался темой микроконтроллеров и инженер, у которого поинтересовался насчет них, выдал мне плату 300х200мм и сказал, что в ней стоит контроллер STM32F217ZGT6 и на этой плате есть все необходимое для обучения. «В общем, освоишь ее — все остальное покажется фигней» (он, правда, не сказал, что для моргания светодиодом надо настроить SPI, о котором на тот момент я даже не слышал). Спустя три не очень напряженных месяца бесплотных попыток, осознания слабости навыков программирования и огромного количества прочитанных статей пришлось все же раскошелится на STM32VLDISCOVERY и способом копирования программ и экспериментов с ними дело наконец-то пошло, но все равно медленно.

За полтора года успел поработать разработчиком, искал вакансии, где работают с STM32 (так как считаю, что сейчас это наиболее перспективные микроконтроллеры своего класса), нахватался опыта и когда дело дошло до диплома, вспомнил о своих наболевших мозолях. Идея с темой пришла мгновенно: «Отладочная плата на STM32 и (полноценный) обучающий курс (для самых маленьких) к ней».

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

Я в курсе, что существует множество статей, где написано, что, где и как. И как работать с регистрами, как понимать, что они делают и т.д. и т.п. Для меня (может, от большого ума) многие такие статьи были все равно не понятны и выбраться за пределы моргания светодиодом без примеров рабочего кода я не мог довольно долго. Плюс ко всему в даже циклах (по 6-7 штук) статей не всегда прослеживалась система, многое не разжевывалось (чего мне сильно не хватало), а самое главное — они заканчивались, не закрыв тему до конца, оставив после себя еще больше вопросов.

Именно по этому захотел написать цельный и законченный курс, чтобы так сказать другие не мучились и самому разобраться. Так что придя в институт и понимая, что для быстрого освоения и понимания нужен стимул (а точнее — хороший такой пинчище), я стал бить себя пяткой в грудь (рыть себе могилу), что не только напишу обучающий курс (в нашем универе пришлось назвать его методическим пособием), но и макет работающий предоставлю. Тему приняли, задание написал (могилу вырыл, надгробие заказал), дело было за малым, все написать и разработать (лечь в могилу, закопаться и поставить надгробие).

Жизнь показала, что времени у меня было отнюдь не полгода, но все же все время, отведенное на диплом, почти закончилось, совсем скоро защита, но как не удивительно все не только готово, но и почти на 100% протестировано (на живых людях в том числе).

На выходе получилось следующее:

1. Сам курс (методическое пособие по-научному)


Вкратце о нем можно сказать, что на мой взгляд и по отзывам тестировщиков он полноценный, но немного суровый и не доработанный. Так как я решил, что не буду писать учебник по программированию на СИ, следовательно, и в курсе отсутствуют объяснения операторов, оттого и сказали, что местами курс суров. По поводу недоработанности честно скажу, я не все успел отладить к сдаче, чтобы об этом писать не только здесь, но и в методическом пособии к сдаче. Так же считаю, что можно лучше, но об этом чуть позже.

2. Отладочная плата на контроллере STM32F103RET6


Здесь все немного лучше, чем в первом пункте, плата разработана, заказана (из-за обстоятельств заказывать пришлось срочно) в Резоните, компоненты заказаны, спаяна ручками (честно скажу, никакое видео не передаст ощущения первой пайки LQFP64) и протестирована (большее ее часть заработала сразу же). Но это макет и, конечно, не обошлось без накладок: проводков, переходников и других различных «костылей», но заказать вторую ревизию я, к несчастью, не успею, да наверно и не стал бы, для защиты диплома, уверен и этого хватит. Так что ниже я расскажу более подробно об этой отладочной плате.

Придя на первую работу в качестве разработчика электроники, я столкнулся с одним интересным мнением и, как оказалось, оно весьма распространено. Это мнение звучало примерно так: «Вот я программист и программирую микроконтроллеры, схемотехнику не знаю и знать не хочу, паять, кстати, тоже не умею». Пообщавшись с группой программистов вне фирмы, понял, что человек с моей работы далеко не одинок в своем мнении и хоть я его и не поддерживаю, понять и уважать мнение окружающих стоит, тем более это отлично вписывалось в тогдашнюю концепцию отладочной платы «все на борту». В связи с этим плата получилось достаточно «жирненькая», получила название STM32SB (SB-StudyBoard) V1.0b. Ниже разберем, что в нее вошло.

1. Микроконтроллер
Исходя из того, что я работал с микроконтроллером STM32F103RET6, он и был выбран для проекта.

image

2. Схема питания и аппаратный USB контроллера
В этом микроконтроллере есть встроенный USB, который было решено вывести на отдельный разъем.

image

3. Спикер
Было решено ввести для освоения ШИМ модуляции и обучению написанию мелодий.

image

4. Цифровой индикатор и сдвиговый резистор
Для одновременного освоения динамической индикацией и сдвиговым регистром было решено их совместить.

image

5. Светодиоды
Светодиоды, что может быть лучше? Только трехцветные светодиоды, на которых можно освоить плавную смену цветов.

image

6. ЖК-дисплей
Стандартный ЖК-дисплей на 2 строки по 16 символов для освоения параллельного интерфейса.

image

7. Клавиатура
Матричная клавиатура, это нужно знать и уметь.
image

8. Расширитель портов ввода-вывода
Много портов ввода-вывода не бывает, а тут еще и I2C освоить можно.

image

9. Электронный термометр
Датчик температуры по 1-Wire, полезная вещь и ценный опыт работы с ним может пригодиться.

image

10. Электронный потенциометр
На этой вещице можно освоить полноценный SPI и попробовать сделать замеры изменения напряжения через АЦП.

image

11. Реле
Хоть это и на уровне поморгать светодиодом, но все же приятно услышать знакомый щелчок, правда?

image

12. Ключевые транзисторы
Так же на уровне моргания светодиодом, но вдруг кому принцип не понятен.

image

13. Дублирование свободных пинов на внешних выводах
Ну это естественная конструкция для любой отладочной платы, вдруг все, что в ней есть никому не пригодилось, а подключить, что то свое все же нужно.

image

14. Преобразователь WIFI-UART(esp8266)
В схеме преобразователь участвует как разъем, также он указан и здесь. Используется уже довольно нашумевший модуль esp8266.

image

15. Преобразователь USB-UART
USB это всегда круто, сдесь используется чип CP2102.

image

16. JTAG и SWD
Ну куда же без этих вещей.

image

Такой широкий набор внешних устройств даст возможность освоить большинство приемов и попробовать поработать с большинством интерфейсов, не заморачиваясь закупкой элементов и не отходя от стола, что согласуется с концепцией не только «все на борту», но и «для самых маленьких» (не умеющих паять).

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

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

1. Понял, что пины SWD расположены с странном порядке и хоть работе платы это не мешает. Услышал, на мой взгляд, правильное мнение, что их стоит располагать так, как они расположены на STM32VLDISCOVERY, чтобы избежать недоразумений у нового пользователя.

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

3. Я разработал свой логотип для этой платы, который хотел перевести в PCB и разместить на плате, но забыл.

4. Для экономии места во второй ревизии платы я бы разместил некоторые не используемые пользователем SMD компоненты на нижней стороне платы.

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

6. Забыл подписать, где JTAG и SWD, так же у них не показано, как их подключать и если для JTAG и его разъемом BH-20 все не так сложно, то с SWD ситуация несколько опасней.

7. При разработке футпринта ЖК-дисплея вышел казус и отверстия оказались слишком малы для болтов М3.

8. У преобразователя CP2102 перепутаны выводы RX и TX. Так как я привык, что в документации приводится пример подключения относительно микроконтроллера, а не внешнего устройства, пришлось перерезать таки 2 дорожки.

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

10. Вышла накладка с резисторами ограничения тока в цепи индикации включения реле, номинал оказался слишком большой для того, чтобы реле могло коммутироваться.

11. Ну и, как водится, «хорошая мысля приходит опосля». Так, уже после получения платы я понял, что стоило сделать размер ее подходящий хоть под какой-нибудь корпус — видимо придется доработать во второй ревизии.

12. Изначально был заложен маленький цифровой индикатор, так как занимал не большую площадь и был доступен в магазинах, однако оказалось, что на самом деле он везде доступен при заказе от 520 штук, так что пришлось ваять переходник на стандартный цифровой индикатор.

Напоследок покажу вам 3D модель этой платы:

image

И для сравнения фотографии ее же, как она получилась «в живую», вид с верху:

image

И вид с боку, чтоб было видно побольше «костылей»:

image

Извините, но весь проект до сдачи диплома выкладывать мне бы не хотелось, но после этой работы у меня встал вопрос, а стоит ли данный проект развивать? Меня посетила идея написать цикл статей, посвященных обучению, где был бы представлен такой вот полноценный курс по этой отладочной плате, где все написано простыми словами и объяснено на пальцах. Хотелось бы услышать от вас в комментариях насколько это было бы полезно и необходимо на настоящее время.

Спасибо за внимание!

Комментарии (58)


  1. eta4ever
    03.06.2015 17:25
    +8

    Продолжать стоит, я всеми тентаклями голосую за mbed.


    1. Spin7ion
      04.06.2015 12:28

      Я столкнулся с тем, что mbed жутко медленный и мне хочется от него уйти. К сожалению, я очень плохой программист мк и не в состоянии быстро освоить все тонкости stm в краткий срок не могу.


      1. eta4ever
        04.06.2015 12:57

        Ну, у меня претензии разве что к скорости открытия IDE и поиска чего-то в репозиториях. В обычной работе (код-компиляция-скачивание) все летает. Я уходить не собираюсь, потому что люто, бешено ненавижу конструкции вида РазрешитьИспользованиеОченьНужнойВещи(Вещь), ТочноРазрешитьИспользование(Вещь), ТонкоНастроитьКойКакиеЗавитушки(Вещь). Да, возможно, я не программист и не знаю, что так на самом деле надо.


        1. Spin7ion
          04.06.2015 17:50

          Я говорю не о медленности IDE, а о медленности библиотеки, HAL и Mbed RTOS. Не уверен, что смогу на ней сделать автопилот. Нужна бОльшая скорость.


          1. eta4ever
            04.06.2015 18:06

            А, значит, я вас не так понял. В производительность получаемого кода я еще не упирался, делал всякие простые вещи.
            Но идею понял, я как-то столкнулся с недостаточной производительностью ардуинового кода, погуглил, нашел костыли, плюнул и переписал на C.


  1. uuuulala
    03.06.2015 17:32
    +1

    Меня посетила идея написать цикл статей, посвященных обучению, где был бы представлен такой вот полноценный курс по этой отладочной плате, где все написано простыми словами и объяснено на пальцах


    главное сильно не повторяться :D
    habrahabr.ru/search/?q=stm32


    1. Jerrek Автор
      04.06.2015 11:26

      Постараюсь нести только новое, ну или хотя бы под другим углом смотреть)


  1. gleb_l
    03.06.2015 18:04
    +4

    Что-то схема включения реле какая-то необычная — на светодиоде слабозависимо от прямого тока (в интересущем нас с точки зрения включения реле диапазоне) падает в зависимости от его цвета от 1.3 (красный) до 3 вольт (синий).

    То есть даже в отсутствии ограничительного резистора на обмотку остается максимум 3.7 вольта. Вдобавок, светодиод + резистор в цепи истока управляющего полевика дает сильную ООС, которая естественно, пытается вывести коммутирующий полевик из ключевого в линейный режим — что чревато неполным включением полевика от управляющего логического сигнала, его перегревом и вялым включением реле.

    Если уж прямой ток светодиода и ток включения реле сравнимы, оба этих элемента надо включить в цепь стока, а еще лучше — параллельно обмотке реле включить светодиод с ограничительным резистором, а реле взять 5-вольтовое, чтобы никаких цепей ограничения тока для него городить не было необходимости

    Кстати, и «силовые» выходы тоже имеют светодиоды в цепях истока, и соответственно, они годны для коммутации только высокоомной нагрузки. Либо я глючу или в схеме ошибка, и феты — P-канальные


    1. jaiprakash
      03.06.2015 18:51
      +4

      В подключении VT1 — VT4 допущена грубейшая ошибка! Исток в данном случае должен быть на земле.
      Резистор и светодиод нужно расположить между +5V и стоком полевиков.


      1. imwode
        03.06.2015 21:35
        +2

        Во-во, смотрю — на затворе 3.3В, под истоком висит светодиод, оставляющий для Vgs около полутора вольт, плюс еще и сопротивлениее 300 Ом, которое ограничивает ток 1В/300Ом=3мА — это то, что потечет через реле если транзистор все-таки откроется. КАК ЭТО РАБОТАЕТ?
        А ниже с ключевыми транзисторами вообще загадка. Зачем ставть ключевой транзистор с ограничителем тока в 3-5мА, если без него с ноги можно 10-20мА слизать вообще безнаказанно?


        1. gleb_l
          03.06.2015 22:21
          +3

          Вариант каскада с реле худо-бедно работает скорее всего потому, что BSH103 открывается уже начиная с Vgs = 1.2 вольта, и цепь реле запитана не от +3.3, а от +5. При том, что автор сам пишет, что с номиналом резистора в цепи питания реле пришлось поколдовать — скорее всего, работает на краю возможного. Никто не может гарантировать, что однажды не попадутся полевик, светодиод, реле, стабилизатор питания с комбинацией допусков, которые приведут к неработоспособности подобного решения. BTW, в биполярном варианте каскада включать диод в эмиттер при управлении особенно от TTL — скорее хорошая, чем плохая практика — угадайте, почему? ;)

          Автору можно посоветовать взять обычный тестер и измерить Vgs во включенном состоянии, а затем заглянуть в даташит


          1. imwode
            04.06.2015 00:11

            угадайте, почему? ;)

            Повышение напряжения базы до 1.2В?
            Защита транзистора от индуктивной нагрузки?
            С резюком в 300 Ом в любом случае фиговая же идея, не?


            1. Alexeyslav
              04.06.2015 11:53
              +3

              нет, там причина другая… TTL в принципе не способен дожать свой выход до нуля… остаточного напряжения может быть достаточно чтобы транзистор остался открытым при лог.0. Диод в эмиттерной цепи повышает порог открытия биполярного транзистора примерно на 0.5В


              1. gleb_l
                04.06.2015 17:05

                абсолютно верно! Честно говоря, я так и думал, что либо Alexeyslav, либо DIHalt :)


    1. gleb_l
      03.06.2015 22:44
      +1

      А, и еще — не всякий светодиодный 7-сегментный индикатор, особенно зеленый (не знаю, какого цвета у вас) в режиме динамической индикации будет ярко светиться и питании регистра-защелки от +3.3 — так как даташит дает для его выходов 6мА вытекающего тока при +5, а даже этого мало для динамической индикации. Тут по-хорошему нужен либо индикатор повышенной яркости, либо регистр с повышенной нагрузочной способностью, либо набор p-канальных полевиков/p-n-p биполярников (хорошо бы в интегральном исполнении) для увеличения импульсного тока через сегменты до 4*Iном — тогда яркость будет на уровне.


      1. gleb_l
        03.06.2015 23:06
        +1

        Ну и если совсем занудствовать — если катоды диодов, активирующих линии опроса клавиатуры, подключить к стокам полевиков, активирующих разряды 7-сегментных индикаторов, то можно сэкономить три линии портов ВВ. Программно, конечно, придется привязать опрос клавиатуры к циклам индикации, но это несложно. Это практически стандартное решение в случаях, когда линий портов ВВ не хватает


        1. Jerrek Автор
          04.06.2015 12:13

          С таким стандартным решением, я еще к сожалению не знаком.

          Спасибо за комментарии и советы, обязательно учту все это!


  1. raid
    03.06.2015 18:09
    +3

    Меня в таких отладочных платах беспокоит их бесполезность.
    Если нужно чему-то научиться, стоит делать это на каких-то практически полезных проектах. Термометр там сваять, выключатель света в туалет и т.д. Ведь неинтересно же просто так ничего не значащие символы на экран выводить.
    А теперь подумайте, зачем мне пихать эту махину в устройство, где будет задействован разве что МК и 1-2 компонента?

    Вы не думали сделать плату модульной: вывести разъёмы под LCD, реле, индикатор с регистром? А пользователь уже сам будет выбирать, что ему нужно, что купить и подключить к основе.


    1. eta4ever
      03.06.2015 18:23
      +4

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


    1. Rumlin
      03.06.2015 18:39
      +1

      Здравая мысль. У Texas Instruments такое наблюдаю. Фактически Launchpad это микроконтроллер с программатором, а всё остальное навешивается модулями (BoosterPack).

      Например
      image


    1. Amomum
      03.06.2015 19:02
      +2

      Собственно, непонятно, чем плоха discovery. У нее, конечно, нет готовых разъемов под платы расширения, но ее можно воткнуть в макетку и просто проводами подсоединяться.


      1. grossws
        05.06.2015 03:48

        У дискавери есть разъемы под её материнку (которая, правда, стоит на порядок дороже, чем сама дискавери).

        Плюс есть куча материнок OpenNXY с изобилием разъемов расширения и стандартных модулей (типа Open407V-D в которую устанавливается обыкновенная f4-disco на stm32f407).


      1. grossws
        05.06.2015 03:51

        Дополню. Основной минус discovery — это то, что она eval board, а не dev board, соответственно, установленные компоненты могут сильно мешать. На f4-disco, например, невозможно пользоваться SPI портом, на котором висит акселерометр, даже когда он не выбран через ^CS, т. к. в этом случае он считает себя работающим по I2C и может вмешаться в трафик.


        1. Amomum
          05.06.2015 09:40

          Резонно. Впрочем, если очень надо — можно и дорожки перерезать.


        1. eta4ever
          05.06.2015 12:46

          Поэтому проще взять Nucleo


    1. imwode
      03.06.2015 21:37
      +5

      Начет таких плат не знаю, а вот Дискавери от СТМ и микрочиповские отладки — отличнейшие вещи. На них можно заниматься изучением программирования под платформу, а не поиском соплей и ошибок в собственном дизайне, когда не знаешь, почему не работает — то ли ты не так рисуешь, то ли не так паяешь, то ли не так кодишь.


      1. ProLimit
        03.06.2015 22:24
        +3

        Согласен, если задача освоить именно новый процессор и быстро начать писать под него что-то полезное, а не заниматься месяцами схемотехникой — Discovery отлично подходит, дешево и универсально. А любой внешний модуль можно собрать на макетке и подключиться парой проводов к нужным портам.


      1. KonstantinSoloviov
        04.06.2015 11:16

        И для собственной разработки очень полезно иметь под рукой подсказку.
        Как цепь сброса сделать, как кнопку или LED повесить, что делать с питанием, с BOOT'ами и т.д. и т.п.


    1. Anvol
      03.06.2015 23:55

      Поддерживаю. Дев борды от производителя с кучей примеров с оф сайта и поддержкой комюнити отлично подходят для изучения периферии и первых прототипов. Нет проблемы за 10 минут на макетке подключить любой обвес из описанного в статье. Китайский дев борд на stm32f103 с jtag и гребенкой по периметру стоит 5 уе, остальное докупать по мере интереса


      1. Jerrek Автор
        04.06.2015 10:10

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


        1. Anvol
          04.06.2015 10:37

          Решается это другим путем — покупкой тех же компонентов в местных магазинах. Инициализация USART с прикруткой ring buffer — вот проблема для новичка) Сборка на макетке — не проблема)) (с личного опыта)


          1. Jerrek Автор
            04.06.2015 10:52
            +1

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


    1. DarkByte
      04.06.2015 07:57
      +1

      У китайцев давно можно купить отладочную плату с STM32 в форм-факторе Arduino Mini, например STM32F103C8T6 Development Board Module.


      1. Anvol
        04.06.2015 10:38

        именно об этой плате за 5 уе я и писал выше. Вместе с одной из discovery — отличный старт


        1. grossws
          05.06.2015 03:58

          У китайцев бывают неприятные глюки (начиная от левых ftdi/cp2103 и заканчивая криво разведенным питанием), отсутствие документации (что довольно неприятно, т. к. реверсить плату с установленным чипом в LQFP44 — уже ощутимый геморрой. Кроме этого, часто требуется отдельный SWD/JTAG, что несколько увеличивает стоимость покупки, особенно, если брать нормальный (Olimex, Segger).

          В этом плане discovery (а теперь ещё и серия nucleo) довольно приятна. Дешего, от производителя, со встроенным отладчиком (а nucleo ещё и с упрощенной прошивкой — прикидывается флешкой, на которую можно кинуть прошивку с любого компа).


          1. eta4ever
            05.06.2015 12:50

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


    1. Jerrek Автор
      04.06.2015 10:09
      +1

      На самом деле, думал о модульном варианте, но как я писал выше, изначальная идея была дать опробовать, освоить и изучить все необходимое для программирования STM32 людям, у которых есть проблемы с подключением, закупкой и сборкой схемы на макетке. Плюс ко всему, этож диплом, который как я понял, будет потом использоваться для обучения студентов(которые как показывает практика ничего не знают в этой теме), по курсу микропроцессорной техники, а им бегать закупать и тем более давать подключать, что либо чревато(а хотя стоило бы, но для кафедры накладно будет к несчастью)…


  1. jaiprakash
    03.06.2015 18:55
    +4

    Большинство курсов написаны для людей, начинавших с чего-то попроще: 8051 и подобных, PIC, AVR.
    Поколение эмбеддеров стартующих сразу с ARM только появляется. Отсюда часть сложностей.


  1. flyaway
    04.06.2015 01:47
    -11

    >STM32 (так как считаю, что сейчас это наиболее перспективные микроконтроллеры своего класса)

    Мне кажется, вы выдаете желаемое за действительное.
    Чахлый STM32 просто не нужен, когда есть полноценный arm типа rPi за почти те же деньги с возможностью установить полноценный линукс, всеми вытекающими из этого плюсами и намного большей вычислительной мощностью.


    1. imwode
      04.06.2015 05:00
      +11

      Что такое rPi и где вы его купите за 2-4 доллара и зачем нужен линукс при решении задач, которые решает МК?


      1. Nidaylokn
        04.06.2015 10:58

        В готовый серийный продукт тоже немаленькую такую малину за 70 баксов впихивать будете?


      1. flyaway
        04.06.2015 11:35
        -6

        Затем же, зачем сейчас весь софт пишут на с++ и .net/java. Всё можно сделать на ассемблере же, будет работать в 10 раз быстрее и жрать в 10 раз меньше памяти. Но никого это уже не парит — проще напихать готовых библиотек в management-код и выкатить решение, чем байты оптимизировать.
        Так и с микроконтроллерами будет — со временем полноценный arm с линуксом будет еще дешевле и его будут ставить туда, где сейчас ставят avr и stm32 — просто потому что это быстрее и дешевле, чем возиться с оптимизацией.


        1. Alexeyslav
          04.06.2015 13:19
          +3

          А потом до посинения вылавливать баги, патчить уязвимости, искать утечки памяти… в простейшей программе только из-за того что она задействует десяток библиотек с сомнительной совместимостью(а кто будет проверять совместимость библиотек — это же потеря времени, надо быстрее, еще быстрее проще костылей наставить). В итоге получаем что разработка затягивается на годы, а интерфейс на 1ГГц ARM-процессоре безбожно тормозит. И правда, зачем… и так схавают. Пофиг что батарейки хватает уже всего на пару часов, главное сделали быстро и дёшево.
          Только от эмпирической формулы
          работа = быстро-дёшево-качественно(реализуемо только 2 из 3) никуда не денешься.


    1. DarkByte
      04.06.2015 08:05
      +3

      Raspberry Pi B+ $70, STM32F103 $1.5 при единичном заказе. Разница почти на два порядка — это не «почти те же деньги». Конечно каждый сам для себя решает, что использовать для моргания светодиодом (светом в туалете) — аналоговую схему, микроконтроллер или ARM с линуксом и интерпретатором Python.


      1. flyaway
        04.06.2015 11:50
        +1

        вы же понимаете, что сравниваете готовую плату с интерфейсами и памятью с отдельным чипом?
        Давайте тогда сравним STM32VL Discovery, например, (20$) и rPi A+ (20$)


        1. DarkByte
          04.06.2015 12:06
          +3

          Конечно понимаю. Тем ни менее, не нашёл где можно купить проц из RaspberryPI даже по цене отладочной платы с STM32F103 (ссылку давал выше, 4.7$ за штуку) на борту. Но опять таки, если подать питание на STM32, то он заработает, а для проца из малины потребуется внешняя память, внешнее хранилище и наверняка внешний кварц. Кроме этого наверняка для стабильной работы потребуется плата с контролем длинны дорожек и их ёмкости. И всё это будет стоить денег, и не факт, что самостоятельная сборка обойдётся дешевле покупки готовой малины с уже распаянным контроллером usb/lan и интерфейсными разъёмами.


          1. grossws
            05.06.2015 04:06

            Это не считая того, что имеющийся там проц — BGA, требуется проектирование и производство, как минимум, четырехслойной ПП (можно глянуть на досуге, насколько они дороже). Большинству энтузиастов это уже неподъёмно.

            Если правильно помню, ещё и доки на тот броадком были чуток не для физиков и под NDA.

            Также, написать загрузчик и портировать какой-нибудь uboot под ARM9/ARM11/Cortex-A куда сложнее, чем написать тривиальный код для инициализации ARM7 или Cortex-M.


    1. Anvol
      04.06.2015 10:40
      +2

      Напомните, сколько там UART интерфейсов и есть ли хоть один АЦП? Возможно, ШИМ сигнал даже умеет генерировать не загружая проц на 100%?


      1. Jerrek Автор
        04.06.2015 12:31

        Если вы про STM32F103RET6 который использовался в данной плате то 2 UART, 3 USART и 3 АЦП. И ШИМ сигнал он отлично генерит, действительно не нагружая проц на 100%.


        1. Anvol
          04.06.2015 12:35
          +2

          Это вопрос-сарказм на комментарий про распбери. Обратите внимание на стрелочку в заголовке комментария, она перекидывает на комментарий, к которому пишется ответ. С STM32Fxxx знаком хорошо, спасибо)


          1. Jerrek Автор
            04.06.2015 12:40
            +2

            Заплутал в комментах… но зато побыл кэпом)

            image


    1. eta4ever
      04.06.2015 13:20
      +3

      Ни линукс, ни ацки прожорливая малина не нужна, когда надо работать с парой-тройкой входов-выходов и устройством индикации. STM32F030 в TSSOP20 (отдельный чип) можно купить за 55 центов, я даже материал ему посвятил. Вот когда будет 16-28 ногий SoC хотя б за 5 баксов, и чтоб кушал как STM, тогда и да.


  1. FunTic
    04.06.2015 07:11

    Jerrek, глянь личку…


    1. Jerrek Автор
      04.06.2015 10:03

      Отписался.


  1. avrfun
    04.06.2015 10:06
    +5

    Работа большая и основательная, но весь вопрос в себестоимости. Если Вы делаете средство обучения для студентов — надо чтобы было максимально дешево, по моему ощущению себестоимость этого девайся если закупались в крупном интернет магазине (партией 10 штук) получается 3000р примерно + монтаж (это еще 400р). Надо сделать наценку 50% чтобы зарплату людям платить. Получается продажная цена 5100рублей. Это не дешево. Поэтому китайцы делают маленькие дешевые платки за 200 рублей. Разбейте Ваш проект на дешевые модули и продавайте по отдельности.


    1. Jerrek Автор
      04.06.2015 10:18

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


  1. Kradima
    04.06.2015 11:12
    +1

    Однозначно продолжать!


  1. maybe_im_a_leo
    08.06.2015 02:33

    Здравствуйте!
    А можете выложить свое методическое пособие. Было бы очень интересно посмотреть ваш вариант учебного курса.