Серия «PIC»

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

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

В частности, основной идеологией к данной конструкции лежит пост Тест 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 принтере (на заказ).

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом
PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

Фотки готового устройства для масштаба:

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом
PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

Одним из усовершенствований схемы, от предыдущих частей данного проекта, заключается в добавлении еще одного контролера 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, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

(Примечание: нет никаких гарантий корректности предложенного решения, всё может быть с ошибками или иметь более лучшую\оптимальную реализацию).


Само же устройство базируется на контроллере PIC24 и сопряжено с RAM и периферийными устройствами . PIC24 осуществляет манипуляции переключения мультиплексоров, получает ответы от периферийных устройств, читает SD (bmp) и выводит графическую информацию., работает с микросхемой FM-радио.

ОЗУ в проекте требуется для:

1. импорта BMP картинок в ОЗУ, манипуляций с transparent (замещение фона);

2. импорта response от ESP и пост-обработки информации (прогноз);


Дополнительная функция устройства, как было уже обозначено в начале, это чтение и воспроизведение MP3 отдельно от основного PIC24, получается, как два устройства в одном, сопряженных между собой, связь между которыми осуществляется через UART, посредством мультиплексора.

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

Плата изготовлена на заказ. Обычно я сам делаю, но в этом случае, это было выше моих сил.

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

На главный экран выводится  основная погода (интернет-погода и информация с выносного bluetooth-датчика), ну и часы само собой. Также, главный экран располагает важной функцией ярлыков - доступов к интерфейсам устройства, в действительности же это картинки, предварительно загруженные в RAM и выведенные с учетом замещения фона.

Фон, также естественно загружается в RAM и может быть любым, загруженным из BMP., а при инициировании тех или иных функций устройства, затирающих частично информацию на экране, фон автоматически восстанавливается по данных загруженным в RAM. Ярлыки могут скрываться с экрана, тем самым освобождая место под большую площадь экрана, которую можно использовать с пользой.


Дальше будет пояснительное видео некоторых функций, но сейчас ряд фотографий:

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом
PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

Прогноз погоды на 5 дней, выведенный в разбивке по два часа.

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

MP3-плеер (если у кого были ожидания увидеть тут winamp, как было на ярлыке, то извините, у меня была такая идея сделать, но было некогда ее реализовать).

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

Радио

PIC24, LCD, RAM, MP3/FM, SD, ESP, Bluetooth Микроконтроллеры, Lcd дисплей, Mp3, FM, Своими руками, Программирование, Видео, YouTube, Длиннопост, Рукоделие с процессом

Пояснительное видео.

Вот и всё., естественно статья не раскрывает всех особенностей проекта, некоторых деталей управления и прочего. Также, полного кода программы естественно не будет. Но, если кому то до зарезу что-то нужно, то я готов послушать специфику вопросов и потом, возможно сделать отдельный пост. Написано на C++, под XC16 и XC8.

Удачи.


Ссылки на предыдущие части (некоторые уже приводились в статье):

Тест LCD 16bit , ОЗУ, SDCARD на PIC24

Bluetooth термометр или вариации на тему

Радиоприемник на базе цифрового радиочипа и контроллера PIC

Многофункциональное устройство своими руками, часть 2

Многофункциональное устройство своими руками

Часы пикабушника

Часы в деревянном корпусе

Показать полностью 13 1

Отладочная плата для PIC18 своими руками

Если Вы давно мечтали сделать отладочную плату  на базе микроконтроллера PIC18  своими руками, но не знали как, то в этом деле поможет данная статья.

Рассматриваемый принцип является одним из вариантов реализации (причем устаревший), на рынке существует масса готовых отладочных плат для множества решений. Поэтому принципы изложенные в данной статье, я отношу к категории "сделай сам", чтобы накопить опыт и знания базисов.


Итак, всем кто остался в статье:

Для указанных целей потребуется реализовать несколько основных моментов:


1. Распайку микроконтроллера на плате;

1.а. Прошить программу bootloader'a, при помощи программатора;

2. Собрать модуль USB-UART для связи с ПК;

2.а. Установить драйвер на ПК;

2.б. Установить ПО на ПК для связи с микроконтроллером;

3. Написать целевую программу и записать ее в контроллер;


