Официальный сайт компании Arduino по адресу arduino.cc
Часики ds3231 и ардуинка
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пт, 06/11/2015 - 17:07
В общем нашел вот такую библиотеку с примерчиками. все отлично работает. вопрос следующий: может кто посоветует что то лучше? (вдруг я не увидел какие то подводные камни в ней)
спс. :)
exez, открою секрет -для устройств на шине I2C вообще не нужны никакие библиотеки, максимум -библа wire для удобства общения с самой шиной. Смотрите в даташит по какому адресу что лежит, и читаете. Библы -для чайников, которые не хотят ничего учить :)
спасибо. буду иметь ввиду :)
зы: странно что ссылка в первом посте не отобразилась :)
http://lesson.iarduino.ru/page/podklyuchenie-rtc-chasy-realnogo-vremeni-ds1302-ds1307-ds3231-k-arduino/
exez, посмотрел из любопытсва эту библу, так она ж вроде ничего кроме показа и установки часов не умеет? Там же ещё два будильника, встроенный датчик температуры.. Вот например как просто читается температура из ds3231 Только на одной библе wire:
Странно, но с библиотекой Wire.h у меня ничего не работает.. ошибка вот такая:
exez, видимо ошибка в синтакисе подключения файла нужно так:
#include "Wire.h"
Спасибо! Помогло. Правда теперь новая ошибка вылазит: WARNING: Category '' in library OneWire is not valid. Setting to 'Uncategorized'
Но компилируется и работает!
exez, не знаю чем вызвано. В принципе OneWire это совсем другая библа. Возможно у вас библиотеки перемешались..
Попробую все снести и переустановить. Спасибо.
Использую для работы с часами вот этот код. http://arduino.ru/forum/apparatnye-voprosy/arduino-uno-podklyuchenie-rtc-ds3231#comment-54064
Хочу применить в проэкте, когда человек вводит время через кнопки с пульта и потом применяет настройки записывая время в ds3231. До этого ввел время через библиотеку RTC.h.
Не могу понять как установить время через Wire.h.
Буду признателен за пинок в нужном направлении.
Использую для работы с часами вот этот код. http://arduino.ru/forum/apparatnye-voprosy/arduino-uno-podklyuchenie-rtc-ds3231#comment-54064
Хочу применить в проэкте, когда человек вводит время через кнопки с пульта и потом применяет настройки записывая время в ds3231. До этого ввел время через библиотеку RTC.h.
Не могу понять как установить время через Wire.h.
Буду признателен за пинок в нужном направлении.
Ответ на этот вопрос ищите в функции void set3231Date() в этом скетче.
Я его видел. На как заставить эту функцию залить правильные настройки времени?
Это?
Странно. Как только убрал эту часть кода:
И добавил это время стало устанавливаться..
exez, а что, через сериал не заливается? Судя по коду там нужно послать 13 цифр отправляя их по-одной, а последняя цифра года - двумя. Т.е. исходя из вашего предыдущего примера нужно было посылать так 0, 0, 0, 2, 1, 1, 7, 0, 8, 1, 1, 15
PS А, нет, год тоже по-одной. Хотя у года судя по даташиту не нужно отделять единицы от десяток.
Не понимаю что писать в Serial.write.. ^(
Уже и так и эдак перепробовал. не компилируется..
exez, не понимаю в чём суть вопроса. По той ссылке полностью рабочий скетч. Там и пример посылки команды для установки времени есть:
//T(sec)(min)(hour)(dayOfWeek)(dayOfMonth)(month)(year)
058
//T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99)
059
//Example: 02-Feb-09 @ 19:57:11 for the 3rd day of the week -> T1157193020209
Он работает если под руками есть комп. Тогда нет вопросов. Действительно забиваешь то что указано в примере и выставляется время.
Вопрос в том, что в готовом девайсе комп не присутствует. Есть кнопки которыми вводятся значения часов и потом время надо сохранить. Пока это удалось сделать только так, как описал это выше.
Пример девайса:
exez, нужно дописать довольно серьёзную подпрограмму, что-б с кнопок устанавливать время. Чем больше кнопок будет под это дело, тем легче всё обыграть, и тем удобнее устанавливать время. Навеняка кто-то уже делал подобное..
Я понял. Спасибо. Буду пользоваться тем, что дописал сам. Меня в принципи все устраивает из того как оно работает.
Вот может кому понадобится.
Кусочек работы с режимами:
Работа с кнопками:
Установка времени(мне нужно только время, кому надо больше - допишите остальное) для того кода что приведен выше:
У себя в часах я с помощью библиотеки #include "DS3231.h" сделал следующим образом: 1. создал функцию установки часов
2. Выставляю время на экране и в момент перехода секунд через 00 нажимаю кнопку записать и спомощью данной функции задаю время. День, месяц, год установил один раз о больше не меняю.
спасибо за совет по дате.
я по совету Димакса не пользовался дополнительными библами.. поэтому выкручивался как мог имея на руках что что было..
зы: ну и уже подводя итоги могу сказать что памяти на моей тестовой ардуине 168(которую хотел использовать) не хватит для того проекта что собираюсь в конце сделать. скорее всего придется использовать 328ой чип. Поэтому буду стараться теперь оптимизировать код.
Хочу сделать небольшую плату. На нее установить разъем для дисплея, микроконтоллер Atmega 328, пищалку, микросхемку часов реального времени, сделать разъемчик для аналоговой пятикнопочной клавиатуры. В общем такой блок, чтобы ....ну в общем, чтобы компактно и удобно.
В связи с этим вопрос: Зачем на модуле часов реального времени присобачена микросхема памяти.
Интересуюсь для того, надо ли мне ее на плату присабачивать?
Хочу сделать небольшую плату. На нее установить разъем для дисплея, микроконтоллер Atmega 328, пищалку, микросхемку часов реального времени, сделать разъемчик для аналоговой пятикнопочной клавиатуры. В общем такой блок, чтобы ....ну в общем, чтобы компактно и удобно.
В связи с этим вопрос: Зачем на модуле часов реального времени присобачена микросхема памяти.
Интересуюсь для того, надо ли мне ее на плату присабачивать?
Чтобы було))))
Я себе такую состряпал.
Дисплей I2C, пятиклавишный джойстик аналоговый, буззеры активный и пассивный, детектор нуля, три симистора+моськи в кроватках. Часы на 1307 и 3231, первые деть было некуда)))). И семь светиков.
Я себе такую состряпал.
..................................
http://arduino.ru/forum/apparatnye-voprosy/tft-lcd-ili9163c-128x128#comment-148230
Сейчас пока делаю самодельный модуль DS3231, чтобы проверить микросхемки, которые пришли с ебея 5шт за 120 рублей. Что-то цена подозрительная.
Сейчас пока делаю самодельный модуль DS3231, чтобы проверить микросхемки, которые пришли с ебея 5шт за 120 рублей. Что-то цена подозрительная.
Реальная цена, я их в прошлом году по 16р/шт брал. Все работают. Для проверки я себе такой зажим взял. Недешевый, но удобный.
Дороговасто....тем более пока редко с микросхемками сталкиваюсь.
Жаба победила....Решил сам сделать переходник в виде крокодила. Сделал печатку....по лазерно-алкогольно-ацетоновой технологии. Мелкие дорожки получились с шагом даже меньше чем на микроконтроллере Atmega 8-328. Успех :) Вот фото.
Конечное устройство покажу позднее.
P.S. Самая тоненькая линия 0.1 мм
Мелкие дорожки получились с шагом даже меньше чем на микроконтроллере Atmega 8-328.
В DIP корпусе что ли? (шаг 2,54мм) Дык это самый большой шаг на микросхемах.
В DIP корпусе что ли? (шаг 2,54мм) Дык это самый большой шаг на микросхемах.
Конечно же нет.
2.54 для меня давно не проблема. Я имел в виду атмегу малюсенькую, в квадратненьком корпусе. На фотке по спичке видно же примерно пропорции. Кругленькие площадки с шагом 2.54 для штырьков, чтобы в макетку вставлять, а после поворота дорожки гораздо плотнее.
Пока не решил проблему с бумагой. Печатаю на глянцевых журналах. Но глянец так прилипает, что замучаешься отмывать, и тонер, наверное портишь, пока драиш. А кто на какой бумаге печатает?
Пока не решил проблему с бумагой. Печатаю на глянцевых журналах. Но глянец так прилипает, что замучаешься отмывать, и тонер, наверное портишь, пока драиш. А кто на какой бумаге печатает?
Печатаю на фотобумаге. Меня устраивает почти все. Единственное что в некоторых местах (особенно в местах для отверстий под выводы) часто остается тонкий слой покрытия и его я легко удаляю иголкой. Читал на форумах, что можно не удалять и он стравится. В последний раз решил так и сделать. Стравился, но не сразу. И получилось, что дорожки уже все протравленные, а в будущих отверстиях медь стравилась еще не полностью. В итоге при ручном сверлении было неудобно центрировать сверло.
Печатаю на фотобумаге. ................
Спасибо, попробую. Фотобумага для струйника? Глянцевая или матовая?
Пока не решил проблему с бумагой. Печатаю на глянцевых журналах. Но глянец так прилипает, что замучаешься отмывать, и тонер, наверное портишь, пока драиш. А кто на какой бумаге печатает?
Я на факсовой, почти не липнет. Где много узких дорожек рядом проходит, надо немного пальцем потереть.
Фотобумага для струйника? Глянцевая или матовая?
Да, для струйника. Глянцевая.
И еще, такая бумага обычно потолще факсовой и журнальной, то и прогревать ее надо чуть лучше. В общем, как и во всем, надо приловчиться.
......., то и прогревать ее надо чуть лучше. В общем, как и во всем, надо приловчиться.
Я нагрев не использую. У меня лазерно-алкоголно-ацетоновая технология.
Намачиваю смесью спирта и ацетона, и прижимаю на 40 мин.
Доделал переходник для микросхемок. Теперь без пайки смогу с ними поиграться. Начну с DS3231.
А пока в переходнике торчит Attiny2313.......это для фотоотчета. Беленькие детали на переходнике - это распиленный вдоль разъем PCI с дохлой материнки. Шаг как раз совпадает, и контакты подпружиненные. Только на сам крокодил надо какую-то пружину придумать. Пока колечком из резины воспользуюсь.
Доступно 24 ноги, все можно использовать для опытов :)
Супер, произведение исскуства))).
А соики мелкие зажмет?
"Намачиваю смесью спирта и ацетона, и прижимаю на 40 мин."
А как равномерный прижим обеспечивается?
Занятная конструкция, но проще сделать по такому принципу:
Занятная конструкция, но проще сделать по такому принципу:
Я себе подобную на sot23 и мельче сделал.
Супер, произведение исскуства))).
А соики мелкие зажмет?
"Намачиваю смесью спирта и ацетона, и прижимаю на 40 мин."
А как равномерный прижим обеспечивается?
Тиньку 13 зажимает, и все остальное до 2313....более ни чего не пробовал.
У меня столешница от кухонного гарнитура толщиной 36 мм с ровным краем. По краю кладу небольшую пластинку дюраля 4мм, на нее плату, сверху платы отпечатанные рисунок (все предварительно смоченное смесью ацетона и спирта), накрываю несколькими листочками бумаги (штук 5-10) по размеру платы, сверху накрываю пластинкой упругого материала толщиной 3мм (у меня какой-то прозрачный силикон), и наконец другой пластинкой дюраля. Все сжимаю умеренно сильно струбцинкой...и жду.
Потом разбираю пирог, аккуратненько....Отпечаток с платы сразу не отдираю, а даю просохнуть. Сейчас сушу несколько минут на батарее отопления. Потом смываю бумагу. У меня это самый гемор. Глянец с журналов сильно прилипает и трудно смывается. Потом кладу плату на подставочке в пластиковую баночку с крышкой, на дно которой брызгаю немного ацетона, и оставляю там еще минут на 40. Потом опять просушиваю, и плата готова к травлению.
Может гемморойно, но так я добиваюсь лучшего результата. На истину не претендую, может что-то делаю не так.
У меня столешница от кухонного гарнитура толщиной 36 мм с ровным краем. По краю кладу небольшую пластинку дюраля 4мм, на нее плату, сверху платы отпечатанные рисунок (все предварительно смоченное смесью ацетона и спирта), накрываю несколькими листочками бумаги (штук 5-10) по размеру платы, сверху накрываю пластинкой упругого материала толщиной 3мм (у меня какой-то прозрачный силикон), и наконец другой пластинкой дюраля. Все сжимаю умеренно сильно струбцинкой...и жду.
Потом разбираю пирог, аккуратненько....Отпечаток с платы сразу не отдираю, а даю просохнуть. Сейчас сушу несколько минут на батарее отопления. Потом смываю бумагу. У меня это самый гемор. Глянец с журналов сильно прилипает и трудно смывается. Потом кладу плату на подставочке в пластиковую баночку с крышкой, на дно которой брызгаю немного ацетона, и оставляю там еще минут на 40. Потом опять просушиваю, и плата готова к травлению.
Может гемморойно, но так я добиваюсь лучшего результата. На истину не претендую, может что-то делаю не так.
Как раз качество понравилось, у меня такие тонкие норовят расползтись под утюгом. Какие пропорции спирт-ацетон ? Попробую.
Бумагу попробуйте факсовую, у меня лучше всех пошла. Оттирание после утюга на плотных дорожках типа вашей платы, минуту-полторы занимает.
Как раз качество понравилось, у меня такие тонкие норовят расползтись под утюгом. Какие пропорции спирт-ацетон ? ......................
Там и ролик есть. Товарищ показывает эту технологию, но без струбцины. Он просто приглаживает, немного ждет, потом снимает бумагу, а рисунок остается. У меня так не получилось :(
Как-то у вас все сложно. Однажды мне захотелось посмотреть, какие минимальные размеры дорожек/зазоров могут получаться с помощью обычного ЛУТа, без каких либо дополнительных приспособлений. По результатам эксперимента вышло, что дорожки 0.127мм и зазоры 0.085мм (две дорожки внизу) вполне по силам, если озадачиться.
Площадки в центре под типоразмер 0402.
Как-то у вас все сложно. ............дорожки 0.127мм и зазоры 0.085мм (две дорожки внизу) вполне по силам, если озадачиться.
................
Как-то у вас все сложно. Однажды мне захотелось посмотреть, какие минимальные размеры дорожек/зазоров могут получаться с помощью обычного ЛУТа, без каких либо дополнительных приспособлений. По результатам эксперимента вышло, что дорожки 0.127мм и зазоры 0.085мм (две дорожки внизу) вполне по силам, если озадачиться.
Площадки в центре под типоразмер 0402.
Получаются, но повторяемости нет, значит нетехнологично. У себя еще на тонер грешу, "Brother", а по нему попадалось, что весьма тугоплавкий. Другого нет, не сравнить.(((((
Собрал на макетке модуль часов DS3231. Цель-проверить работоспособность микросхемы. Получил истинное удовольствие. 5-10 минут и все готово! Без пайки и прочего геммороя. Теперь не жалко времени, убитого на изготовление переходника. Следущий шаг - прошивка тинек 85 и 2313.
Вот так выглядят часики на макетке
Собрал по схеме из даташита. В инете поговаривают, что схема, по которой собран китайский модуль часов, и DS1307 и DS3231 неправильна. Там китайцы провели к батарейке диод и резистор, которые быстро убивают батарейку. Видимо их модули рассчитаны на аккумулятор. В даташите ни чего этого нет.
P.S. Часики идут уже больше суток. Отключаю их от ардуинки, и они лежат в шкафу. Временами подключаю и проверяю уход от олайн часов точного времени. Онлайн часы синхронизируются с мировыми атомными часами, и позволяют оценить точность хода модуля. При установке часов получилось отставание от мировых на 2 сек, которое за сутки совсем не изменилось. Понаблюдаю еще недельку. Но уже видно, что микросхемка просто классная!!!! Заявленные характеристики оправдывает и обвязки минимум, и встроенный внутри кварц и термокомпенсация. А еще можно и температуру выводить. Молодцы буржуи!
А вот с готовым модулем DS3231 мои часики при отключении от питания почему-то немного сбиваются. Т.Е. если время было настроено точно, то после отключения оно не обнуляется, а уходит в сторону, и чем дольше отключение, тем больше ошибка. Часики идут с ноября прошлого года....может батарейка сдохла? Но слышал, что батарейки должно хватать года на три.
Решил "переделать" модуль часов, который стоит в моих часиках. И как оказалось не зря. Вот фотка часов, уже с исправленным модулем
Стрелкой обозначено место где был диод, который подавал напряжение через резистор от VCC на батарейку. На фотке можно заметить, что батарейка стала пузатая. В натуре это конкретно заметно. Понаблюдаю изменения в работе, отпишусь.
P.S. Батарейку заменил. Поотключал, поподключал...Все очень здорово, время не сбивается ни на секунду. Остается испытание временем. Кто пользуется данным модулем, рекомендую сделать с ним тоже самое.
У себя в часах я с помощью библиотеки #include "DS3231.h" сделал следующим образом: 1. создал функцию установки часов
2. Выставляю время на экране и в момент перехода секунд через 00 нажимаю кнопку записать и спомощью данной функции задаю время. День, месяц, год установил один раз о больше не меняю.
время менять получается, а вот относительно даты ругается 'class DS3231' has no member named 'setYear'
хотя библиотека <DS3231.h>
UPD в библиотете нашел только setDate(день, месяц, год);
а как по-отдельности?
exez, открою секрет -для устройств на шине I2C вообще не нужны никакие библиотеки, максимум -библа wire для удобства общения с самой шиной. Смотрите в даташит по какому адресу что лежит, и читаете. Библы -для чайников, которые не хотят ничего учить :)
Имеется три варианта. 1 - библиотека ds3231, 2 - библиотека DS3231 (автор из польши, не помню имени), 3 - непосредственное обращение к регистрам часиков. Попробовал все 3 варианта, все работают, претензий нет. Но в первом варианте нет будильников, а может и в третьем их нет, но можно сделать. Но самое большое отличие в следующем:
Я внял советам многих форумчан, что часики должны работать на прерываниях, что я и сделал. Соединил вызод SQW с пином ардуинки и добавил соответствующие строчки в скетч. Первый вариант работает без проблем, остальные два на прерываниях виснут наглухо. В первом варианте библиотека Wire.h не упоминается, в остальных двух используется. Видимо это конфликт с библиотекой Wire.h. Не понимаю, как это обойти.
дороговато как по мне
дороговато как по мне