9

Часы на АЛ304 с BLUETOOTH. Пост №1

Всем привет, дороги читатели! Длинопост!

В одном из магазинов города наткнулся на очень интересные индикаторы АЛ304 и всего по 10 гривен. Понравились - беру!

Сразу в голове идея  - часы! Но не простые.

Функции планирую следующие:

- отображение времени ( само собой);

- уведомление о звонке (надпись CALL + вибро);

- уведомление о сообщениях ( надпись MESS + вибро);

- просмотр даты;

- будильник;

- сброс звонка;

- индикация заряда батареи;


Что то и этого сделаю, а что то может нет, но да ладно.


Первым делом самолеты надо разобраться с деталями, и вот что у меня оказалось под рукой (Цена в Украине):

- Микроконтроллер Atmega328p (TQF32). (Брал на али по 0,8$ за шт.)

- Горсть транзисторов 8050 (для катодов индикаторов и вибро мотора.(по 50 коп. х 5шт.=2.5 грн.)

- Керамический резонатор в SMD исполнении. (3 грн.)

- Контроллер сенсорной кнопки ТТР223 (да, кнопка одна и да, она сенсорная(планирую 

акриловый верх)) (2 грн.).
- Контроллер заряда BRCL3160MF (1.5 грн.).  Даташит!

- Индикатор АЛ304 (10грн. х4 шт.= 40грн.).

- Микро USB (5грн.).
- Резисторы: (15шт. х 0,3грн. = 4.5 грн.).

-10 Ом  (4шт.).

-100 Ом  (1шт.).

-1 кОм  (7шт.).

-10 кОм  (2шт.).

-56 кОм  (1шт.).

-Конденсаторы: (5шт. х 1грн. =4 грн.)

-0.1 мкФ  (2 шт.).

-1 мкФ  (2 шт.).

-100  мкФ  (1 шт.). Выпаян с какой то платы.

-Диоды SS14(можно и 4148) (2шт. х 0,5грн. =1 грн.).

-Блютуз НС-05 (остался от других проектов) (50 грн.).

-Аккумулятор liPol 500mAh - (50 грн.).

-Текстолит - бесплатно!

Итог: 185грн.

Схему не делал( не люблю это занятие, хорошее воображение и память - вот моя схема), а компенсировать вопрос "что-куда" решил надписями номенклатуры компонентов на плате.


Далее в SL5.0 набросал примерный чертеж . получилось вот что (новая плата, на момент написания этой статьи не готовая):

Видите что куда? Нет? И я не вижу!
А так???

Далее печатаем фотошаблон, клеим фоторезист, светим, травим , сверлим, паяем и получаем нечто такое:

Так как в программирование я не очень, пришлось шуршать гуглом, чтоб найти, простое решение  динамической индикации. Решение нашел вот тут: ссылка! и немного скорректировал под себя.

Слово о программе. Делал я ее в Arduino  IDE. а заливал следующим образом:
- берем ардуино нано і заливаем скетч Arduino as ISP.

- в настройках ардуино ИДЕ ставим галочку в пункте "Компиляция"

-пишем код для часов, и компилируем его для плати Уно, Нано и т.д. ( Любая плата с контроллером Атмега 328.)

В окне компиляции видим, куда компилятор сохраняет hex, bin и  rom файлы.

Нас интересует этот путь :

С помощью команды Win+R  отрываем "выполнить" . Вводим команду "AppData", в папке Local ищем папку "Temp", а в ней открываем папку arduino_build_хххххх, где хххххх - номер сборки, которую показал компилятор. Видим следующие:

Нас интересует один из этих файлов. Разница в том, что приставка with_bootloader означает, что по мимо самой программы запишется сам загрузчик для платы ардуино. Но нам это не нужно, так ка загрузчик иногда тормозит роботу микроконтроллера. В файле Clock имеется всё, что нам надо но без загрузчика. Копируем этот файл например на рабочий стол.

Далее нам надо с вами прошить этот файл в часы. Для этого  подключим микроконтроллер (уже распаяный и с установленным резонатором к запрограммированной  Ардуинке по ISP:


Микроконтроллер  Ардуино  (Уно .Нано.)

17  (SCK)  13

16  (MISO)  12

15  (MOSI)  11

29  (Reset)  10

VCC  5V

GND  GND

Далее нужно установить программу AVRDUDE с поддержкой ардуино плат. ТЫК!

И настраиваем его как в описании. Если всё правильно настроили то при нажатии на DETECT  у вас должен определится МК  АТмега 328р. ( если не получилось то проверьте соединение и поменяйте местами пин 12 и 11 на ардуино!)


Фьюзы настраиваем на внешний кварц :

L=0xFF

H=0xDA

E=0xFD


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

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


Делается это так:


int digital =0000;  //тут изначальное значение цифр на экране

void setup(){

Serial.begin(9600);  // включаем монитор порта на скорость 9600 бод

// другой код из сетапа

}

void loop(){

if(Serial.available()){  //если данные пришли

digital=Serial.parseInt();  //переводим их в цифры и записываем переменную.

// другой код из цикла.

}

Далее , когда подставим эти строки в пример динамической индикации то получим следующее:


На этом первая часть статьи завершилась. Почему в место графического экрана 7 сегментник, да просто я так захотел. Такая моя идея. Предложения, критику приму с радостью. По поводу схем и всего остального - ждите в следующих статьях. Пишу с работы.

С уважением! Ваш Чужой Человек!