Сообщество - Arduino & Pi

Arduino & Pi

1 493 поста 20 825 подписчиков

Популярные теги в сообществе:

63

Ответ на пост «Yourduino.ru осадочек остался или задница полыхает»1

Преамба: накатал я ответ а получилась простынка...решил ответить постом. Тапки кидать парами, их так на базар легче сдавать:) к делу...


Вот что хочу сказать....

Начинающий ардуинщик-радиогубитель хочет: купил->хуяк-куяк->ВАУ-эффект.


С электроникой так не работает.


Ссылка ведет на магазин радиодеталей, собстна гря они и не скрывают, что они продают "радиводитали".


Для того, чтобы уверенно получать "метрологически достоверные" результаты (тоесть повторяемость) надо брать в первое время не просто "набор для сборки" который по сути является просто набором деталей, как машинка, которую купил ТС, а ОБУЧАЮЩИЙ НАБОР.


Разница в чем: просто набор - это как " базовый комплект лего", а обучающий набор это те же запчасти но с учебником, который по сути является подробной инструкцией...


Вот тот же набор деталей, но в виде обучающего набора:

http://teacher.amperka.ru/amperka


Ценник - ояебу... Рассыпухи там тысячи на три, а вот все остальное это стоимость "учебника"


Аналогично с матрешкой-z (https://amperka.ru/product/matryoshka-z самый полный клмплект), той же амперки, но и это тот же обучающий набор. Или вот - мастеркит: https://masterkit.ru/shop/sets/training-sets


За эти деньги производитель как бы гарантирует результат, что оно у вас будет работать.


Однако у меня, как практикующего инженера-разработчика есть "пара вопросов" и к составу комплекта, и САМОЕ ГЛАВНОЕ - к содержанию и подаче материала... Ладно, хер с амперкой, ее сейчас пихают везде, видимо кто-то хочет кушать...


У Гайвера есть раздел "для начинающих" - мне нравится его творчество... Ну "мерч" это уже способ зароботка. В свое время DI-HALT что-то подобное делал, но на сколько я в курсе: его проект либо заброшен, либо "не взлетел", т. к. начинался в доардуиновскую эпоху.


Что делать? Ответ один - учиться, наступая на грабли и сжигая детали, ибо тот кто не соблюдает закон Ома будет наказан по правилам Кирхгофа.


Как вариант начать с "учебников" "электроника для чайников" и "электроника для детей".

В этих книгах можно найти занятные эксперементы и объяснения к ним.


А ТСу - сходить на рынок/магазин за датчиком все же прийдется...

>>>> UPD:

ЗЫ: в процессе обсуждения вышел мой топ-лист книг, которы" must have":


1) Тицце Шенк "Полупроводниковая схемотехника" 1 и 2 том. (причем 2й том обязательно)

2) Хоровиц Хилл "Искусство схемотехники"

3) Дэн Гукин "Си для чайников"

4) Керниган Ритчи "Язык Си"

5) Гордон Бойсен "Радиоэлектроника для чайников"

6) Гарэ Д. Занимательные проекты на базе микроконтроллеров tinyAVR

7) Шонфелдер, Шнайдер "Измерительные устройства на базе микропроцессора Atmega"

1,2,4 - надобно иметь в виде настоящих, бумажных изданий. Это реальный "МАСТ ХЭВ"

Вне конкурса - Б. С. Иванов "Электронные самоделки"... Я и с нее тоже первый раз начинал...

#comment_193189505
Показать полностью
16

Yourduino.ru осадочек остался или задница полыхает1

Всем привет, пишу чтобы выпустить пар, жопа горит капитально.
Давно смотрю гайвера, канал интересен всё хотел что-нибудь сделать, но то руки не доходили, то заказы долго ждать с али. А тут сложились звезды: нужно сделать простой контроллер горелки дя котла (без дисплея и т.д., тупо две функции: управление вентилятором через шим и сервоприводом раз в 5 минут) в тинкеркад всё собрал, работает. Вторая звезда: сын(10 лет)на каникулах мается от скуки, увлекаю его с собой в тинкеркад, кричит, что папа интересно, давай делать в живую. Ок, беру конструктор машинки на сайте yourduino.ru, написано всё отлично, будет ездить и вообще, борщ сварит. Хули, я же теперь программист (простой код осилил) соберём и сделаем. После работы мчу в магазин и забираю набор. Собираю по схеме, гружу скетч ииии... Хуй там, библиотек хрен найдёшь, качаю библиотеки IRremote и сервы, ардуйня ругается на них. Ладно, утро вечера мудренее. Пишу в магазин :

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

