XControl V2 готов!

Спустя несколько лет после выхода XControl появился XControl V2, который при то же цене сильно превосходит его по характеристикам.

Сначала хотелось бы объяснить, из чего состоит сам проект. Изначально он так и назывался XControl, это была программа, которая могла опрашивать одно или несколько аппаратных блоков XControl. Затем, по мере роста, программа и устройство были разделены на 2 независимые части — устройство XControl V1 и программа XControl Dispatcher (x-ctrl.net), которая уже могла работать и с другими устройствами, других производителей.
Теперь на замену XControl V1 пришел XControl V2.

XControl V2 может успешно конкурировать с ПЛК в сегменте простых задач, так как имея возможность выполнения скрипта и поддержку промышленных стандартов, его цена составляет в среднем 55$, в то время как цена на другие ПЛК начинается от 160$.
Читать далее «XControl V2 готов!»

STM32F1. Подлючение диспея nokia 1202 к аппаратному SPI

Есть у дисплеев данного типа одна особенность — длина «байта» у них 9 бит, что затрудняет подключение его к аппаратному SPI большинства микроконтроллеров. Так как я сторонник использования аппаратных ресурсов, а не «ножкодрыганий», то решил как то выкрутиться. Порывшись в инете, нашел несколько мыслей, суть в том, что надо паковать 9-битные данные в обычные 8-битные массивы, а потом будет передавать буфер. Соответственно, отправлять буфер на дисплей надо будет только после того, как в нем наберется 9 байт (8-битных), а если не набралось и надо отправить, тогда дополняем буфер NOP’ами.
Читать далее «STM32F1. Подлючение диспея nokia 1202 к аппаратному SPI»

ICMP запросы (Ping) на uIP

Стек uIP умеет только отвечать на ICMP запросы (если его пингуют, к примеру), но не умеет их отправлять. Исправим это.

Составляем IP заголовок

#define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
 
ICMPBUF->vhl = 0x45;
ICMPBUF->tos = 0;
uint16_t	len = sizeof(struct uip_icmpip_hdr);	// длина будет равна заголовку ip + icmp
ICMPBUF->len[0] = len >> 8;
ICMPBUF->len[1] = len & 0xff;
uint16_t	ipid = 0;
ICMPBUF->ipid[0] = ipid >> 8;
ICMPBUF->ipid[1] = ipid & 0xff;
ICMPBUF->ipoffset[0] = ICMPBUF->ipoffset[1] = 0;
ICMPBUF->ttl = UIP_TTL;
ICMPBUF->proto = UIP_PROTO_ICMP;
// указываем свой ip и ip удаленного устройства.
uip_gethostaddr(ICMPBUF->srcipaddr);
uip_ipaddr(&ICMPBUF->destipaddr, 192, 168, 1, 1);	// адрес, который будем пинговать
 
ICMPBUF->ipchksum = 0;
ICMPBUF->ipchksum = ~(uip_ipchksum());
 
ICMPBUF->type = 8; //ICMP_ECHO;
ICMPBUF->icode = 0;
ICMPBUF->icmpchksum = 0;
ICMPBUF->icmpchksum = uip_chksum((uint16_t*)&ICMPBUF->type, 8);
ICMPBUF->icmpchksum = ~((ICMPBUF->icmpchksum == 0) ? 0xffff : ICMPBUF->icmpchksum);
 
uip_len = UIP_IPH_LEN + 8;	// длина равна заголовку ip + заголовку icmp

Далее пуляем arp

uip_arp_out();

Читать далее «ICMP запросы (Ping) на uIP»

STM32F4. Обновление прошивки с карты памяти (Bootloader SD)

Микроконтроллер STM32 имеет довольно много способов обновления прошивки, лично я использую SWD, иногда UART. Тем не менее, для прошивки этими способами нужно как минимум программатор или TTL переходник, плюс нужно устанавливать специальный софт и т.д., что составляет трудности людям, не обладающим необходимыми техническими знаниями. Собственно, с моем случае нужно было максимально упростить процесс обновления прошивки. Устройство на базе STM32F407VG и имеет карту памяти, подключенную к SDIO, обновление прошивки решил сделать через карту памяти.

Для этого нужно создать бутлоадер. Алгоритм следующий:

  1. При включении бутлоадер проверяет наличие на карте памяти файла с определенным названием, пусть называется «FLASH». Файл обязательно должен быть бинарным, без всякой служебной информации. Обычно у него разрешение *.bin, а hex и elf не подходят, но есть программы, которые могут конвертировать эти форматы в bin.
  2. Если найдено, считываем и записываем в постоянную память микроконтроллера (флеш-память).
  3. Переходим к основному приложению.
  4. В основном приложении проверяем наличие этого файла, если он существует, удаляем, чтобы после перезагрузки перепрошивка не началась повторно.

