Comments 37
Спасибо за статью!
А где брали такой корпус? Судя по всему у него еще есть отсек под два АА аккумулятора?
Судя по спецификации Ланчпаду и одного лития будет уже много (по напряжению)
Разве что одну (или две в параллель) лифепольки…
Корпус брал в магазине «Радиодетали» на Петропавловской (в г. Перми).
Что-то типа этого. Только покупал дешевле и давно под Arduino. Впрочем, Arduino туда не влезает.
Отсек под две батарейки AA там действительно есть.
Думаю его вырезать, для освобождения места.
Тогда убирайте фразу про бюджет проекта в 200 рублей — один корпус выходит дороже.
Корпус мне обошёлся ориентировочно в 50 рублей. Плата примерно 130 руб. Пищалку можно найти рублей за 20.
Впрочем, некоторые детали (пищалку и аналогичный корпус) можно попросту найти в своём чулане.
Следующим шагом должна быть интеграция этой штуковины с CI-сервером для генерации ацкой сирены при поломанном билде
Под windows 7 есть очень простой способ писать в любой COM-порт из командной строки:

powershell "$port= new-Object System.IO.Ports.SerialPort COM10,9600,None,8,one; $port.open(); $port.WriteLine(«1»); $port.Close()"

Но я все равно не понял, почему бы вам просто не подключить колонки к серверу?
Спасибо за способ, про PowerShell не подумал. Хотя это всё равно был бы велосипед из под PHP.
почему бы вам просто не подключить колонки к серверу?
Интересно было поковыряться с MPS430, а так, конечно можно и на Си написать, чтоб висело сервисом, и проигрывало звук в колонки. Безо всяких коробочек на столе.
то есть теперь можно не только мигать и но бибикать на все тона?)
в принципе можно было и встроенной пищалкой проиграть…
Вот всегда, когда напрямую цепляют любой элемент (зуммер в данном случае) к порту контроллера, у меня возникает вопрос: а вы уверены, что ток потребления не привысит максимально допустимый? И что на двадцатом коммите вместо мелодии вы не услушите «пук» и ножка контроллера отвалится?
Те же мысли. Автор, учи матчасть (:
Зуммер и вообще всё, что может потреблять ток выше, чем указано в даташите на МК для его ножек, должно подключаться через транзистор или специальную микросхему-драйвер типа L293. Также можно ограничить ток, отдаваемый ножкой, при помощи резистора: вспоминаем закон Ома (упрощённый вариант): I = U/R; этот способ обычно применяют при подключеннии светодиодов: стандартный светодиод потребляет около 5 мА, что при напряжении 5 В даёт нам сопротивление ограничивающего резистора в 1 КОм.
Не могли бы вы, для новичков, набросать схему подключения через резистор, транзистор и драйвер.
Очень любопытно, а то встречал сборку где и сервопривод напрямую к МК подключён. Что видимо совсем не правильно.
Сервомашинки высоокомным сигнальным входом почти не потребляют тока. А схемы подключения легко нагугливаются. Я бы даже постеснялся назвать изображение подключение светодиода через резистор «схемой» — подключения возможно только два и оба равноправны.
при 5мА он будет еле светить. вешайте от 150 Ом совершенно спокойно. Ведь на диоде еще падение напряжения происходит.
У вас светодиоды старые, наверное. Новые обычно на 5 мА светят отлично, а на бывших стандартных 20 мА выжигают глаза.
Приведенная автором ниже «пищалка» (HC0905F) потребляет до 70(!)mA. Никакого «буфера» по защите предусмотрено в схеме, как я понимаю, не было. Да и схемы нет, зачем тут всё ежу понятно :(
У вас же для начинающих статья? Тогда не хватает некоторых вещей.

1. Питание: почему его не сделать автономным? Сколько потребляет в среднем ваш дивайс?
2. Чем пищит ваше устройство? Почему не приведены характеристики (помимо этого и стоимость) пищалки. Схема её подключения.
3. Energia. Понятно, что это шаг TI привлечь пионеров с Ардуино. Новичков же лучше приучать сразу к правильным инструментам: Code Composer Studio с той же Grace не отнимет сильно больше времени у начинающего разработчика, а понимания как все работает (а чаще не работает) сильно прибавится.
1. Питание как раз от USB, по которому и передаются данные. Конечно, можно запитать от аккумуляторов / батареек и интерфейс приёма/передачи реализовать на хардовом COM-порте, но это как-то совсем бессмысленно, если в компьютер всё равно тянется провод. Хотя сделать девайс автономным было бы на самом деле классно. Например с WiFi. Жаль, что у меня сейчас нет подходящих деталей.

2. Пищалка — отдельная история. Первую пищалку я нашёл в куче хлама, который я коллекционирую. Сзади было написано 8Ω 0.5W. Но учитывая её параметры, она довольно тихо пищала. Порылся ещё и нашёл мелкую пищалку типа HC0905F.

3. Я сознательно решил воспользоваться Energia, т.к. сам для себя хотел провести аналогию с уже знакомой Arduino IDE и просто сравнить, насколько сложнее будет разобраться с Energia, учитывая все её недоделки и грабли.
CCS 5, кстати говоря занимает около 1 Гб и чтобы получить прямую ссылку на скачивание необходимо правильно заполнить форму на сайте. В противовес, дистрибутив Energia весит примерно 80 Мб, и скачивается напрямую.
Кроме того, Energia «из коробки» работает субъективно проще для новичков.
А зачем тут микроконтроллер? Он как ни крути подключен к компьютеру, почему не воспроизводить компьютером?
Вы почти ответили на свой же вопрос: затем, чтобы выпендриться с MSP. Я и сам, когда познакомился с Arduino, тоже подобной фигнёй страдал. Теперь вот осваиваю STM32, чтобы страдать более крутой фигнёй.

А вообще, меня позабавило то, что автор в начале статьи пишет, что многие ограничиваются миганием светодиодом — и тут же сам использует МК для того, чтобы пищать, что мало отличается от вышеупомянутого мигания :D
Поначалу я пошёл по пути, пройденному с Arduino, но знакомые библиотеки не подключились «из коробки», и пришлось читать .h файлы, гуглить, и городить свои реализации того же Tone. Никто и не говорит, что пример сильно сложнее мигалки.
Я буду рад, если это окажется кому-то полезным. Кроме того в статье описана связь МК в качестве управляемого компьютером девайса. С радостью почитаю ваши статьи по STM32.
О том же подумал :).
Даже если компьютер без звуковой карты, то с пищалкой уж точно.
Сделайте опрос из серверного «кронджоба» + готовящего данные в каком-то простом текстовом варианте.
Используйте дешевый езернет контролер, они стоит 4-5 уе, самые простые, и будет
интересная тема получается.
Специально поставил перемычки как у автора на первой фотке и залил код «Пример работы с терминалом» и не работает.
Выкидываю это:
//#include <TimerSerial.h>
//TimerSerial mySerial;

меняю mySerial на Serial, перетыкиваю пееремычки RXD и TXD и все работает.

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

Кто нибудь может рассказать новичку почему так?
Сам себе отвечу.
На первой фотке воткнута M430G2553, а судя по принт скрину Energia, код автор заливает в M430G2452.
Для этой МК перетыкивать перемычки для общения с COM не нужно.
Вот и разгадка.
От новичка новичку. Спасибо!
Невнимательность меня погубит. Хардовый вариант действительно лучше.
И с библиотекой Tone они подружились.
Сейчас допишу поддержку Nokia RTTTL и успокоюсь.
Думаю, нужно нутро TimeSerial.h просматривать.
Ланчпад поддерживает софтовый и хардварный UART (выбирается как раз положением перемычек).

В хардовом — вы просто задаёте режим работы внутреннего юарт и пихаете целый байт для передачи ему в регистр. А он уже сам с нужным битрейтом занимается низкоуровневой пересылкой/проверкой. По завершению отправки юарт выдаёт прерывание — и вы суёте ему следующий байт, и т.д. При этом пины для приёма/передачи жёстко заданы. Из комплектных МК хардовый юарт поддерживает чип 2553.

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

В поставляемых примерах принято (не знаю, почему) софтовый юарт делать на пинах, противоположных хардовому. Т.е. перемычки на плате просто меняют коммутацию rx/tx. В случае с хардовым сработает только «поперечное» положение перемычек; а в софтовом варианте вы можете подправить программу под любое из положений.

Это я к чему? Пока не заглянете в TimeSerial.h — не узнаете, как оно там сделано внутри. Если там софтовый юарт (а что-то мне подсказывает, что скорее всего именно он) — то назначение выводов может стоять какое угодно, и простейший способ выяснить просто запуская тестовый пример — «метод тыка».
Правильно подметили. Тем более у автора один МК на картинке, другой в проекте использован.
Разница важна, так как M430G2553 имеет на борту полноценный UART, 52-ой же только софтовый.
у меня этот код
#include

TimerSerial mySerial;

// Начальные установки
void setup() {
mySerial.begin();
mySerial.println(«Welcome to CommitBeep 1.0»);
}

// Главный цикл
void loop() {
while (mySerial.available()) {
char inChar = (char)mySerial.read();
mySerial.write(inChar);
delay(100);
}
}

не компилится:
core.a(TimerSerial.cpp.o): In function `TimerSerial::begin(unsigned long)':
/media/heap/data/soft/energia/energia-0101E0008/hardware/msp430/cores/msp430/TimerSerial.cpp:104: undefined reference to `__udivmodsi4'
collect2: выполнение ld завершилось с кодом возврата 1

Это все на ubuntu, launchpad v1.5, M430G2553, перемычки Rx Tx повернуты на 90 градусов.
Куда копать полному новичку в этих вопросах?
Скажите пожалуйста, вы специально обошли стороной стандартный механизм хуков svn для получения данных о коммитах? Как-то громоздко выглядит curl и парсинг раз в минуту веб-морды для svn, когда можно в post-commit записать одну-единственную строчку с вызовом бикалки. Получится практически real-time информирование.
Более того, при использовании проверок в pre-commit, фейлы можно обозначать какой-нибудь сиреной и выводить на светодиодное табло логин провинившегося :)
Еще можно подумать в сторону использования BlueTooth, ZigBee или других беспроводных технологий, чтобы отвязать устройство от компьютера.
Вероятно я всё пропустил. У клиента SVN есть возможность держать соединение с сервером и быть в курсе всех событий?
Я имел ввиду хуки на сервере, подразумевая, что сервер и устройство находятся в непосредственной близости. Если вам нужно получать информацию не на сервере — можно складывать события в базу, в очередь, в отдельный файл и т.п., чтобы на заниматься парсингом лишний раз.

Что касается клиента — можно было бы помимо парсинга использовать, например, модуль svn и дёргать svn_log с лимитом.
Да, вы правы, так тоже можно, но сервер у нас хоть и близко, но не достаточно. Приходится вызывать всё с клиента.
А раз у нас уже поднята веб-морда, то решили не выдумывать и просто парсить её. Парсинг HTML ничем не хуже парсинга логов, например.
Первоначально вообще была завязка на RSS от Redmine, но от неё отказались, т.к. у Redmine есть кэш, который обновляется при обращении к списку хранилища.
Что касается Redmine, то в post-commit хуке можно его дергать, чтобы обновлялся кэш. Это удобно, например, для автоматической привязки коммитов к задачам (wiki).
Only those users with full accounts are able to leave comments. Log in, please.