Вот вся схема: всё ок, но ИК приёмник догадайтесь как ключить где vcc и gnd и т.д, благо серво машинка со своей проводкой и там проблем нет.

Ищу скетчи в интернете без ИК пульта: то на двух моторах всего, то без сервы, то другой драйвер движка, ковырять страшно, боюсь спалить плату. Пытался вырезать код управления с пульта, чтобы работала чисто по датчик расстояния (в скетче есть, но завязана на включение с пульта) не выходит ( кнопка "0" на пульте = включает этот режим)
Как итог, ложки целы, что сжёг приёмник виноват сам, но осадок остался. И скетча блютуз и езды по линии нет в инструкции, хотя заявлено в функциях машинки. @yourduino.ru не знаю есть ли вы здесь, но если продаёте набор за 3200, будьте добры выложить нормальную схему и библиотеку. Потрачено сука два вечера и куча нервов.

Показать полностью 5
240

Часы – матрица своими руками

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

Моим спасением было когда я нашел для себя привлекательный вариант.

Автор подробно рассказал, как и что устроено. Его часы меня привлекли, в них не было ничего лишнего. Решил я повторить, в его же статье нашел перечень компонентов, код для Arduino и полную схему, по которой всё и паял.

Если вы хотите себе простые часы с возможностью выбирать цвет циферблата, рекомендую и вам ознакомиться с данной статьей: Часы – матрица на Arduino и адресных светодиодах WS2812B.

Надеюсь моя информация будет полезной.

Спасибо! Всем добра!

Показать полностью 2 1
9

Кто шарит, помогите пожалуйста с ардуино конструктором

Народ, подарили ардуино машинку, на сайте проблемы со скетчем, библиотеки нужные добавил.

Вот такая ошибка:

Кто шарит, помогите пожалуйста с ардуино конструктором

Пацан расстроен, я хз что делать дальше. В гугле не нашел....

74

AmpliPi — усилитель звука для всего дома на базе Raspberry Pi

Micro Nova представила AmpliPi — усилитель звука с открытым исходным кодом на базе Raspberry Pi 3+. Он способен передавать потоки с четырех независимых источников в 6 зон стереовыхода, с возможностью расширения до 36 зон стереовыхода через последовательно соединенные блоки удлинителя.


AmpliPi поддерживает входы от четырех сетевых потоковых источников, включая AirPlay, Pandora, Spotify и DLNA, а также четыре аналоговых входа RCA для мультимедийных устройств.

Ключевые компоненты и особенности AmpliPi:

Плата контроллера

- Несущая плата оснащена вычислительным модулем Raspberry Pi 3+ и аудио ЦАП PCM5102A и CM6206. Он также обменивается данными через I2C с MCU STM32 на плате предусилителя (см. ниже) для управления системами мультиплексирования и усиления.

- Интерфейсы:

- порт 10/100M Ethernet

- Выход HDMI 1.4

- 2х порта USB 2.0 и один внутренний порт USB

- Сервисные и консольные порты для обслуживания и/или отладки.


Плата предусилителя

- Плата оснащена системой матричной коммутации 6 × 4 и сетью управления громкостью, которая управляется микроконтроллером STM32F030 Arm, который также управляет настройками отключения звука и мощности для усилителей. Система матричной коммутации также может позволить пользователю смешивать несколько входов с одним или несколькими выходами.

-  Разъем

- 8x входов RCA для 4x стереоисточников

- Разъем расширения зоны


Плата усилителя

- Эта плата содержит 6х стереофонических ШИМ-усилителей класса D, необходимых для 6х динамиков. ШИМ-усилители класса D делают систему более эффективной и уменьшают потребность в охлаждающих вентиляторах, которые активируются реже.

- 6x 4-контактных разъема для динамиков

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

- Импульсный блок питания и блок распределения питания Mean Well.

- Потребляемая мощность — 6,7 Вт в режиме ожидания, до 391 Вт непрерывно, до 782 Вт пиковая

- Размеры — система для монтажа в 19-дюймовую стойку 2U с глубиной 300 мм

Raspberry Pi запускает Raspberry Pi OS с сервером веб-приложений, клиентами потоковой передачи музыки (Pandora, AirPlay, Spotify и т. д.) и настраиваемым ПО для интерфейса REST API.