По п.1. создание печатной платы - здесь относительно всё просто, делаем разводку на плате для всех ног микроконтроллера, не забыв, для удобства вывести ноги ICSP разъема в отдельную группу, примерно так, как это выглядит на картинке. На плате желательно указать номера ног и имена портов.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Отладочную плату я выполнил с маской используя метод фоторезиста, хотя это не является обязательным. Принципиальная схема включения контроллера примитивна и должна соответствовать схеме включения по дататшиту. В моем случае, используется контроллер PIC18F46K22, так как он имеет два порта UART, что добавляет универсальности схеме.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост
Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Впаиваем контроллер, кварцевый резонатор можно и не впаивать, если предполагается использовать только интегрированный. Также, желателен резистор 10К подвесить к MCLR и организовать подключение ICSP-разъема следующим образом:

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Организованная группа пинов ICSP разъема позволит использовать программатор подобным образом, чтобы не использовать провода при прошивке контроллера.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

П. 1.а.  Прошивка контроллера программой bootloader , которую можно написать самому при желании, но в данном случае я использовал Исходники AN1310  из комплекта выпущенного Microchip - Serial Bootloader AN1310. (можно скачать в интернете),

Однако, этот метод организации Bootloader для PIC18 настолько дремуч, что я даже не смог найти ссылок на официальном сайте Microchip , так как давно уже не используется и не поддерживается. Но для целей электива по теме отладочных плат - сойдет.

Итак, Вы нашли и скачали исходники Bootloader AN1310 (и сам дистрибутив Serial Bootloader), для работы с ними потребуется MPLAB IDE v8.92.


До того, как вы скомпилируете проект и требуется выполнить несколько ключевых моментов:

- выбрать требуемый UART порт, так как PIC18F46K22 имеет два USART модуля, а программа Bootloader'а по умолчанию использует первый.

Требуется открыть код файла bootconfig.inc, идущего в комплекте AN1310 и этом в файле можно выбрать один из двух режимов работы Bootloader'а:

#define UARTNUM 1 , где 1 или 2 будет равняться UART1 или UART2

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

- выбрать участок занятой Flash-памяти, в моем примере весь Bootloader размещается в начале файла, Это позволяет более рационально и экономно распределить ресурсы Flash-памяти между микроконтроллером и Bootloader'ом. Во-вторых, весь код, который необходим для работы Bootloader'а можно аппаратно защитить от записи, ничто не cможет его повредить. Чтобы задействовать REMAPPED Bootloader, необходимо в bootconfig.inc указать

#define BOOTLOADER_ADDRESS 0. (такая строка там есть, возможно ее достаточно раскомментировать)

- биты конфигурации. Обязательное внимание уделяем битам, таким как:

FOSC - ставим в зависимости от того, какой осцилятор используется внешний/внутрений; 

PLLCFG - ускоритель частоты х 4 - не включаем.

PWRTEN - пауза для стаблизации питания, включаем.

WDTEN - ватч.дог, выключаем.

PBADEN - особенность для PIC18F46K22, переводит порты PORTB 5..0 в аналог или цифровой выход

MCLRE - активируем внешний сброс (MCLR Pin Enable bit (MCLR pin enabled, RE3 input pin disabled))

(Читаем даташит!)


Теперь всё готово, прошиваем контроллер используя программатор.



п.2 Собрать переходник USB-UART (или использовать промышленного производства)

С самостоятельной сборке ничего сложного нет, требуется использовать FT232 (есть и другие варианты, например, CP2102) для организации такого подключения. Можно, при желании выполнить сразу в составе отладочной платы, но я вынес в отдельную плату-модуль.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост
Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост
Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

п. 2.а. Установить драйвер на ПК Главной сложностью, с которой можно здесь столкнуться - драйвер. В целом все просто, микросхема FT232 поддерживается компанией FTDI и поставляет драйвер, только он установится как USB устройство, однако, наш Serial Bootloader работает только с COM.

Поэтому, в драйвере INF потребуется поменять PID , добавив его в раздел

[FtdiHw]

%VID_0403&PID_6001.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6001

и

[FtdiHw.NTamd64]

%VID_0403&PID_6001.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6001


После его установки, драйвер относится к разделу COM портов.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост
Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

п. 2.б. Установить ПО на ПК для связи с микроконтроллером

