Конечно, это «каша из топора», ведь помимо LPC810 с его шестью GPIO, нужен ещё GSM-модуль. За основу прошивки взяты примеры отсюда, сама прошивка лежит здесь.
Для подключения четырёх контактных групп (трёх кнопок и номеронабирателя), а также дисплея на HD44780, работающего в четырёхбитном режиме, к трём выводам микроконтроллера применена следующая схема:
Сдвиговый регистр — типа 74HC164. Для опроса одной из контактных групп в него необходимо записать число 0x01, 0x02, 0x04 или 0x08. Дисплейный модуль «не обращает внимания» на происходящее, так как на линии EN нуль, а сигнал о состоянии выбранной контактной группы поступает на линию DAT.
Резисторы выбраны такими, чтобы сигнал с микроконтроллера имел приоритет перед сигналом с контактной группы, а именно, R2 — несколько кОм, R3 (подтягивающий вниз) — 22 кОм.
Сигнал STATUS с GSM-модуля управляет стабилизатором напряжения. Если включить модуль, на этой линии появится напряжение, и включится всё устройство. При ручном или автоматическом отключении GSM-модуля всё устройство тоже отключается. Полная схема:
Прошивка состоит из двух конечных автоматов. Первый обрабатывает прерывания с приёмной линии UART, записывает поступающие оттуда знаки в буфер и при обнаружении AT-последовательностей устанавливает соответствующие флаги. Другой конечный автомат — основной цикл событий, считывающий эти флаги и меняющий своё поведение в зависимости от их состояния. Цикл занимает порядка 16 мс, и этого хватает на считывания всех цифровых входов, включая вход с номеронабирателя.
Корпус выбран достаточно крупным, чтобы поместились номеронабиратель, аккумулятор на 1000 мАч, и всё остальное. В ПЗУ осталось достаточно места, чтобы в дальнейшем можно было реализовать управление линией DTR, переход в энергосберегающий режим и АОН.
Много картинок, файлы в формате Eagle 6, исходники прошивки
Автор: tormozedison