Главная » Статьи » Проекты

Минитерминал V.3.0

 Тема такого устройства как минитерминал, поднималась на этом сайте уже пару раз: первая версия, вторая версия. И за время использования второй версии, устройство показало себя отличным помощником при отладке во многих проектах. Единственное чего иногда не хватало, это возможности отправлять в отлаживаемое устройство своих команд. Поэтому разобравшись с работой большого цветного дисплея на контроллере ILI9325, решил сделать новую версию минитерминала на нём. К тому-же на этом дисплее уже есть сенсорная панель, благодаря которой можно организовать все управление, а также набор текста, не прибегая к подключению внешней клавиатуры.

 У меня уже лежала распаянная под дисплей плата с микроконтроллером ATMega128a, ее я и использовал в качестве  основы для устройства. Так как дисплей соединен с контроллером напрямую, схема предусматривает питание не более 3,3 вольта, если выше - есть вероятность что дисплей выйдет из строя.  Сначала я хотел применить в качестве источника питания связку из двух батареек R20, у них очень большая емкость и они долго держат нужное напряжение. Но когда стал примеряться, выходило слишком громоздко. Поэтому был откопан, купленный несколько лет назад, модуль преобразователя на LM2577.  А источником послужила Li-Ion батарея емкостью 2500мА/ч. Получилась очень годная связка, способная отдавать стабильные 3,3 вольта во всём рабочем диапазоне напряжений аккумулятора. Для подзарядки использован модуль на микросхеме TP4056.  Его я давно применяю и он хорошо зарекомендовал себя, плюс очень низкая цена такого решения.

 

 Чтобы иметь возможность подключать минитерминал к пятивольтовым устройствам не боясь спалить дисплей, порты UART развязаны через модуль согласования уровней. Я применил готовый, как раз имелся в наличии на 4 канала. Его можно собрать самому, схема элементарная. Кстати, почему нужно 4 канала? Дело в том что у ATMega128 целых два аппаратных UART интерфейса, и я подумал что неплохо бы использовать оба и сделать двухканальный терминал.

 На  разъемы, помимо Rx / Tx выведено питание, на случай если нужно будет запитать отлаживаемое устройство напряжением 3,3 вольта. В разрыв цепи запаян диод Шоттки, если вдруг по ошибке от испытуемого устройства в схему пойдет напряжение выше 3,3 вольт.

   

 На плату также добавлен пьезодинамик для озвучивания действий и двухцветные светодиоды с ОК (общим катодом)  для индикации работы. У меня это все напаяно поверх, но в конце можно будет скачать доработанную печатную плату.

 В конечном виде схема выглядит так

 

 

 

 Вариант корпуса для устройства, напечатанный на 3d принтере. Все элементы схемы и крышка корпуса будут фиксироваться на термоклей. Это самый простой вариант, но не самый технологичный для сборки/разборки. Поэтому надо бы доработать и добавить крепежные узлы. 

   

 

 А пока крепится все так: сначала фиксируется дисплей, затем кнопка включения и модуль зарядки, потом все остальное.

   

 

 При программировании микроконтроллера необходимо запрограммировать фьюзы на работу от внешнего высокочастотного кварца, отключить совместимость с ATMega103 и отключить JTAG

 В Khazama-AVR фьюзы выглядят так

 

 

 После сборки и прошивки микроконтроллера особых настроек не требуется, нужно только с помощью подстроечного резистора R4 подогнать отображаемое на экране напряжение к реальному значению на аккумуляторе. Для этого рекомендую сперва выставить подстроечник в среднее положение и только после этого подавать питание, чтобы после включения на вход АЦП шло менее 3,3 вольта (опять же для того чтобы обезопасить дисплей). 

 Из настроек терминал имеет изменяемую частоту работы UART интерфейса, формат отображения принятых данных (ASCII и HEX) и их вид (DISP и LAST).

 Чтобы было понятно, остановлюсь на последнем параметре: в обычном режиме DISP (Displacement) идет отображение всех последних принятых данных, и при заполнении экрана идет смещение, таким образом на экране помещается 22 строки. Очистка и перерисовка, при каждом новом приеме данных, занимает относительно много время и чтобы увеличить возможную скорость приема, введен режим LAST. В этом режиме на экране выводится только последний принятый пакет данных. В общем, что получили то и вывели.

 При нажатии на кнопку CLEAR, происходит очистка дисплея. INFO - информация о версии прошивки и контактная информация. Кнопка STOP, как не трудно догадаться, останавливает прием данных (полезно когда данные идут сплошным потоком и нужно остановиться и разглядеть).

 При первом включении скорость работы UART по умолчанию стоит 1200 бод. Её можно поменять на значения 2400, 4800, 9600, 19200, 38400, 57600 и 115200 бод. Скорость сохраняется в энергонезависимой памяти и при следующем включении терминал будет работать на последней выбранной скорости. 

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

   

 Как я уже писал, в схеме я предусмотрел одновременную  работу двух UART интерфейсов. Но в прошивке пока реализован только один канал - на аппаратном UART0. Второй - UART1, оставил как задел на будущее. Поэтому набранный текст улетает в Tx0.

 Было упомянуто, что в режиме DISP на экран помещается 22 строки принятых данных, ограничение по длине принимаемого и отправляемого пакета составляет 30 символов. А если перевести отображение данных в HEX формат, тогда ограничение по длине пакета составит 10 символов. Ограничение обусловлено оставшимся на экране местом. Для простых задач, которые возложены на это устройство, этого должно хватить.

 Ну и для примера достал не задействованную плату с распаянным GSM-модулем SIM900D, которая давно уже у меня лежит.  Два запроса о версии прошивки модуля, первый в ASCII формате, второй с отображением данных в HEX формате:

 

