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 сегментник, да просто я так захотел. Такая моя идея. Предложения, критику приму с радостью. По поводу схем и всего остального - ждите в следующих статьях. Пишу с работы.

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

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества