Все потоки
Поиск
Написать публикацию
Обновить
167.36

Программирование микроконтроллеров *

Учимся программировать микроконтроллеры

Сначала показывать
Порог рейтинга
Уровень сложности

Home Assistant или еще один «мозг» для проекта типа «Умный Дом»

Время на прочтение11 мин
Количество просмотров82K
Добрый день, уважаемый читатель. На днях довелось мне поиграться с многим уже известной игрушкой от Google – Google Home. Штука хорошая — обзор ее я делать конечно не буду. В чулане совершенно случайно завалялись Raspberry PI 3 (RPi), Arduino Mega и еще им подобная мелочь, которую захотелось подключить к Google Home (GH) с целью голосового управления. Простого API у GH нет, но есть возможность с помощью стороннего сервиса организовать голосовое управление системой на RPi + Arduino с задержкой команд в несколько секунд.

Читая буржуйские форумы (справедливости ради, нужно отметить, человек я повернутый на автоматизации и IoT), обратил внимание на доселе мне неизвестное нечто, что называют Home Assistant (HASS), эту систему умельцы-то и прикручивают к GH.

В двух словах о самой платформе:

Система написана на Python, последний релиз был 29 января, текущая версия: 0.37.0

Поддерживаемые ОС:

  • Windows 10
  • Mac OS X
  • Ubuntu 14.04
  • Raspbian (Raspberry PI)
  • iOS App – beta

Поддерживаемые компоненты: 545 шт., включая почти все TV/AV receivers, Broadlink, ZigBee, iCloud, Yandex TTS и многое, многое другое.
Читать дальше →

Средства программирования PIC-контроллеров

Время на прочтение15 мин
Количество просмотров162K

Введение


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

Миниатюрные PIC контроллеры хороши для построения преобразователей интерфейсов последовательной передачи данных, для реализации функций «прием – обработка – передача данных» и несложных регуляторов систем автоматического управления.

Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.

Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.

• Характеристики миниатюрного PIC контроллера PIC12F629
• Интегрированная среда разработки MPLAB IDE
• Подключение Matlab/Simulink к MPLAB
• Подключение программатора PIC-KIT3
Читать дальше →

MIPSfpga и SDRAM. Часть 2

Время на прочтение7 мин
Количество просмотров9.1K

Ссылка на первую часть


Рассматриваемая нами конфигурация состоит из следующих элементов:


image


Шина AHB-Lite


Является основным инструментом для общения ядра MIPSfpga с внешним миром. Из нее в модуль доступа к SDRAM поступают команды на чтение и запись информации, по ней же передаются считываемые и записываемые данные. Основная особенность: фаза адреса последующей команды совпадает по времени с фазой данных текущей команды. Лучше всего это видно на следующей диаграмме:
image
Краткое описание изображенных сигналов: HCLK — тактовый сигнал; HADDR — адрес, данные по которому мы хотим записать или прочитать на следующей фазе, задается мастером; HWRITE — при высоком уровне на следующей фазе должна быть произведена операция записи, выставляется мастером; HRDATA — прочитанные данные; HREADY — флаг завершения текущей операции; HWDATA — записываемые данные, выставляются мастером. Документация на шину, включая описание всех сигналов и их возможных комбинаций входит в состав пакета MIPSfpga.

Читать дальше →

MIPSfpga и SDRAM. Часть 1

Время на прочтение4 мин
Количество просмотров7.8K

На этой неделе я закончил работу по добавлению поддержки SDRAM в проект MIPSfpga-plus. Теперь при работе с MIPSFpga помимо блочной памяти, ограниченной ресурсами ПЛИС, доступно еще и внешнее ОЗУ.


Данная статья состоит из 2 частей:


Часть 1. Краткое описание модуля доступа к SDRAM. Пример использования.
Часть 2. Подробное описание работы с памятью, достаточное для того, чтобы в работе модуля смог разобраться человек, ранее не имевший дела с микросхемами ОЗУ. Список литературы.


Предполагается, что читатель как минимум:


  • знаком с предметной областью в объеме учебника Харрис-энд-Харрис [1];
  • имеет опыт программирования на C, ассемблере, использования gcc;
  • имеет минимальный опыт работы с MIPSfpga. Не имея такого опыта, будет логичным начать с более простых вещей, и лишь затем думать о том, как использовать ОЗУ в своей системе.

Если вы уже опытный разработчик, то Часть 1 стоит пробежать глазами по диагонали, Часть 2 — не содержит для вас ничего нового. При этом вы можете принести несомненную пользу обществу, если добавите поддержку SDRAM для еще одной отладочной платы. На текущий момент она реализована только для Terasic DE10-Lite — одной из 9 плат, на которые в рамках проекта MIPSfpga-plus было портировано ядро MIPSfpga.

Читать дальше →

Запускаем датчик скорости потока газа

Время на прочтение6 мин
Количество просмотров15K
Почти год назад была опубликована статья с обзором датчиков скорости потока газов и жидкостей производства компании IST-AG.

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

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


