Посты

STM32 и ЖК-экран WH1602

Самый распространённый и наглядный способ вывода информации из микроконтроллера — это ЖК-экран, самый популярный это WH1602 и подобные экраны компании Winstar. Все они построены на одном контроллере HD44780, и отличаются лишь количеством строк и символов в строке, а также типом подсветки.

WH1602_table

Бот для telegram на node.js

В мессенджере Telegram появилась возможность создать бота — с его помощью вы можете отвечать на сообщения в телеграме, рассылать уведомления, добавлять к сообщениям картинки и так далее.

Пользователи node.js уже подготовили npm-пакет, с которым всё становится ещё проще.

Сначала создаём бота. Стучимся к @botfather, говорим ему /newbot, пишем имя бота и его юзернейм (он должен заканчиваться на _bot).

Теперь у вас есть бот, и @botfather сообщает ссылку для поиска бота и его http-токен. Токен понадобится нам дальше как ключ для API. В своём телеграм-аккаунте вы можете найти своего бота и добавиться к нему в друзья.

Фотография с вебкамеры MacBook в Node.js

Существует модуль imagesnap.js, который включает вебкамеру MacBook, делает с неё фотографию и сохраняет её в файл. Он является враппером над imagesnap, и конечно работает только в OSX. Использование очень простое:

var imagesnapjs = require('imagesnapjs'), fs = require('fs');

var filename = '/Users/catethysis/webcam/webcam.jpg';

fs.exists(filename, function (exists) {
if(exists)
fs.unlinkSync(filename);

imagesnapjs.capture(filename, { cliflags: '-w 2'}, function(err) {
console.log(err ? err : 'Success!');
});
});

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

К недостаткам модуля можно отнести скудную документацию, и возможность съёмки только фотографий, но это ограничение самой утилиты imagesnap. Для видео вам скорее всего понадобится http://github.com/wearefractal/camera.

STM32 и разработка электроники под OSX

Это самая короткая из моих статей.

Просто.

Установите.

Parallels Desktop (думаю, найдёте его) с Win7.

И не мучайтесь. Всё равно в маке Альтиума нет и не будет, а так ещё и IAR можно поставить. И всё просто работает (с).

photo_2015-07-19_17-41-33

Связь по SPI между двумя микроконтроллерами

Это простейший пример передачи данных между двумя модулями SPI в STM32F4. Я использую плату STM32F4Discovery, на ней запущены модули SPI1 и SPI2 в обычном режиме: полнодуплексная связь, длина пакета данных — 8 бит, отрицательная полярность (CPOL = 0), синхронизация по первому тактовому импульсу (CPHA = 0). Для начала сделаем всё самым простым способом — без использования прерываний.

В процедуре main передадим данные из SPI1, они попадут в SPI2 — примем их оттуда. Потом точно так же отправим данные из SPI2 в SPI1.

Первый модуль будет работать в режиме Master, т.е. она управляет трафиком на линии связи, генерируя тактовый сигнал SCK. Второй модуль работает в режиме Slave, и передаёт данные только по сигналу с мастера. Таким образом, мастер должен тактировать и свою передачу (= приём слейва), и передачу слейва (= приём мастера). Сам слейв по своей инициативе передавать данные не может.

Поэтому мастер должен «протактировать» передачу слейва. Сделать это очень просто, нам достаточно просто отправить мастером посылку с любыми данными нужной длины, при этом во входной буфер будут приходить данные от слейва. Модуль SPI слейва устроен как сдвиговый регистр, линия тактов которого подключена ко входу SCK, а входящая и выходящая линия данных — к MOSI и MISO соответственно. Подача тактов на SCK заставляет этот сдвиговый регистр выталкивать в MISO своё внутреннее состояние.

Можно сделать и по-другому, постоянно переназначая роли master и slave.