Усилителем можно управлять из удобного для мобильных устройств веб-приложения, написанного на Python, работающего на Raspberry Pi. Программное обеспечение, прошивка и схемы в формате PDF находятся в открытом доступе под лицензией GPL и размещены на GitHub, где вы также найдете документацию по REST API.


Аудиоусилитель AmpliPi на базе Raspberry Pi был запущен на Kickstarter с целью сбора финансирования в размере $10 000 . Цена начинается с $399 за «специальную версию для разработчиков», которая будет поставляться в начале (апрель 2021 года) вместе с бета-версией программного обеспечения. Если вы предпочитаете версию работающую из коробки, цена составит $499 за «специальное предложение для первых покупателей», его планируется отправить в мае 2021 года.


Доставка добавляет $35 в США, $60 в Канаду и $100 в европейские страны. Усилитель недоступен в других странах. Дополнительную информацию также можно найти на официальном сайте.


Больше про одноплатники и эмбеддед можно узнать из канала "Одноплатные компьютеры" в Телеграм

Показать полностью 4
131

Репозиторий Microsoft добавлен в Raspberry Pi OS

Репозиторий Microsoft был добавлен в официальный дистрибутив GNU/Linux для Raspberry Pi под названием Raspberry Pi OS (в прошлом известный как Raspbian) в одном из последних обновлений дистрибутива. Если быть точнее, то нововведение скрывается в пакете raspberrypi-sys-mods. Теперь, хотите вы того или нет, но при следующем обновлении вашего одноплатника у него появится еще один источник пакетов для обновления системы. Это за собой влечет как минимум две проблемы. Читайте о них ниже или смотрите в ролике.

Проблема 1


Репозиторий от Microsoft – это полноправный гражданин в вашей системе. Эта становится возможным благодаря тому, что в систему также устанавливается GPG-ключ от Microsoft, которым подписываются пакеты из этого репозитория. В итоге все пакеты из репозитория Microsoft имеют тот же приоритет, что и пакеты из стандартного репозитория, через который распространяются все программное обеспечение дистрибутива, включая обновления. Обратите внимание.

На скриншоте показана информация о двух пакетах. Первый, coreutils, является частью базовой системы, без которого немыслима любая Debian-подобная система, а второй, code, который содержит интегрированную среду разработки Visual Studio Code от Microsoft. У обоих этих пакетов приоритет 500. И это говорит нам о том, что теперь Raspberry Pi OS сильно подвержен атаке на цепь поставок программного обеспечения, от которой, по иронии судьбы, совершенно недавно сильно пострадала сама Microsoft. Компания ровно таким же образом доверяла на 100% одному поставщику программного обеспечения, который добросовестно доставлял обновления через свои каналы Microsoft'у. Затем инфраструктура поставщика была скомпрометирована и в обновления, которые полагались заказчикам, был интегрирован бекдор. Так как Microsoft доверяла этому поставщику на 100%, она без лишних вопросов скачала обновление с бекдором и открыла доступ к своей инфраструктуре злоумышленникам, после чего пострадали некоторые клиенты Microsoft, для которых уже это компания является поставщиком чего бы то там ни было. Это и называется атакой на цепь поставок программного обеспечения. А теперь представьте, что инфраструктура Microsoft успешно взломана. Злоумышленники могут опубликовать через репозиторий для Raspberry Pi OS пакет с обновлением для любого из компонентов дистрибутива, в который будет интегрирован бекдор, а ваша система, в свою очередь, посчитает этот пакет супер важным обновлением и без лишних вопросов загрузит и установит его.

Проблема 2


Теперь любая попытка обновить Raspberry Pi OS будет приводить к тому, что пакетный менеджер системы будет обращаться к репозиторию Microsoft. Это даст компании возможность накапливать на своих серверах информацию об IP-адресах пользователей. А эта информация, в свою очередь, сможет пригодиться для построения профиля пользователя для таргетированной рекламы. В идеале таргетированная реклама должна использовать данные о пользователях, которыми они добровольно делятся. А здесь пользователей никто не спрашивал.

Как удалить репозиторий от Microsoft


Рекомендую удалить репозиторий от Microsoft из своей системы, только если конечно вы его ранее не устанавливали сами. Удалить его просто. Сначала удалите репозиторий из списка источников, а затем удалите ключ Microsoft из системы. Два этих действия показаны на скриншоте ниже.

Заключение