Читать далее «STM32F4. Обновление прошивки с карты памяти (Bootloader SD)»

XControl. Управление через компьютер, телефон, планшет или веб-браузер

Продолжение проекта: http://xc.kibermaster.net/. Видеоблог.

Обновлено 24.06.14. Теперь доступно под Linux!

biiiig_

XControl представляет из себя программно-аппаратный комплекс, с помощью которого можно управлять электроцепями, а так же, контролировать разнообразные датчики через компьютер, телефон или планшет. Система состоит из основного аппаратного блока и двух программ – XControl Диспетчер, которая предоставляет возможность просматривать одновременно за несколькими аппаратными блоками, программы XControl-Configer. Программа XControl Диспетчер доступна для Windows, Linux и Android.

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

Текущие версии комплекта файлов:

  • Программа XControl Диспетчер (Windows, Linux и Android) — 2.2.2
  • Программа XControl Конфигуратор — 1.1.5
  • Прошивка — 1.7.3
  • Документация — 1.6.3

Обновления

  • 24.06.14:
    • Программа XControl Диспетчер теперь доступна и под Linux.
    • В программе XControl Диспетчер исправлена ошибка, из-за которой в некоторых случаях происходила утечка памяти (Это когда объем занимаемой оперативной памяти программой постоянно увеличивался).
  • 26.03.14: Настройки программы теперь хранятся в текстовом виде.
  • 16.03.14:
    • В диспетчеркской программе XControl добавлена возможность автоматического включения контактных выходов в заданое время, запись изменения значениий в файл, а так же, окно состояния связи с устройствами. Исправленно очень много ошибок в Android версии.
    • Мелкие фиксы в прошивке.
  • 07.12.13:
    • В диспетчеркской программе XControl добавлена возможность отображения графика и отправка извещения на email. Настройки этой программы теперь хранятся не в реестре, а в файле, благодаря чему можно использовать файл настроек на другом компьютере. Для ярлыков добавлена достаточно полезная функция — задержка смены уровня, благодаря чему события не будут происходить при «мерцании» состояния. Так же, добавлена возможность запуска командной строки при событии.
    • Мелкие фиксы в прошивке.
  • 31.10.13: Исправлена в прошивке ошибка, из-за которой в диспетчерской программе иногда отображалось не известное состояние выхода.
  • 31.10.13:
    • Добавлена возможность подключения расширительных модулей, благодаря чему можно увеличить количество контактных выходов до 23.
    • Добавлена возможность автоматического управления выходами по напряжению аналогового входа (подобно термостату).
    • В программе XControl файл со стилями теперь открыт и его можно свободно редактировать (к примеру, изменить размер шрифта).
    • Еще очень много исправлений.
  • 14.09.13: Исправлена проблема с приемом команд с ПДУ, которая появилась в прошлой прошивке.
  • 08.09.13: Сделано очень много исправлений в программах и прошивке:
    • Исключены названия с датчиков.
    • Добавлена возможность инвертирования входов.
    • Расширение возможностей XMLHTTPRequest.
    • Добавлена возможность устанавливать количество сервисов, так как часто они не нужны в таком количестве.
    • Сделана проверка входящих данных. Теперь программа не вылетает при проблемах с сетью.
    • Добавлена возможность перепрошивать устройство прямо через конфигуратор.
    • Еще много мелких исправлений.
  • 28.08.13: Добавлена возможность автоматического отключения канала через заданное время.

Читать далее «XControl. Управление через компьютер, телефон, планшет или веб-браузер»

USB Термометр. Коммерческая версия

USB Термометр является законченным устройством, практически сразу готовым к работе.

Обновлено 15.04.15. Добавлена возможность интеграции с XControl Dispatcher

Характеристики:

  • Максимальное количество термодатчиков: 31 (включая установленный на устройстве).
  • Питание от USB порта компьютера (не требует внешнего блока питания).
  • Пределы измерения температуры: -55…+125 °C, точность в пределах -10…+85 не менее 0,5°C.
  • Количество выходных каналов для управления нагрузками: 2 шт.
  • Максимальный ток: 10мА, напряжение при активном выходе: 5В.
  • Защита от статики.
  • Работа  в 32 и 64-битных операционных системах Windows HomeEdit и выше.
  • Отображение минимальной и максимальной температуры и время, когда она была зафиксирована.
  • Возможность экспорта температуры в Excel нажатием одной кнопки.
  • Огромный выбор скинов и возможность создания их самостоятельно.
  • Плавающее окошко с отображением температуры.

Читать далее «USB Термометр. Коммерческая версия»

LAN Control V2

Обновление №1 (19.03.2013). Обновил описание.

Более функциональное устройство, рекомендую посмотреть XControl

Итак, сделал вторую версию LAN Control, о первой можно почитать здесь.

Судя по комментам, пользователям очень не хватает двух функций — пароля и гистерезиса, в этой версии они добавлены. И самое приятное — схема и плата не изменилась.

