Pull to refresh
30
0.7
Send message

Пишем прошивку под TI cc2530 на Z-Stack 3.0 для Zigbee реле Sonoff BASICZBR3 с датчиком ds18b20

Reading time 22 min
Views 52K


Предполагается, что читатель уже имеет начальные знания языка C, что-то знает о Zigbee, чипе cc2530, методах его прошивания и использования, а также знаком с такими проектами, как zigbee2mqtt. Если нет — подготовьтесь или сходите почитать на https://myzigbee.ru и https://www.zigbee2mqtt.io/
Статья написана сперва подробно, но постепенно ускоряется и уже не останавливается на деталях, а описывает готовый код прошивки. Если кому-то не интересны рассуждения, то просто открывайте исходники прошивки и читайте их.

Исходный код готовой прошивки

Код и подход к разработке не претендует на идеальность. “Я не волшебник, я только учусь.”

Цель


Основная цель — разобраться, как писать прошивки под Z-Stack, давно хотел. Поэтому решил реализовать альтернативную прошивку под готовое оборудование (в качестве примера выбрано реле Sonoff BASICZBR3) и добавить возможность подключения популярного датчика температуры ds18b20.

Дополнительно хотел показать начинающим Zigbee-разработчикам пример разработки прошивки под чип TI cc2530 на Z-Stack.
Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Comments 21

Какое величайшее научное открытие всех времен?

Reading time 10 min
Views 33K

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

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

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

Если я что-то не так, то, пожалуйста, предложите исправление, и я внесу его как можно скорее.

Итак, в произвольном порядке начнем… 

1.     Система Коперникум

В 1543 году, находясь на смертном одре, польский астроном Николай Коперник опубликовал свою теорию о том, что Солнце представляет собой неподвижное тело в центре Солнечной системы, вокруг которого вращаются планеты. До того, как была введена система Коперника, астрономы считали, что Земля находится в центре Вселенной.

Читать далее
Total votes 17: ↑11 and ↓6 +5
Comments 38

Как root-права и альтернативные прошивки делают ваш android смартфон уязвимым

Reading time 54 min
Views 123K

Если вы являетесь регулярным читателем Хабра, то должно быть заметили что за последние несколько лет вышло немало статей о сборе персональных данных с мобильных устройств, и о попытках противодействия этому, было несколько отличных статей с детальными инструкциями по превращению своего смартфона на базе ОС Android в настоящую цитадель приватности и безопасности. 

Часто для этого рекомендуется получение прав суперпользователя в системе (root-права), удаление системных приложений от Google и от производителя устройства, или даже полная замена стандартной ОС на альтернативные сборки, чаще всего LineageOS (бывший CyanogenMod). При этом первым шагом в этом процессе всегда будет так называемая "разблокировка загрузчика". Во время её выполнения устройство несколько раз покажет нам страшные предупреждения о том, что теперь оно станет более уязвимо для злоумышленников, но мы смело нажимаем "подтвердить" и шьём root или самую свежую сборку кастомной прошивки, не задумываясь о том какие проблемы создаёт нам незаблокированный загрузчик. 

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

Интересующихся приглашаю под кат.

Читать далее
Total votes 127: ↑123 and ↓4 +119
Comments 210

Разводка регулярных структур в KiCAD: путь лентяя

Reading time 11 min
Views 4.6K
image

Я в одной из предыдущих статей писал — я, фактически, безработный. Юридически — нет, во-первых я пенсионер, но вполне мог бы и работать. Во-вторых, вроде как и работаю в одной маленькой фирме из двух человек, но последний год у нас с контрактами напряженка. С голоду не умираем, пенсии вполне достаточно на жизнь, но ведь развлекаться как-то надо?
Время от времени от скуки публикую статьи-обзоры на сайте шопоголиков, администрация сайта даже денег довольно-таки регулярно за это дает. Очень хорошая отмазка для супруги — нет, я не шопоголик, это я, вроде как, при деле. И вот здесь взялся публиковать статейки — если на том сайте такие публиковать, только минусов нахватаешь — типа ты что, слишком умный, что ли? — а вот на тебе минус и не балуй. И в следующий раз пиши про какую-нибудь мыльницу.
Читать дальше →
Total votes 42: ↑41 and ↓1 +40
Comments 13

