ИБП для микросервера своими руками с использованием автомобильного аккумулятора

плата, текстолит, болтики

Плата стабилизатора установленная на самодельной шине

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

Микросервер выполняет у меня функции хранилища для записей видеонаблюдения под управлением Xeoma, на нем дополнительно запущены Transmission, Resilio и некоторые другие сервисы. Свитч же не только является центральной точкой по раздаче почти всех Ethernet каналов по дому, но еще и питает несколько IP-камер при помощи технологии PoE. Кушают оба собрата достаточно, дабы отказаться от использования маленького аккумулятора от ИБП или даже двух таких. Задача — обеспечить как можно более длительный срок работы устройств в случае отсутствия внешнего питания. Отключают «свет» в деревне частенько, даже зимой. Иногда без электричества приходится сидеть по несколько часов, а старожилы рассказывают, что временами «блэкаут» доходил аж до трех дней.

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



Как прошить чип STM32

В своей недавней статье я подробно разобрал каким образом можно прошивать программным кодом чипы семейства AVR. Сегодня же я рассмотрю способы, которыми можно прошить чипы семейства STM32. Но, я не буду приводить примеры того, как можно «залить» прошивку в микроконтроллер при помощи шнура от утюга или же варианты сопряжения CentOS установленного на Chromebook и программатора от STMicroelectronics. Пойдем по пути наименьшего сопротивления и используем современный ПК с установленной на него Windows 10 64-х битной редакции. В качестве подопытной, которую будем прошивать, возьмем фирменную плату NUCLEO-F103RB. Плата относится к серии Nucleo-64, хотя сами микроконтроллеры 32-х битные. Вероятно, что цифра 64 используется по количеству выводов чипа микроконтроллера, так как для плат серии Nucleo-64 обычно используются LQFP64 корпуса микросхем.

деревья, лес, жуть

Тот самый случай, когда за деревьями не видно леса

В платы Nucleo производитель заботливо уместил средство подключения, программирования и отладки, ST-Link. Плата просто подключается USB-кабелем к компьютеру, и если установлены драйвера, то ее можно прошивать новой прошивкой, связаться по последовательному порту и протоколу, а также начать процедуру отладки. И все по одному кабелю. Однако, ST-Link, вместе с USB-портом, выполнены на куске платы, который можно с легкостью удалить, попросту его отломав. Именно так и поступим, дабы приблизить ситуацию к наиболее распространенной, когда у нас нет встроенного программатора. Ведь нам с вами так или иначе приходится сталкиваться с чипами STM32 без каких- либо дополнительных интегрированных инструментов вообще. Но прежде, чем переходить к практике по прошивке необходимо разобраться в теории, точнее в теории управлением чипами семейства STM32.

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



Добавляем свою плату в PlatformIO в разрезе проекта на конкретном примере

platformio ide pio homeВот в старое время, бывало, откроешь текстовой редактор, накидаешь несколько сот строк на ассемблере, откомпилируешь одной программой, затем отлинкуешь другой и все, программа готова. А нынче? А нынче вычислительные мощности подросли настолько, что даже мои часы мощнее компьютера на котором я обучался алгоритмизации. А труд программиста почти не изменился. Разработчики все так же пишут код руками, вводят его в текстовом редакторе, затем компилируют, да линкуют. Только вот со времен Кобола, Алгола, да чистого ассемблера много чего изменилось. Сейчас никому и в голову не придет писать программу на ассемблере даже для микропроцессора. Это не только не эффективно, но и игра не стоит свечей, которые сгорят, пока программист будет выдавливать из себя инструкции для конкретного процессора. «Железо» нынче стоит куда дешевле труда человека.

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

PlatformIO поддерживает наверное все популярные платы, какие только могут быть. Поддерживается все это дело частной компанией и многочисленным комьюнити. И действительно, попробовав написать хоть небольшой проект на PlatformIO обратно на Arduino IDE возвращаться уже не захочется. Эффективность написания сложного кода для встроенных систем на PlatformIO, пожалуй, самая высокая, среди всех доступных пользователям средств. Да и IDE, став Open Source и опираясь на такие же продукты, позволяет без опаски и не пиратствуя писать свой код свободно. Прям утопия.

Но есть у всего этого малинового многообразия и отрицательная сторона, чем больше поддерживается плат и микропроцессоров в PlatformIO, тем сложнее и дольше происходит интеграция новых версий всего программного обеспечения. На такую проблему напоролся и я. Возникла необходимость написать прошивку для устройства на чипе STM32F103RE. Чип вполне актуальный, распространен, его поддерживает версия Arduino для архитектуры STM32 (STM32Duino) начиная с версии 1.7.0. Но вот беда. В PlatformIO самой актуальной версии хоть и интегрирована Arduino для STM32 от STM32Duino, но вот сам чип STM32F103RE поддерживается только устаревшей версией Arduino для STM32 (Maple). И использовать STM32Duino с PlatfromIO я не могу, хотя тот же процессор отлично прошивается через Arduino IDE с установленной поддержкой SMT32Duino. Вопиющая несправедливость, с которой следует разобраться.