Читать далее «LAN Control V2»

USART/RS485 Bootloader для AVR

Понадобилось мне прошивать ATmega88, которая находится в труднодоступном месте, куда с ISP программатором залезть не получится, но от нее идет шина RS485, по которой атмега общается с компом, вот через нее и можно перепрошивать.

Как вы уже догадались, для этого мы будем использовать Bootloader (бутлоадер). Объяснять что это такое я не буду, инфу о нем вы можете найти в инете. С нуля писать бутлоадер не хотелось, да и плюс я на компе нашел уже готовый, который использовал года 2 назад, автор этого бутлоадера Martin Thomas. Со стороны компа используется программка AvrProg.exe, которая входит в комплект AVR Studio, а в МК бутлоадер занимает 512 слов (1Кб), но после моих доработок стал весить 2 Кб, конечно же, кому то это покажется много, но меня вполне устраивает (даже для Atmega8). Изначально, в бутлоадере было 2 минуса — он не поддерживал ATmega88 и не работал по RS485, но я это исправил.
Читать далее «USART/RS485 Bootloader для AVR»

Регулируемый источник тока светодиодов

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


Вот схема:

Итак, если нужен выходной ток 1А без возможности регулировки, то ставим С3 и не устанавливаем R3, C4, R5, R6, U4 и R2, если нужно регулировать выходной ток, то наоборот, устанавливаем R3, C4, R5, R6, U4 и R2, а С3 не ставим. ZXLD1362 устанавливает выходной ток в зависимости от напряжения на 3 ноге, оно должно быть не более 2 вольт и не должно зависеть от напряжения питания микры, поэтому, установлен источник опорного напряжения TL431. C помощью резисторов R6 и R5 задано выходящее напряжение 3В, этим напряжением питается потенционометр R2, которым, собственно, и устанавливается выходящий ток. Супрессор D3 защищает светодиоды от превышения тока, его номинал (напряжение) нужно подобрать так, чтобы оно было немного выше от падения напряжения на светодиодах. У XPG при 1А падение будет 3-3,2В, у меня стоит 3 последовательно, это 9В, при 10В они не погорят, поэтому я сделал ограничение 10В. Предохранитель R4 конечно же, намного лучше ставить последовательно светодиодам, но на плате тупо не было места, чтобы его туда влепить, поэтому я и поставил его сразу на входе. Разводка получилась такая:

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

И еще: токозадающий резистор греется, хотя палец на нем держать можно. Чтобы уменьшить нагрев, можно установить более мощный резистор, но я просто допаял еще 2 резистора 0,1 Ом параллельно установленному, да и КПД так будет повыше.

Скачать файлы статьи (48 Kb)

LAN Control. Система удаленного управления через локальную сеть, Интернет и ПДУ

Появилась вторая версия устройства Lan Control V2

Более функциональное устройство, рекомендую посмотреть XControl

Обновление №4 (16.02.2013). Выставил  на продажу.

Почти 2 года назад, я разработал устройство Universal Device (http://unidev.org.ua/), но, как оказалось, оно слишком многофункциональное, вторая его проблема была в том, что он очень зависим от ПК. Мне присылали много писем, в которых пользователи устройства перечисляли плюсы и минусы. Теперь я решил разработать устройство, которое будет подходить большинству критериев:

  1. Устройство должно быть независимо от ПК.
  2. Управление функциями ПК (Винамп, курсор и т.д.) тоже бессмысленно.
  3. Уменьшить количество индикаторов.
  4. И самый важный критерий: полное удаленное управление на любом расстоянии (разумеется, через инет).

Еще писали, понравилось то, что такое многофункциональное устройство уместилось на односторонней плате, поэтому, и это я тоже постарался уместить на односторонней плате.

Какой интерфейс применить? Не долго думая, я выбрал Ethernet, а в качестве интерфейсной микросхемы —  ENC28J60. С момента появления этой микросхемы, уже создано много самоделок (например http://www.rlocman.ru/shem/schematics.html?di=55066), они подключаются к роутеру, и имеют WEB интерфейс, это значит, что с помощью браузера до устройства можно достучаться через его IP, к тому же, не только в пределах локальной сети, настроив в роутере проброс порта, можно получить доступ по IP роутера через  любое устройство, подключенное к инету. Но если такие устройства уже есть, зачем же мне разрабатывать еще одно? Если у Вас IP статический, то зная его, вы всегда можете получить доступ к устройству через инет, но статический есть далеко не у всех, а если вы используете GPRS/3G инет (как я, CDMA), то статический адрес приходится покупать за дополнительную плату. Но в моем устройстве нет этого недостатка, к нему можно получить доступ с помощью логина и пароля, не зная IP.

Читать далее «LAN Control. Система удаленного управления через локальную сеть, Интернет и ПДУ»