Почему 20-летний CRT-монитор лучше современного 4K LCD-дисплея?

Reading time 7 min
Views 100K
Предположим, у вас имеется $1000 и вы собираетесь всё это спустить на игровой монитор. За эти деньги можно купить новейший 4K-дисплей с микроскопическими пикселями, обладающий широким динамическим диапазоном и отличающийся высокой частотой обновления экрана. Или можно раскошелиться на изогнутый QHD-монитор, такой широкий, что во время игры на нём придётся задействовать периферическое зрение.

Есть и ещё один вариант. Можно рискнуть, отправиться на eBay и потратить похожую сумму на CRT-монитор, выпущенный два десятка лет назад.



Последний вариант, на первый взгляд, может показаться противоречащим здравому смыслу. Но, на самом деле, не всё так просто. В кругах любителей компьютерных игр есть люди, которые уверены в том, что мониторы с электронно-лучевой трубкой отлично подходят для игр. Такие мониторы, по мнению этих людей, быстрее реагируют на действия игрока, а изображение на них смазывается меньше, чем на LCD-дисплеях. Этих людей совершенно не пугает то, что старые мониторы, в сравнении с новыми, имеют более низкое разрешение, меньшие размеры экранов, то, что они занимают очень много места на рабочем столе. Спор приверженцев CRT и LCD идёт уже много лет. Но недавно к этой теме было привлечено внимание проекта Digital Foundry, выпустившего видео о сильных сторонах CRT-мониторов.
Читать дальше →
Total votes 69: ↑56 and ↓13 +43
Comments 383

Kubernetes, микросервисы, CI/CD и докер для ретроградов: советы по обучению

Reading time 7 min
Views 28K
Кажется, тема «зачем нужен Kubernetes», уже раздражает. Хочется сказать: «все кому надо — давно уже поняли», однако я разделил бы технических (и околотехнических) работников на тех, кто «понял и знает как использовать», и тех, кто «понял, но хочет знать, как сделать знания актуальными».

Возможно, вы менеджер, который последние 10 лет работал на одном и том же стеке; возможно, вы разработчик, который поддерживает старое решение или пишет на привычном языке в привычной среде. Возможно, вы просто перешли из технического в организационный менеджмент и вдруг выяснили, что все, что вы знали, больше не актуально, и хочется понять — есть ли какой-то относительно простой сценарий, как это можно догнать. Я постараюсь дать советы, основываясь на собственном опыте, — от человека, который осознал, что, находясь на организационном управлении, скоро будет выражаться словами «Kubernetes — это эффективная технология, мы должны стремиться к ее применению», не вполне понимая, что лежит за этими словами и за всей технической культурой, развившейся в последнее время.

Почему я считаю важным уметь менять парадигму технологического мышления?
Читать дальше →
Total votes 49: ↑43 and ↓6 +37
Comments 37

Ethernet-коммутаторы Brocade

Reading time 7 min
Views 18K
Brocade, известный большинству как производитель коммутаторов для сетей хранения данных, выпускает и Ethernet-коммутаторы. Некоторый набор таких коммутаторов (ICX и VDX) оказался у нас в руках, и мне хочется сделать короткий обзор и отметить вещи, которые показались интересными. Я постараюсь избежать маркетинговых формулировок и цифр, но для интересующихся укажу ссылки на сайт производителя. Приступим :)
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Comments 0

О простых вещах-сложно. Возвращаем девочке птицелет или RTFM по определению пластмасс в домашних условиях

Reading time 17 min
Views 38K

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


Если, дорогой читатель, у тебя никогда в жизни не возникал вопрос "что, черт побери, это за пластмасса такая?", то можешь статью не читать :) Вниманию же всех остальных — очередная статья из серии "положи в закладки!". Сегодня у нас тема — "Определение пластмасс в домашних условиях" и я продолжаю wikipedia-ровать Хабр полезной информацией, которая осталась у меня после выполнения моих научно-технических проектов. Сегодня под кат смело могут идти экологи, биотехнологи, мастера полимерных производств, инженеры по переработке пластмасс и все, кому приходилось сортировать пластики, клеить пластики, паять пластики — автолюбители, самодельщики и прочие заинтересованные лица. Традиционно — минимум FUN-а, максимум информации, полнее русскоязычную мануалку по пластикам просто не найти, "я гарантирую это" :)


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


