avatar_zap

Универсальный бортовой компьютер iWattnick

Автор zap, 10 Окт. 2014 в 03:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

zap

"В команде утят замена" (L).

После долгих раздумий я таки решил отказаться от AVR в пользу STM32F1.
Причины для этого следующие:

  • Ресурсов atmega328 (в частности, ног и памяти) хватит впритык под уже написанное ТЗ. То есть, в будущем (когда решу делать версию 2.0 :)) будет практически невозможно расширить функционал без извращений. А уж ограничение по объёму доступной памяти (2к из которых 1к уйдёт под буффер экрана) уж очень тугой.
  • Я не уверен, что AVR на 8 МГц (а частоту выше невозможно использовать если хотим иметь часы реального времени) хватит на графику, даже если 2 fps. В принципе, наверное, это можно сделать, но стоит ли терять кучу времени на ассемблерные оптимизации? Не уверен.
  • Большинство данных будут 32-битными, с которыми достаточно-таки замороченно работать на AVR. Не то, чтобы очень сложно, тем более куча оптимизированных подпрограмм у меня уже написано, но на 32-битном процессоре это куда проще.
  • Размер LQFP48 ровно такой же как у TQFP32. Да, ног больше, а это значит шаг ног 0.5мм вместо 1.27. Увы, в домашних условиях такие платы крайне сложно делать. Искусство требует жертв! Зато у меня есть STM32Discovery Value Line на STM32F100, так что проработать большинство аппаратных заморочек можно вообще без существенной пайки.
  • STM32F100C8 (64 килобайта flash, 8 килобайт памяти, 12-битный АЦП, ЦАП, аппаратные часы реального времени и куча прочих ништяков!) стоит дешевле atmega328 почти в джва раза! Я в шоке.
  • Хобби-проект должен способствовать повышению квалификации и получению новых знани! :-D
Минусом данного решения является то, что разработка займёт больше времени т.к. мне придётся изучать STM32 практически с нуля :).
Зато мне будет интереснее ;-D

P.S. А кнопок всё-таки пока оставлю две :-P
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

_claw


mevial

Сорцы будут?
Я сам пописываю немного под stm32, правда у меня китайборды, а не фирменная дискавери, одна с цветным дисплеем на 103rb, другие без дисплеев на 103с8.

Vladigit

Цитата: zap от 15 Окт. 2014 в 14:25
"В команде утят замена" (L).
После долгих раздумий я таки решил отказаться от AVR в пользу STM32F1.
И это правильно, товарищ! (с)
Тоже в своё время пришел к этому решению  по тем же причинам, только уходил от ПИКа.
Самая хорошая работа - это высокооплачиваемое хобби.  Генри Форд

zap

Цитата: mevial от 15 Окт. 2014 в 14:32
Сорцы будут?
Я же сказал - полностью открытый проект.
Пока зарегистрировал проект на кодогугле, в репозитории пока пусто.
Писаться будет на gcc/arm и мейкфайлы, никаких гламурных IDE.

У меня тоже "китайский" STM32Discovery с тао, благо ST опубликовало полную схему и плату, китайцы их штампуют.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

mevial

Цитата: zap от 15 Окт. 2014 в 17:57
Писаться будет на gcc/arm и мейкфайлы, никаких гламурных IDE.
Я чтобы быстрее вкуриться, начал пользоваться coocox, и... привык к нему уже. Да и не было программатора какое-то время, шил чипы через bsl, а софтинка по прошивке была только под винду. Кроссдев собран, даже jlink под линухом работает, но реально быстрее в ide переключать вкладки с библиотеками и дебаг как-то понятнее. Мэйкфайлы это жёстко, надо посмотреть на тему как можно проект импортировать в гламурную ide.

zap

Ну, отлично, CooCoox использует как раз arm-none-eabi gcc, ровно такой же как у меня.
Что же до IDE - у одного одно, у второго другое, на всех не напасёшься.
А в основе у большинства всё тот же gcc, и мейкфайлы тут дают универсальность и гибкость.
Файлы проектов всех этих IDE очень уж деревянные, после мейкфайлов - каменный век.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

enek

Поддерживаю идею за STM! Может выберем камень чуть поинтересней - stm32f103c8? Он практически такой же, тока чуток пошустрее 72мГц и с USB интерфейсом. На нем программаторы st-link собраны и мощи хватит чтобы синусом мотор крутить. Вообщем считаю что f103 более распространен, а стоит на 20р дороже чем f100.
Что не убивает мой вел, то делает его сильнее...

stranger

#98
Цитата: zap от 15 Окт. 2014 в 14:25
"В команде утят замена" (L).

После долгих раздумий я таки решил отказаться от AVR в пользу STM32F1.
Причины для этого следующие:

