Архив

Архив раздела ‘Программирование’

Прототип удаленного датчика на базе модуля TR24A

Как и обещал, выкладываю начальную версию удаленного малопотребляющего датчика на основе 2,4ГГц радиомодуля TR24A.
В данной версии связь односторонняя, т.е. датчик только передает данные хосту. По этому, при использовании нескольких устройств в одной сети возможны «коллизии».
Данная схема позволяет подключать «народный» термометр DS18B20, а также емкостный датчик относительной влажности воздуха HCH-1000

Читать далее…

Универсальный драйвер питания мощных светодиодов 2.0

Откопал недавно драйвер питания светодиодов. С тех пор он подвергся некоторой доработке.
А именно, максимальный ток светодиода и опорное напряжение батареи настраивается теперь при помощи дополнительной кнопки на незадействованной ноге контроллера.

Читать далее…

TR24A + USB

Давным давно закупил на Космодроме несколько этих модулей, вот дошли руки с ними поиграться.

Читать далее…

Мониторинг напряжения батареи в микроконтроллерах AVR

18 октября 2010 8 комментариев

При разработке автономных малопотребляющих устройств довольно часто возникает проблема контроля заряда батареи. Существует довольно много проектов, где тупо ставится делитель из двух резисторов на ногу АЦП. Если делитель будет 470к/100к — то при питании от 3В уже выходит ток порядка 5мка. Обычно ставят сопротивление на порядок меньше, что иногда дает ток утечки на этих резисторах соизмеримый со средним током потребления всего устройства.

В современных микроконтроллерах AVR есть недокументированная возможность, про которую почему-то мало пишут в интернетах. Есть возможность в качестве опорного напряжения выбрать AVCC, а в качестве измеряемого — опору Vbg (обычно, 1.1В) В таком случае имеем несколько плюсов: не требуется постоянная утечка тока на делителе, экономится, как минимум одна нога (что очень критично в восьминогих tiny-контроллерах) и не требуется никаких внешних компонентов.
Пока что этот вариант был опробован на МК ATTiny25V. Для вычисления напряжения питания можно воспользоваться слудующей формулой

Uavcc = 1.1*1024/ADC

Конечно, тут требуется калибровка, потому можно не заниматься вычислениями, а просто забить в EEPROM несколько значений, соответствуюзих различным уровням напряжения батареи.
Еще одно важное замечание. Переключение мультиплексора АЦП в таком режиме происходит не сразу, из-за чего первые 5-6 результатов измерения будут недостоверными (в режиме Free-Run). У меня обычно АЦП работает в непрерывном режиме с усреднением. И при переключении входов отбрасываются 1-2 выборки, но в данном случае пришлось отбрасывать 8 первых выборок.
Осталось проверить, как это будет работать на других контроллерах.

Самодельный велокомпьютер

10 августа 2010 32 комментария

Сразу после покупки велосипеда пришлось закупиться всякой необходимой мелочевкой: спидометр, фара, задняя мигалка, насос…
Хотелось как всегда, побыстрее все взять, поставить и кататься. Первая попавшаяся фара оказалась говеной, вторую подарили — чуть лучше, но еще есть, что улучшить. Насос тоже пришлось обновить…
Велокомпьютер.
Опять же, по-быстрому был куплен первый подвернувшийся за 12-15$ «велокомпьютер» типа Longus BR3. Стандартная фигня с одним датчиком и стандартным для этого дела набором функций (в количестве около 10). Но именно велокомпьютером эту штуку, лично я, называть не могу. Спидометр+одометр. Вычисление скорости мгновенной и средней не такая уже серьезная задача, чтоб называться компьютером.
Для того чтобы девайс назывался велокомьютером или же велонавигатором, на мой взгляд, необходимы следующие стандартные функции(модули):

  • скорость (датчик на колесе);
  • скорость вращения педалей(датчик на педалях);
  • измерение пульса (пока не особо знаю теорию);
  • измерение высоты (барометр/GPS);
  • определение угла подъема/спуска (акселерометр);
  • измерение температуры (DS1820);
  • и стандарные функции подсчета расстояния, средних скоростей и т.д.


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

  • Измерение текущих координат, скорости, направления (GPS);
  • Хранение трека пройденного пути (SD-MMC-карточка);
  • Задание путевых точек и указание направления к ним;
  • Связь с компутером (Картридер, USB или беспроводная);
  • Беспроводная связь с датчиками (чтоб не было лишних проводов);
  • Управление освещением (тоже по радиоканалу);


