Pull to refresh
0
0
Язовцев Сергей @nimbler

User

Send message

CG Charger BQ: как TP4056, только на стероидах (BQ25895)

Level of difficultyMedium
Reading time16 min
Views13K


Сегодня на нашем операционном столе очередное гениальное изобретение компании ClimateGuard — девайс под не менее гениальным названием CG Charger BQ. Расшифровке того, что же всё-таки скрывается под этими загадочными буквами BQ (что означают буквы CG постоянные читатели моего блога уже знают) и посвящена эта статья.

Перед нами умная зарядка для аккумулятора и модуль питания для различных DIY устройств с возможностью микроконтроллерного управления по интерфейсу I2C. Это формальное определение назначения этого модуля, но после ознакомления с даташитом BQ25895 и экспериментов с самим модулем я могу сказать, что это невероятно продвинутая микросхема управления питанием, которая при соответствующем подходе сможет удовлетворить любые ваши прихоти по обеспечению питанием ваших гаджетов.

Правда для осмысленной работы с BQ25895 вам понадобятся пара высших образований в Computer Science (смайл) и… эта статья…
Читать дальше →
Total votes 57: ↑56 and ↓1+55
Comments40

Работа с СОМ-портом на Си в linux

Reading time18 min
Views65K
Телетайп, на который БЭВМ могли выводить и получать данные. Фото взято здесь.

Каждый, кто постоянно занимается электроникой и программирует встраиваемые устройства, неизбежно сталкивается с необходимостью работы с СОМ-портом под линуксом. Недаром, моя статья "UART и с чем его едят" спустя 11 лет после выпуска набирает просмотры и комментарии.

Для разработчиков чаще всего появляется задача сопрячь какой-то датчик, либо удалённое устройство с одноплатником. Да что греха таить, сейчас в 2021 году UART, наверное, самый распространённый интерфейс для обмена данными, несмотря на всю его архаичность. Далеко за примером ходить не надо, внутри смартфона, лежащего у вас в кармане, будет с десяток UART интерфейсов, самый известный из которых — это подключение SIM-карты.

Поэтому умение работать с СОМ-портами в linux особенно важно. И вот, казалось бы, UART, древнейший интерфейс, всё должно быть известно и понятно, и даже опытные программисты ломают зубы, работая с ним в линуксе. Особенный цирк с конями начинается при работе с передачей сырых данных по RS-485. Не знаю ни одного программиста, который бы не хватил горя при разработке ПО для таких решений. Самое забавное, что с более новомодным i2c работать в линуксе куда проще и понятнее, чем с ортодоксальным UART. Чтобы не было путаницы дальше, всё семейство UART (RS-232, RS-485, UART 5V, UART 3,3 и т.д.) по тексту я буду называть COM-порт или UART. Мы говорим в статье не о физическом интерфейсе, а о программной стороне вопроса.

В этой статье я хочу показать, как писать свои программы, работающие с UART в ОС Linux. И неважно на каком языке вы пишете программу для работы с UART (python, c, c++, bash, php, perl и т.д.), принцип работы и грабли будут одни и те же, так как всё равно всё упирается в системные вызовы к ядру. А непонимание того, что там происходит и приводит к различным трудноуловимым багам.
Читать дальше →
Total votes 75: ↑72 and ↓3+69
Comments24

Хозяйке на заметку: разбираемся с конфигурационными файлами Linux

Reading time11 min
Views26K

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

Читать далее
Total votes 33: ↑20 and ↓13+7
Comments15

NVRAM для микроконтроллеров

Level of difficultyEasy
Reading time7 min
Views6.4K

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

В этом тексте представлено текстовое описание возможной простой реализации компонента энергонезависимой key-value map(ки)

Читать далее
Total votes 20: ↑18 and ↓2+16
Comments12

Миниатюрные I2C процедуры для всех микроконтроллеров AVR

Reading time10 min
Views13K
Простой матричный термометр на основе ATtiny84, использующем библиотеку TinyI2C

