|
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 12
|
|
Кпк "Маяк" с Eink экраном28.05.2016, 18:06. Показов 10810. Ответов 29
Метки нет (Все метки)
Решил написать о своем пока более "программном" проекте.
Делаю себе КПКшку, по нескольким причинам: - Подтянуть навык С++ при написании чего-то более комплексного чем привычные мелкие приложения, в таком проекте очень легко увидеть свои "белые пятна" и сразу же их "подтянуть". - Опробывать в деле свои другие программные проекты, заодно реализовать их в более ограниченных ресурсах (чем на ПК) Да и просто размять мозг, что по сути - бесценно. За аппаратную часть отвечает связка Linkit One и экран WaveShare ePaper. Выбор пал на них т.к уже давно лежали на полке для "поиграться", так и решил применить по назначению. Оба компонента оказались с скелетами в шкафах, что сыграло свою роль в выборе программной архитектуры будущего приложения. Плата LinkitOne работает на OS Nucleus, которая позволяет разработчику запускать до 10 потоков. К сожалению доступа к исходникам всей платформы нет, посути разработчиком пишется приложение которое будет работать в некоторой виртуальной среде, работая с аппаратной частью через API которое написали разработчики из MediaTek в качестве прослойке к работающей OS. Использования данного бутрброда во многом вызывает много шероховатостей, подводных камней и скрытых косяков, что затрудняет отладку. В планах перейти на что-то более адекватное. Ну а теперь про сам проект. В проекте будут небольшие приложения, работающие с моей прослойкой, предоставляющей доступ к различным данным. Это поможет отвязаться от аппаратной части и в будущем легко мигрировать на другую платформу. По сути - у меня есть множество потоков которые работают с различными аппаратными частями ( кнопки, экран, wifi, gps ) и выгружают актуальную информацию в "одиночку", который через функции предоставляет доступ к этой информации(координатам, времени, сокетам и пр). А так же у меня есть поток приложения - который выполняет задачу анализа данных и формирования отображаемой информации. Дополнительно заложена фоновая работа для всех приложений - каждое приложение в независимости от текущего запущенного приложения, получает немного вычислительных ресурсов для фоновой работы и создания различных уведомлений для пользователя. Пока проект только в начале пути(потрачено около недели по 1-2 часа), но уже на данный момент готово: * абстрактный сокет за которым скрывается WiFi или GPRS доступные на данный момент * базовая работа с экраном(примитивы, шрифты, картинки ) * разбор JSON страниц полученных по HTTP * отрисовка BMP * запуск приложений, выход из приложения в меню Вся работа с данными идет через мою "одиночку", чтобы максимально огородить себя от привязки к данной платформе. Приложение "Меню" Каждый пункт - BMP файл. Пока только так - иконки еще не нарисовал, отрабатывал просто работу с BMP файлами и Sd картой. Приложение "Погода" Тоже пока на уровне отработки вызываемых функций без проработкипользовательского интерфейса. Получает данные по HTTP в формате JSON с openweathermap.org . На данный момент выводит 4 графика: температура, давление, влажность, осадки - прогноз на ближайшие 2 дня с интервалом в 3 часа. Пока стараюсь акцентироваться на проработке внутреннего взаимодействия различных компонентов, с написанием приложений по мере необходимости отладки той или иной функциональности. В планах начать рисовать корпус в SolidWorks для последующей печати в 3D, но пока не все продумал в этом плане. В следующий раз покажу и расскажу о приложении "Карты" или об экспериментах с GPS треком, там уже все намного сложнее и интереснее. Рад буду вопросам или советам.. :)
0
|
|
| 28.05.2016, 18:06 | |
|
Ответы с готовыми решениями:
29
Усилитель от магнитофонов МАЯК 24х для колонок МАЯК 15 АС 223 eInk дисплеи
|
|
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
|
||||
| 03.06.2016, 04:57 | ||||
0
|
||||
|
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 12
|
|||
| 03.06.2016, 14:54 | |||
Пока небольшой рассказ про GPS поток. Я задал ему следующие параметры - максимальный приоритет и плавающий интервал выполнения в 1-2 секунды. Сначала про приоритет - в NucleusOS используется вытесняющая многозадачность, т.к цикл работы GPS потока очень короткий ( получить NMEA строку, распарсить в структуру и применить пару IFов) он не будет сильно мешать другим потокам перехватывая управление на себя. Плавающий интервал - если последняя полученная точка была нормальной -последующий интервал 2 секунды, иначе 1. Это позволит иметь стабильный интервал в 2 секунды и быстрее восстанавливать текущую координату при плохих условиях приема. Вести трек даже в 2 секунды не очень хотелось ввиду его явной избыточности, а если учесть еще GPRS тариф в 4.5р\мб для автоматической выкладки трека на сервер) то становилось явным что трек нужно "прореживать". Существует много различных способ прореживания GPS трека - основные два описаны тут и тут: http://stackoverflow.som/questions/4480 ... ck#4480434 https://habrahabr.ru/sompany/promwad/btog/242251/ Не читая второй я реализовал очень похожий алгоритм фильтрации по трем точкам. Сам алгоритм прост - создаем объект который может хранить три точки, добавляем в него свежие точки, если объект нам вернул точку - сохраняем ее. 0. Третья точка - свежеполученная, первая точка - кандидат на сохранение 1. Если спутников<3 или горизонтальная ошибка (HDOP?) >3 - пустой возврат 1.Заполняем первые две точки настоящими GPS точками 2. Если между 1 и 3 прошло более 400 секунд - возвращаем 1ую, остальные сдвигаем вверх 3. Если между 1 и 3 расстояние более 400м - возвращаем 1ую, остальные сдвигаем вверх 4. Если расстояние между 1 и 3 более 50м и угол на который изменился вектор движения (по трем точкам) составляет более 3 градусов - возвращаем 1ую, остальные сдвигаем вверх 5. Во вторую точку кладем третью, пустой возврат Алгоритм простейший, не требует огромной памяти, рекурсии и кучи вычислений( за исключением вычислений расстояний м\у точками и углов). Результат для автомобильного трека получается примерно такой: http://**************************/download/file.php?id=28060&sid=e7521852bbf84e1bcd e21f2ba09eff9a Что видим: 1. На прямых участках - точки стоят редко( в основном раз в 400м) 2. При сложных маневрах - точки стоят часто К сожалению трек у меня был так себе - 100к точек с всего 20-30км пути. Остальное - стоянки(дом, работа, нигазин) но он показал себя довольно хорошо - сжал до ~700 точек движения, и 100-150 точек долгих стоянок, что для меня отличный результат. Для пешеходных\велосипедных треков - параметры нужно будет подобрать другие, но это легко делается и на компьютере эксперементируя над полным треком. Когда смогу записать много нормальных треков - можно будет написать программку которая сможет подобрать правильно коэф для динамического перестроения фильтров от скорости и манеры движения. Пока же - только так :)
0
|
|||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
| 03.06.2016, 16:49 | |
|
Может на github пора ?
0
|
|
|
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 12
|
|
| 04.06.2016, 00:36 | |
|
Я специально избегаю выкладки кода,мне не жалко или не стыдно за него, просто хочется сделать каркас, а уже потом его наращивать. Как только я пойму, что каркас готов - да, конечно, опубликую.
0
|
|
|
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 12
|
|
| 09.06.2016, 09:48 | |
|
Мучаюсь с модулем экрана(пожалел о его присутствии уже в который раз), заявленная скорость работы 115200, но на этой скорости при 100% забивке повезет если отрисовывается 20-30% команд. Сижу теперь подбираю интервалы между посылками.
Время передачи простенького изображения на экран с момента начала передачи, до отрисовки: При 100% заполнении канала передачи: 2сек При 100% гарантии отрисовки всех команд: 12 секунд ( 5мс ожидания между отправкой команд ) На сложных изображениях время гарантированной отрисовки может доходить до нескольких минут, что уже неприемлимо и раздражает при отладке. Параллельно добавляю различные оптимизации. Формирую команды к отрисовке не только попиксельно, но и линиями\квадратами\прямоугольниками для ускорения, т.к выгоднее передать команду "отрисовать квадрат 5х5", чем 25 команд "отрисовать точку". Поиск примитивов происходит с наложением на уже отрисованные пиксели, что при потерях на передаче команд даст наложение и надежду на "дорисовку" пропусков. (какая разница передать одну команду отрисовать черный квадрат 5х5 или 6х6 если мы еще захватим пиксели о которых экран "уже" должен знать, тем более можно захватить больше "обновленных" пикселей). Чтобы экран меньше находился в режиме ожидания команд и больше спал - перед тем как разбудить произвожу поиск и буферизацию команд отрисовки сложных примитивов (т.к поиск примитивов занимает некоторое время), после уже идут команды отрисовки точек. Т.к команда отрисовки примитива не содержит цвета - отправляю сначала примитивы одного цвета, потом произвожу переключение цвета и отправляю уже примитивы другого цвета.
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
| 09.06.2016, 19:21 | |
|
а почему не использовать двусторонний обмен ?
XON/XOFF или любой протокол. Хотя дело хозяйское.
0
|
|
|
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 12
|
|
| 11.06.2016, 13:34 | |
|
Экранный модуль - готовое устройство с закрытой прошивкой и работа с ним только "как данность".
http://www.waveshare.som/wiki/4.3ymsh_e-Paper По документации и представленным либам к нему и полевым проверкам - необходимо просто слать команды, не получая ничего в качестве подтверждения(как в черную дыру), при этом неизвестно что до него дошло, а что нет, а так же никаких индикаций о переполнении. Сама компания обычно игнорирует любые вопросы или если спамить письмами по 1-2 в день, отвечает шаблонным письмом - "нет, это невозможно".
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
||
| 11.06.2016, 21:10 | ||
И точно - в описании читаем When fymished each sommomd, there will be corresponding response. Normally, it will return "OK"; Да и прошивку кастомизировать - плёвое дело.
0
|
||
|
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 12
|
|
| 15.06.2016, 08:03 | |
|
Посыпаю голову пеплом - проверил и правда приходят "ОК".
Оказалось приходит "ОК" на команды отрисовки примитивов, пробуждения и инициализации, на все мной используемые кроме команды "обновить экран"(проверял на осц.) - по которой я и смотрел идут ответы или нет :) Эта была первая команда которую я переписал в свою либу которая давала визуальные изменения на экране - из за этого по ней и смотрел - есть ответы или нет.
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
| 15.06.2016, 12:20 | |
|
Бывает
0
|
|
| 15.06.2016, 12:20 | |
|
Магнитофоная приставка маяк 233 Маяк для Counter-Strike не работает Маяк M-240 S-1 в качестве усилителя мощности Помогите с поломкой в Маяк-233. Коротнуло Рассчитать ИК-маяк для системы посадки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|