Опять же, список можно дополнять, но в при наличии готового правильного железа это все будет несложно реализовать позднее программно.
Из готовых девайсов с похожим функционалом нашлось что-то типа, Garmin Edge, Polar CS600 Power, где цена начинается от 500$ и датчики по 100$. Но на такое и денег жалко и самому все-таки гораздо интереснее сделать.
Также когда-то находил такую тему: http://forum.ixbt.com/topic.cgi?id=48:7153, но там и фукнкционал гораздо скромнее, и непонятно чем все закончилось.

Читать далее…

Снова OpenID: server_not_allowed

12 апреля 2010 Нет комментариев

После восстановления работоспособности сайта пришлось заново логиниться на некоторые сайты с использованием OpenID-авторизации. Как и ожидалось, сразу все не заработало.
На livejournal.com и многих других сайтах, где использовался perl-модуль OpenID многозначитально писало: server_not_allowed.

WordPress и некоторые другие сервера которые нашел для тестов ругались более осмысленно: No matching endpoint found after discovering http://klim.in.ua/

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

Оказалось, что где-то в недрах плагина ошибка все-таки нормально диагностируется, но наружу этот текст не выдается:
OP Endpoint mismatch. Expected http://klim.in.ua/wp/index.php/openid/server, got http://klim.in.ua/wp/openid/server

После недолгих поисков нашел, что этот некорректный дарес выдается через XRDS (http://klim.in.ua/wp/?xrds):

  1.  
  2. <!— OpenID Consumer Service —>
  3. <Service priority="10">
  4. <Type>
  5. http://specs.openid.net/auth/2.0/return_to
  6. </Type>
  7. <URI>
  8. http://klim.in.ua/wp/index.php/openid/consumer
  9. </URI>
  10. </Service>
  11.  

Выдает такой адрес файл openid/common.php:

  1.  
  2.         if ($wp_rewrite->using_permalinks()) {
  3.                 $url .= ‘index.php/openid/’ . $service;
  4.  

пришлось поправить на:

  1.  
  2.         if ($wp_rewrite->using_permalinks()) {
  3.                 $url .= ‘openid/’ . $service;
  4.  
  5.  

После чего все нормально заработало.

Авторизатор для сети biscom(inn-com) на dir-320

10 сентября 2009 17 комментариев

Решил переделать перловый вариант авторизатора для сети, чтобы можно было нормально в виде демона запускать. Также перловый не устраивал количеством пожираемой памяти (около 7 мбайт).

Нашел исходники подобной штуки для роутера, но для другой сети.

Немного покопавшись в коде перлового варианта и Qt-шного получил представление об алгоритме обмена между сервером авторизации и клентом.

Скачать biscom-auth.0.1.zip

Запускать просто:

  1. ./biscom-auth -p пароль

Если сервер авторизации отличается от 192.168.0.1, то нужно указать его в параметре -s, например:

  1. ./biscom-auth -p пароль -s 192.168.32.1

Также доступны следующие параметры:
-i — не запускать в режиме демона
-b — привязка к определенному своему IP-адресу
-l <буква> — уровень доступа (a — мировой, b — заблокировано (желтый ключ), c — городской (локальный)
Также, по идее можно нормально скомпилить для любой linux-оси. Возможно, будет работать в других сетях, работающих с биллингом Nodeny.
UPD 2009.09.28: Версия Makefile под «настольные » системы+скрипт управления и скомпиленный под Kubunt’ой вариант от AndreyUA: auth-0.1.zip

Также обсуждение этого дела на форуме: http://forum2.biscom.zp.ua/showthread.php?t=2515&page=7