Звучит сложно? Именно по этой причине, прежде чем приступать к подключению STM32F103RE к Arduino STM32Duino под PlatformIO мне пришлось на протяжении нескольких дней усиленной изучать документацию, исходные коды и сообщения на форумах. Пришлось даже вспоминать как писать на Python.

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



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

С банковскими депозитами у нас знакомы все, начиная от старушек, привыкших класть свободные средства «на книжку» в Сберкассе, и до молодежи с усердием осваивающей мобильные приложения многочисленных «виртуальных» банков. Весной 2018 года в мое доверительное управление попало сто тысяч рублей наследства бабушки правнуку. Но так как правнуку на тот момент еще не исполнилось честных 14 лет (с этого возраста в РФ человек уже считается ограниченно дееспособным, получается паспорт гражданина и может самостоятельно отвечать за распоряжение своими финансами), то моей задачей оказалось не только сохранение суммы, но и по возможности ее приумножение. После согласования условий с будущим бенефициаром было принято решение провести диверсификацию и часть средств разместить на депозит, а часть средств разместить на фондовом рынке. В качестве провайдера обеих услуг был выбран модный «виртуальный» банк с окончанием наименования на -off, хотя для простоты написания назовем его Банк Т (на самом деле это уже никакой не банк, а настоящий финтех, предоставляющий не только банковские услуги, но и множество прочих, начиная от телефонии и заканчивая доступом на рынки ценных бумаг для своих клиентов). Ну, что ж, приступим к разбору полетов по результатам полуторагодичных вложений.

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



Переход с Arduino IDE на PlatformIO IDE на базе Microsoft Visual Studio Code. Что нужно знать.

Несколько лет тому назад я подарил сыну набор «Матрёшка» с электронными компонентами и микроконтроллером Arduino Uno. Набор сопровождался скромным, но толковым учебным пособием, с которым можно не только освоить основы электроники, но и попытаться научиться программировать в среде Arduino. И хотя по первому образованию я радиотехник, а по второму инженер в ИТ, но мне было жутко интересно проходить все уроки «Матрешки» вместе с молодым поколением. Постепенно я втянулся и по дому начали плодиться многочисленные системы «Умного дома», различные датчики, улучшители и все прочее. А затем хобби перекинулось и на профессиональную сферу деятельности. И вот уже по рабочим вопросам начали появляться устройства автоматизации, измерительно-контрольные приборы и прочая уникальная незаменимая электронная утварь.

Но время идет и постепенно проекты начали усложнятся. В скетчах Arduino уже не десятки, а сотни строк. Количество переменных не влезает на один экран, а отсутствие отладчика временами приводит к нервному истощению. И в конце концов, было принято окончательное решение по миграции с Arduino IDE на что-то более удобное в плане разработки. Мой выбор почти сразу пал на PlatformIO IDE, причем перешел я на него только со второй попытки. Первая оказалась неудачной, поковырявшись несколько часов с PlatformIO я пришел к выводу, что в Arduino IDE все делается куда легче и быстрее. Но затем, спустя несколько месяцев я выкроил еще несколько часов своего драгоценнейшего времени для того, чтобы все же разобраться с PlatformIO IDE и постараться понять ее, а затем и полностью перейти на эту интегрированную систему. В качестве альтернативы я рассматривал Atmel Studio 7… Но обо всем по порядку.

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



ИБП для роутера

На моей фазенде хоть и проведено оптоволокно для добычи Интернет, но электропитание склонно к частому отключению. Бывало, сидишь так, работаешь за компом, а ботом бац и «всё пропало!». Но расстраивает и беспокоит не просто отключение электричества. Все многочисленные системы «умного дома» завязаны так или иначе на беспроводную сеть, да на выход в интернет. Что толку, если я могу посмотреть удаленно есть у меня электричество или нет, если вся интернет система, состоящая из оптического модема и корневого роутера, потухла при отключении этого самого икстричества.

Немного подумавши, решил поставить ИБП. Обычный источник бесперебойного питания, кои продаются на любом углу. Мой выбор пал на относительно недорогой ИБП от известной только в РФ фирмы IPPON, такие «бесперебойники» стоят у меня на производстве и отлично тянут «серваки», коммутаторы и прочую периферию. Немного поразмыслив, решил, что одного часа работы для интернет системы мне недостаточно, поэтому приобрел ИБП помощнее. Это и стало моей ключевой ошибкой.

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

