Постоянный посетитель
|
ARDUINO для автоматизации аквариума |
Создал отдельную тему по вопросам использования простых и не дорогих плат ARDUINO для целей автоматизации аквариума. Схема коммутации в случае использования платы NANO: Программа для среды программирования Arduino: //*************************************************** // Скетч для управления релейным модулем, в котором * // использовано два канала. Используется также RTC * // Релейный модуль - с инверсной логикой на входе * // Автор: ZORS * // Версия 1. Дата 21.12.2013 02:40 * //*************************************************** //----------ИМПОРТ БИБЛИОТЕК------------------------- #include //Подключаем библиотеку для использования I2C интерфейса с модулем RTC #include //Подключаем библиотеку для использования модуля часов реального времени RTC RTC_DS1307 RTC; //Создаем переменную класса - для использования RTC //----------Объявляем разные переменные------------ const int RelayChn1 = 6; //Используем цифровой ПОРТ 6 для ПЕРВОГО канала релейного модуля const int RelayChn2 = 7; //Используем цифровой ПОРТ 7 для ВТОРОГО канала релейного модуля //----------Настройки времени и продолжительности включения реле //----------ПЕРВЫЙ канал---------------------------- const long StartRelCn_1 = 25200; //Время срабатывания в ПЕРВОМ канале релейного модуля (в секундах от начала суток) //в данном случае 25200 - это 7 часов 00 минут = ( 60секунд *60 минут *7 = 25200) const long DurationCh_1 = 10; //ДЛИТЕЛЬНОСТЬ срабатывания реле в ПЕРВОМ канале (в секундах) //----------ВТОРОЙ канал---------------------------- const long StartRelCn_2 = 37800; //Время срабатывания во ВТОРОМ канале релейного модуля (в секундах от начала суток) //В данном случае 10 часов 30 минут = (60 секунд * 60 минут * 10 часов + 60сек*30мин = 37800) const long DurationCh_2 = 15; //ДЛИТЕЛЬНОСТЬ срабатывания реле во ВТОРОМ канале (в секундах) //----------Модуль инициализации setup() - выполняется один раз при инициализации платы при подаче напряжение (и аналогичных событиях) void setup(){ pinMode(RelayChn1,OUTPUT); //Инициализируем порт для ПЕРВОГО канала как ВЫХОД pinMode(RelayChn2,OUTPUT); //Инициализируем порт для ВТОРОГО канала как ВЫХОД digitalWrite(RelayChn1,HIGH); //Устанавливаем на входах релейного модуля ВЫСОКИЙ уровень digitalWrite(RelayChn2,HIGH); //Т.к. используемый релейный модуль с опторазвязкой - управляется инверсной логикой Wire.begin(); //Инициируем I2C интерфейс RTC.begin(); //Инициирум RTC модуль // RTC.adjust(DateTime(__DATE__, __TIME__)); //С этой строки необходимо убрать комментарии один раз в начале, //для того, чтобы загрузить в RTC дату и время на момент компиляции программы //Иногда необходимо заливать СКЕТЧ на плату со снятым комментарием - для поправки //времени в RTC, НО оставлять такой СКЕТЧ в работе НЕЛЬЗЯ !!!!!!!!!!!!! } // КОНЕЦ ИНИЦИАЛИЗАЦИИ //-------------------------------------------------- void loop() // ПРОГРАММЫй безусловный ЦИКЛ { DateTime myTime = RTC.now(); //Читаем данные времени из RTC при каждом выполнении цикла //----------Раздел обработки реле по времени ---- long utime = myTime.unixtime(); //сохраняем в переменную - время в формате UNIX utime %= 86400; //Сохраняем в этой же переменной остаток деления на кол-во секнд в сутках, //Это дает количество секунд с начала текущих суток //------------КАНАЛ 1------------------------------ if ((utime >= StartRelCn_1) && (utime //Если секунд с начала суток больше, чем задано для включения //Но, одновременно и меньше, чем задано для включения + длительность { digitalWrite(RelayChn1,LOW); //Устанавливаем на ПЕРВОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает } else //во всех остальных случаях { digitalWrite(RelayChn1,HIGH); //Устанавливаем на ПЕРВОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается } //------------КАНАЛ 2 - все аналогично ----------- if ((utime >= StartRelCn_2) && (utime { digitalWrite(RelayChn2,LOW); //Устанавливаем на ВТОРОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает } else { digitalWrite(RelayChn2,HIGH); //Устанавливаем на ВТОРОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается } }//------------Конец ЦИКЛА----------------------------- (Редактор текста на данном сайте - к сожалению, "ломает" красивое форматирование. PS: Выложил этот скетч на файлообменник : http://my-files.ru/h... В данной программе реализован, довольно-таки простой подход, а простота - основа надежности. Каждое из 2-х реле срабатывают один раз в сутки в указанное время, причем время указывается в количестве секунд от начала суток, и удерживается указанное количество времени в секундах. Такой способ задания времени - несколько сложен для понимания, но за это - не нагружает программу и процессор лишним функционалом, который понадобится всего один раз. Для определения времени наступления события начала включения и выключения реле - используется время в формате UNIX. Такой подход хорош тем, что даже если включение или перезагрузка платы произойдет в промежутке времени включения, то реле включится в оставшееся время. В случае с дозированием, это не много что дает, но в случае, если по аналогии будет сделано управление светом, то при подаче напряжения на плату, например, после пропадания напряжения питания, или после посадки напряжения, или др. аналогичных событий, включение и выключение реле произойдет корректно. У комплектных минутных и секундных таймеров "с розеткой" - об этом можно только мечтать....не реализован такой функционал, и еще у них есть один минус. Реле в таких таймерах - не удерживаемое, а переключаемое, со всеми вытекающими последствиями.... Для программирования нескольких включений каждого реле в течение суток - естественно, потребуется несколько другой подход....спрашивайте когда кому-то потребуется, пока не хочу все усложнять... В принципе, можно добавить константных переменных, содержащих время и длительность срабатывания, и соответственно добавить проверку на условия. Если количество необходимых срабатываний каждого реле в сутках больше чем 2 - лучше оформить проверку условий в отдельной функции. Как, говорил человек, учивший меня программированию - "все, что ты делаешь в программе больше двух раз - оформляй отдельной процедурой, или функцией". Главное ограничение этого подхода - включение и выключение реле - должно произойти в одних сутках. Если необходимо чтобы, реле включилось в одних сутках, а выключилось в других - необходимо разбить это задание на 2 задания, или применить другой метод проверки условий наступления событий включения и выключения. Весь этот пример тестировался на "живом" железе : Для наглядности отладки был еще подключен LCD дисплей 16 сим в 2 строках. Схема итоговая была такая: Обратите внимание, что при использовании I2C последовательного интерфейса - соединения значительно упрощаются. И LCD дисплей подключен транзитом через модуль RTC (часов реального времени). Никаких паяных соединений нет вообще....все скоммутировано - проводами с разъемами. Скетч - естественно, несколько другой использовался с добавлением строк инициализации и использования LCD 16x2. Плата использовалась типа такой: http://www.ebay.com/... цена примерно 350 руб. Релейный модуль http://www.ebay.com/... цена примерно 150 руб. Модуль часов реального времени: http://www.ebay.com/... Цена примерно 55 руб. Для сокращения бюджета можно использовать плату проще: http://www.ebay.com/... Цена примерно 200 руб. Если есть потребность подключить ЖК дисплейчик, то лучше брать ЖК дисплей (LCD) c I2C интерфейсом - это сильно упрощает коммутацию, и сокращает количество использованных портов на микроконтроллере. Например такой можно использовать : http://www.ebay.com/... цена около 180 руб. На ЖК можно выводить статусную информацию, информацию об ошибках, диагностическую информацию. Все это, конечно, можно и в последовательный порт компьютера выводить, но это не всегда удобно (скорее наоборот), поэтому я всегда использую какой-нибудь девайс для вывода информации. Для использования I2C интерфейса - необходима библиотека Wire. Она есть в стандартном дистрибутиве среды программирования Arduino. Для использования модуля RTC на микросхеме DS1307 нужна библиотека RTClib. Если ее не будет в стандартном дистрибутиве, то ее можно взять в интернет. Например здесь : http://arduino-info.... Необходимо, скачать, и разархивировать zip-файл в папку с понятным названием, например RTCLib. Затем эту папку поместить в папку, где среда Arduino хранит свои библиотеки. Если ставили среду программирования с настройками по умолчанию, то этой папкой будет : C:Program FilesArduinolibraries Сюда и помещайте папки с подключаемыми библиотеками. Если на этот момент, среда программирования была запущена - ее необходимо закрыть, и запустить заново. После этого библиотека будет доступна в меню Скетч/Импортировать библиотеку. Микросхема RTC модуля DS1307, как правило использует адрес на шине I2C равный 0x68 поэтому, необходимо проверить в библиотечных файлах, библиотеки RTClib наличие строки типа этой: #define DS1307_ADDRESS 0x68 Если будет использоваться LCD 16x2 с I2C интерфейсом, то - понадобиться библиотека LiquidCrystal_I2C. Можно скачать здесь : http://dvrobot.ru/lc... Как подключить к среде программирования Arduino - см. выше ВАЖНО : при использовании I2C устройств - в скетче, библиотека Wire - должна быть объявлена первой, иначе - будут ошибки компиляции. По этому примеру - все.... в следующем - присоединение термо-датчика DS18B20, и создание несложного терморегулятора..... Изменено 24.12.13 автор Z0RS |
|
#1907148 |
Постоянный посетитель
|
|
Итак. Лишнее, с этой схемы можете убрать сами. Схему соединений с платой NANO - приводить не буду, т.к. практически все аналогично делается (см. предыдущий пример). Здесь можно скачать архив с данной версией скетча: http://my-files.ru/7... Экран LCD при работе данного скетча - выглядит так: Если LCD не будет использоваться - то соответствующие строки нужно удалить из скетча. Эти строки можно "опознать" либо по комментариям, либо они содержат функции объекта lcd, например lcd.setCursor(), или lcd.print (). У датчика DS18B20 проверялась калибровка по двум точкам - таяния льда и кипения воды (вода для льда, и кипящая - дистиллированная), вот результаты: Результаты - вполне приемлемые для простого термоконтроля в аквариуме. Термо-контроль в данном скетче - действительно примитивный, и близок по своей простоте и примитивности, к биметаллической пластине терморегуляторов в аквариумных нагревателях. Но с другой стороны имеется возможность подбирать точку уставки температуры и ширину гистерезиса. Можно, конечно и сделать более сложный регулятор.....но для аквариума - это излишество. В данном скетче я оставил настройки температуры, которые нужно изменить по необходимости : float t0 = 30.5; //Уставка температуры для ТРЕТЬЕГО канала релейного модуля float tGistrsis = 0.7; т.е уставка на 30 с половиной градуса плюс-минус 0,35 градуса. Датчик положил на корпус реле 3го канала ( реле же нагревается немного во время срабатывания) и эта система уже вторые сутки "качает" температуру реле в пределах 1,2 градуса - ну, понятно, что практического применения это не имеет - только для тестирования системы, но в тестовом режиме - пока отрабатывает нормально. В программах примеров, и данного и предыдущего - совершенно отсутствует функционал, по обработке каких либо сбоев и ошибочных ситуаций. Поэтому, данные примеры не являются подготовленными к реальной работе с "живой" банкой, и требуют доработки....ну здесь у кого на сколько фантазии хватит... Изменено 24.12.13 автор Z0RS |
|
#1908795 |
|
Посетитель
|
|
А можно как нить светодиоды запитать от ардуино? Желательно чтобы рассвет, закат. |
|
#1909026 |
Постоянный посетитель
|
|
lisenkow Ну...я надеюсь, что под словом "запитать", имелось ввиду управление яркостью светодиодов, а не электропитание, ардуино - все-таки, не блок питания, а микропроцессорная плата. Вообще, пока безотносительно к управлению яркостью свечения светодиодов - для организации "правильного" эл.питания светодиодов - применяют стабилизаторы тока, которые называют - "драйвер". Т.е с источника постоянного напряжения (первичное не стабилизированное) - питание подается на драйвер, а с другой стороны к драйверу подключается светодиод или несколько последовательно соединенных светодиодов. Требуемое суммарное падение напряжения на последовательной сборке светодиодов, плюс падение напряжения на драйвере должно быть меньше, чем первичное постоянное напряжение, подаваемое на драйвер. Иногда источник первичного постоянного напряжения и драйвер объединяют в одно устройство. Как правило драйвер светодиода - использует частотно-импульсную модуляцию для организации стабилизации тока, и требует, в случае питания последовательной сборки нескольких светодиодов - подбора номиналов некоторых деталей, как правило - сопротивления драйвера, индуктивности дросселя и емкостей входного и выходного конденсаторов. Вообще, драйвер представляет из себя микросхему драйвера и несколько деталей, почти все из которых я перечислил выше - всего, как правило 5 деталей. Теперь об управлении. Существуют микросхемы драйвера, имеющие диммирующий вход. Диммирующий вход позволяет использовать на нем сигнал с Широтно-Импульсной Модулящией (ШИМ). Работает диммирующий вход, как правило - следующим образом - при подаче на него низкого уровня (как правило до 0,3В - но необходимо уточнить в даташите) внутренний ключ драйвера - закрывается. Подавая на этот вход с выхода платы ардуино сигнал ШИМ и управляя процентным содержанием скважности ШИМ сигнала - можно управлять яркостью свечения светодиода, подключенного к драйверу - практически с линейной зависимостью. Необходимо, проверять соответствие частоты ШИМ сигнала (для Ардуино это 500 Гц.) и диапазона допустимых частот микросхемы драйвера. На ибее попадаются комплектные драйвера с ШИМ диммированием (LED Driver PWM) например, такие : http://www.ebay.com/... или вот такой, с настраиваемым током (0,35 или 0,7 или 1,0 А): http://www.ebay.com/... Этот относительно недорогой.... Но собрать самому - все равно, будет дешевле раза в 3-4. Тем более что, иногда микросхемы драйверов попадаются по бросовым ценам - 20-30 руб за MBI6651, на которой можно собрать весьма мощные драйвера. Здесь можно посмотреть про нее: Ну и в даташите лучше всего : http://www.ledlabs.r... Можно брать более мощные микросхемы драйвера и объединять светодиоды последовательно, но тогда понадобится источник первичного постоянного напряжения с более высоким уровнем, и у микросхемы драйвера могут быть ограничения по питающему напряжению. К сожалению, из-за отсутствия возможности "по-быстрому" раздобыть микросхему драйвера с диммирующим входом - остался не выясненным вопрос о токе на диммирующем входе, в даташитах - почему-то этот параметр не указан. Из-за этого непонятно, сколько димирующих входов можно присоединить к выходу платы, например Arduino UNO, на котором организован ШИМ. Возможно, при присоединении группы драйверов - придется делать усиление тока управления диммирующими входами драйверов. Постараюсь этот вопрос разобрать по-подробнее позднее, когда поэксперементирую с диммирующими драйверами... Как организовать ШИМ выход на плате, например на 3 дискретном выводе. Необходимо в секции setup() добавить строчку pinMode(3, OUTPUT); необходимо заметить, что ШИМ можно организовать не на всех доступных портах, а только на тех, на которых эта возможность поддерживается. Эти порты указаны в даташите на процессор или в описаниях соответствующей платы на сайте www.arduino.cc. Например, для платы Arduino UNO дискретными выводами, на которых возможно организовать ШИМ являются : 3, 5, 6, 9, 10, 11. Причем на выводах 5 и 6 частота ШИМ будет примерно 980 Гц, а на остальных 490 Гц. Далее...в секции loop() должна быть строчка analogWrite(3, value); где переменная value должно принимать значения в диапазоне 0-255, что будет соответствовать нагрузке ШИМ в диапазоне 0 - 100%, и соответственно будет меняться и яркость. Как программно изменять значене переменной - ну я уж не буду объяснять, это процесс - творческий ... Тем более, что иммитируя рассвет, например, можно сымитировать даже нелинейное увеличение освещенности за ед.времени...а можно просто линейно поднять яркость светодиодов. Световой день, также можно сделать фиксированным, а можно сделать изменяемым, равным астрономическому дню на той широте местности, на которой находится водоем, который имитируется. Ну это для "особых" любителей.... Вообще используя такой подход и соответствующие светодиоды, в аквариуме можно имитировать, и прохождение облаков, и лунный свет по фазам луны, и грозы и т.д. Изменено 26.12.13 автор Z0RS Изменено 27.12.13 автор Z0RS |
|
#1909651 Нравится Batusay
|
Посетитель
|
|
разглядывал jarduino, интересно, но что-то в 2012 году автор замолчал... |
|
#1914308 |
Постоянный посетитель
|
|
Yuriy46 Да...проект побогаче....некоторых других... С другой стороны - в принципе, ATMega 2560 кардинально, от ATmega 328 отличается только наличием большого количества Flash-памяти под программный код (и он действительно большой, чтобы такой проект как аквариумный контроллер - писать как угодно, лишь бы работал....можно вообще забыть слово "оптимизация кода") ну и количеством (но не качеством) периферии... Вот графический дисплей, да еще и с ТАЧскрином - это, да...приятная вещь...но не более того....да еще цена проекта сразу возрастает. А с другой стороны, для нормального отображения статистики - он мал размером и разрешением... По мне - проще данные с проца (Меги какой нибудь) иили с подключенной к процу SD-шки - передать по сети на сервак, и там уже сделать нормальную "человеческую" обработку....и выдать нормальные отчеты или страницы с органами управления. Удовольствие это - со стороны микроконтрллера - недорогое, цена вопроса - 120 руб за Ethernet карту на чипе ENC28J60, да десяток строчек кода....это - на стороне микроконтроллера, а на стороне сервера - это уж, кто-во что горазд... Конечно, бесплатных платформ, где можно взять Appache + SQL (Какой-нить)+ php, или что-то в этом роде - есть некоторое количество - но там должна быть посещаемость... Можно, конечно взять платный хостинг, купить доменное имя и сделать "офигенский" коммерческий (но не дорогой) проект по аквариумным контроллерам, но не эту "лабуду" которую предлагают в паре - тройке мест в интернете, а действительно и серьезный с аппаратной стороны и с другой стороны - сетевой проект, когда владелец контроллера может посмотреть, статистику, изменить настройки, по-управлять аквариумом удаленно через Интернет, отдыхая где-нить в Доменикане...хы... Ну или зависая безвылазно на работе..... а на состояние банки глянуть хочется.... Вот тогда - появится интерес к аквариумным контроллерам - а сейчас это - "чуть расширенные комплектные таймеры с розеткой". Yuriy46 Ага....а еще лучше на нем сделать бегущие огни, или елку на новый год зажигать.... Нужно все-таки оборудование соразмерно задаче подбирать.... Это ARM - здесь совсем другая производительность (но и цена вопроса)...это для контроллера аквариума - излишне....если только поиграться есть желание....вот для какого-нибудь океанариума - самое то ... , но там больше чем уверен, поставят PLC Siemens или Shneider или Omron или ABB и будут правы - все таки промышленная автоматика - это надежность другого уровня.... Yuriy46 Нет никаких напрягов - просто его нет ....аппаратно не реализован, как в процессорах AVR, да и ARM - это другая философия.... Порты ввода/вывода организованы отдельными контроллерами - они программируются ...т.е. ничто не мешает PWM организовать программно. |
|
#1916926 |
|
Постоянный посетитель
|
|
А теперь, продемонстрирую - одну "фишку", из описанных в предыдущем сообщении...а именно удаленное, посредством сети Интернет - управление нагрузкой, подключенной к релейному модулю, а именно к реле №4. Смотри предыдущие примеры и схему соединений, в этом сообщении. Необходимо обратить внимание, что сетевая плата на основе чипа ENC28J60 - требует напряжения питания 3.3V , а вот уровень напряжения на пинах SPI интерфейса - допускается и 5V поэтому данные уровни для этого чипа - согласовывать нет необходимости. Питание 3.3 вольта - в моем случае, берется с платы Arduino UNO - она имеет соответствующий преобразователь питания. А вот для MINI/MICRO/NANO - придется позаботиться отдельно...либо плата должна быть с таким преобразователем...хорошо то, что среди всевозможных клонов от китайских производителей - можно без труда подобрать такой.... Для питания всей этой схемы был приспособлен блок питания с мини USB разъемом , купленный за 120 руб на рынке в ларьке с мелочевкой...характеристики блока питания 5V - 1.0A, разьем срезал, сделал разветвитель для "земли" и "+5V". На схеме все видно... Понятно, что изменив схему присоединения - необходимо изменить и инициализацию портов в программе - в скетче....ну, я думаю, это - уже понятно как сделать - поэтому приводить здесь весь скетч, я не буду, тем более, что в итоговом варианте - в нем много лишнего. Теперь, чтобы использовать плату необходимо добавить в скетч следующие строки: где нибудь вверху, до функции setup() и до функции loop() static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };// Определяем какой будет MAC адрес у сетевого интерфейса....необходимо, чтобы в той сети, где он будет действовать - адрес был уникальным... byte Ethernet::buffer[700]; //Определяем буфер для отправки и приема сообщений.... BufferFiller bfill; В функции setup() должны быть строки : Serial.begin(9600); // Это - проинициализирует последовательный порт для связи с компьютером и в него будут направляться сообщения диагностики. В принципе это - не обязательно. if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println(F("Ethernet Failed!")); // Если сетевая плата не отвечает на попытку инициализации - вывести сообщение. //Пытаемся получить автоматическую конфигурацию IP интерфейса с сервера DHCP - он сейчас есть в практически каждом квартирном роутере.... if (!ether.dhcpSetup()) Serial.println(F("DHCP failed")); //если карта не смогла отконфигурироваться автоматически - выведется сообщение, иначе интерфейс получит IP адрес, адрес шлюза и адрес DNS. Если автоматически получать конфигурацию не возможно - ну нет, например DHCP сервера ... тогда можно отконфигурировать сетевую плату статическим адресом. Тогда в области до фунции setup() должны быть строки: static byte my_ip[] = { 192,168,1,203 };//Определяет IP адрес сетевой платы (здесь необходимо прописывать значения актуальные для Ваших сетей) static byte gw_ip[] = { 192,168,1,1 };//IP адрес шлюза без него в Интернет не будет маршрута static byte dns_ip[] = { 192,168,1,1 };// IP адрес для DNS запросов В функцию setup() добавить строки : staticSetup(my_ip, gw_ip, dns_ip ); // Это проинициализирует интерфейс статическим IP адресом и адресом шлюза и DNS. В принципе функция staticSetup - также возвращает в случае неудачи не нулевое значение - можно устроить проверку и вывести сообщение, по аналогии (см. чуть выше) Далее, если в функцию loop() добавить следующие строки : word len = ether.packetReceive(); word pos = ether.packetLoop(len); то сетевая карта начнет отвечать на ICMP запросы команды ping. Если пинги по нашему адресу - появились - то все идет как надо.... В случае с моим IP адресом все будет выглядеть так: Как видите - интерфейс имеет назначенный MAC-адрес, по DHCP получил IP-адрес 192.168.1.203 и отвечает на команду ping. Пол-дела сделано....т.е сетевая плата подключена, проинициализирована, организован процесс эха...а дальше нужно решать, как мы ее будем использовать? Можно "поднять" несложный WEB непосредственно на связке ардуино+сетевая карта...но наигравшись с ним достаточно, я понял, что вешщь эта - весьма ущербная, да и выпустить его в Интернет - весьма не просто, если у Вас несильно внятный и клиентоориентированный провайдер Интернет....я своего не только на реальный IP адрес не могу уговорить, но и на то, чтобы он 80 порт моего сервера - оттранслировал на какой-нибудь порт своего реального IP адреса, чтобы мой сервис - таки в Интернете появился...но с ТранТелеКом договорится - это сложно... Поэтому, я нашел такой привлекательный сервис как www.devicehub.net сервис - бесплатный, пока по крайней мере....хоть и Румынский....конечно, это - немного настораживает... Смысл данного сервиса, в том, что ваше устройство - должно иметь маршрут в Интернет (но к нему обращаться из Интернет - нет необходимости, да возможности может и не быть, как в моем случае) и уметь выполнять HTTP запросы и обрабатывать ответы...Запросы будут специальной формы, об этом - ниже.... Идем по адресу http://devicehub.net и регистрируемся. Вверху - на главной странице сайта - есть ссылка New account. Жмем.... После регистрации создаем проект, у проекта будет уникальный идентификатор и еще будет выдан apiKey. В проекте создаем актуатор (actuator), он тоже имеет уникальный идентификатор. Актуатор, это кнопка на WEB форме, с состояниями ON и OFF - включено, выключено....в соответствие с которыми в ответе на HTTP запрос будет ответ либо символ "0" либо "1". Все просто.... Выглядит актуатор на сайте devicehub.net - примерно так: Итого, у Вас будет три необходимые для запроса вещи: ProjectID, actuatorID и apikey (это типа, для авторизации - идентификатор сессии) - его необходимо хранить от компроментации. Далее, необходимо создать функцию, которая будет обрабатывать ответ от сервера, для этого в скетче, в любом месте, кроме, как внутри тела функций setup() или loop() необходимо вставить строки типа: int state = 0; // просто переменная для хранения состояния актуатора - эту строку лучше вставлять, вверху программы до функции setup() //а эти строки можно вставить в самый низ программы, после закрывающей скобки от самой нижней функции... static void ActuatorCalback (byte status, word off, word len){ Ethernet::buffer[off+300] = 0; state = *(const char*)(Ethernet::buffer + off + len - 1); if(state == 49) // если актуатор находится во включенном состоянии - в ответе на запрос будет символ "1" - ASCII код = 49 (десятичный) { digitalWrite(RelayChn4, LOW); // Включаем реле №4 (напоминаю - у релейного модуля на входе логика инверсная, т.к. модуль с опторазвязками) }else if(state == 48) //Если актуатор в выключенном состоянии - в ответе на запрос будет символ "0" - ASCII код = 48 (десятичный) { digitalWrite(RelayChn4, HIGH); //Выключаем реле } } В принципе, вместо включениявыключения реле - можете подставить необходимые Вам действия....Итак, реакцию на поступивший ответ мы определили, осталось организовать отправку запроса: Чтобы отправлять запросы необходимы строки типа: char queryString[256] = {0}; // это буфер для формирования строки запроса sprintf(queryString, "?apiKey= сюда подставить свой ключ"); ether.browseUrl(PSTR("/io/сюда поставить свой projectID/actuator/сюда поставить свой actuator ID/"), queryString, website, ActuatorCalback); При получении ответа, будет вызываться определенная выше функция, которая будет разбирать ответ, а точнее брать первый символ после стандартного заголовка и определять символ - ноль это, или единица, и делать соответствующие действия. Запрос, в каждом цикле - отправлять нельзя, во-первых, это ни к чему, во-вторых нехватит ресурсов микроконтроллера. Я отправляю запрос по каждому актуатору не чаще чем раз в 5 секунд Для этого можно организовать несложный таймер с использованием функции millis() и проверку в конструкции if. Я делаю проще, в начале каждого запроса я читаю в выделенную переменную, значение времени в формате unixtime - оно в секундах, сравниваю с временем в выделенной переменной и после выполнения увеличиваю выделенную переменную на 5 (например). В самом начале программы в секции определения переменных - выделенную для этого таймера переменную - нужно обнулить. Таким образом запрос на состояние актуатора будет выполняться не чаще чем раз в 5 секунд. В большинстве случаев - этого быстродействия - более чем достаточно... Теперь, тем, кому захочется обрабатывать несколько актуаторов: 1. В одном запросе - это невозможно....это конечно "дикость" и архаизм сознания разработчиков сервиса девайсхаб , но пока - это так...Я им написал вопрос...посмотрим, что ответят.. 2. Если делать несколько запросов (а именно - это и придется делать) то, их нельзя "прижимать" по времени друг к другу ближе чем 1-2 секунды...т.к. какая-то асинхронность в работе сетевой карты на физическом уровне видимо - все-таки присутствует...и последующий запрос, что-то портит у предыдущего.... Есть еще один интересный момент в работе сервиса devicehub.net В проекте можно организовать не только актуатор (кнопку с состояниями) а еще и sensor - т.е. датчик. Это интересная штука, графически отображающая различные состояния и значения... Например можно сделать сенсор для отображения температуры - выглядеть это будет примерно так: Для оправки значений в сенсор на сайте девайсхабнет - необходимо просто отправить HTTP запрос, можно не обрабатывать ответ, как в предыдущем примере. Формат запроса такой: "http://www.devicehub.net/io/ProjectID/?apiKey=ВАШapiKey&SensorID=Значение сенсора" Вот с сенсорами у них все-прекрасно - можно отправлять значение нескольких сенсоров в одном запросе, просто добавляя их в конец запроса через символ амперсанда, типа так &SensorID=Значение сенсора"&SensorID=Значение сенсора"&SensorID=Значение сенсора" Таким образом можно организовать несложный удаленный контроль и за температурой и за pH и за разными другими показателями...бинарные значения также можно отправлять - типа было включено/выключено в такое-то время...да мало-ли еще чего можно напридумывать, даже с таким не очень богатыми возможностями... Удачи.... Изменено 14.1.14 автор Z0RS |
|
#1917132 |
Посетитель
|
|
Есть arduino, хотелось бы собрать контроллер с рн для аквариума. Аrduino / http://www.ebay.com/... /. Будет ли функционировать Юсуповская схема? / http://www.aquafanat... /. |
|
#1919541 |
Постоянный посетитель
|
|
strannic Простой ответ на поставленный вопрос оказался проще чем я предполагал... Вот схема с того же сайта, откуда и Вы ссылку привели: http://aquacontrol.n... Тема - вот : http://aquacontrol.n... На схеме видно, что Выход операционного усилителя подключен непосредственно к аналоговому входу микроконтроллера ATMega 3216. Аналого-цифровые преобразователи у процессора ATMega3216 и ATMega2560 (это тот, на котором построена плата, на которую Вы дали ссылку) - аналогичные.... Вот цитата из даташита : " ...8/16-channel, 10-bit ADC (ATmega1281/2561, ATmega640/1280/2560)" Так что - можете смело применять ту часть схемы которая отвечает за усиление сигнала с pH - электрода и ORP-электрода... Кстати в той ссылке, что Вы привели http://www.aquafanat... в схеме усилителя ошибка - стабилитрон должен стоять "носиком" к плюсу. strannic Удлинить можно.... На кабеле в данном случае потенциал - постоянный...переменки - нет и волновые свойства он не проявляет... Коаксиальный в данном случае потому, что требуется защита от помех и оплетка ее выполняет.... Поэтому, при спайке - нужно обратить внимание на восстановление равномерности контакта в оплетке. А центральные жилы можно спаять просто в нахлест без выравнивания сечения....сверху - незатейливо за-изолировть. Длину более 3 метров делать - не рекомендую....вообще, понятно что, чем короче - тем лучше. Выносить плату усилителя далеко от ножки микропроцессора тоже - не стоит. Тут правила такие - все как можно ближе - вход с кабеля (с электрода) как можно ближе к усилителю, выход как можно ближе ко входу ADC микроконтроллера. strannic Волновое сопротивление, в данном случае - не важно какое.... А активное.... Вы обратили внимание, какого номинала стоит резистор на входе в Усилитель потенциала ? 1 мОм.... Так что сопротивление кабеля...здесь не важно.... |
|
#1919979 |
|
Посетитель
|
ARDUINO для автоматизации аквариума |
Спасибо за информацию! По этому вопросу осталось дело за малым..... После того как соберу конечно. Прикрутить к ATMega2560! Может кому встречался материал на эту тему? Был бы признателен. С pH Информация вроде встречается, а вот по поводу "Контроллера редокс потенциала" как бы сложнее. |
|
#1919991 |
Постоянный посетитель
|
|
strannic Вы такие странные вопросы задаете.... Что значит прикрутить? В схеме однозначно показано как. Земли соединяем, а выход операционника подаем на аналоговый порт. С которого считываем значение.... Вообще, и pH метр и тем более ORP - метр это по сути своей - миливольтметры. Если с ph - значительно сложнее ситуация, то - с ORP метром - как раз, все очень просто. Потенциал электрода в миливольтах = редокс потенциалу. Один миливольт к одной единице ORP-потенциала. Т.е. делаешь схему ORP - метра, затем калибруешь ее по образцовому калибратору, на котором можно выставлять значение напряжения в миливольтах с высокой точностью, хотя бы до единицы миливольта....я Fluke-ом калибровал, там точность до 2 знаков... Смысл калибровки - должно быть однозначное соотношение милливольт - в нескольких точках диапазона измерения, диапазон зависит о электрода - поэтому надо читать мануал на электрод... А программно измерение выглядит, вообще, очень просто - читаешь из аналогового порта значение потенциала, затем - делаешь фильтрацию заначения. Способов фильтрации - масса... Самый простой, это - усреднение нескольких значений за единицу времени. Фильтрация необходима т.к. будут небольшие колебания потенциала из-за качества электрода, наводок на кабель, качества сборки усилителя потенциала и деталей для него, и главное - очень низкой битности аналого-цифрового преобразователя. Затем выводишь полученный результат ....никакой математики.... Конечно, битность в 10 бит - для таких задач - это, конечно не то, чтобы много, а скорее наоборот....ну, конечно зависит какую точность хотите получить....с такими схемами и битностью, как в Вашем случае - лучший вариант, если удастся - получить точность около 0,05 единицы pH. или одной-двух единиц ORP. Если для измерения ORP-это, вообще не критично, то для pH измерения такая точность - не очень хороша....хотя все китайские приборы, которые обещают точность до 0,01 единицы ( ) - едва попадают и в 0,1 . |
|
#1920086 |
Посетитель
|
Еще раз спасибо за информацию. |
Говоря про материал в предыдущем сообщении, я имел в виду (как прописать все это на ATMega2560). Думаю у кого то стоит уже аналогичная система. Да бы не наступать на те же грабли.... кто то поделится! |
|
#1920430 |
|
Постоянный посетитель
|
|
strannic Т.е. если я правильно понимаю, сами Вы ничего писать не собираетесь...и будете подыскивать ПО, которое точно подойдет под Вашу конфигурацию? |
|
#1920995 |
Малёк
|
|
Z0RS мне кажется не с ардуины нужно начинать, а с веб сервера и протокола обмена с ардуиной. А то веб управление будет ой как тяжко сделать, а может и даже не возможно. Естественно если делать полноценное управление. Т.е. реал-тайм в обе стороны. Себе прикручиваю для этого mr3020+CyberWRT+modbus. Может есть что то более удобоваримое - не знаю. Но в любом случае, рисуя скетчи нужно плясать от формата данных, которыми будет плеваться в ардуину веб сервер (а то кусок кода, отвечающий за протокол, будет очень и очень большой) |
|
#1922255 |
Постоянный посетитель
|
|
azh122 Я конечно, не очень понимаю некоторые Ваши высказывания...например "реал-тайм" в обе стороны.... При применении физической среды EtherNet, и тем более TCP протокола - обмен данных в реальном времени не гарантируется вовсе....даже с дискретой времени 1 минута...т.к. это спецификации протокола....он нечего и не обещает в этом случае...поэтому, о реальном времени речь не идет вообще. А если нужна дискрета времени меньше...скажем десяток миллисекунд....то об Ethernet - речи уже не идет....тут будут другие физические среды и другие протоколы... И причем тут WEB сервер....для среднестатистического аквариумиста - это далеко не первое, что необходимо для автоматизации банки...а как раз наоборот. А ядро управляющих функций - из которых самая востребованная это многокомандный программный таймер - легко организуется на любой из плат ардуино - лишь бы пинов под вывод хватало - для коммутации нагрузки... Да..... и "полноценное управление" - это что? по Вашему? Т.е. ядро управляющих функций - разместить на стороне WEB-сервера? а Ардуино использовать для удаленного I/O ? Что к этому подталкивает - нехватка ресурсов амтеловских процессоров ? Если возникла такая потребность - необходимо брать другу платформу, например на ARM. Ставить на эту платформу тонкого Линя, на него WEB - и делать любое изощренное удаленное управление на сколько фантазии хватит. Сейчас много чего из TYNY дистрибутивов Linux можно поставить под ARM...но возможно, что и платформу придется подбирать - под набор дистрибутива... А для управления по-проще, типа - неспешно включить/выключить что-нибудь, переключить режимы работы, посмотреть температуру, pH и что вообще включено в данный момент - для всех этих вопросов - web сервера организованного на самом процессоре класса MEGA вышеуказанных плат - более чем достаточно...и делается он в несколько строчек кода. А мой "финт" в 3-м примере - это для тех, кто не может напрямую выпустить свой контроллер в интернет с реального IP адреса. azh122 А в чем удобоваримость то именно такого решения? Ну прошьете Вы Ваш роутер "сырой" прошивкой в которой для связи с ардуино - нет ничего и что дальше? Намного проще будет использовать WEB сервер на mr3020 и обмен с ардуино по EtherNet. Но более-менее серьезного web сервиса от mr3020 - ждать не приходится... А Модбас, я вообще - не понял к чему? Что с чем вы собираетесь соединять этой древней сетью на основе RS-485 интерфейса? У Вас есть какие-то устройства с этим интерфейсом? которые Вы хотите к ардуино подключить? Со стороны Ардуино придется ставить преобразователь TTL/RS-485, Потом найти библиотеку под сам RS-485, ModBus поверх него - это тоже отдельная библиотека... И после этого идет речь о удобоваримости этого решения ??? ну-ну... Как "удобно сварите" - "не забудьте" показать....так сказать тнуть носом.... Хотя конечно...ничего невозможного нет....просто в данном случае это не упрощение - а очень сильное усложнение общей структуры проекта управления аквариумом...очень сильное... azh122 Кусок отвечающий за обмен - всегда будет один и тот же.... А вот структура данных - она и описывается в программной конструкции под названием структура...один раз за весь код... И дальше - несложная функция по сбору данных в поля структуры.... Конечно можно и самому себе все усложнить...и из любой мартышки - всегда можно сделать слона или даже целое стадо. Код большим сделать - не проблема...маленьким и эффективным -проблема. Когда -то, очень давно....мой начальник пытался мне платить за количество кода.... Но...видимо по моим сильно "вспыхнувшим" глазам - он понял, что предложил что-то не то...а жаль....я бы сейчас писал это пост находясь на мальдивах...а не в богом забытом городе Нижегородской области... |
|
#1922317 |
|
Малёк
|
|
Так это.. Я не профи. Я лох в програмиировании. Просто типа хобби. Что нить прикрутить к аквасу, дому. |
|
#1922377 |
Постоянный посетитель
|
|
azh122 Да все ....не боги....и я не профессиональный программист уже....хотя и работал прикладником некоторое время.... Дело...в том, что данная тема - это тема про использование именно младшей линейки плат - ардуино. Платы Ардуино на процессоре AVR класса MEGA от фирмы ATMEL - как то очень мне понравились....хотя я их открыл для себя совсем недавно....Дешевые....а позволяют очень много.... В профессиональной деятельности - я сталкивался в основном с промышленными программируемыми контроллерами серьезных фирм (где-то выше я уже перечислял линейку производителей и она еще не полная...) Но там, для среднестатистического любителя аквариума, желающего автоматизировать процессы в банке - все очень ...ОООООЧЕНЬ дорого..... И задачу, которую на ардуино можно решить за 1000 рублей...вряд-ли удастся вписать в рамки одной тысячи долларов.... И когда Вы приводите аргументы в пользу другой конфигурации - она должна быть чем-то лучше: может быть дешевле, проще процесс программирования или настройки, большая повторяемость в Интернет...тогда да...аргументированный спор возможен... А чем лучше то - что Вы предложили? Попробуйте сами оценить. Да и моя цель в этой теме - не по-спорить ....а показать основы использования данной конфигурации - чтобы у аквариумистов пропал страх к самостоятельной работе с устройствами автоматизации....тем более, что Ардуино - очень дружественная к пользователю - непрограммисту, платформа.... ОООЧЕНЬ...дружественнее я не встечал... Язык упрощенной среды программировани Ардуино, это - Си. Си в базовом варианте - это не сложнее Бейсика....ведь никто не заставляет использовать весь "блеск" конструкций языка Си, его ООП (объектно-ориентированное программирование) парадигму (хотя даже в простых примерах это используется, т.к. эффективно и не сложно для осознания) . Можно обойтись конструкциями по-проще...и ведь...в итоге все будет работать...да - код будет не эффективный...да....использование ресурсов будет не оптимальным, но при такой цене "железа", это - можно компенсировать чуть более мощным микроконтроллером, чем это, на самом деле, требуется.... Конечно, с точки зрения привития философии языка Си - это в корне не верно.....ну тут двух зайцев не поймаешь.... azh122 Чтож...в личке - то? Или вопросы будут такие, о которых другим лучше не знать? azh122 Да....серьезное хозяйство получается... А я - туплю...по-тихоньку....мог бы и догадаться для чего ModBus будет использоваться. Да - сети на основе RS-485 интерфейса - хороши, именно для связи между устройствами автоматизации - так называемые "полевые шины"...И проводной ProfiBUS (промышленный стандарт) - он тоже на его основе. Да ...несколько микроконтроллеров, причем разнородных - можно этой сеткой увязывать...сеть с гарантированным временем доставки пакета...для надежной автоматизации самое оно... Можно и данные передавать на мастер-станцию...которая в Вашем случае уже должна быть чем-то по-серьезнее...Возможно и на какой-то ARM платформе или чем-то аналогичным - чтобы и не дорого и относительно функционально.... Но на роутер как Вы хотите - RS485 не затянете...придется делать промежуточное и "слабое" звено на платформе по-проще... А в случае ARM - можно полевую щину непосредственно к платформе обработки данных присоединить...получится и не дорого и довольно эффективно....точнее сказать - очень эффективно. Для примера - по подобной схеме до-сих пор строятся системы автоматизации в металлургии....конечно "железо" - другое...дорогущее...но смысл то тот же... Ну...конечно это потребует усилий по изучению много-чего....если в основе будет Linux..то его придется изучать слегка...потом ну всякие апачи с пчп джавами айяксами сиквелами - ну это в любом случае не на один выходной день.....и не на один десяток выходных дней.... azh122 Хозяин - барин.... Только ...зачем же в заблуждение вводить - в каких проектах она жрет много - при питании от батареек? Тогда да...и то...много это преувеличено... А при наличии AC/DC питания - это не существенно... Много жрет - периферия...а она от микроконтроллера не зависит..она все равно будет потреблять не мало...таже сетевая плата на основе ENC28J60 потребляет 110 mA - зато дешевая... Релейные модули по 40-60 мА на канал во включенном состоянии...причем в независимости к какому микроконтроллеру Вы их подключите... Так что ...это все - условно.... Часов т.е. если имеется ввиду RTC - нет ни на одном названном процессоре - просто в Вашем случае - RTC уже размазан на плате и датчик температуры тоже...так и цена-то выше...в любом случае - часы можно сделать на таймере...а, или если нужно восстанавливать значение времени после сброса и перезагрузки - все внешний RTC использовать - да стоит ли переживать - при цене вопроса 30-50 руб... При сравнении по цене - плата ардуино младшей серии на ATMEL ATMega самом среднем - "порвет" плату на основе TI MSP430. Но понятно - для разных проектов подойдет разное железо... Посмотрел Среду программирования для MSP430 - это брат близнец ATMEL Studio - "старшего брата" среды программирования ARDUINO. Но она и сложнее соответсвенно... Вообщем...все не так просто....поизучаю и MSP430 - очень возможно что скоро пригодится... |
|
#1922572 |
Малёк
|
|
Z0RS Да затягивается легко. Можно просто по USB воткнуть, если дуин не много. А можно с rf433 поиграться. в общем когда то вот с этой темы начинал: http://www.cyber-pla... работает. обновление раз в секунду. Только чуть подправить надо - 10-20 регистров для аквариумного светильника мало. MSP430. Просто быстро и удобно - уже через 3-4 дня курер DHL в дверь стучится. Да и лаунччпадом приходит два контроллера (так что цену можно на два делить). Кварц то же в комплекте есть (на таймере деалать - время уезжает). Ест мало - именно батарейка и спасала. конденсатор по питанию - вот и вся обвязка. Есть еще один плюс того что мало жрет - входы легко утягиваются резисторами в 1мом (ардуине и 100к много). Так что легко делаются датчики уровня воды, протечек и пр. В общем хорошее решение для отдельных мелких задач. Еще мне ARM проц на 80мгц (платка за 13 долларов). Правда экранчик к нему стоит 35долларов (но зато по качеству на голову выше тач скрина для меги). можно поробовать просто андроид девайс подцепить (USBхосту не пропадать же)... И все это программируется на энергии (http://www.energia.nu/) - которая отличается от ардуиновского софта только разве что цветом. В общем вариантов много. А куда и как правильнее двигаться - не знаю, весь в сомнениях. Пока просто пока леплю простенькие контроллеры под конкретные задачки и потихоньку цепляю их на роутер. Там, кстати, готовый модуль отсылки почты есть. А где почта - там и смс оповещение. Вот в выходные попробую прикрутить. Изменено 20.1.14 автор azh122 |
|
#1922602 |
|
Постоянный посетитель
|
|
azh122 В принципе - да....этот роутер, как и многие другие - по сути своей тоже платформа с Линем...всего скорее....уточнять не охота, т.к. в роутеростроении - альтернатив почти нет. ЮСБ есть...значит много чего можно прицепить....теоретически ....практически - это может вылится в необходимость компилировать самостоятельно драйвера конвертера интерфейсов USB/RS-485, ну это - если все-таки контроллеры будете в проводную сеть объединять на основе RS-485, которую в свою очередь затягивать на роутер. А компилеж софта под линь - а это вообще, занятие не для среднестатистического аквариумиста, согласитесь? Тем более компилеж драйверов... PS: посмотрел Инфу по mr3020 - у него же на плате последовательный порт с TTL уровнями разведен...и не используется....можно на него повесить TTL to RS485 конвертер. С беспроводным модулем - организовать взаимодействие - это да...проще....но потребует на каждом устройстве управления наличие модуля....цена конечно копеечная.... Посмотрю на досуге - что может этот модуль.... PS : Посмотрел...мда...это - всего лишь транслятор TTL уровня...причем одноканальный....т.е. один цифровой порт микроконтроллера можно одним модулем оттранслировать в друге место - как бы до 60 метров...и все...Питание 3.3 В - тоже специфично....потом, не увидел на модуле никаких устройств для адресации модуля...т.е. похоже, что 2 пары модулей работающих рядом - будут друг-другу мешать...Скорость передачи 9 килобит ... Что- то мне подсказывает, что организовать обмен хоть сколь-конибудь значимого количества данных - на этим модулях - будет проблематично... Но себе закажу пару - пар таких....поиграюсь... azh122 Нашел таки...интересную для меня отличительную особенность микропроцессоров данной серии - в некоторых моделях есть аж... 24 - битный дельта-сигма аналого-цифровой преобразователь...Это ...да....это гуд...вэри гуд....Спасибо за неожиданную подсказку!!! Обязательно закажу себе таких МК несколько - для прецизионного pH-измерителя.... А то с 10 битным - слишком много надо с "бубном" плясать даже для того чтобы плюс-минус 0.05 единицы Ph "наплясать".... А здесь - с хорошим электродом никак не меньше 0,005 можно выдать, а уж 0,01 - стандартно.... azh122 Да... это - тоже очень хорошо...ардуине и 50К много для стабильной подтяжки... стандартно, я смотрю - все используют 10К на I/O пинах ...а вообще 20-50 по даташиту. Однако борьбе с наводками и шумами сигнала - придется отводить больше внимания....ATMEL-овские железки в этом плане более непробиваемые... Правда и одно Но - нашел ...TTL уровни - 3 вольтовые...т.е. применение большого класса дешевейших устройств с TTL уровнями 5 вольт - без преобразователей уровня - закрытая тема.... Это - "расплата" за пониженное энергопотребление... Хотя в принципе - тенденция перехода на пониженные уровни - в последние пару - тройку стала сильно прослеживаться.... azh122 Ой...я в шоке...даже шрифты похожие...вот что значит рынок....интересно "кто под кого закосил" ATMEL под TI или наоборот....? А вообще - понятно, что это одно и тоже...только набор библиотек другой да "коннекторы" к платам другие. PS: Нет....энергия чуть по - хуже будет....размер скетча в коде - не показывает..система вывода ошибок - мутнее... И цветовая гамма - это "что-то" ...такая зловредная... На PROGMEM - ругается....интересно а, что в этом диалекте Си - нет такого макроса? Как данные во Флеше оставляют? Мда.....разбираться нужно.... Да...веселая у Вас задачка ...интересная.... Но она выходит за рамки данной темы.....а открывать еще одну на аквариумном форуме - более чем смешно будет.... Но я бы пообсуждал кое-что.... azh122 Вообще...как мне кажется Вы скромничаете слегка.... Я к сожаленью сейчас слегка стеснен в средствах - иначе на столе много чего-бы лежало из возможных железок.... А так...вариантов - вообще очень много....нужно остановиться на чем-нибудь что покроет задачи с запасом...и этого в любом случае на много лет хватит.... А цены на электронику такого класса - снижаются ...ну понятно что рубль...доллар играют в свои игры...но электроника все равно весьма доступна...никто же не помешает с использованием одной платформы - исследовать неспешно другую.... Изменено 21.1.14 автор Z0RS |
|
#1922611 |
Малёк
|
|
Про rf433 свои слова беру обратно. Готового, надежного и дешевого решения нет. |
|
#1922789 |
Постоянный посетитель
|
МНОГОКОМАНДНЫЙ МНОГОКАНАЛЬНЫЙ ТАЙМЕР |
Написал код для многокомандного и многоканального таймера. |
|
#1924645 |
|
Посетитель
|
ARDUINO для автоматизации аквариума |
Много читал... Приобрел Вот эту Arduino SainSmart Mega2560 R3 . Попытался прошить. Но выдает постоянно ошибки(скрипт с ошибкой). Подгружаю другие скетчи (для проверки) белый экран. В чем проблема? |
|
#1934089 |
Постоянный посетитель
|
|
strannic Прошу прощения, за опозание с ответами...несколько дней не было сети и соответственно и Интернет..... Мега - хорошая штука...хотя и не очень эффективна по вложению денежек...но в любом случае - "поиграться" с этой платформой можно значительно больше и продуктивнее для собственного опыта, чем на UNO R3. Я вот, уже "упираюсь" в недостаток ресурсов 328 процессора на плате UNO. strannic Я к сожалению, могу только догадываться что, за ошибки при компиляции скетчей у Вас возникают. Лучше их указывать. А судя по указанию на наличие белого экрана, и некоторым предыдущим сообщениям, у Вас - есть в наличии графический дисплей. Его необходимо "привязывать" и настраивать. Т.е. необходимо, либо знать протокол обмена с дисплеем, знать по какому интерфейсу он привязан, и реализовать протокол обмена самостоятельно, или использовать готовую библиотеку. Все это справедливо для любого периферийного устройства, присоединяемого к основным платам Arduino. Конечно, использование начинающим программистом относительно сложных устройств, типа TFT дисплея или GSM модуля, осложняет то, что соответствующие библиотеки - практически не документированы, или слегка документированы на английском языке. Но, кого это - когда останавливало? ... |
|
#1937449 |
Малёк
|
|
здравствуйте, подскажите пожалуйста как проще организовать рассвет закат. |
|
#1939307 |
|
Постоянный посетитель
|
|
electron Давайте уточним - будет ли использоваться RTC в проекте, и на какой плате будет собираться проект...точнее интересно какой будет использоваться микроконтроллер? Потом, как я понимаю, длительность рассвета тоже будет фиксированная и задаваться константой? И последний вопрос - яркость в период рассвета должна линейно нарастать или по какой-то функции нелинейной? Ведь в природе освещенность места во время рассвета нарастает не линейно.... |
|
#1939575 |