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

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

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

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

Читать полностью

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

Продолжение проекта: http://www.x-ctrl.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: Добавлена возможность автоматического отключения канала через заданное время.

Читать полностью

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 нажатием одной кнопки.
  • Огромный выбор скинов и возможность создания их самостоятельно.
  • Плавающее окошко с отображением температуры.

Читать полностью

LAN Control V2

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

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

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

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

Читать полностью

USART/RS485 Bootloader для AVR

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

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

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

Несколько раз меня спрашивали, как сделать на 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.

Читать полностью

Прием команд с пульта дистанционного управления

Обновлено 21.01.14. Исходники переписаны под AVR Studio 6 (с тулчейном)

В этой статье я расскажу, как принимать команды с пульта (ПДУ) с кодировкой RC5. Подробное описание протокола не имеет смысла так как этого в интернете предостаточно.

Схема:

Микроконтроллер Atmega8 (тактирование 1 МГц от внутреннего генератора), ИК-приемник TSOP1736 подключен к входу захвата ICP, на порту D висят светодиоды.

Читать полностью

Работа с шиной 1-wire. Подключение термодатчика DS18B20 к AVR

Обновлено 21.01.14. Исходники переписаны под AVR Studio 6 (с тулчейном)

Сразу хочу сообщить, что в этой статье я не буду описывать принцип работы шины (описание временных слотов и т.д.). Статья будет типа «Быстрый старт». Конкретно: я выложу свою библиотеку для работы с 1-wire, опишу как ею пользоваться, как подключить устройства к шине, как производить поиск устройств, передавать данные и т.д. А так, как (вероятно) 70% радиолюбителей в первую очередь решит подключить к шине термодатчик DS18B20, я выложу библиотеку для работы с DS18B20, где надо тупо запустить преобразование, подождать пока идет преобразование и записать температуру в массив.

Теория

Итак, 1-wire(еще называют MicroLAN, dallas-wire) так назвали потому что для передачи данных в обе стороны используется только 1 провод. Среди самых популярных устройств, работающих на этой шине можно выделить термодатчик DS18B20 и электронный ключ DS1990 (которым вы в подъезде двери открываете). У сети 1-wire есть одно ведущее устройство(Master) и несколько (или 1) подчиненных (Slave). Бывают сети с несколькими ведущими, по это нам сейчас не нужно. Передачу данных начинает ведущий, только он может посылать сигнал сброса (Reset), остальные устройства могут только отвечать на его запросы. Все устройства подключаются к шине параллельно, то есть, линию данных с каждого устройства (она обозначается DATA, DQ или OW_DQ), включая линию ведущего, подключают к одному проводу, типа вот так: 

Еще линия должна быть подтянута к питанию через резистор 2,2-4,7 кОм. Каждое устройство имеет свой индивидуальный 64-битный адрес, который устанавливается при изготовлении устройства (прямо на заводе). Читать полностью

Замена стандартной функции _delay_ms()

Если вы программируете микроконтроллеры, тогда, наверно, уже знаете предназначение функции _delay_ms(). Она делает задержку на указаное количество милисекунд.  С моей точки зрения, у нее есть 3 минуса: она не работает с отключенной оптимизацией, во время ее выполнения текущая функция ничего не делает, кроме тупления в одном месте и если часто возникают прерывания, то время задержки увеличивается. Именно по этому я уже давно не пользуюсь этой функцией, а задержки делаю с помощью таймера.
Читать полностью

Многоканальный USB-термометр. Продвинутая версия.

Обновление №4 (17.02.2012). Выложил исходники программы МК

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

Должен признаться, что веб-сервис был довольно глючный, поэтому он несколько раз усовершенствовался и до сегодняшнего дня был в режиме тестирования. Теперь он полностью работоспособен! Программа для ПК и прошивка не изменялись.

Читать полностью

Переделка ультразвуковой ванночки Ya Xun YX2000A

Перед покупкой уз-ванночки я долго бегал по городу и заходил в сервисные центры, где ремонтируют мобилки, чтобы узнать, какими ванночками пользуются ремонтники, практически у всех была Ya Xun YX2000A. В двух сервисниках я решил спросить у ремонтников, чем им нравится эта ванночка. Она сказали, что она достаточно надежная и имеет 2 режима мощности – 35 и 50 ватт (при 50 ватах очищается быстрей, но иногда кварцы выходят со строя, поэтому тут две мощности).  Ну и плюс она металлическая, а значит, более надежная. Вот только им очень сильно не понравился способ управления: дефолтовое время 240 сек для 35 Вт и 180 для 50 Вт, к тому же, настройки не сохраняются в энергонезависимой памяти, а оставлять постоянно включенной китайскую технику, да еще и с конденсаторным питанием я не рискну, так как может загореться когда дома никого не будет. Я в тот же день пошел и купил эту ванночку. Когда принес домой, включил, она 2 сек потрещала и перестала, когда разобрал, то там оказался не припаян терморезистор, я его припаял – ванночка заработала. После этого, я ее мучил где то часа 3-4 (чистил все платы, которые валялись у меня). Должен признаться, что ванночка оправдала мои надежды. На следующий день, после изготовления очередной платы, я решил ее почистить. Включил ванночку, установил время на максимум (это заняло около 10-15сек ),  плата почистилась, ванночку выключил, через пару часов так само, тут установка времени начала трепать мои нервы. В общем через неделю я решил переделать таймер.
Читать полностью

Многоканальный USB-Термометр (Обновленно)

Когда то давно я написал статью о том, как сделать USB Термометр и разместил ее на двух сайтах. Девайс очень простой, но спустя пару дней, на мой имейл повалилось огромное количество сообщений с разнообразными вопросами и предложениями. С момента написания прошло уже около 2 лет, а мне все еще как минимум, раз в неделю приходит подобное письмо, но я уже давно перестал на них отвечать, так как вопросы порой слишком примитивны. Но вот примерно 70% народа интересуются двумя вопросами: можно ли подключить второй датчик и можно ли сделать в термометре функцию термостата. Сейчас у меня появилось немного свободного времени и я решил создать термометр с этими функциями.

Добавлено 31.10.2011: В устройство добавил новые полезные функции, подробности ЗДЕСЬ.

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

  • Максимальное количество датчиков — 32, один датчик установлен прямо на устройстве, все остальные подключаются к отдельному разъему.
  • Пределы измерения от -55С до +125°C, точность при 85°C и ниже не менее 0,5°C.
  • 2 канала управления внешними нагрузками. Возможно ручное и автоматическое (для термостата) управление.
  • Работа на операционных системах Windows 2000 и выше (включая Vista и 7).
  • Сохранение настроек программы в реестре.
  • Возможность задавать отображаемое имя датчика.
  • Мини-окно с возможностью установки размера и отображения поверх всех окон. NEW!
  • Отображение программы в трее. NEW!
  • Запуск программы вместе с Windows. NEW!
  • Перепрошивка через USB без использования внешнего программатора.

Читать полностью

GPS Bluetooth своими руками

У меня есть 2 телефона: смартфон  Motorola A1200e и КПК HTC BlueAngel, но ни на одном с них нет встроенного GPS, а мне иногда приходится бегать по городу по незнакомых местах, плюс я очень сильно люблю вечером ездить на велосипеде или мотоцикле туда, где ни разу не был, исследуя новые местности. Чтобы хоть примерно знать куда ехать, я пользуюсь мобильными Яндекс.Картами.

А вот на этой неделе со мной случилась неприятность — часов в 10 вечера, исследуя очередную незнакомую местность, я как то выехал на край горы, передо мной был спуск с пол километра и весь закидан щебенкой(!!!), такие дороги я просто обожаю,  не мог удержаться чтобы не спуститься вниз. Проверил велик на исправность, ведь если бы что то открутилось при спуске (а вибрация будет очень сильной), то этот день мог бы окончиться для меня очень трагически. С велом было все ок. Я поехал в низ. Передать все ощущения словами просто не реально, это было офигенно круто! Правда щебенка отлетала от переднего колеса и ударяла мне об ребра, но все равно было прикольно. Когда спустился, постоял минуты три, потом собрался ехать дальше, но… куда? Наверх по щебенке выехать не получилось бы, спереди — поле, слева и справа грунтовая дорога. Сидел долго на телефоне по карте искал где я нахожусь, но на картах грунтовых дорог нет. И тут я вспомнил, что через янд.карты можно посмотреть фотку со спутника, посмотрел, но где я нахожусь я так и не понял. Еще минут через 5 я начал подниматься наверх по щебенке, а обувь у меня была с тонкой подошвой, терь так ноги болят, что ходить почти не могу.