Управление светодиодной лентой WS2801 с использованием Raspberry Pi и iOS

Время на прочтение2 мин
Количество просмотров17K
Всем привет!
Эта статья содержит исходники приложения для операционной системы iOS, цель которого управление светодиодной лентой WS2801, подключенной к Raspberry PI.
Читать дальше →

Arduino на автомойке ч.2

Время на прочтение2 мин
Количество просмотров21K
Продолжаем рассмотрение применения Arduino для автомойки самообслуживания. Рассмотрим работу по сети и общение с купюроприёмником Cashcode. Начало см. тут.
Читать дальше →

Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 3 — UART и GSM модуль

Время на прочтение11 мин
Количество просмотров27K
Сейчас немного научившись программировать под наш микроконтроллер, попробуем связать его с внешним миром. Аппаратные интерфейсные модули STM32 поддерживают много много различных внешних интерфейсов. Начнем с самого часто используемого интерфейса UART. Что это за интерфейс можно прочитать здесь и здесь.
Читать дальше →

Реверс-инжиниринг лазерного сканера Leuze RS4

Время на прочтение24 мин
Количество просмотров31K

Ранее я уже рассказывал о реверс-инжиниринге лазерного датчика расстояния. В этот раз речь пойдет о более сложном устройстве — лазерном сканере Leuze RS4. Как и датчик, этот сканер попал ко мне в сломанном состоянии, так что пришлось заняться восстановлением его работы, и в процессе улучшить некоторые его характеристики, и, фактически, переделать его в другое устройство.
Читать дальше →

«Байкал-T1»: знакомство с платой на первом в России 28-нм процессоре

Время на прочтение3 мин
Количество просмотров58K

В нашу инженерную лабораторию попала демоплата Baikal BFK Rev 1.6 на основе первого российского процессора для коммерческих разработок — SOM Baikal-T1 MIPS.


Двухъядерный процессор «Байкал-Т1» на архитектуре MIPS Warrior P-class P5600 MIPS 32 был анонсирован еще в 2015 году в рамках программы по импортозамещению, его разработчик — российская фаблес-компания «Байкал Электроникс». Эта система на кристалле была создана для проектирования промышленных и потребительских устройств: маршрутизаторов и сетевых накопителей, тонких клиентов, мультимедийных центров, систем ЧПУ и т.п.


Откроем коробку и посмотрим, как работает стандартный пакет поддержки платформы (BSP) на тестовой плате:


Читать дальше →

Механизм защиты от клонирования адаптеров XELTEK

Время на прочтение14 мин
Количество просмотров13K

Предисловие


Эта история началась с того, что нам как-то понадобилось прочесть/записать микросхему FLASH памяти типа SPANSION S29GL512 в корпусе TSOP56. До этого времени мы успешно эксплуатировали программатор XELTEK SuperPro 500P. Но, к сожалению, установленная в нем сокета с 48-ю контактами не позволяла этого сделать даже с применением переходника. Само собой, что и в программе на PC для этого программатора поддержка таких микросхем отсутствовала.

Пора обновляться, решили мы, и приобрели (не сочтите за рекламу) программатор того же производителя модели SuperPro 6100, в котором используются сменные адаптеры с различными сокетами. Также отдельно был приобретен необходимый, как нам тогда казалось, адаптер модели CX1011 с сокетой TSOP56 (в комплекте с программатором шел адаптер с сокетой ZIF48).


Условимся в дальнейшем называть программу программатора просто софтом, потому что «программа программатора» звучит не очень эстетично.

После получения всего этого мы собрали конструктор из программатора с адаптером и попытались начать с ним работу.
Читать дальше →

Подключение Xmega к FRAM по SPI

Время на прочтение5 мин
Количество просмотров5.9K
В одном из приборов, возникла необходимость полного восстановления предыдущего режима работы в случае какого либо сбоя по питанию или кратковременному отключению. Можно было конечно заложить источник резервного питания, но его использование было ограничено, так скажем, конструктивными особенностями прибора. Как результат, было решено записывать ряд необходимых для восстановления значений в память. Так как обновлять значения для восстановления я собирался часто, в связи с ограниченным количеством циклов записи, использование Flash и EEPROM даже не рассматривалось.

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

У Lapis Semiconductor есть три линейки FRAM микросхем, которые обмениваются с ведущим устройством по I2C или SPI, либо по параллельному интерфейсу. Преимущества последовательных интерфейсов перед параллельным очевидны. Что же касается I2C и SPI, то скорость передачи данных по SPI в 4 раза выше чем по I2C, но и потребление в связи с этим выше практически в 16 раз.

Мне же выбирать не приходилось, в наличии была только MR45V256 c 32 Кб памяти и SPI интерфейсом. 32 Кб для моих нужд более чем достаточно, поэтому оставшуюся память я использовал для записи всевозможной технической информации и логирования команд полученных от оператора.

Работа с FRAM памятью очень простая. Любая операция начинается с перевода линии выбора ведомого устройства CS# в низкое состояние. Затем отправляется одна из команд операций, их всего 6:

— Чтение данных(READ)
— Запись данных(WRITE)
— Запись в регистр статуса FRAM(WRSR)
— Чтение из регистра статуса FRAM(RDSR)
— Установка защиты данных от перезаписи(WRDI)
— Снятие защиты данных от перезаписи(WREN)
Читать дальше →

Arduino на автомойке

Время на прочтение3 мин
Количество просмотров32K
Наверное многие уже видели автомойки самообслуживания. Можно ли создать такой аппарат на Arduino?


… следующая волна экономических бедствий… будет результатом быстрой поступи автоматизации, которая упраздняет многие хорошие рабочие места уровня среднего класса (Б. Обама)
Читать дальше →

Ближайшие события

Visual C++ for IoT Development: Прорыв или разочарование?

Время на прочтение3 мин
Количество просмотров8.9K

enter image description here


Как известно мир не стоит на месте и активно развивается. Особенно в сфере IT и конкретно разработки ПО. Самое трудное в этом деле это уследить за всеми новинками и выхватить наиболее ценные и полезные из них. Вот и я только недавно наткнулся на дополнение к Visual Studio под названием Visual C++ for IoT Development, которое существует уже почти год. Потенциально — очень полезная штука, но пока это больше яркое название, чем настоящее Visual C++ для IoT. Давайте разберемся почему.

Читать дальше →

ESP8266 + PCA9685 + LUA

Время на прочтение7 мин
Количество просмотров29K
Привет Хабр! По воли судьбы мне посчастливилось вести в одной из школ кружок по робототехнике, тематика работы затрагивала работу с сервоприводами.

image

Читать дальше →

Погодная станция из Arduino и Orienteer

Время на прочтение5 мин
Количество просмотров13K
Под Новый Год ко мне приходит желание разработать что-нибудь нестандартное. В этот раз я решил начать собирать и обрабатывать погодные данные возле своего дома. И, конечно, выбрал Arduino в качестве железа, а вот в качестве хранилища и инструмента просмотра и анализа — упоминавшийся недавно на Хабрахабре конструктор бизнес-приложений Orienteer. Тем что получилось, я поделюсь в этой заметке.


Читать дальше →

Duplo Railroad Tycoon: Синтез железнодорожной сети с максимальным покрытием

Время на прочтение4 мин
Количество просмотров12K
image

Детям Дед Мороз принес железную дорогу Duplo. Сегменты рельс очень легко соединяются между собой, и можно построить какой-нибудь небольшой, скорее всего просто замкнутый путь, поставить станцию и смотреть, как паровозик бегает по кругу. Иногда он останавливается и детёнок должен паровоз «заправить» из колонки, после чего паровоз снова поедет.
Читать дальше →

Разработка электроники: от идеи до устройства

Время на прочтение12 мин
Количество просмотров75K


Сейчас намного проще найти финансирование для своего проекта, проводятся стартап-аллеи, краудфандинговые платформы пестрят новинками. Ардуино приблизило мечтателей к заветной славе. IoT технологии взяли свое и IT фирмы поняли, что не кодом единым можно жить. Не редкое явление, когда hardware проектом руководят люди, которые несколько далеки от электроники. И еще чаще они думают, что жизненный цикл software-проекта аналогичен жизненному циклу hardware-проекта. Увы, это не так.
Читать дальше →

Real-time BeagleBone: использование высокоскоростных выводов

Время на прочтение14 мин
Количество просмотров30K
Fast GPIO tutorial

Здравствуйте, уважаемые хабравчане! Давно уже являюсь читателем Хабра, но до сих пор не мог найти достойной темы для публикации. И вот, наконец, хорошенько прошерстив Хабр и GT, удивился отсутствию публикаций, посвященных программируемой подсистеме реального времени (PRU‐ICSS) линейки процессоров SitaraTM фирмы TI.

Наиболее популярной и доступной отладочной платой с процессором AM335x является так называемый «одноплатник» BeagleBone Black (White,Green). И именно наличие PRU делает BeagleBone наиболее предпочтительным для использования в hardware-проектах по сравнению с другими бюджетными одноплатниками типа *Pi. Кроме того, в некоторых случаях BBB-PRU может достаточно эффективно заменить связку ПК-МК-ПЛИС.

В данной статье приведен краткий обзор подсистемы PRU и режимов работы высокоскоростных портов ввода/вывода, рассмотрен пошаговый пример инициализации высокоскоростных портов вывода (Enhanced GPIO) и произведена оценка их производительности.
Добро пожаловать

FRAM через I2C для Arduino как замена EEPROM

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

Внутри Ардуины есть EEPROM, конечно же. Много места не надо, чтобы хранить пяток длинных целых, но есть нюанс. EEPROM имеет слишком ограниченный ресурс на запись. Хотелось бы писать данные раз в несколько секунд хотя бы. Ресурс же EEPROM позволяет это делать вполне обозримое время, то есть, встроенная память явно не вечна.
Читать дальше →

Вклад авторов