В статье описывается набор минимальных процедур, позволяющих любому процессору Microchip/Atmel AVR подключаться к периферии по протоколу I2C. Для их демонстрации я спроектировал сканер портов, отображающий I2C-адрес сенсора на матричном дисплее, а также цифровой термометр, считывающий и отображающий температуру с I2C-датчика. Основное различие между моими процедурами и стандартной библиотекой Arduino Wire в том, что в них не используется буфер, то есть они не так требовательны к памяти и не накладывают каких-либо ограничений на передачу.
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments3

51 Атрибут Хорошего С-кода (Хартия Си программистов)

Level of difficultyEasy
Reading time11 min
Views25K

Это не академические атрибуты из учебников. Это скорее правила буравчика оформления сорцов из реального prod(а). Некоторые приемы совпали с MISRA, некоторые с CERT-C. А кое-что является результатом множества итераций инспекций программ и перестроек после реальных инцидентов. В общем тут представлен обогащенный концентрат полезных практик программирования на С(ях).

Читать далее
Total votes 62: ↑57 and ↓5+52
Comments164

Архитектура Хорошо Поддерживаемого драйвера для I2C/SPI/MDIO Чипа (или как писать код по понятиям)

Level of difficultyEasy
Reading time11 min
Views8.5K

В программировании микроконтроллеров часто приходится писать драйверы периферийных микросхем. Зачастую это 60% всего кода большинства проектов. В этом тексте я написал несколько общих нюансов разработки драйверов периферийных чипов.

Эти правила "написаны кровь".

Читать далее
Total votes 25: ↑18 and ↓7+11
Comments24

Корутины C++20 и многозадачность на примере контроллеров stm32

Reading time12 min
Views15K

На Хабре уже неоднократно появлялись статьи, посвященные применению современных стандартов C++ при программировании микроконтроллеров, в том числе и появившихся в c++20 корутин.

Предлагаю спуститься со сложных решений типа целой операционной системы и рассмотреть вопросы примитивного планирования задач с применением сопрограмм.

Читать далее
Total votes 30: ↑29 and ↓1+28
Comments30

Почему Mobile First?

Reading time8 min
Views115K
О Mobile First написано достаточно много и есть хорошие книги на эту тему. И все равно большинство разработчиков и компаний не используют его в своих проектах или не знают вообще об этом подходе.

Поэтому хочу рассказать вам о нем вкратце и с примерами, это будет полезной информацией для тех кто не слышал об этом подходе.
Я постараюсь ответить на три основных вопроса:

  • Что такое Mobile First и его плюсы
  • Реализация подхода
  • Статистика результатов
Читать дальше →
Total votes 32: ↑23 and ↓9+14
Comments17

Краткий конспект по языку JavaScript

Reading time15 min
Views113K
Я —.NET разработчик. Но в последнее время всё чаще сталкиваюсь с JavaScript. Причём, процентах в 50 случаев я что-то на нём пишу, в остальных 50 — разбираюсь с чужим кодом, да ещё и прошедшим через минификацию, а иногда и обфускацию. В этой статье захотелось поделиться теми моментами, которые мне показались важными для понимания языка и эффективной работы с ним. Тут не будет ничего нового или неизвестного для людей, уже имевших дело с языком, и не будет чего-то такого, чего нельзя найти в других источниках. Для меня статья будет полезна как способ лучше разобраться в предмете, для читателей, я надеюсь, — как повод освежить знания.

Брендан Айк упоминал, что JavaScript был создан за 10 дней. Думаю, идея вынашивалась дольше. Как бы то ни было, язык получился и с тех пор только набирает популярность. Особенно после появления AJAX.

JavaScript — язык со слабой динамической неявной типизацией, автоматическим управлением памятью и прототипным наследованием.

JavaScript состоит из трёх обособленных частей:

  • ядро (ECMAScript),
  • объектная модель браузера (Browser Object Model или BOM),
  • объектная модель документа (Document Object Model или DOM).


В статье, в основном, пойдёт речь о ядре. Конечно, в примерах кода будут использоваться элементы DOM и BOM, но заострять на них внимание не буду.
Читать дальше →
Total votes 75: ↑65 and ↓10+55
Comments20

Адаптивные сайты, или Как добиться благосклонности Google