Не знаю, кому именно принадлежит идея добавить репозиторий Microsoft в Raspberry Pi OS – самой Microsoft или Raspberry Pi Foundation, которая стоит за разработкой дистрибутива – но идея, на мой взгляд, дурацкая. Дурацкая хотя бы потому, что нововведение не обсуждалось заранее. Задачи Raspberry Pi Foundation, как некоммерческой организации, заключаются в том, чтобы преследовать цели своего сообщества, а не отдельной компании. Вышло как раз наоборот.

Поделитесь в комментариях, используете ли альтернативные дитсрибутивы на своих одноплатниках? И если да, то какие?

Показать полностью 2
11

XOD dht22 выпадение в ошибку ноды

Доброго времени суток. При попытке создать в XOD простейшей программы для термогигрометра, нода выпадает в ошибку. Это лыжи не едут или у меня руки не из того места?

Причем часть скетча со светодиодом работает. Действовал по урокам @VitaliySh и рекомендациям с гитхаба, но ответа пока ненашел.

Показать полностью 1
549

Эмулятор RFID на Arduino1

Мне нравится технология RFID, но карты типа  EM Marine совершенно не защищены. Ранее на других ресурсах у меня были публикации как сделать эмулятор буквально на трёх деталях. Но, на деле, этот эмулятор оказался достаточно сложным для повторения.

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


Аппаратное обеспечение


Как я уже сказал, эмулятор должен быть собран на доступных комплектующих, которые можно легко достать. Для начала рассмотрим схему эмулятора.

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

Самым сложным для нас в этой связке остаётся настроенные на частоту 125 кГц колебательный контур. И есть очень простое решение, откуда его можно взять. В продаже существует считыватель RFID-меток для Arduino RDM6300. Считыватель стоит сущие копейки, а у него в комплекте уже идёт антенна, а резонансный конденсатор уже распаян на плате. Таким образом, по сути считыватель нам нужен только для двух деталей: катушки и резонанстного конденсатора.

Считыватель RDM6300 и расположение резонансного конденсатора.


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

В результате собираем всё на макетной плате. У меня два резистора в параллели стоит только лишь потому, что на 10кОм резисторов у меня не было под рукой, а были только на 20кОм.

Схема в сборе.


Ну и посмотрим крупным планом, как это всё выглядит. Я специально под конденсатор выделил отдельную платку, там он припаян прямо на монтажные иголки, которые вставлены в этот матрац.

Для того, чтобы проверять работу эмулятора, изначально я думал использовать тот же RDM6300 (купил их два). И даже по началу так и делал, но потом решил, что это как-то не серьёзно, одной Ардуиной отлаживать другую, и разорился на заводской считыватель.

Заводской считыватель.


Взводим таймер


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

Напомню, что у EM4102 используется схема Манчестерского кодирования. Когда идёт модуляция EM4102 протокола, время передачи одного бита может составлять 64, 32 или 16 периодов несущей частоты (125 кГц).

Проще говоря, при передаче одного бита, у нас меняется значение либо единицы на нуль (при передаче нуля), либо с нуля на единицу (при передаче единицы). Соответственно, если мы выбираем для передаче одного бита информации 64 периода несущей частоты, то для передачи “полубита” нам нужно будет 32 периода несущей частоты. Таким образом каждый полубит должен меняться с частотой:

f=125000/32 = 3906,25 Гц

ериод этого “полубита” будет равен 256 мкс.

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

Нам необходимо только забить частоту таймера 3906 Гц, и нам сразу сгенерируют готовый к использованию код. Ну не чудо ли!

Обратите внимание, что частоту я вводил целыми, а он её посчитал дробными и именно ту, которая нам и нужна. Код инициализации таймера у меня получился следующий:

void setupTimer1() {
noInterrupts();
// Clear registers
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
// 3906.25 Hz (16000000/((4095+1)*1))
OCR1A = 4095;
// Prescaler 1
TCCR1B |= (1 << CS10);
// Output Compare Match A Interrupt Enable
TIMSK1 |= (1 << OCIE1A);
interrupts();
}

Гениально, просто, лаконично.

Вектор прерывания для вывода устроен тоже очень просто. Напоминаю, что нам необходимо делать переход с единицы на нуль в случае передачи нуля, и с нуля на единицу, в случае передачи единицы (смотрите рисунок для понимания). Поэтому смотрим, что мы сейчас передаём и в каком месте “полубита” находимся, постепенно считывая из массива data все данные.