Читать дальше →
Total votes 104: ↑102 and ↓2 +100
Comments 176

SamsPcbGuide, часть 7: Трассировка сигнальных линий. Дифференциальные пары

Reading time 8 min
Views 25K
Это седьмая статья из цикла и заключительная в блоке, посвящённом трассировке сигнальных линий. Дальше есть идея развивать проект и выходить на руководство по проектированию печатных плат в виде удобной книги, поэтому по публикациям, возможно. будет пауза. В статье рассматривается важная тема — дифференциальная схема передачи данных, получающая всё большее распространение в современных системах, и предлагаются рекомендации по трассировке дифференциальных пар, позволяющей обеспечить преимущества этой схемы.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 16

ИТ на стадионе «Открытие Арена». Когда адреналина в проекте не меньше, чем во время матча

Reading time 12 min
Views 19K
В составе команды специалистов ЛАНИТ я участвовал в проекте создания ИТ-инфраструктуры стадиона «Открытие Арена». В этой статье я кратко расскажу о проблемах, с которыми мы столкнулись, как их решали, почему делали именно так, и как все это работает спустя три года после начала эксплуатации.



Читать дальше →
Total votes 44: ↑43 and ↓1 +42
Comments 31

Мега-Учебник Flask, Часть 1: «Привет, Мир!»

Reading time 6 min
Views 570K
Это первая статья в серии, где я буду документировать мой опыт написания веб-приложения на Python, используя микрофреймворк Flask.

Здесь список всех статей в серии:
Часть 1: Привет, Мир!
Часть 2: Шаблоны
Часть 3: Формы
Часть 4: База данных
Часть 5: Вход пользователей
Часть 6: Страница профиля и аватары
Часть 7: Unit-тестирование
Часть 8: Подписчики, контакты и друзья
Часть 9: Пагинация
Часть 10: Полнотекстовый поиск
Часть 11: Поддержка e-mail
Часть 12: Реконструкция
Часть 13: Дата и время
Часть 14: I18n and L10n
Часть 15: Ajax
Часть 16: Отладка, тестирование и профилирование
Часть 17: Развертывание на Linux (даже на Raspberry Pi!)
Часть 18: Развертывание на Heroku Cloud

Моя предыстория


Я разработчик ПО с двузначным числом лет опыта разработки комплексных приложений на нескольких языках. Впервые я познакомился с Python для создания привязок к C++ библиотеке на работе. Вдобавок к Python, я писал веб-приложения на PHP, Ruby, Smalltalk и, верите вы или нет, еще на С++. Из всего этого, я нахожу комбинацию Python/Flask самой гибкой.
Я хочу начать это долгое и удивительное путешествие
Total votes 63: ↑60 and ↓3 +57
Comments 31

Еще раз о видеонаблюдении, камерах, RTSP, onvif. И «велосипед»!

Reading time 16 min
Views 184K
Информация уже была на хабре: habrahabr.ru/post/115808 и habrahabr.ru/post/117735
Там описывается Motion-JPEG (MJPEG).
Мир не стоит на месте и видео наблюдение тоже. Всё чаще и чаще используются другие кодеки.
Тут описываю свой опыт в этом «мире».
Профессионалы ничего нового не узнают, другим может будет просто интересно.
Разрабатывалось всё в качестве обучения и тренировки.
Речь пойдет о RTP, RTSP, h264, mjpeg, onvif и всём вместе.
Перед прочтением обязательно прочитать статьи другого автора, указанные выше.
Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Comments 11

Когда «О» большое подводит

Reading time 8 min
Views 36K


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


Память, медленная-медленная память