Мой оптический модем питается от адаптера на 12 вольт с током 1.2 А, а роутер просит те же самые 12 вольт, но уже 1.8 А. Суммарно максимальная потребляемая мощность 36 ватт, а на практике, она скорее всего болтается в районе 10-15 ватт максимум. Такая нагрузка у мощного ИБП вообще не определяется, оттого он и выключается ровнехонько через пять минут, благополучно посчитав, что нагрузка либо сама отключилась, либо ее там вообще не было. Покопавшись еще немного в сети, обнаружил, что на этих самых IPPON данный режим можно отключить, достаточно только убрать на плате соответствующую перемычку в виде мощного резистора. Упоминаний данного процесса на страничках «пострадавших» премножество, да и на самих платах обычно приводится соответствующая инструкция, где и что отрезать. Но увы, аппаратное отключение «зеленого режима» недоступно у новых моделей. Там все намертво зашито в прошивку и без визита в сервисный центр убрать вредную функцию никак.

Пришлось немного пораскинуть мозгами, собрать коллективный разум в кучку и поискать альтернативные решения. А IPPON поставить на защиту от вырубания питания у стационарного компьютера. Там нагрузка идет порядка 100 ватт и ИБП должен ее чуять безупречно.

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



Прошивка AVR (ATMEGA328) различными программаторами (в том числе и из-под Arduino)

Мир «Arduino» чрезвычайно разросся за последние несколько лет. Еще, казалось бы, совсем недавно возможность собрать что-то из цифровой электроники своими руками представлялось фантастической идеей, воплотить которую могут, пожалуй, только гении, то сегодня соединить несколько датчиков между собой и записать программу в микроконтроллер может почти любой с руками растущими чуть выше пояса. В сети полно ресурсов ломящихся от мегабайтов полезных статей о том, как запрограммировать тот или иной алгоритм под Arduino (тут, конечно, стоит понимать, что в экосистему Arduino попадают далеко не только оригинальные платы от итальянцев). А вот если вам захочется копнуть немного дальше и глубже, то вы столкнетесь с информационным вакуумом, отделяющим мир обычных любителей от мира продвинутых электронщиков. И, казалось бы, между этими двумя мирами — настоящая пропасть, перешагнуть через которую отважится не каждый. Но я попробовал, получилось и возникло желание как-то зафиксировать свой опыт, дабы в последствии им можно было бы делиться с окружающими или же вернуться к записи и освежить воспоминания, если вдруг что-то позабылось.

Итак, в качестве хобби я решил разработать для своей компании электронное устройство с «сердцем» в виде микропроцессора ATMEGA328P. Да-да, именно на основе той микросхемы, что применяется в Arduino. Только вот никакой обвязки вокруг микросхемы нет. В ней некуда подключать USB, полностью отсутствует и внешний стабилизатор питания, не говоря уже о каких-либо индикаторных светодиодах. И это чудо как-то нужно программировать, как-то заливать в него свою прошивку, как-то оживлять. Я уделил данному вопросу некоторое внимание в своей статье по детальному анализу среды разработки Arduino «Arduino IDE: разбираемся с меню Tools и некоторыми другими функциями», а в этой статье я лишь продолжу изыскания по своим наработкам.

atmel studio, blink, arduino, assempler, c++, c/c++, open, file, version7

Интерфейс Atmel Studio с импортированным Blink из Arduino

Прошивать ATMEGA можно при помощи Atmel Studio, специальной среды разработки для AVR. Среда обладает неплохим набором инструментов для полноценной разработки чего-либо под фирменные микроконтроллеры. В 7-й версии «из коробки» доступно создание проектов на С, С++ и на Assembler. Более того, возможно создание проекта из скетча Arduino. При всем при этом у разработчика в руках оказывается отладчик, с возможностью дизассемблирования кода, просмотра всех регистров и любого уголочка памяти микроконтроллера. Прямо-таки золотая мечта любого ардуиниста. А если учесть, что программировать и отлаживать код, в большинстве сценариев, можно на эмуляторе микроконтроллера, то очевидно, что Atmel Studio кроет Arduino IDE с заметными преимуществами. Но… Atmel Studio — профессиональный инструмент и для подавляющего большинства энтузиастов окажется слишком затратным по времени для изучения. Поэтому дальше речь пойдет больше про Arduino IDE в связке с AVRDUDE. Тем не менее, если вы вдруг, после знакомства с Atmel Studio почувствовали нестерпимый зуд от желания познакомиться с этой IDE поближе, то You Are Welcome. А мы же продолжим далее.

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