пятница, 16 мая 2014 г.

Arduino. DS3231 - высокоточные часы реального времени

Иду дальше по плану. Высокоточные часы. Тут все было предельно просто - на странице интернет-магазина сразу имелась ссылка на библиотеки. Распаковал, установил файлы из папки DS3231_TEST, запустил скетч из примера... Замечательный девайс! Показывает время и температуру. А наличие батарейки позволяет таймеру работать и без подключения к компьютеру.

Вот упрощенный текст скетча
#include DS3231.h
#include Wire.h

DS3231 Clock;
bool Century=false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;

void setup() {
// Start the I2C interface
Wire.begin();
Clock.setSecond(50);//Set the second
Clock.setMinute(59);//Set the minute
Clock.setHour(11); //Set the hour
Clock.setDoW(5); //Set the day of the week
Clock.setDate(31); //Set the date of the month
Clock.setMonth(5); //Set the month of the year
Clock.setYear(13); //Set the year (Last two digits of the year)
// Start the serial interface
Serial.begin(9600);
}

void loop() {
int second,minute,hour,date,month,year,temperature;
second=Clock.getSecond();
minute=Clock.getMinute();
hour=Clock.getHour(h12, PM);
date=Clock.getDate();
month=Clock.getMonth(Century);
year=Clock.getYear();
temperature=Clock.getTemperature();

Serial.print("20");
Serial.print(year,DEC);
Serial.print('-');
Serial.print(month,DEC);
Serial.print('-');
Serial.print(date,DEC);
Serial.print(' ');
Serial.print(hour,DEC);
Serial.print(':');
Serial.print(minute,DEC);
Serial.print(':');
Serial.print(second,DEC);
Serial.print('\n');
Serial.print("Temperature=");
Serial.print(temperature);
Serial.print('\n');
delay(1000);
}

И схема подключения. Аналогична схеме подключения LCD.

Следующий шаг - заставить работать два устройства I2C на одной паре проводов. Т.е. чтобы часы выводили данные на LCD, а не через виртуальный COM-порт в среду разработки. Как разберусь - напишу. ;)


Arduino. I2C/SPI LCD1602 Module

Вчера почти весь день боролся с модулем IIC/I2C/TWI SPI Serial LCD 1602.

И так его уговаривал, и так... В конце концов решил подойти к решению вопроса системно - для начала узнать, какой адрес имеет подключаемый модуль. Скачал скетч сканера I2C, запустил его при подключенном экране. Узнал, что устройство имеет адрес 0х20. Отлично! Казалось бы, вот оно, счастье.. Но знание адреса не помогло. Перепробовал кучу разных библиотек для I2C LCD, и все никак. Менял провода, платы с микроконтроллером... Тоже без толку.

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

В конце концов наткнулся на страничку производителя модуля. И там, помимо схемы устройства оказались еще и библиотеки для модуля. Заработала вот эта библиотека SPI_IIC_LCD library for Arduino 1.0. Причем заработал код из примера, при выставленном адресе не 0х20, а просто 0! Почему так получилось - не понял. Будет время - покопаюсь. Но сейчас модуль исправно выводит надписи, мигает подсветкой и вообще ведет себя образцово.

Вот текст скетча

#include Wire.h
#include LiquidCrystal.h

// Connect via i2c, default address #0 (A0-A2 not jumpered)
LiquidCrystal lcd(0);

void setup() {
// set up the LCD's number of rows and columns:
lcd.begin(16, 2);
lcd.print("hello, world!");
}

void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
lcd.setBacklight(HIGH);
delay(500);
lcd.setBacklight(LOW);
delay(500);
}

И схема подключения, на всякий пожарный. :о)


среда, 14 мая 2014 г.

Arduino. Первое включение. Мигаем светодиодом.

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

Когда открывал посылку, был удивлен размерами деталей. Ну, вот как такую фот финтифлюшку брать моими пальцами! :о)

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