Берем ПО из архива с  Microchip Serial Bootloader AN1310 , в состав которого, входит ПО AN1310 v1.05r.


В настройках не забываем выбрать соответствующий порт. Программа умеет шить и конфигурационные биты (с чем надо обращаться с осторожностью) и eeprom.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Подключаем переходник UART-USB, к соответствующему порту контроллера и нажимаем кнопку Break/Reset.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Важно!

Тем самым, на выходах RX/TX формируется логические нули, что для прошивки bootloader является триггером определяющим, какую часть кода исполнять, т.е. запуска прошивки пользователя, либо прошивки bootloader.

С данного момент, после подачи нуля на MCLR (или банального отключения питания), контроллер в момент старта (перезагрузки) определит какую часть кода он запустит.


- Если пользовательское ПО еще на записано в контроллер, то запустится программа bootloader в любом случае.

- Если  на RX/TX сформированы логические нули (нажат Break/Reset) и контроллер перезапущен, то запустится программа bootloader.

- В других случаях, при перезагрузке контроллера, будет запущено пользовательское ПО (если оно есть).


Итак, Break/Reset нажат и контроллер перезагружен!, нажимаем, Bootloader mode. И если видите следующую картину, то bootloader запустился и с ним можно работать.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Например, прочитав можно изучить состав данных в CONFIG, EEPROM и пр.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

п.3. Написать целевую программу и записать ее в контроллер;

Наиважнейшим этапом написания программы под bootloader является - offset (или смещение). В пункте п.1.а. указывалось, что программа bootloader'a размещается в самом начале и защищена от записи, следовательно, для целей смещения кода (внутри hex файла) пользовательской программы, обязательно используется linker. Для pic18 и компилятора XC8 это сделать достаточно просто (для PIC24 всё мягко говоря сложнее в разы):

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост
Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

После чего, скомпилированный код не будет затрагивать указанные интервалы пространства.


Для большего понимания зачем это нужно, вот скрин из даташита к AN1310:

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

По факту завершения написания программы, компилируете и возвращаетесь в Serial Bootloader AN1310., затем:


Reset\Break + MCLR

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Запускаем Bootloader, убеждаемся, что он запущен

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Открываем скомпилированный код HEX и нажимаем Write Device

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

По завершение загрузки, нажимаем  Run

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Контроллер сразу начнет выполнение пользовательского кода.

Вот как так это всё и работает. Зато это гораздо интереснее этой вашей арудины.



В следующий раз расскажу про Bootloader PIC24 и самописное ПО для ПК.

Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост
Отладочная плата для PIC18 своими руками Микроконтроллеры, Отладочная плата, Своими руками, Длиннопост

Ссылки на предыдущие части:

Тест LCD 16bit , ОЗУ, SDCARD на PIC24

Bluetooth термометр  или вариации на тему

Радиоприемник на базе цифрового радиочипа и контроллера PIC

Многофункциональное устройство своими руками, часть 2

Многофункциональное устройство своими руками

Часы пикабушника

Показать полностью 24

Тест LCD 16bit , ОЗУ, SDCARD на PIC24

Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост

Требовалось решить одну задачу по выводу на LCD NT35510 картинок BMP (24bit) с использованием SD-карты, которые предварительно обрабатывались бы в ОЗУ, в связи с чем, разработал схему c использованием  контроллера PIC24HJ256GP610 и ОЗУ IS61C1024AL (128Kх8).  По задумке было необходимо прочитать загруженные BMP загруженные через PC, а карта должна быть форматирована в FAT32, при этом разработанная схема выступала бы как картридер для ПК.

Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост

Кроме того, в нагрузку еще идет интерфейс связи с ПК  USB-UART и модуль WI-FI ESP-12.

Задачей предусматривалось, заполнять оперативную память и множественно выводить картинки на экран.

Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост
Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост

Стоит отметить тут важный момент, что 24-bit BMP имеет структуру чтения 3 байта на точку, это означает, что для того, чтобы загрузить всю картинку размером с размер LCD 800x400 потребуется 960 000 байт, а размер ОЗУ IS61C1024AL  всего 128 000. Это означает, что чтение SDCARD -> ОЗУ -> LCD для картинки 800х400 целиком невозможно, поэтому максимальный размер загружаемой картинки в ОЗУ равен не более 220х200 пикселей.