Ну, раз уж пошла такая пьянка, топикстартер понял таки наконец, что пора уже переходить на армы, вставлю и я свои пять копеек. ;-)
Несколько месяцев назад, как "всякий уважающий себя прогер" и обладатель четырёх электровелосипедов, решил и я взяться за разработку "бортового компьютера для электровелосипеда". В качестве процессора, было решено выбрать 32-х разрядный арм от Stm.
Ещё для меня было важно найти готовую отладочную борду вместе с дисплеем, чтобы самому не заниматься разводкой и пайкой. После недолгих поисков нашёл и купил вот такую штуку:

HY-MiniSTM32V, в ней стоит процессор STM32F103VCT6.

http://www.hotmcu.com/hyministm32v-dev-board-32-tft-lcd-module-p-5.html?cPath=1_20&zenid=fmgtjatqckoi98mg4oc7tjoii7

Преимущества проца очевидны: 32 разряда, аппаратное деление, 72 Мгц, 256К ПЗУ, 48К ОЗУ, ДМА, Часы реального времени, быстрый 16-ти разрядный интерфейс FSMC для общения с дисплеем и куча всяких ништяков т.д.

Борда имеет цветной экран 3,2" 320х240 точек, резистивный тачскрин, есть место под батарею для энергонезависимой памяти и часов реального времени, разъём для Sd карты, два USB разъема, куча свободных ног, выведенных на дырки под 2-х рядный разъём. Прошивку можно заливать через USB при помощи специальной софтины под венду, программатор не нужен.

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

Что есть сейчас. В качестве "ОС" использована FreeRTOS V6.1.0. Работают часы реального времени, по шине 1wire опрашиваются несколько термодатчиков Ds18B20, а также DS2760, используемая для измерения тока, напряжения, потребленной электроэнергии.
При работе с экраном используется  тачскрин, переключение между экранами осуществляется при помощи сенсорных экранных кнопок. Реализован экранный калькулятор для ввода цифр. Начал рисовать аналоговый спидометр.

Весь проект сделан на C под Keil.

Могу записать и выложить видео работы с экранами, если нужно.

Из плюсов: вместе с девайсом идет диск с кучей примеров на С под кейлом. Есть даже пример использования монструозной графической библиотеки для построения GUI, но мне лень было с ней разбираться.
А вот видео работы борды с этой библиотекой:
uCOS-II and uC/GUI demo on Mini STM32 V4

Ну и резюме:
В принципе, этот девайс можно использовать не только для отладки программы, но и для использования в качестве готового дисплея, подобрав (изготовив) корпус под него. Единственное но: сейчас эта борда представляет из себя пирог из двух плат, скрепленных 4-мя стойками. На верхней плате дисплей, на нижней - проц, батарейка, разъем под карту памяти, разъемы USB и дырки под 2-х рядные разъемы на свободные ноги. Между верхней и нижней платой много пустого места. Если провести липосакцию укоротить стойки и убрать разъём (распаяв шлейф), ведущий от платы процессора к дисплею, можно высоту этого пирога существенно уменьшить, сделав устройство компактнее. Если кому не нравится тачскрин, на плате есть"Two GPIO buttons"... :hello:

TRO

#99
А может разработать плату опроса датчиков отдельно от мозгов и показометра? А мозги и показометр можно по UART конектить штатно проводами или через уарт-блютуз к любому девайсу (телефон, планшет и прочее), в результате и овцы целы и волки сыты, каждый вибирает то что ему по нраву. С открытым протоколом я себе экранную часть с кнопками и сам сваяю хоть на бейсике, а плату с датчиками предпочту купить (по большому счету в ней апгрейдить будет нечего, думаю тут найдутся те кто организует производство.) Заодно проэкт получит несколько вариантов приборных панелей, от бюджетных (повторяемых на коленке), до навороченных.

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

i

Цитата: TRO от 16 Окт. 2014 в 10:52
А может разработать плату опроса датчиков отдельно от мозгов и показометра? ...
Да Вы что!!! Надо обязательно все хотелки затолкать в один чип, ведь так гораздо удобнее сажать глюки в программу. На худой конец можно и Pentium взять (или Atom), если хотелки и в ARM не влезут или скорости не будет хватать... или ног.
:-\
P. S... можно за 20$ купить GA144 (144 ядра, ~700МГц). Всего по 14 центов за ядро получается, а уж удовольствия-то сколько... /:-)

mevial

Версия vc действительно как из пушки по воробьям, я за ту же сумму брал rb, но уже ясно, что цветному жк такой ценовой категории на транспорте не место, если это не авто, резистивный тач вообще то ещё развлечение, да и измеритель тока можно было бы попроще найти. Поддерживаю 103c8 как оптимальный вариант по цене и наворотам,  с usb правда сам работал только на уровне библиотек от производителя, но польза есть.

stranger

#102
Цитата: mevial от 16 Окт. 2014 в 11:53
резистивный тач вообще то ещё развлечение

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