Reading time8 min
Views41K


В конце июня в Москве прошла конференция Bitrix Summer Fest, на которой было представлено много интересных и полезных докладов. Чтобы этот кладезь мудрости не пропадал, мы будем публиковать в нашем блоге материалы по выступлениям с конференции. И начать мы решили с доклада Антона Герасимюка, посвящённого оптимизации скорости загрузки страниц.

21 апреля Google поменял алгоритм ранжирования поисковой выдачи для мобильных устройств. Многие владельцы сайтов и администраторы получили письма, в которых сообщалось, что «ваш сайт не оптимизирован под мобильные устройства». И после 21 апреля на всех сайтах, которые перестали удовлетворять новым критериями, стал падать поисковый трафик с Google.
Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments28

Использование конфигурируемых логических ячеек PIC микроконтроллеров для управления WS2812

Reading time7 min
Views29K
Эта статья про управление светодиодами WS2812b, немного о синтезе логических схем и реализации их внутри микроконтроллера. Статья с небольшими отступлениями и двумя бонусами. Первый бонус основывается на том факте, что когда мы пишем, то одновременно читаем (разве нет?). Второй бонус поможет начать программировать микроконтроллеры и за 10 минут самим повторить реализацию, описанную в статье.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments4

По-настоящему адаптивные письма. Часть… снова первая

Reading time9 min
Views27K


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

К чему мы приходим:
— Использование внешних стилей и последующий прогон кода через инлайнер. Из-за усложнения кода это стало целесообразным
— Улучшение семантики через именование классов и сокращение участков кода
— Частичная поддержка the Bat! Хотя Николь на него забила.
— Полная поддержка всех мобильных почтовых клиентов
— Использование ранее опасных конструкций. Благодаря усердному тестированию проблемы решены.
Читать дальше →
Total votes 30: ↑25 and ↓5+20
Comments25

Чтобы сайт не падал: экономный метод

Reading time5 min
Views45K


Сайты падают. Я работаю в хостинге 7 лет и последние 5 лет (кроме всего прочего) предоставляю услуги по географически-распределённым кластерам, чтобы при аварии в одном из дата-центров сайт продолжил работу в другом. На выходе такое решение стоит минимум от 4 тысяч рублей в месяц за 1 виртуальный сервер. Небольшому интернет-магазину это может оказаться дорого для «страховки», которая потребуется 1-3 раза в год, а если повезет — не потребуется совсем. Соответственно, многим нужен вариант дешевле, подходящий для малого и среднего бизнеса. Сейчас расскажу, как это решить очень и очень просто.
Читать дальше →
Total votes 38: ↑32 and ↓6+26
Comments43

NGINX изнутри: рожден для производительности и масштабирования

Reading time8 min
Views145K
NGINX вполне заслуженно является одним из лучших по производительности серверов, и всё это благодаря его внутреннему устройству. В то время, как многие веб-серверы и серверы приложений используют простую многопоточную модель, NGINX выделяется из общей массы своей нетривиальной событийной архитектурой, которая позволяет ему с легкостью масштабироваться до сотен тысяч параллельных соединений.

Инфографика Inside NGINX сверху вниз проведет вас по азам устройства процессов к иллюстрации того, как NGINX обрабатывает множество соединений в одном процессе. Данная статья рассмотрит всё это чуть более детально.
Поехали!
Total votes 93: ↑93 and ↓0+93
Comments32

Достойный встраиваемый цифровой усилитель НЧ своими руками за разумные деньги

Reading time4 min
Views87K
Добрый день, Хабр!

Наша прошлая статья о DIY-аудиотехнике вызвала довольно большой резонанс и сегодня мы хотели бы рассказать о другой нашей разработке из области аудио — высококачественном УНЧ. Устройство было создано Олегом Тетушкиным для собственных нужд. Но в результате усилитель прижился в офисе. Собран, разумеется, из того, что плохо лежало было под рукой на складе. В данном случае он собран в самодельном корпусе. Но по сути, его можно встроить куда угодно — хоть в мебель. На что хватит фантазии.

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


Вот такой красавец должен получиться в результате