Вобщем поставил я себе обязательно условие: большие НИКОГДА не попрусь в темноте в незнакомую местность без GPS!!! Брать навигатор с дисплеем не хотелось, так как при езде у меня вещей минимум, а на велик если что то с дисплеем прицеплю, то все равно разобью. Тут вспомнил про такую замечательную вещь, как GPS Bluetooth — это приемник GPS, который может соединяться с каким нить устройством по блютузу (ноут, КПК, смарт и т.д.) и передавать ему данные с GPS модуля. Полез в инет искать, но самый дешевый нашел за 100$, за такие деньги я мог бы купить Б/У мобилу с GPS:). Можно конечно было бы купить GPS Bluetooth в китайском магазине (нашел за 40$), но китай есть китай, а мне нужен надежный модуль. Решил сделать его сам.

Читать полностью

USB->USART + JTAG ICE + RS485

Лично я с отладчиком JTAG ICE работаю крайне редко, но все же иногда приходится, но мне не нравится то, что его надо подключать через USB->COM так как у меня на ноуте нет СОМ порта. Еще в последнее время часто приходится работать с сетями RS485. В общем решил я сделать одно устройство, в котором будет преобразователь USB->USART, отладчики JTAG ICE и RS485.

В инете нашел схему самопального JTAG ICE на ATmega16, вот на его основе и сделано устройство. В качестве преобразователя USB->USART — широко распространенная CP2102, ну и для сети RS485 не менее популярная ST485.
Читать полностью

Управление электрическими цепями через USB

Обновлено 23.11.13. Теперь устройство на заводской плате!

Многие из нас наверно хотели бы управлять электрическими цепями через комп. А че? неплохо было бы))) Представь, звонит тебе друг, говорит: «Через 20 мин буду», тут проходит 20 минут, звонок в двери, но как же впадлу вставать из-за компа, идти открывать двери и т.д. А представь иную ситуацию: звонок в двери, тут у тебя на мониторе вылазит сообщение типа «У Вас гости», ты нажимаешь кнопку на компе — открывается магнитный замок на дверях и ты орешь на весь дом: «Заходи», или тебе нужно включить электрочайник, свет или еще что то. В наше время это уже не фантастика а вполне реалистично, только вот из-за хреновой экономики далеко не каждый может позволить себе даже самый простейший «смарт-хаус», но если есть желание и прямые руки, то можно запросто сделать управление электрическими цепями через ПК.

В наше время достаточно много людей умеют программировать, они могут написать программку под комп, которая смогла бы управлять внешними устройствами, но как подключить тот же электрочайник к компу? Ну можно к примеру через LPT порт, только вот его уже редко где можно увидеть, что тогда остается? USB!!!

Давайте сделаем устройство, которое будет подключаться к USB и сможет управлять электроцепями(например, включать освещение), реагировать на замыкание кнопок(например, дверной звонок) и еще что-то.
Читать полностью

Велофара 1000 люмен.

В самой первой статье (там я описывал свой велик) вы видели на велосипеде такую небольшую фару, но это при ее скромных размерах она имеет световой поток 1000 люмен! В этой статейке я ОЧЕНЬ ПОДРОБНО напишу как ее сделать.

Очень советую прочитать предыдущую статью.

Фара будет состоять с трех светодиодов, на двух будут стоять линзы с малым углом для дальнего света и одна с большим углом для ближнего. Дальний и ближний свет будет включаться отдельно двумя кнопками, также на коробке с драйверами будет установлен переключатель чтобы можно было отключать второй светодиод дальнего света для экономии электроэнергии. Питание фары от 6 до 60 вольт постоянного тока.

Читать полностью

Светодиоды. Вводная.

Вступление

Почему именно светодиоды? Да потому, что со всех осветительных приборов он имеет наибольший Коэффициент Полезного Действия (КПД).

Я не буду писать всякую муть о том, почему для освещения уже не применяю лампы накаливания, галогенки и ксенонки так как люди, которые выбирают освещение для транспорта (и не только) наверно уже встречали на форумах обсуждения источников света. Если вы думаете что лучше ставить какой то другой источник света, то напишите в комментариях — я докажу что светодиод лучше:). Хотя многие скажут, что большой минус светодиодов — высокая цена. Если сровнять, к примеру, ксеноновую лампу и светодиод, по яркости и цене, то да, светодиод проигрывает, НО! Каков срок годности ксенонки? 5000 часов, а светодиода 50000, то есть в 10 раз больше. А напряжение питания? Чтобы зажечь ксенонку ей надо свыше 10000 вольт, а светодиоду в среднем 3-4 В.

Есть множество разных фирм, выпускающие светодиоды, и если говорить об обычных маленьких светодиодиках на несколько милливатт, то можно очень долго писать список производителей, но если говорит об сверхмощных(сверхъярких) светодиодах, мощностью в несколько ватт, то выберем лидера среди производителей таких светодиодов — это компания Cree.

Читать полностью