Рубрика «программирование микроконтроллеров» - 107

Современный квадро (гекса, окто) коптер — это достаточно мощное «вычислительное» устройство, способное управляться со смартфона по WiFi, зависать в одной точке, летать по маршруту и пр. Купить такой аппарат сейчас может любой желающий. А с чего все начиналось?

Как летает квадрокоптер?

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

Осторожно, траффик.
Читать полностью »

1-Wire slave на МК. Часть 2: Реализация в коде - 1
Первая статья цикла: 1-Wire slave на МК. Часть 1: Железо

Что есть в инетрнете по 1-Wire slave

В интернете про реализацию 1-Wire мастера можно найти множество информации, статей, application notes для микроконтроллеров на любой вкус и цвет.
А вот для реализации со стороны Slave материалов немного. Исходных кодов и того меньше. В итоге был найден один исходник для PIC, с ассемблерными вставками и ошибками. Недавно появилась статья на хабре для MSP430 от resetnow. Под катом наш вариант реализации задачи.Читать полностью »

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

Итак, по порядку. Когда моя любовь к часам и точному времени достигла терминальной стадии, было решено воплотить мечту в жизнь. Начался поиск доступных плат для разработки с Ethernet на борту. Rapsberry с линуксом показались “пушкой по воробьям”, поэтому кинул вопрос на форум Netduino, ибо сейчас крепко сижу на C# и было интересно запустить байткод на микроконтроллере. Но увы, единственный модератор форума, видимо, уехал на отдых, и ему потребовалось несколько недель, чтобы одобрить и опубликовать мое первое сообщение. Not good, not good… На aliexpress была заказана плата Arch Pro и прочий недостающий обвес. Тогда это было самое доступное решение. На самой плате установлен микроконтроллер LPC1768 от NXP (ядро Cortex-M3), плюс LPC11U35 (Cortex-M0) для облегчения коммуникации с их софтом. Сам производитель предоставляет online IDE, компиляция тоже на их сервере, прошивка скачивается и закидывается на плату как файл на флешку, дебаггера нет, поэтому разработку проекта начал в Keil uVision, пробной версии, конечно же. Для прошивки и отладки микроконтроллера требуется только кабель micro-USB.

В качестве часов реального времени была выбрана ИС DS3231, которая приехала ко мне в виде готового модуля, общающегося по I2C:

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

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

1. Устройства вывода

Итак, у нас есть некая платформа (Arduino, Raspberry, PIC/AVR/STM-контроллер, etc), и стоит задача подключить к нему некую индикацию. Есть множество вариантов, которые мы и рассмотрим.

Сегментная индикация

Тут все просто. Сегментный индикатор состоит из обычных светодиодов, которые банально подключаются к микроконтроллеру через гасящие резисторы.
Самодельные электронные часы, элементная база — часть 2 - 1

Осторожно, траффик!
Читать полностью »

Немного теории

Тактирование микроконтроллеров Atmel SAMD20-21 - 1
Согласно документации на микроконтроллеры Atmel серии SAMD20/21 система тактирования состоит из следующих блоков:

  • блок источников сигнала (управляется SYSCTRL)
    • Clock source – это базовая частота в системе. Это может быть, например, внутренний осциллятор 8 МГц (OSC8M), внешний осциллятор (XOSC), блок цифровой фазовой автоподстройки частоты (DFLL48M);
  • базовый контроллер тактовой частоты (GLCK-generic clock controller), который управляет системой распределения тактовых сигналов и состоит из:
    • базовых генераторов частоты (Generic Clock Generator) — это программируемый предделитель, к которому может быть подключен любой источник сигнала. С выхода генератора 0 (GCLKGEN[0], GCLK_MAIN) сигнал идет на блок управления питанием (Power manager), который генерирует главный тактовый сигнал;
    • базовые тактовые сигналы (Generic Clocks) – обычно это сигналы, которые тактируют периферию. Базовые тактовые сигналы, с помощью базовых мультиплексоров сигнала могут использовать любой из доступных в системе тактовых сигналов. Разные периферийные блоки могут использовать разные тактовые сигналы. Выход мультиплексора 0 используется как источник опорного сигнала для блока цифровой фазовой автоподстройки частоты. Обратите внимание, что в таком случае выход с DFLL не должен использоваться как опорный сигнал для генератора, выход которого используется как опорный для мультиплексора 0.
  • блок управления питанием (PM – Power manager)
    • блок управления питанием управляет синхронным тактированием системы. Это включает в себя CPU, шины (APB, AHB) и синхронную (с точки зрения CPU) периферию. Он содержит маски тактирования, с помощью которых можно включать и выключать пользовательский интерфейс периферии, а также делители для тактовых сигналов CPU, шин.

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

