В текущей статье, рассматривается конструкция сочетающая в себе подходы и знания полученные в более ранних проектах, поэтому, если покажется, что конструктив местами избыточен и не имеет под собой веской логики, для которой следовало бы использовать именно такую схему, то сразу хотел бы развеять предубеждения - да, именно так, основная цель, задачи преследовалась - обучение, отладка, выработка механизмов и процедур для дальнейшего использования в задачах.
В частности, основной идеологией к данной конструкции лежит пост Тест LCD 16bit , ОЗУ, SDCARD на PIC24 , где мною было проведена работа по изготовлению устройства на базе PIC24 и 8bit RAM. Отталкиваясь от прошлых наработок, были добавлены новые элементы схемы и учтены выявленные проблемы. (и получены новые проблемы, много новых проблем, но пост не об этом).
Основными функциями устройства являются:
1. Время (включая интернет-синхронизацию по произвольному GMT);
2. Текущая интернет-погода + Прогноз погоды + Погода с выносного Bluetooth-датчика;
3. FM-радио;
4. MP3 плеер;
5. Календарь (не рассматривается в текущей статье);
В данной конструкции используются:
1. PIC24HJ256GP610A (основной);
2. PIC18F28K20 (дополнительный, используется для mp3);
3. LCD 16bit (NT3551), работа с ним рассматривалась тут
4. RAM 16bit IS61WV102416ALL (1024K), аналогичная ссылка п.3
5. FM-radio (KT0915), радио на данной микросхеме рассматривалось тут.
6. MP3 (VS1053), ранее не применялось.
7. SD, применялось аналогично посту п.3, п.9.
8. ESP12 (на базе ESP8266), применялось тут и тут
9. Bluetooth (HC08), применялось тут (выносной Bluetooth-термометр и схема его, данной статьей не рассматривается, так как полностью переиспользован из предыдущего проекта)
Корпус напечатан на 3D принтере (на заказ).
Фотки готового устройства для масштаба:
Одним из усовершенствований схемы, от предыдущих частей данного проекта, заключается в добавлении еще одного контролера PIC18F28K20, для целей выноса на него задач чтения SD и проигрывания MP3, чтобы основной контроллер PIC24 не был занят постоянно циклом.
Целями задачи закладывался больший потенциал схемы, чем сейчас используется и описывается в статье, поэтому сэкономить\упростить задачу у меня не стояло.
Ввиду чего, сопряжение контроллеров и модулей осуществляется посредством CD405xB мультиплексоров, согласованных по определенным принципам работы и управляемых контроллером.
Синхронизация с ПК осуществляется по USB, через микросхему CP2102, где ее uart-выводы также сначала сопрягаются с мультиплексором, а затем с двумя контроллерами, это необходимо, чтобы реализовать функцию bootloader'a., как работать с bootloader для PIC18, я частично рассматривал тут.
На схеме (если ее кто будет смотреть), также имеется зарядка на базе TP4056 для аккумулятора 3.7v и повышающий DC-DC конвертор на базе MC34063, он предназначался для формирования 5v необходимых для схемы, но я просчитался с потреблением схемы, которое оказалось критично высоким и DC-DC попросту сгорел, на готовой плате этот участок схемы остался не распаянным. Если у кого есть примеры DC-DC конвертора (3.7v- > 5v) на нагрузку до 2A, сообщите.
(Примечание: нет никаких гарантий корректности предложенного решения, всё может быть с ошибками или иметь более лучшую\оптимальную реализацию).
Само же устройство базируется на контроллере PIC24 и сопряжено с RAM и периферийными устройствами . PIC24 осуществляет манипуляции переключения мультиплексоров, получает ответы от периферийных устройств, читает SD (bmp) и выводит графическую информацию., работает с микросхемой FM-радио.
ОЗУ в проекте требуется для:
1. импорта BMP картинок в ОЗУ, манипуляций с transparent (замещение фона);
2. импорта response от ESP и пост-обработки информации (прогноз);
Дополнительная функция устройства, как было уже обозначено в начале, это чтение и воспроизведение MP3 отдельно от основного PIC24, получается, как два устройства в одном, сопряженных между собой, связь между которыми осуществляется через UART, посредством мультиплексора.
Плата изготовлена на заказ. Обычно я сам делаю, но в этом случае, это было выше моих сил.
На главный экран выводится основная погода (интернет-погода и информация с выносного bluetooth-датчика), ну и часы само собой. Также, главный экран располагает важной функцией ярлыков - доступов к интерфейсам устройства, в действительности же это картинки, предварительно загруженные в RAM и выведенные с учетом замещения фона.
Фон, также естественно загружается в RAM и может быть любым, загруженным из BMP., а при инициировании тех или иных функций устройства, затирающих частично информацию на экране, фон автоматически восстанавливается по данных загруженным в RAM. Ярлыки могут скрываться с экрана, тем самым освобождая место под большую площадь экрана, которую можно использовать с пользой.
Дальше будет пояснительное видео некоторых функций, но сейчас ряд фотографий:
Прогноз погоды на 5 дней, выведенный в разбивке по два часа.
MP3-плеер (если у кого были ожидания увидеть тут winamp, как было на ярлыке, то извините, у меня была такая идея сделать, но было некогда ее реализовать).
Вот и всё., естественно статья не раскрывает всех особенностей проекта, некоторых деталей управления и прочего. Также, полного кода программы естественно не будет. Но, если кому то до зарезу что-то нужно, то я готов послушать специфику вопросов и потом, возможно сделать отдельный пост. Написано на C++, под XC16 и XC8.