IDE качал с официального сайта. Единственно, скачивал релиз Arduino 1.5.6-r2 BETA (with support for Arduino Yún and Arduino Due boards Кстати, развернутая из архива, а не проинсталлированная, среда отлично работает.

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


/* Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second

digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(1000);

digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(1000);

}

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

Обе платы пока работают идентично. Завтра попробую цеплять сенсоры.


четверг, 3 апреля 2014 г.

Arduino есть. Что дальше?

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

Компонент Описание Функционал
Плата микроконтроллера Собственно, сама по себе плата может только мигать светодиодом и слать на ПК запрограммированные сигналы. Пока не очень интересно. Но перспективы есть - контроллер-то программируемый!.:о)
2,6" ЖК-дисплей Можно будет снимать какие-то данные без подключения к компьютеру. УСТРОЙСТВО начинает обретать автономность. ;о) Кстати, данный экран имеет маркировку 1602, что подсказывает нам о возможности вывода на экран двух строк по 16 символов.
Высокоточные часы реального времени Чтобы было что выводить на экран. Ну и полезный функционал появляется. Так ведь веселее. :о)
Пироэлектрический датчик Теперь УСТРОЙСТВО сможет узнавать, когда к нему кто-то подходит. Зачем? Ну, хотя бы для того, чтобы начать что-то выводить на экран. Предполагается, что в отсутствии зрителей на экран не будет ничего выводиться.
Ультразвуковой модуль измерения расстояния Ну как же без измерителя расстояния! Очень нужный датчик. Пригодится потом, когда УСТРОЙСТВО обзаведется колесами и будет учиться избегать столкновений с препятствиями.
Зуммер У нас есть часы. Почему бы не сделать их будильником? Пусть напоминает о событиях звуковым сигналом. А можно еще и на экран выводить напоминалку. Кроме того видел схемы с подключением 8-омных динамиков. Можно будет попробовать не простые Би-и-и или Дз-з-з реализовывать, а какие-нибудь простенькие мелодии выводить.
Выходной сдвиговый регистр 8 бит - 74HC595 Зачем? Даже себе не смог объяснить. Но так звучит красиво: "Сдвиговый регистр"! В принципе, позволит получить +7 выходных портов, каскадами регистров можно получать еще более значительное увеличение выходных портов. Может быть полезно при управлении большим числом внешних устройств. Например - диодной матрицей.
Входной сдвиговый регистр 8 бит - 74HC165N Вообще без понятия. Но раз уж буду брать выходной регистр, то с входным тоже надо разобраться. До кучи. :о)
10-ти сегментный индикатор А это мой подопытный "кролик", для тестирования 74HC595
Модуль памяти Micro SD Лучше поздно, но задуматься о ведении логов событий. SD-карта - вполне удобный вариант.
Цифровой датчик температуры и влажности Вот представим себе - гуляю я вечером по улице. Подходят ко мне ребята и спрашивают время. Я достаю из кармана УСТРОЙСТВО и говорю им, который час. Ребята слегка офигевают. А если самые ушлые спросят про температуру, я им тоже смогу ответить! Ну, не бить же людей каждый раз за то, что они расстроились, не получив ответ на вопрос о времени! :о)) А если серьезно - это начало блока контроля за растениями. :о) Есть у меня такая задумка на перспективу. Да и в быту, думаю, такая информация может быть не лишней.
Датчик влажности почвы Втыкаем щуп в землю и считываем информацию о влажности грунта. ИМХО, штука полезная. Когда-нибудь можно будет к системе еще и автополив прикрутить, но на первом этапе с лейкой, думаю, я и сам справлюсь. ;о) Датчиков влажности много - указанный тут лишь один из них. Я пока еще предметно вопрос не изучал. Может есть и более качественные. Кстати, большое количество датчиков можно будет прикрутить к ардуине с помощью входного сдвигового регистра. Т.е. контролировать несколько десятков саженцев - не проблема.
Датчик освещенности Штука нужная для подключения дополнительного освещения растениям. Пока это просто памятка о необходимости изучения данного вопроса. Есть фоторезисторы и фотодиоды. Кто-то из них дает более приятные сигналы на выходе, подходящие к моей задаче. Ближе к реализации разберусь и в статье напишу.
Датчик звука Интересно, а можно ли будет управлять УСТРОЙСТВОМ посредством дискретных звуковых сигналов? Разработать набор звуковых кодов (стуков) и использовать для управления. Потом надо будет разобраться с компонентами.
Компас Надеюсь, растения оценят мою заботу о них и начнут активно расти. Вот тогда мне и пригодится компас, чтобы выбираться из зарослей с огорода! :о)) И для навигации УСТРОЙСТВА в будущем пригодится. Вопрос нуждается в дополнительном изучении.
Bluetooth Буду ли по блютусу управлять УСТРОЙСТВОМ - не знаю. Но как вариант, можно использовать датчик для привязки к хозяину. Уровень сигнала падает быстро и используя это, УСТРОЙСТВО сможет определять направление, в котором хозяин от него удаляется. Или оно удаляется от хозяина. :о)

Собственно, на этом немобильная версия УСТРОЙСТВА закончится. К моменту реализации всего вышеуказанного, надеюсь, старшему ребенку надоест его игрушка и удастся задействовать ее в качестве мобильной платформы.

Вот такие вот скромные планы. А еще в планах закончить ремонт в туалете, сменить пол в коридоре и обшить балкон. Но это уже не так интересно, думаю все с этим сталкивались. ;о)


воскресенье, 19 января 2014 г.

Arduino c dx.com

Захотел Гриша себе какой-нибудь интересный подарок на День Рождения. Недолго думая я полез в интернет в поисках чего-нибудь эдакого. Эдакое нашлось довольно быстро и называлось Arduino. Arduino - это открытая модульная система, с программируемым контроллером и возможностью собирать из нее практически все, что угодно - от датчика температуры или личной метеостанции публикующей показания датчиков в сети, до систем "умный дом". Ах да. Чуть не забыл. Волшебное слово "роботы" в списке возможных результатов тоже присутствует!

Перебрал довольно много интернет-магазинов, торгующих комплектующими, и остановился на Dealextreme

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

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

Хорошая подборка литературы имеется на сайте RoboCraft, еще очень толковые форумы и подборки статей можно найти на сайтах Arduino.ru и Cxem.net

Ну и для тех, кто задал себе вопрос: "И что с этим делать?", - небольшой каталог датчиков с описанием функций

А себе я заказал контроллер и с десяток датчиков для экспериментов. И такую вот симпатичную кружку

Оплатил заказ через PayPal 16-го января. 19 января посылка была отдана на подготовку к отправке. Надеюсь до китайского НГ ее успеют отправить (НГ у Китайцев начинается 25 января и длится до 5 февраля. В эти дни большинство китайских интернет-магазинов не работают.)

понедельник, 16 сентября 2013 г.

Кто не курит и не пьет - тот в workout пусть идет. Или тренировка на 100 дней.

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

Несколько слов о предшествующих событиях, потом плавно перейдем к главной теме.

Как это часто бывает, не обошлось без моей Музы... моего Муза... в общем, не обошлось тут без Ильи Лазарева. В своем посте о приобретении турника он упомянул о стодневном цикле тренировок. Точнее, он упомянул, что программа занятий находится там. Прошел я по ссылке, а там описание стодневного тренинга, проходившего с марта 2013 года, для людей, которым не безразлично собственное здоровье. Практически онлайн семинар по тренировкам. :о)

Автор и ведущий данного курса, Антон Кучумов ежедневно оставлял сообщения, связанные с курсом. Кроме того было опубликовано много материала, относящегося к тренировкам косвенным образом, но от этого не менее интересного. Импонирует его подход к изложению - он не навязывает каких-то своих программ. Он просто разъясняет базовые вещи, предоставляя людям самостоятельно подбирать под себя то, что будет для них наиболее удобным и эффективным. Без фанатизма. Допускается выполнение упражнений различными способами, в разном ритме, что, согласитесь, сильно разнообразит тренировки.

Если честно, захотелось самому поучаствовать в таком тренинге. И тут мне снова повезло! С 23 сентября стартует новый стодневный цикл тренировок. Желающие могут пройти несложную регистрацию и отметиться в списке участников. А любители секретности могут просто начать заниматься параллельно, никому об это не сообщая. ;о)

Я решил немного схитрить и начал с прошлой недели готовиться. В одном круге подтягивания, приседания, отжимания, приседания. На самом деле с непривычки оказалось сложно выполнять четыре круга упражнений, в количестве 80% от максимума. Я начал с 60% от максимума. Четыре подхода стали нормально, четко выполняться. Думаю к 23 сентября довести число повторов до 80% и пройти весь стодневный цикл тренировок с большей эффективностью.

Самый большой плюс данного комплекса - не надо много места и дополнительных тренажеров. Я занимаюсь вечером, в каюте. Подтягивания на турнике заменил "австралийскими подтягиваниями", опираясь пятками на стул а руками держась за кромку кровати второго яруса. И из такого виса подтягиваюсь к кромке кровати.

Резюмируя. Дело полезное. Присоединяйтесь! Думаю, будет весело! :о)

Задумался, как бы сподвигнуть городскую администрацию на строительство площадки. А то в нашем микрорайоне ни одного нормального спортивного комплекса нет. Даже около школы, где у нас проходят занятия по Го. А это обидно вдвойне! ;о))


четверг, 8 августа 2013 г.

Гордон Пири. Бегай быстро и без травм

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

Небольшое видео советских времен на ту же тему. Отличное обучающее видео. Даже с описанием тренировок.