Большую ОЗУ в 16 bit испытаю в будущем проекте.


Однако, чтобы грузить на LCD картинки можно и без ОЗУ, напрямую читая с SDCARD, естественно  теряя время на оперативности вывода информации на экран, но этот метод также рабочий.

Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост
Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост

Процедуру инициализации экрана, я естественно сам не писал, такая процедура  есть в открытом доступе для ардуино, я ее адаптировал под язык C++ и MPLAB X для PIC24., остальной код для управления данными на экране и пр. - самописный.


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


Печатная плата, дорожки 0.3мм. Выполнено методом фоторезиста.

Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост
Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост

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


Насранные Припаянные резисторы навесу - следствие просчета при проектировании, так как LCD напрочь отказался работать от управляющих сигналов от ног контроллера (если конфигурировать порт как вывода, т.е. TRISB=0) и заработал только c подтяжкой к питанию (когда порт сконфигурирован как вход, т.е. TRISB=1). НО, на порту B, данного контроллера, отсутствовала возможность программно использовать подтяжку. (на других портах есть, но только не на нужном). Поэтому пришлось делать подтяжку так как есть.

Еще там насраны отпаяны некоторые элементы не обозначенные на принципиальной схеме.


<joke>

Зато никакого ардуино, никаких мам,пап или помощи старшего брата/свата. Только Stack Overflow и ролик-туториал от того иднуса.

Для тех, у  кого у напрочь отбито отсутствует чувство сарказма, то вот моя майка, в которой я провожу анти-ардуинские парады, со своим  воображаемыми друзьями:

Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост

</joke>


Продолжаем. До кучи я потренировался выводить погоду с прогнозом и картинками, текстовые файлы с карты и немного побаловаться с тачскрином.

Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост
Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост
Тест LCD 16bit , ОЗУ, SDCARD на PIC24 Микроконтроллеры, Электроника, Программирование, Lcd дисплей, Sd карта, Длиннопост

Кода нет и не будет.

Ссылки на предыдущие части:

Bluetooth термометр  или вариации на тему

Радиоприемник на базе цифрового радиочипа и контроллера PIC

Многофункциональное устройство своими руками, часть 2

Многофункциональное устройство своими руками

Часы пикабушника

Показать полностью 12

Bluetooth термометр  или вариации на тему

Основной идеей устройства - изначально закладывалась необходимость создания универсальной bluetooth погодной станции. Ее универсальность заключается в том, чтобы можно получить данные не только на стационарное устройство, но возможность использовать android-приложение. Исходя из этих принципов и построил сей девайс, на базе микроконтроллеров PIC.

В данной статье мы рассмотрим даже не одно похожее устройство, а два, в качестве вариации.


Вариант 1

Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса

Вариант 2

Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса

<шуточное отступление>

для тех кто меня не знает или забыл, я - старовер, приверженец старого режима, не доверяю новым технологиям, вроде этой вашей ардуины, также плохо паяю и руки у меня из (__).(__)

</шуточное отступление>


Итак, устройство ( Вариант 1 ) построено на базе:

(температурный датчик) : Микроконтроллера PIC18F14K50, модуля BME280 (с атм. давлением и важностью), Bluetooth HC08

(мастер устройство) : Микроконтроллера PIC18F46K22, температурного датчика Ds18b20, Bluetooth HC08, FT232RL (USB-UART), LCD SSD1306


Схема температурного датчика (размещается за окном, работает от 2 элементов типа ААА)

Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса
Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса
Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса
Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса

Схема мастер-устройства (размещается внутри помещения, работает от USB питания)


В нем микросхема FT232RL выполняет функцию связи с PC, с целью применения bootloader'a и передачи данных на PC после сбора статистических данных с передаваемого температурного датчика.

Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса
Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса
Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса

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

Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса

Вариант 2

В качестве вариативности этого устройства и разнообразия жизни, сделал также, еще одно матер-устройство с Wifi для чтения погоды из интернета, чтобы получить данные о видимости, скорости ветра, и "ощущается", вот схема этого устройства. Данный вариант конечно несколько посложнее.

В нем используется еще функция SD карты, для чтения картинок и оно может работать от аккумулятора с автоматической зарядкой и контролем уровня заряда и температура батареи.

Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса
Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса
Bluetooth термометр  или вариации на тему Электроника, Контролеры, Длиннопост, Рукоделие без процесса