И еще немного общения с этим модулем, на другой скорости:

 

 В общем, девайс получился удобным и очень полезным. Рекомендую к повторению. Если что-то упустил оставляйте свои вопросы в комментариях.

 

Печатная плата (DipTrace)

Схема (DipTrace)

Исходники и прошивка

Модель корпуса

 

Ссылки на детали, использованные в проекте:

Дисплей

Преобразователь напряжения

Модуль конвертера уровней

Модуль заряда Li-Ion батареи

 

 

Категория: Проекты | Добавлено: 18.07.2016
Просмотров: 5426 | Комментарии: 44 | Теги: uart, Miniterminal | Рейтинг: 5.0/9
Всего комментариев: 441 2 »
0  
44 exersizze   (22.04.2017 15:53)
twiker ,  если в подключении уверены тогда вероятнее всего китаец прислал дисплей  с другим контроллером.

43 twiker   (04.04.2017 10:17)
Привет всем!
Никак не запускается дисплей, только подсветка.
Установку фьюзов проверял тестовой прошивкой автора-диод моргает 1 раз в сек.
Дисплей на ардуино со скетчем в 8-ми битном подключении выводит на половину экрана тестовую картинку, ID-2525. Может быть не тот чип в дисплее? Покупал на али по ссылке автора. Что можно сделать?

42 Sevastopolets   (22.02.2017 19:21)
selevo, ой ли?

41 selevo   (21.02.2017 12:08)
хороший труд
Но для таких решений есть любой андроид с установленым блютух терминалом и Bluetooth модуль типа HC-06 и аналогов.
И возможностей миллион.

0  
40 exersizze   (19.02.2017 16:08)
пьезодинамик у меня подпаивается прямо к ножке микроконтроллера, на этой фотке видно желтый проводок
http://avrproject.ru/112/minitrminal30b/minter1111.jpg
если звук кнопок не нужен то и динамик подпаивать не обязательно.

39 y_moroz   (19.02.2017 14:16)
На плате не нашел пьезодинамика. Он не нужен?

38 ya-zp   (27.01.2017 21:52)
У меня - плюс-минус пару пикселей, это даже как-то и не заметно при работе. Гораздо больше раздражает порой (не кажлый раз) то что сенсор не с первого раза "отзывается" на нажатия, особенно правый верхний угол и левый нижний. Связываю это скорее с каким-то браком сенсора нежели с программной неточностью. Хотя, это только предположение.

0  
37 exersizze   (22.01.2017 22:00)
Да, согласен. Многовато.

36 maksut11   (22.01.2017 21:35)
Ну я не знаю,у меня 1-1.5мм от точки нажатия.

0  
35 exersizze   (22.01.2017 12:10)
Ок, учту! Но уменя тоже в пределах 3-5 пикселей прыгает, работе не мешает. Это связано с огрублением при математическом расчете координат.

34 maksut11   (21.01.2017 12:15)
Дисплей не совсем точный, калибровка бы не помешала.

0  
33 exersizze   (18.01.2017 00:35)
Отлично!) вопрос такой к собравшим, как точно тачскрин отрабатывает  нажатия? На дисплее черным цветом закрашивается один пиксель, совпадает ли он с местом куда "тыкнули"?  Я поначалу хотел сделать функцию калибровки тача, на случай если будут сильные отклонения, но пока никто не жаловался.

+1   Спам
32 maksut11   (17.01.2017 22:55)
Проблема решена, не пропай 2х контактов разьема на экран. Экран работает, и это радует, что сразу отразилось положительным отзывом в Ибэй.

+1  
31 exersizze   (17.01.2017 21:39)
Тогда проверять внимательно все соединения, должно было заработать сразу, больше никак. Есть еще конечно вероятность что китайцы засунули экран с другим контроллером, они такое практикуют время от времени.

30 maksut11   (17.01.2017 17:17)
Запустил , Бибика не подключена, осцилограмма показывает что бикает. Прошил снова прошивкой автора, все так же, скомпелировал сам, тоже 0. Ногами дергает контроллер. На кварце синусойда 11.0600 амплитудой до 1в. Как проверить Экран?

0  
29 exersizze   (17.01.2017 10:19)
Прошивается только флэш. Попробуйте прошить вот этим, должен раз в секунду мигать светодиод TX0 (PortD.6) и пищать динамик. Если будет мигать чаще или медленней, значит неправильно  выставлена частота работы микроконтроллера
http://avrproject.ru/kcv/terminal3_160722_test.hex

28 maksut11   (16.01.2017 20:10)
Доброго времени суток.
Подскажите как можно определить жив ли прибор. Может контроллер должен ногами какими то дергать? При включении только серый экран и все. Потребление с экраном около 40мА. Нужно шить только FLASH или EEPROM тоже. Как проверить кварц? Подавал на экран до 4в не думаю что спалил, потому на входе питания стоит 3х ногая SOT походу стабилизатор 3.3в. Купил здесь. http://www.ebay.de/itm/272380804641?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT Спасибо за ответы.

+1   Спам
27 ya-zp   (08.09.2016 23:50)
Чтобы не засорять тему отписался в "обратную связь"

0  
26 exersizze   (08.09.2016 20:56)
Отлично, так и думал что в согласовании уровней дело. Больше здесь не работать нечему) Надо тоже свой LM2577  глянуть, скорей всего картина будет та же.
Пожелание учту, реализовать не сложно. Только пока не могу придумать, для чего такое может пригодится?

25 ya-zp   (08.09.2016 11:52)
Докладываю: спасибо за подсказки, все заработало! Причин несколько, на согласование уровней ставил б/у полевики, что и сыграло злую шутку: у двух из четырех при вкл. питания уровни заваливались. И второе, попался модуль lm2577 с дефектом, выдает он при замере мультиметром 3.3в как положено, но как тыкал осциллографом чуть не поседел: проскакивали с завидной регулярностью "иголочки" амплитудой до 7в! Но все выжило. Прошил напоследок хексом автора и все заработало! Еще раз огромное спс!
Как предложение: можно ли реализовать в устройстве функцию отправить в порт то что было принято последним (типа копи-паст :-)) А то не очень удобно и быстро прлучается настучать "сообщение" в три строки длиною

0  
24 exersizze   (05.09.2016 12:07)
>>>при подключении терминала к любому источнику сигнала на дисплее терминала вместо напряжения батареи высвечивается уровень напряжения источника сигнала
Плюсовые выводы терминала и подключаемого устройства соединяли? Для отсечки перенапряжения как раз и стоит диод Шоттки D1. А вообще для передачи сигнала, достаточно соединять землю и сигнальные выводы.
Тогда еще следует попробовать пока убрать схему согласования, и подать сигнал напрямую к ножкам микроконтроллера. Но не забывайте что подключаемое в этом случае устройство должно работать на напряжении не выше 3,3 в

23 ya-zp   (03.09.2016 07:28)
Согласование делал, вариант платы автора без изменений, программу компилировал сам из исходников автора ( хекс из архива не пошел, шил последним баскомом, 2.0.7.5 версия). Заметил еше одну странность: при подключении терминала к любому источнику сигнала на дисплее терминала вместо напряжения батареи высвечивается уровень напряжения источника сигнала. Сегодня попробую погрузить плату в спирт и перепрошить.

0  
22 exersizze   (02.09.2016 23:05)
ya-zp, часть схемы со согласованием уровней делали?

21 ya-zp   (02.09.2016 20:01)
Эхо слышится нормально, один к одному без искажений

0  
20 exersizze   (02.09.2016 19:36)
На экране должны будут выводиться отправленные сообщения.

19 forter   (02.09.2016 15:10)
А если замкнуть Tx и Rx между собой и посылать/принимать на сам минитерминал, что происходит?

18 ya-zp   (02.09.2016 13:16)
Привет всем
Маленький воппос по конструкции: собрал минитерминал, все заработало, но, при приеме сигналов на экране отображаются лишь иероглифы. Скорость менял. Ранее пользовался младшей версией терминала взятого тут же :-), за что автору огромное спасибо! Комп и старый терминал показывают нормально (кодировка ascii), a v3.0 только набор нечитаемых символов. Ошибок в монтаже нет. Подскажите, куда копнуть. Плз.

+1   Спам
17 forter   (04.08.2016 21:24)
To exersizze!
А так работает стирание первого символа набранной строки:
.........................
If Sss > 1 Then
Ssx = Sss - 1
Text = Left(text , Ssx)
Dim Text_1 As String * 31
Text_1 = Text + " "
Else
Text = "" '
End If
........................
Очистка оставшегося символа в поле набора символов происходит в строке 1703.
If Text = "" Then
Restore Color8x8
Lcd_text_color " " , 3 , 7 , Black , White 'на случай если строка окажется пустой
End If
При нажатии в поле набора текста очистка ВСЕЙ набранной строки работает прекрасно.
Спасибо!

16 forter   (04.08.2016 12:01)
To exersize!
Сам компилировал с учетом изменения типа переменной F как word.
Попробую проверить несколько вариантов.

0  
15 exersizze   (04.08.2016 10:59)
Не, пустая строка это пустая строка, там пробела нет. Там содержится спецсимвол, типа перевода каретки и конца строки, сейчас нет возможеости посмотреть точно.
Можно и так как вы написали, но странно что такой глюк, так как эту клавиатуру уже успели некоторые попробовать и проблем небыло. Прошивку сами компилировали или взяли готовую из архива?

1-30 31-44
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Минитерминал v.2.0
26.04.2017 - Basykad:
sakatgg всё таки если можно скинте свой проект может пригодиться ещё для чего. С...
Минитерминал v.2.0
25.04.2017 - sakatgg:
Basykad, Подключал и к роутеру, также и к Доктору фьюзов - обрезает, ничего не у...
Направлятор
25.04.2017 - rom-i:
https://yadi.sk/a/1BpvBS-c3HL7UN Набросал как все произходит. В полном тупике.
Направлятор
25.04.2017 - rom-i:
Понятно, что работает. У меня только поиск.
Направлятор
25.04.2017 - Mikkels:
https://drive.google.com/open?id=0B8Fj99uLQPSvVDctSW9sMVB1d00
Направлятор
24.04.2017 - rom-i:
https://yadi.sk/i/19l7ehaz3HJjmf Так выставлены фьюзы. Может чего не так?
Минитерминал v.2.0
24.04.2017 - Basykad:
sakatgg можно файлы прошивки и схемы сбросить на майл Olegkad-rzn@mail.ru не мог...
Обработка большого количества кнопок на одном прерывании
24.04.2017 - qewin:
Mожно ли исходя из схемы на прямую подцепить кнопку на ножку (PD2)? Будет обраба...
Направлятор
23.04.2017 - rom-i:
jtag mega103 отключены. Кварц 11.0592. Пробовал в программе компилить сдвигая ча...