Безумству храбрых поем мы песню

Недавно случайно узнал о существовании очаровательного девайса MG238 — тестера электронных приборов. Посмотрел пару видео, слегка офигел, нашел сайт автора (кстати проект открытый, я думаю, что производители-китайцы авторские не платят), посмотрел схему и офигел окончательно. То есть измерительная часть представлена 3 управляемыми делителями и ЭТО меряет все, что я увидел в ролике?

Первая мысль была — это фейк, но есть отзывы людей, данный прибор купивших и его использующих, и в основном позитивные. Тогда пришла вторая мысль — почему это не сделал я? На этот вопрос есть множество ответов, главным из которых будет «Старшая сестра не позволила». Для тех, кто в танке — это от присловья «Лень раньше тебя родилась». Ну да ладно, проехали, но все-таки, как ЭТО работает. Исходные коды выложены, схема дана, можно посмотреть, но возникло желание понять самому, раз сделать не успел, то хотя бы повторить (если не в железе, то в голове).
Читать полностью »

Долгое время игрался с Arduino-подобными платами, но всё время хотелось «меньше, дешевле и ближе к железу!», и вот — первый опыт программирования чистого ATtiny. В статье не будет какой-то особо эффективной схемы металлоискателя. Это всего лишь демонстрация того, на что способен микроконтроллер за 47 центов + путь чайника в этом, как выяснилось, совсем не сложном деле перехода от Arduino на уровень ниже.
Читать полностью »

1-Wire slave на МК. Часть 1: Железо - 1
Для одного из проектов по автоматизации потребовалось сделать устройство, которое является подчинённым 1-Wire устройством, принимает команды от мастера и выставляет на своих выходах значение аналогового сигнала в диапазоне от 0 до 10В.
Проанализировав линейку стандартных микросхем 1-Wire от Maxim, стало ясно, что нет микросхемы, которая позволит реализовать подобный функционал.
Потому было принято решение реализовывать 1-Wire slave на микроконтроллере. Надеюсь, данный материал будет интересен и полезен людям, которые делают «умный дом» своими руками, т.к. 1-Wire достаточно популярная шина в подобных проектах. В качестве камня был выбран МК Cortex M0+ ATSAMD20G16 от Atmel, но о реализации в коде расскажем во второй части. Забегая немного вперед, скажу что в третьей части цикла пойдет речь о реализации собственного семейства устройств для линуксовой библиотеки OWFS (One Wire File System). А сегодня расскажем о некоторых аппаратных решениях, к которым мы пришли в процессе разработки.
Читать полностью »

В среде Arduino удобно иметь доступ к Bluetooth с профилем серийного порта BT SPP (Bluetooth Serial port profile), чтобы реагировать на команды, посылаемые через последовательный Bluetooth порт. Во многих Arduino проектах используется эта возможность, чтобы удаленно управлять устройством. Раньше вам был нужен дополнительный Bluetooth шилд или Bluetooth набор, чтобы получить такую возможность на Intel Galileo. А так как сейчас на Intel Edison есть встроенная поддержка Bluetooth, то достаточно просто использовать Arduino-адаптер, чтобы создать такое Arduino устройство. Никаких дополнительных шилдов не потребуется.

Соединение Arduino программы на Intel Edison c телефоном Android по Bluetooth профилю SPP (Serial Port Profile) - 1
Читать полностью »

Продолжаем рассказывать о системе управления отоплением дома с применением таймера-термостата NM8036 (начало здесь, продолжение здесь).

Автоматика управления отоплением дома своими руками. Часть 3 - 1

Программные строки и программа для NM8036.
Таймер-термостат NM8036, конечно, вещь неплохая, но без человека это все равно всего лишь «железка». Я говорю о том, что для нормального управления отоплением в частном доме нужна программа, составленная в соответствии с тем оборудованием, которое применяется. С чего начать?
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js