Телескопы покупают здесь


A A A A Автор Тема: Платформа Arduino: полезные советы и решения  (Прочитано 4866 раз)

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

Оффлайн Грехов Михаил

  • *****
  • Сообщений: 31 826
  • Благодарностей: 816
  • Вон с форума мракобесие, ложь, фальшь и дебилизм!!
    • Сообщения от Грехов Михаил
А вот для Arduino в том числе выпускается 7" экран 800х480 тачскрин. Его можно поставить в том числе на самую производительную плату - Arduino Due. Вопрос:

1. Можно ли поставить на такую плату одновременно 2 экрана, а то и 3? Или 1 экран-1 плата микроконтроллера?
2. Есть ли какие-либо еще экраны для Arduino большего разрешения и размера (в идеале этак 11-13"). 7"-максимум, что нашел.

Есть идея на базе Arduino сделать приборку дельталета... пока изучаю возможности системы. Но требуется повесить весьма много аппаратуры и девайсов контроля. Одних датчиков атмосферного давления -3 штуки с калибровкой (какой-то таблицей). термопары, GPS, компас и прочие приблуды. Непрерывно обеспечить расчет параметров (ну например датчик измеряет остаток топлива в литрах - расчет времени продолжительности полета на топливе, возможности возврата на аэродром при таком количестве топлива, общего "запаса полета". Даже вокруг одного параметра можно развить много полезных функций.

Как оценить-хватит ли возможности контроллера? Не получится ли так, что при прописывании всех устройств и логики работы - не хватит памяти в самом контроллере?     
Manfrotto 055XPROB + 808 RC4 + Fujinon 16x70 FMT-SX2. TS APO 102/714 + ES 20/100, ES 9/100, Radian 4+HEQ5Pro+ QHYIII 290M+50mm guide. 3"Flat+QHYCFW3+Optolong LRGB+SHO (36mm)+QHY268M.

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
А по какому интерфейсу подключается модуль?
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 083
  • Благодарностей: 95
    • Сообщения от Дядя Вова
Михаил, так делать не надо!
Наоборот, надо продублировать аппаратуру и функционал.
ну, в общем так и делается. Например, ставится два аналогичных гармина.
 И еще. Требования по температуре ардуино выдержит?
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн Грехов Михаил

  • *****
  • Сообщений: 31 826
  • Благодарностей: 816
  • Вон с форума мракобесие, ложь, фальшь и дебилизм!!
    • Сообщения от Грехов Михаил
Выдержит. Полагаю что от -5 до +40 работать сможет. А сделать панель с Ардуино быстросьемной и на зиму на хранение снимать и хранить в отапливаемом помещении. Все-равно зимой не летаем. Больше вибрации и толчков боюсь. Чтобы контакт был и ничего не отвалилось. Но думаю это тоже решаемо изготовлением платы и разводки по ней.

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

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

По поводу интерфейса модуля экрана-черт его знает. Слишком много пинов используется. Чуть ли не треть-четверть от всех доступных. Наверное что-то чисто питание и др. Все остальные датчики на I2C и задействованы пару аналоговых входов под термопары (температура 2-х цилиндров двигателя). Хотя и их тоже можно на I2C шину посадить (есть оцифровывающие аналоговый сигнал модули). А она насколько я знаю может быть размножена для нескольких устройств.
« Последнее редактирование: 24 Июл 2016 [22:08:02] от Грехов Михаил »
Manfrotto 055XPROB + 808 RC4 + Fujinon 16x70 FMT-SX2. TS APO 102/714 + ES 20/100, ES 9/100, Radian 4+HEQ5Pro+ QHYIII 290M+50mm guide. 3"Flat+QHYCFW3+Optolong LRGB+SHO (36mm)+QHY268M.

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
По поводу интерфейса модуля экрана-черт его знает. Слишком много пинов используется. Чуть ли не треть-четверть от всех доступных. Наверное что-то чисто питание и др. Все остальные датчики на I2C и задействованы пару аналоговых входов под термопары (температура 2-х цилиндров двигателя). Хотя и их тоже можно на I2C шину посадить (есть оцифровывающие аналоговый сигнал модули). А она насколько я знаю может быть размножена для нескольких устройств.
Ну вот, собственно, ключевой вопрос. И если он на I2C, то надо обеспечить разные адреса Slave-устройствам.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Михаил ФМ

  • **
  • Сообщений: 82
  • Благодарностей: 8
    • Сообщения от Михаил ФМ
7" панель, вроде, имеет обычный RGB, видеоОЗУ отсутствует. Необходимо подключить внешний видеоконтроллер, интерфейс самого контроллера может быть любой,  в т.ч.  для mega или duo.  Получается, как бы, нет никаких препятствий для подключения нескольких панелей к чему угодно. Впрочем, лучше спросить у специалистов.

Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 083
  • Благодарностей: 95
    • Сообщения от Дядя Вова
7" панель, вроде, имеет обычный RGB, видеоОЗУ отсутствует. Необходимо подключить внешний видеоконтроллер, интерфейс самого контроллера может быть любой,  в т.ч.  для mega или duo.  Получается, как бы, нет никаких препятствий для подключения нескольких панелей к чему угодно. Впрочем, лучше спросить у специалистов.
Думаю, имелось ввиду такое решение  http:///ссылка запрещена правилами форума//item/2015-Upgrade-SainSmart-Mega2560-7-7-Inch-TFT-LCD-Shield-TFT-LCD-Shield-For-Arduino-100/32392356777.html?spm=2114.03010208.3.61.lyxaz2&ws_ab_test=searchweb201556_0,searchweb201602_2_10039_10057_10048_10047_10056_10055_10037_10049_10059_10033_10046_10058_10032_10045_10017_405_404_10040_10060,searchweb201603_8&btsid=b7e1c613-de93-4ca8-8be8-5c273573ae63
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн Михаил ФМ

  • **
  • Сообщений: 82
  • Благодарностей: 8
    • Сообщения от Михаил ФМ
Есть одна стандартная библиотека - SD, где есть такая строка:
Код: [Выделить]
  _file = (SdFile *)malloc(sizeof(SdFile));
Непонятно зачем, но есть. Если будет перемежаться открытие файлов с выделением памяти где-то в пользовательском коде, уже может быть проблема.

Выделяет буфер для чтения/записи SD карты. Без него будет тормозить. Было бы лучше организовать кэш, но как я понимаю, дополнительный сложный код здесь ни к чему.
Если далее использовать "правильный" код типа
Код: [Выделить]
  if(!  _file )  {...  //выполняем что нужно }
     else { ... //нехватка памяти }
никаких проблем, по идее, не возникнет. Если, конечно, ArduinoIDE не содержит ошибок.
На всякий случай код лучше прогнать отладчиком. Указатель стека для AVR - SPH:SPL.


Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 083
  • Благодарностей: 95
    • Сообщения от Дядя Вова
МК не рекоменуются для 7" панелей...
А что так?
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Давайте не будем гадать на кофейной гуще и пускай Миша сам нам расскажет, о каком устройстве идёт речь, и даст ссылку на более-менее вменяемое описание (в идеале - спецификацию)
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Михаил ФМ

  • **
  • Сообщений: 82
  • Благодарностей: 8
    • Сообщения от Михаил ФМ
МК не рекоменуются для 7" панелей...
А что так?
Не могу привести ни одного вменяемого довода. Может на складах переизбыток панелей менее 4" ? (у них встроенные контроллеры) :)

Оффлайн Грехов Михаил

  • *****
  • Сообщений: 31 826
  • Благодарностей: 816
  • Вон с форума мракобесие, ложь, фальшь и дебилизм!!
    • Сообщения от Грехов Михаил
Цитата
Давайте не будем гадать на кофейной гуще и пускай Миша сам нам расскажет, о каком устройстве идёт речь, и даст ссылку на более-менее вменяемое описание (в идеале - спецификацию)

Вот как раз таки то, что привел "Дядя Вова". Находил и 8" панель. Но она тоже такого-же разрешения, что и 7" (800х480) интерфейс точно такой-же, просто пиксел и габариты больше. Переходник устроен правда хреново. Если пристыковать-то свободные пины в микроконтроллере блокируются.
Manfrotto 055XPROB + 808 RC4 + Fujinon 16x70 FMT-SX2. TS APO 102/714 + ES 20/100, ES 9/100, Radian 4+HEQ5Pro+ QHYIII 290M+50mm guide. 3"Flat+QHYCFW3+Optolong LRGB+SHO (36mm)+QHY268M.

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Всё равно полезной информации нет.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Грехов Михаил

  • *****
  • Сообщений: 31 826
  • Благодарностей: 816
  • Вон с форума мракобесие, ложь, фальшь и дебилизм!!
    • Сообщения от Грехов Михаил
Да вот хоть зачитайтесь (внизу есть даташиты в pdf):

http://www.buydisplay.com/default/8-inch-arduino-touch-screen-shield-ssd1963-library-for-mega-due

Но я в оной документации мало что понимаю пока....
Manfrotto 055XPROB + 808 RC4 + Fujinon 16x70 FMT-SX2. TS APO 102/714 + ES 20/100, ES 9/100, Radian 4+HEQ5Pro+ QHYIII 290M+50mm guide. 3"Flat+QHYCFW3+Optolong LRGB+SHO (36mm)+QHY268M.

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Используется параллельный интерфейс в вариантах 8, 9, 16, 18 и 24 пина, однако есть вход Chip Select, что по всей видимости даёт возможность подключить несколько таких модулей параллельно, но CS вывести на разные свободные порты Arduino. В общем подключить две можно, но, возможно, придётся немного вмешаться в код библиотеки для работы с ней, и может оказаться нетривиальным само механическое подключение.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 083
  • Благодарностей: 95
    • Сообщения от Дядя Вова
Используется параллельный интерфейс в вариантах 8, 9, 16, 18 и 24 пина, однако есть вход Chip Select, что по всей видимости даёт возможность подключить несколько таких модулей параллельно, но CS вывести на разные свободные порты Arduino. В общем подключить две можно, но, возможно, придётся немного вмешаться в код библиотеки для работы с ней, и может оказаться нетривиальным само механическое подключение.
Вот как раз этот СS в Arduino UNO я и загнул в 3,5TFT - чтобы получить еще один вывод. :)
IMHO Если ардуинка с таким индикатором, то надо оставить её в покое. А данные для индикации передавать по последовательному порту, например.

Кстати про тач. Может он у меня плохо настроен, но для мобильного использования КМК мало пригоден. Ну, как сенсор не терминале оплаты.
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Итак, как было уже сказано, задача состоит из потока выполнения (кода) и состояния. Давайте подумаем, как уменьшить объём состояния до небходимого минимума. Если оперативные данные задачи (переменные) остаются в памяти всё время работы всех задач (нет подкачки), то они не представляют проблем при переключении задач (но влияют на общий объём используемой памяти - по сути этим определеяется предельное количество выполняемых задач). Остаётся контекст процессора (состояние регистров) и стек.
В стеке хранятся локальные переменные функций и точки возврата из вызовов, организованные в виде кадров. При вызове функции и выходе из функции в соответствии с любой конвенцией вызова гарантируется, что регистры останутся в корректном состоянии при входе в функцию и сразу при выходе из неё, то есть используя лишь средства для вызова фукнций на С++, нам нет необходимости заботиться о состоянии регистров процессора.
Ещё раз про стек: когда происходит вызов функции, в стеке резервируется место под локальные переменные, после выхода из функции они уничтожаются. Просто пока отметим это на будущее.
В общем-то, это вся вводная информация.

Дальше пойдёт трэш ;D
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Теперь перейдём непосредственно к технической части.
Определим задачу для начала как некоторую функцию (в терминах языка С), которая может быть:
* вызвана впервые
* приостановлена
* продолжена
* завершена
Более легковесная реализация - невытесняющая, то есть задача сама решает, когда она отдаст управление, и не может быть приостановлена по инициативе операционной системы (обработку прерываний пока оставим в стороне).
В псевдокоде поведение должно быть примерно такое:
TASK SomeTask
{
// some code
suspend;
// another code
suspend;
// some more code
}
При первом вызове выполняется секция "some code", после чего выполнение отдаётся планировщику, при следующей передаче управления от планировщика должна выполниться секция "another code", затем снова происходит передача управления кому-то ещё, и наконец, когда планировщик снова отдаёт выполнение нашей задаче, выполняется секция "some more code", после чего задача завершается, и планировщик должен её исключить из списка планирования.

На языке Си такая задача может быть реализована следующим образом:
int SomeTask(int* _state)
{
switch (*_state)
{
case 0:
// some code
*_state = 1;
return 0;
case 1:
// another code
*_state = 2;
return 0;
case 2:
// another code
*_state = -1;
return 1;
default:
return 1;
}
}
Вот простейший планировщик:
struct SchedulerItem
{
void(*Func)(int*);
int state;
};

struct SchedulerItem items[MAX_ITEMS];
int usedItems = 0;

int ScheduleTask(void(*Func)(int*))
{
if (usedItems < MAX_ITEMS - 1)
{
items[usedItems].Func = Func;
items[usedItems].state = 0;
++usedItems;
return 1;
}
return 0;
}

int main()
{
int i, j;
ScheduleTask(SomeTask);

// scheduler loop
i = 0;
for(;;)
{
if (items[i].Func(&items[i].state))
{
for (int j = i + 1; j < usedItems; ++j)
{
items[j-1] = items[j];
}
if (--usedItems == 0)
{
break;
}
}
else
{
++i;
}
if (i == usedItems)
{
i = 0;
}
}
}


В следующий раз будем переносить всё это на С++ и обвешивать синтаксическим сахаром :)
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Александр (AnDom)

  • *****
  • Сообщений: 9 037
  • Благодарностей: 288
    • Сообщения от Александр (AnDom)
Медленно и планомерно разбередили любопытство. В электронике ноль, в программировании минус один. Поехал за учебником и набором. Мой 3d принтер фигачит круглые сутки, а ведь это ардуино. А сколько еще полезного в ЛАстрономическом хозяйстве можно сделать... :)
Я видел М51 в Серегин 20"РК, а М42 в 650мм ньютон!!! :)