Все написано С++ в MPLAB x . Статья ознакомительная, если требуется детализация каких-либо моментов - сообщите.



Ну и по традиции: кода нет, но вы держитесь.



Ссылки на предыдущие части:

Радиоприемник на базе цифрового радиочипа и контроллера PIC

Многофункциональное устройство своими руками, часть 2

Многофункциональное устройство своими руками

Часы пикабушника

Показать полностью 13

Радиоприемник на базе цифрового радиочипа и контроллера PIC

Недавно довелось использовать цифровой радио чип КТ0915, с отличной универсальностью для построения радио приемных устройств под управлением от контроллера, в моем случае для PIC18F4550.

Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника

И так, перед вами полностью интегрированный полнодиапазонный AM/FM цифровой радиоприемник IС  с запатентованными технологиями, которые предлагают полнодиапазонную функциональность FM/MW/SW/LW, высокое качествозвука, простой дизайн и низкую стоимость спецификации. Поддержка полного диапазона FM/MW/SW/LW

FM: 32 МГц-110 МГц

AM: 500 кГц-1710 кГц

SW: 1.6 МГц~32 МГц

LW: 150 кГц ~ 280 кГц

Полностью интегрированный частотный синтезатор без внешних компонентов. Интерфейс взаимодействия с контроллером I2C.


В связи с чем, не смог отказать себе в удовольствии собрать на нем  FM приемник. Естественно, без этого Вашего богомерзкого Aurduino. Только классика, только хардкор. 

Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника
Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника
Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника
Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника
Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника

Итак, как это работает?


кто до сюда долистал, тот хочет узнать поподробнее (наверное), так вот:


Управление тюнером осуществляется по встроенному протоколу I2C, поэтому Вам потребуется настроить частоту в контроллере i2c шины и подключиться к kt0915 с подключением подтягивающих резисторов не менее 10кOм.

КТ0915 предоставляет порядка 25 управляющих регистров для записи и чтения информации по 16 бит, взаимодействие с которыми определяется в datasheet.

Работа протокола I2C известна любому, кто хоть раз имел дело с этим подключением, специально на это останавливаться не будем.


Возможность выбора частоты осуществляется при помощи переменного резистора, подключенный непосредственно к контроллеру PIC для получения цифрового кода угла поворота движка резистора. Затем используя формулу для соответствия цифрового уровня угла поворота движка резистора и шкале радиостанций в FM диапазоне, формируется значение частоты радиостанции в Mhz и разделенное на 50 и записывается в KT0915 для перенастройки тюнера на заданную частоту.

Ниже приведена таблица соответствия, где блоками разделил для понимания, как изменяется частота в зависимости от цифрового кода. чтобы обеспечить переход по частоте с дельтой 100Гц.

Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника

Регулировка звука также осуществляется через переменный резистор, цифровое значение угла поворота движка резистора которого, также направляется в радио чип для установки уровня звука.

Для этих целей, таким вот образом, закрепил два советских резистора по 10кОм.

Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника

Полностью цифровое управление радиочипом позволяет реализовать возможность авто сканирования FM диапазона, с определением качества сигнала и шумов в эфире.

Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника

Также, есть возможность сохранить выбранные частоты и переключаться только по заведомо избранным частотам. Причем переход по частотам или по меню осуществляется одной и той же крутилкой.


В качестве, пояснения работы устройства, записал короткое видео.

Ну и схема

Радиоприемник на базе цифрового радиочипа и контроллера PIC Радио, Контроллер, Картинки, Чип, Видео, Длиннопост, Рукоделие с процессом, Электроника

Вот и всё. Кода нет, но вы держитесь.


Ссылки на предыдущие части:

Многофункциональное устройство своими руками, часть 2

Многофункциональное устройство своими руками

Часы пикабушника

Показать полностью 10 1

Часы пикабушника

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

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

Но хватит вводной части, погнали. Сначала текст - потом картинка.

-----------------------------------------------------

Сама конструкция достаточно обыкновенная - экран 128х64 пикселя (монохромный), печатная плата, контроллер, пара микросхем.

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост
Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

------------------------------------------------------------------------------------------------

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

Устройство показывает время, дату, день недели.

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

-----------------------------------------------------