ISR(TIMER1_COMPA_vect) {
TCNT1=0;
if (((data[byte_counter] << bit_counter)&0x80)==0x00) {
if (half==0) digitalWrite(ANTENNA, LOW);
if (half==1) digitalWrite(ANTENNA, HIGH);
}
else {
if (half==0) digitalWrite(ANTENNA, HIGH);
if (half==1) digitalWrite(ANTENNA, LOW);
}
half++;
if (half==2) {
half=0;
bit_counter++;
if (bit_counter==8) {
bit_counter=0;
byte_counter=(byte_counter+1)%8;
}
}
}

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


Перевод данных для передачи


Тут тоже следует освежить в памяти форматы данных, хранимые на карте. То, в каком виде они записаны. Давайте на живом примере.

Предположим у нас есть карта, но нет ридера. На карте написан номер 010,48351.

Реальная карта с номером 010, 48351.


Как этот номер нам перевести в тот серийный номер, который записан на карте? Достаточно просто. Вспоминаем формулу: переводим две части числа отдельно:

010d = 0xA
48351d = 0xBCDF

Итого, серийный номер у нас получается: 0xABCDF. Проверим его, считываем карточку считывателем (он читает в десятичном формате), получаем число:

0000703711

Переводим его любым калькулятором в хекс-формат и получаем снова: 0xABCDF.

Вроде пока просто, погодите, сейчас мозги придётся поднапрячь. Напомню формат данных, которые лежат на самой карте.

Проговорю словами:

1.Вначале идут девять единиц заголовка.

2.Младшие пол байта ID клиента.

3.В конце бит чётности.

4.Вторые пол байта ID клиента.

5.Бит чётности.

6.Младшие пол байта нулевого байта серийного номера.

7.Бит чётности

8.Старшие пол байта данных байта нулевого байта серийного номера.

9.Точно так же все остальные данные, передаются ниблами и оканчиваются битом чётности

10.Самое сложное. Теперь все эти 10 нибблов по вертикали точно так же вычисляется бит чётности (прямо как в таблице).

11.Завершает всё это безобразие стоп бит, который равен всегда нулю.


Итого у нас получается 64 бита данных (это из пяти байт!). В качестве ремарки, мой считыватель не читает ID-клиента, и я его принимаю равным нулю.

Что такое бит чётности? Это количество единиц в посылке: если оно чётное, то бит чётности равен нулю, если нет, то единице. Проще всего рассчитать его, просто обычным XOR.

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


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

card_id — это серийный номер карты (о котором мы говорили выше).


Первый столбец — это ниблы, второй — их битовое представление, третий — это бит чётности. Третья строка снизу — это биты чётности всех ниблов. Как я уже сказал, они рассчитываются просто операцией XOR.


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


#define CARD_ID 0xABCDF
uint8_t data[8];
void data_card_ul() {
uint64_t card_id = (uint64_t)CARD_ID;
uint64_t data_card_ul = (uint64_t)0x1FFF; //first 9 bit as 1
int32_t i;
uint8_t tmp_nybble;
uint8_t column_parity_bits = 0;
for (i = 9; i >= 0; i--) { //5 bytes = 10 nybbles
tmp_nybble = (uint8_t) (0x0f & (card_id >> i*4));
data_card_ul = (data_card_ul << 4) | tmp_nybble;
data_card_ul = (data_card_ul << 1) | ((tmp_nybble >> 3 & 0x01) ^ (tmp_nybble >> 2 & 0x01) ^\
(tmp_nybble >> 1 & 0x01) ^ (tmp_nybble & 0x01));
column_parity_bits ^= tmp_nybble;
}
data_card_ul = (data_card_ul << 4) | column_parity_bits;
data_card_ul = (data_card_ul << 1); //1 stop bit = 0
for (i = 0; i < 8; i++) {
data[i] = (uint8_t)(0xFF & (data_card_ul >> (7 - i) * 8));
}
}

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


Испытания


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

Выводы


Очень надеюсь, что подобные статьи подстегнуть новичков изучать программирование и электронику. А так же они поспособствуют уходу с рынка такого типа карт, как самых незащищённых и небезопасных, поскольку теперь их может скопировать и эмулировать даже ребёнок.


Выражаю благодарность Michal Krumnikl за его терпение много-много лет назад, когда он мне по icq разъяснял работу подобного эмулятора, а так же помощь с разработкой кода. В некотором смысле это его идеи и наработки 13-ти летней давности.


Ссылки

* Исходный код проекта.

* Unique (EM4001) RFID Emulator


З.Ы. Ранее эта статья была опубликована мной на хабре.

Показать полностью 11 1
Отличная работа, все прочитано!