Читать дальше →
Total votes 39: ↑28 and ↓11+17
Comments99

Создаем портфолио на основе фотографий из Instagram

Reading time11 min
Views54K


Здравствуй, дорогой хабрадруг! В этом уроке мы создадим простой сайт-портфолио, который будет базироваться на фотографиях из вашего аккаунта в Instagram. Дизайн сайта сделал Tomas Laurinavicius, и он получился у него простым, функциональным и просторным. Итак, начнем.

Скачать исходники | Демо
Читать дальше →
Total votes 73: ↑41 and ↓32+9
Comments24

Проектирование новостной ленты в социальных сетях

Reading time9 min
Views38K


Так сложилось, что за последние пару лет я успел поучаствовать в разработке нескольких социальных сетей. Главная задача, которую приходилось решать в каждом из этих проектов, заключалась в формировании новостной ленты пользователя. При чём важным условием была возможность масштабирования этой ленты в условиях роста числа пользователей (точнее, числа связей между ними) и, как следствие, — количества контента, который они деливерят друг другу.

Мой рассказ будет о том, как я, превозмогая трудности, решал задачу формирования новостной ленты. А также я расскажу о подходах, которые наработали ребята из проекта Socialite, и которыми они поделились на MongoDB World.
Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments68

OneTesla: Катушка Тесла как музыкальный инструмент

Reading time2 min
Views74K

К сожалению, не получилось встроить видео с презентацией. Если что, то вот оно.

OneTesla — это небольшая катушка Тесла, подключаемая через порт MIDI и играющая музыку электрическими разрядами. Само устройство, которое в высоту около 25 сантиметров, может выдавать молнии длиной до полуметра. Этот агрегат может устроить неплохое шоу и удивить ваших друзей музыкальной плазмой. Все спецификации устройства открыты и доступны вместе с инструкцией по сборке на сайте проекта.

Как она играет музыку?


Человеческое ухо воспринимает звуковые волны где-то от 20 герц до 20 килогерц, в то время, как устройство резонирует с частотой 230 кГц, что значительно превышает максимальную частоту звука, слышимую человеком. Но можно включать и выключать разряды именно с той частотой, с которой слышен нужный нам звук.

Краткие технические характеристики


Параметр Значение
Первичная катушка 6 витков, радиус 88.9мм, 1.6мм провод (14 AWG)
Вторичная катушка 65мм х 254мм, 0.127мм провод (36 AWG), 1800 витков
Конденсатор CDE 940C30S68K, 0.068μF@3000V
Тороид 200мм х 50мм, покрыт фольгой
Резонансная частота ~230 КГц
Инвертор Полумост на базе IGBT транзисторов FGA60N65SMD, 340 вольт
Длительность импульса 50 мкс при 1 КГц, 150 мкс при 50 Гц)
Максимальная длина разряда 58 см
МК платы-прерывателя ATmega328P-PU

Чуть подробнее
Total votes 51: ↑47 and ↓4+43
Comments36

Дизайн будильника моей мечты

Reading time4 min
Views44K
Нет, не здоровенного. А просто удобного будильника для Андроида. После долгих поисков на Маркете я так и не смог найти будильник, который мне было бы приятно использовать. Поэтому в этой статье я буду проектировать будильник таким, каким бы я сам хотел его видеть.

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

Перед тем, как рассказать о том что есть в этом будильнике, я начну с того, чего в нём нет. Во-первых, в нём нет возможности установки нескольких будильников, так как в большинстве случаев они используются только для того, чтобы поставить 3 будильника подряд с целью не проспать. Это не работает и должно решаться другими средствами.

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

И в-третьих, в нём нет никаких математических примеров для отключения звонка. Так что для любителей математики он не подойдёт.

Дисклаймер. Вполне возможно, у вас уже есть будильник который вас полностью устраивает. Что ж, тогда эта статья вряд ли вам будет интересна. А для остальных я расскажу о проектировании будильника
под катом
Total votes 302: ↑279 and ↓23+256
Comments195
1
23 ...

Information

Rating
Does not participate
Location
Владимир, Владимирская обл., Россия
Date of birth
Registered
Activity