В начале 1980-х время, необходимое для получения данных из ОЗУ и время, необходимое для произведения вычислений с этими данными, были примерно одинаковым. Можно было использовать алгоритм, который случайно двигался по динамической памяти, собирая и обрабатывая данные. С тех пор процессоры стали производить вычисления в разы быстрее, от 100 до 1000 раз, чем получать данные из ОЗУ. Это значит, что пока процессор ждет данных из памяти, он простаивает сотни циклов, ничего не делая. Конечно, это было бы совсем глупо, поэтому современные процессоры содержат несколько уровней встроенного кэша. Каждый раз когда вы запрашиваете один фрагмент данных из памяти, дополнительные прилегающие фрагменты памяти будут записаны в кэш процессора. В итоге, при последовательном проходе по памяти можно получать к ней доступ почти настолько же быстро, насколько процессор может обрабатывать информацию, потому что куски памяти будут постоянно записываться в кэш L1. Если же двигаться по случайным адресам памяти, то зачастую кэш использовать не получится, и производительность может сильно пострадать. Если хотите узнать больше, то доклад Майка Актона на CppCon — это отличная отправная точка (и отлично проведенное время).

Читать дальше →
Total votes 75: ↑69 and ↓6 +63
Comments 66

Климатическая система в квартире своими руками

Reading time 21 min
Views 107K
Кто-то в детстве мечтает изобрести лекарство от рака, кто-то — стать космонавтом или владельцем свечного заводика. А я мечтал о том, что у меня появится климатическая система, и в квартире, наконец, не будет душно, вечная простуда от сквозняков исчезнет, а горло перестанет першить от сухости. И теперь мечта исполнена!

Примерно с декабря 2015 по июнь 2016 года я читал форумы, катался по строительным магазинам, собирал систему в квартире и на балконе, паял контроллер и писал прошивку — и добился своего.

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

Схема установки
А если чуть подробнее, то...
Total votes 87: ↑84 and ↓3 +81
Comments 290

От шедулера к планировщику

Reading time 7 min
Views 16K
См. две другие статьи этой группы — Делаем многозадачность и Преемптивность: как отнять процессор.

Сразу просьба к строгим читателям. Если вы не поняли какой-либо термин из применённых — спросите, я подскажу, что я имел в виду. А если вам нравится другое написание или перевод этого термина — укажите его в комментарии. Я применяю те, которые нравятся мне.

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

Как я уже говорил, шедулер — это просто функция, которая отвечает на вопрос: какую нить и на сколько времени поставить на процессор.

Кстати, в SMP системе шедулер ничем не отличается от однопроцессорного. Вообще, чтобы проще понимать структуру взаимодействия сущностей на одном и нескольких процессорах, проще всего представить себе следующую модель: для каждого процессора есть нить «простоя» (которая работает, если вообще больше некому и просто останавливае процессор до прерывания), которая постоянно пытается «отдать» процессор (которым она как бы владеет) другим нитям, выбирая нить с помощью шедулера.

Говоря о шедулере нельзя не сказать о приоритетах.

Приоритет — свойство нити (или процесса) влияющее на конкуренцию этой нити с другими нитями за процессор.

Приоритет обычно описывается парой <класс приоритета, значение приоритета внутри класса>.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 13

Делаем приставку — счётчик Гейгера к iPhone за 2 часа

Reading time 3 min
Views 202K
image

UPD: Кто уже читал пост — пожалуйста зайдите и поучаствуйте в опросе. Спасибо большое!

Примерно полтора года назад на нескольких сетевых ресурсах, в том числе и на хабре, начали пиарить проект «До-ра» — приставку к iPhone, позволяющую измерять радиационный фон и делать много всего вкусного на основании получаемой со счётчика Гейгера информации. Статьи в новостях проекта упоминают несколько многомиллионных грантов, выделенных на разработку приборчика фондом «Сколково». Шли месяцы, «До-ра» всё никак не получалась, покупатели ждали, конкуренты не дремали. Так ли сложна «До-ра» как её малюют и как собрать за пару часов из подручных деталей в десять раз более чувствительный аналог я расскажу тем кто нажмёт на
кнопку
Total votes 186: ↑185 and ↓1 +184
Comments 133

Еще раз об архитектуре Android приложения или джентльменский набор библиотек

Reading time 6 min
Views 57K
Вот надумал написать обзор библиотек с помощью которых легко и удобно писать приложения под Android.
Список вырисовывается такой:

Если заинтересованны прошу под кат.
Читать дальше →
Total votes 69: ↑62 and ↓7 +55
Comments 82

Information

Rating
1,459-th
Registered
Activity