Самое интересное начинается внутри интерфейса. Его обеспечивают не менее интересные 2000 строк кода. И первая функция (помимо часов), это конечно же календарь. На экране, в единицу времени отражается текущий месяц, который можно сменить кнопками * и #. А в дни, когда есть государственный праздник или предустановленная дата в ежедневнике, то такая дата в календаре отмечается. И выглядит это, на примере 3 месяцев , вот так:

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост
Часы пикабушника Электроника, Контроллер, Часы, Длиннопост
Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

-----------------------------------------------------

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

Всего в памяти пока что около 50 дней, в том числе личных. Ввод значений осуществлялся путем составления файла сначала в excel на компьютере, в определенной структуре, потом перевода значений в шестандцатиричную систему и прошивка микросхемы памяти. 

Несколько примеров дней, как это выглядит, в марте.

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост
Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

-----------------------------------------------------

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

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

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

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост
Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

-----------------------------------------------------

Время настраивается в отдельном интерфейса и ввод новых значений даты и времени осуществляется при помощи кнопок 0-9.

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

-----------------------------------------------------

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

Ввод осуществляется, при помощи кнопок 0-9 и перебора букв кнопками A,B. удалить символ D, перейти на другую строку #. Отмена ввода C.

Выглядит это так:

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

А сохраненное событие выглядит на главном экране так:

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

Просмотр события:

Часы пикабушника Электроника, Контроллер, Часы, Длиннопост

Что такое 49.5 см понятия не имею, но все обычно про это пишут.


Всем спасибо.


ЗЫ: Смысла в этом нет - просто потому, что могу.

Показать полностью 15

Часы в деревянном корпусе

Давно был интерес к созданию электронных настольных СССР-style часов с календарем и днем недели. Вроде настольных часов Электроника стоящих во многих квартирах в 80-хх годах.


Что умеет:

1. ЧАСЫ 24H;

2. ДАТА, в формате <Число> <Месяц> <День недели> или <ДД.ММ.ГГГГ> или отключена информационная строка с датой;

3. Будильник, с возможностью программирования по дням недели; 

Например, ПН-вкл, ВТ-вкл,СР-вкл,ЧТ-вкл,ПТ-вкл, СБ-выкл, ВС-выкл

4.Индикаторы для времени высотой 3см (семи сегментные), для даты 2см (четырнадцати сегментные);

5.Деревянный лакированный корпус (толщина 5мм);

6.Дата и день недели определяется по календарю, с учетом високосных годов в интервале 2000-2099 годы;

7. Настройка параметров часов осуществляется при помощи юзерфрендли интерфейса, с русским текстом (см. дальше по тексту);

Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками
Часы в деревянном корпусе Часы, Длиннопост, Своими руками

Кому интересно меню работает следующим образом:


1. УСТ.ВРЕМЯ

1.1. + ЧАСЫ -

1.2. + МИНУТЫ - 

ВВЕДЕН ИЛИ ОТМЕНА

2. УСТ. ЧИСЛО

2.1. + ГОД -

2.2. + МЕСЯЦ -

2.3. + ДЕНЬ -

ВВЕДЕН ИЛИ ОТМЕНА  (ПРИМЕЧАНИЕ: день недели вычисляется по смещению, он не задается пользователем)

3. УСТ.БУДИЛ

3.1. < БУД.ВКЛ/ВЫКЛ >

3.2.  + БУД.ЧАСЫ -

3.3.  + БУД.МИНУТЫ -

3.4.  < СБ: ВЫКЛ/ВКЛ>

3.5. < ВС: ВЫКЛ/ВКЛ>

3.6. < ПН: ВЫКЛ/ВКЛ>

3.7. < ВТ: ВЫКЛ/ВКЛ>

3.8. < СР: ВЫКЛ/ВКЛ>

3.9. < ЧТ: ВЫКЛ/ВКЛ> 

3.10. < ПТ: ВЫКЛ/ВКЛ>

ВВЕДЕН ИЛИ ОТМЕНА


Примечание:

- Отмену можно совершить на любом этапе работы, с соответсвующим откатом вводимых значений;

- Символы (+-) - перебор значений выше/ниже;

- Значение будильника сохраняются в EPPROM (Энергонезависимая память);


ЗЫ: выполню на заказ)

Показать полностью 17
Отличная работа, все прочитано!