Цитата: mevial от 16 Окт. 2014 в 11:53
да и измеритель тока можно было бы попроще найти.

Я, собственно, не призываю использовать именно DS2760, он у меня остался от предыдущего проекта, разведенный на плате вместе с шунтом коллегой nordiver-ом (см.тему "Измерение емкости батареи").

А Вы можете назвать тот, который "попроще" (при том же функционале)?

xxoma

#103
[user]stranger[/user], по поводу Ds18B20, не будет он работать в моторе(то есть будет но только в паузах работы мотора), проверено на личном опыте.
Kellys Blog, Bafang 750W 48V bbs02, 48V 23Ah.

stranger

#104
Цитата: xxoma от 16 Окт. 2014 в 12:17
[user]stranger[/user], по поводу Ds18B20, не будет он работать(то есть будет но только в паузах работы мотора) в моторе, проверено на личном опыте.

А я и не имел ввиду работу в моторе. Измерение температуры воздуха, температуры в батарейном отсеке, температуры тела седока ректально  :-) и т.д. Лично для меня, измерение температуры в моторе - ненужная функция, т.к. нет у меня готовых датчиков в моторах и ставить их туда мне лень, да и катаюсь я в таких режимах, что моторы у меня чуть тёплые.

zap

#105
Тэкс, отставить макать капитана! (L)
Аппетит приходит во время еды, я смотрю :-D
Тут уже и цветной экран решили затолкать, и GPS, и синусное управление двигателем, и RTOS. Ещё линукс предложите затолкать, ага.
Так не пойдёт :clyster:. В этом деле главное вовремя остановиться.
Будут задачи для 72Мгц - будет F103.
А пока их нет - его не будет.

Насчёт внешней платы датчиков идея хорошая.
Но это усложняет основной вариант - появляются два корпуса вместо одного.
Поэтому будет комбинированный вариант :-D базовый набор датчиков будет на основной плате.
А для эстетов предусмотрим внешнюю шину и опрос по протоколу, ресурсов теперь должно хватить.
Сделаю два UART порта - один "наверх" (слэйв) и один "вниз" (мастер).
К мастеру через RS485 (наводки будут просто адовые, без дифф сигнала никак) трансивер подключаем датчики. На RS485 шине будет 1 мастер и много слэйвов. А через "наверх" будем отправлять данные на смартфон (смартфон в режиме мастера, бортовой компьютер в режиме слэйва), по проводам или bluetooth в принципе пофигу.
А по RS485 будет гулять протокол ModBus. Наверное, в варианте Modbus RTU.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

mevial

#106
Цитата: zap от 16 Окт. 2014 в 18:46
Тэкс, аппетит приходит во время еды, я смотрю :-D
Тут уже и цветной экран решили затолкать, и GPS, и синусное управление двигателем, и RTOS. Ещё линукс предложите затолкать, ага.
Так не пойдёт :clyster:. В этом деле главное вовремя остановиться.
Будут задачи для 72Мгц - будет F103.
А пока их нет - его не будет.

Насчёт внешней платы датчиков идея хорошая.
Но это усложняет основной вариант - появляются два корпуса вместо одного.
Поэтому будет комбинированный вариант :-D базовый набор датчиков будет на основной плате.
А для эстетов предусмотрим внешнюю шину и опрос по протоколу, ресурсов теперь должно хватить.
Сделаю два UART порта - один "наверх" (слэйв) и один "вниз" (мастер).
К мастеру через RS485 (наводки будут просто адовые, без дифф сигнала никак) трансивер подключаем датчики. На RS485 шине будет 1 мастер и много слэйвов. А через "наверх" будем отправлять данные на смартфон (смартфон в режиме мастера, бортовой компьютер в режиме слэйва), по проводам или bluetooth в принципе пофигу.
А по RS485 будет гулять протокол ModBus. Наверное, в варианте Modbus RTU.
Так все плюшки 103го в том, что он по ногам идентичен 100му, ртос и цветной дисплей с блэкджеком это не про твой проект. А 103й можно затактировать и помедленней. Просто есть у меня желание ещё пачку 103их заказать, чтобы уж точно хватило на любой проект, а то последний 103й на термостат уходит. А по цене 100й и 103й практически идентичны.
PS: Главное писать сразу грамотно, чтобы прошивке было по барабану на чём её запускают, на 100 или на 103, т.е. исключить все частотозависимые моменты.

zap

Если по ногам идентичен, тогда вообще без разницы какой впаивать :)
Мне едет уже пригоршня 100х. Если потом переключимся на 103е - вопрос только поменять target CPU в мейкфайле.

P.S. Во, кстати, вижу появился PS - именно так, писать надо так, чтобы не было потом жаль за бесцельно потраченное время :)
У меня некоторые программы портируются между PC и AVR (удобнее отлаживать на PC :-D), что уж говорить за микроконтроллеры одного семейства.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички