[Перевод] Дисковый сотовый телефон на LPC810

5en7uwhzb1zjpgpni0cz3ovccl0.jpeg

Конечно, это «каша из топора», ведь помимо LPC810 с его шестью GPIO, нужен ещё GSM-модуль. За основу прошивки взяты примеры отсюда, сама прошивка лежит здесь.

Для подключения четырёх контактных групп (трёх кнопок и номеронабирателя), а также дисплея на HD44780, работающего в четырёхбитном режиме, к трём выводам микроконтроллера применена следующая схема:

g_qou6zd8qejbpzxfcv114nqqac.png

Сдвиговый регистр — типа 74HC164. Для опроса одной из контактных групп в него необходимо записать число 0×01, 0×02, 0×04 или 0×08. Дисплейный модуль «не обращает внимания» на происходящее, так как на линии EN нуль, а сигнал о состоянии выбранной контактной группы поступает на линию DAT.

Резисторы выбраны такими, чтобы сигнал с микроконтроллера имел приоритет перед сигналом с контактной группы, а именно, R2 — несколько кОм, R3 (подтягивающий вниз) — 22 кОм.

Сигнал STATUS с GSM-модуля управляет стабилизатором напряжения. Если включить модуль, на этой линии появится напряжение, и включится всё устройство. При ручном или автоматическом отключении GSM-модуля всё устройство тоже отключается. Полная схема:

9ef9apjbhhw3wbnx9-xgwwzdome.jpeg

Эта же схема в PDF

Прошивка состоит из двух конечных автоматов. Первый обрабатывает прерывания с приёмной линии UART, записывает поступающие оттуда знаки в буфер и при обнаружении AT-последовательностей устанавливает соответствующие флаги. Другой конечный автомат — основной цикл событий, считывающий эти флаги и меняющий своё поведение в зависимости от их состояния. Цикл занимает порядка 16 мс, и этого хватает на считывания всех цифровых входов, включая вход с номеронабирателя.

Корпус выбран достаточно крупным, чтобы поместились номеронабиратель, аккумулятор на 1000 мАч, и всё остальное. В ПЗУ осталось достаточно места, чтобы в дальнейшем можно было реализовать управление линией DTR, переход в энергосберегающий режим и АОН.

Много картинок, файлы в формате Eagle 6, исходники прошивки

© Habrahabr.ru