Показаны сообщения с ярлыком Книги. Показать все сообщения
Показаны сообщения с ярлыком Книги. Показать все сообщения

09.05.2014

Книжная полка

Недавно издательство БХВ порадовало нас книгой Виктора Петина "Проекты с использованием контроллера Arduino"



К сожалению, полноценной рецензии выдать не могу, доступно только оглавление:
  • краткий обзор плат Arduino;
  • описание всех операторов языка Wiring;
  • описание встроенной библиотеки Serial;
  • описание встроенной библиотеки LiquidCrystal и даже пара слов про LiquidCrystalRus;
  • описание встроенных библиотек EEPROM, Ethernet, OneWire, SD, Stepper;
  • разбор подключения мыши и клавиатуры PS/2 - библиотека ps2dev;
  • работа с датчиками iButton, DS18B20, DHT11 и DHT12;
  • подключение к светодиодным матрицам;
  • примеры стыковки с RFID-приемниками, купюроприемниками, датчиками расстояния HC-SR04;
  • освещается вопрос обмена данными с помощью ИК, в том числе различные типы кодирования;
  • работа с ходовой частью робота через микросхему L293D;
  • использование приемопередатчика Bluetooth HC-05, а также NRF24L01 с помощью библиотеки Mirf;
  • вывод на экран телевизора с помощью библиотеки TVOut, с примерами игровых программ;
  • работа с USB через USB Host Shield;
  • немного про ROS (распределенная операционная система для роботов) и X10 (умный дом).
Приятно, что книги про Arduino на русском все-таки выходят - даже оглавление само по себе указывает путь к практическим решениям. Я специально сопроводил его ссылками на соответствующие статьи (в первую очередь на русском языке).

Будет ли достаточно этой книги именно для вашего проекта? Лично я ожидал хоть что-то про использование Arduino Due и Leonardo (они упоминаются в обзоре), изменение прошивок ATmega16u2 (на последних Uno и Mega), про использование программатора - в реальности рано или поздно этот вопрос возникает (хотя на тему программирования ATMEL недостатка в литературе нет, например книга Ревича). Стоило бы посвятить больше места шилд-платам.... Хотя, стоп! Надо сказать автору "большое спасибо" уже за это издание (лучшее "спасибо" - это легально купленный экземпляр книги, особенно если хотите продолжения ;).

Если кто-то прочел и хочет оставить отзыв - милости прошу в комменты, расскажите ;) Еще лучше, если будет сравнение с предыдущей книгой Соммера.

А примеры из книги можно скачать здесь.

17.05.2012

Вторая книга по Arduino на русском



Скоро нас ожидает выход Getting Started with Arduino на русском языке - самой первой книги про Arduino, автором которой является сам Massimo, в переводе Михаила Райтмана (судя по отзывам, его переводы выполнены довольно качественно).

Книга будет полезна для начинающих знакомство с Arduino, быть может даже musthave. Но если на чистоту, момент выпуска упущен года на четыре. Текст книги, равно как и русский перевод, давно уже гуляет по просторам интернета, не говоря о том, что бесплатный сокращенный вариант изначально доступен свободно. 

В русском переводе книга приобрела название "Arduino для начинающих  волшебников". Есть пара смутивших меня моментов - изменена оригинальная обложка и убрана ссылка на издательство O'Relly (интересно, Тим в курсе?) - и это при полном (!) дублировании оглавления (интересно, Массимо в курсе? ;) 

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

04.04.2012

Freeduino wireless (1)

Однажды мне повезло выкроить время на посещение мероприятия Hard StartUp в рамках нашего провинциального hackspace. Сам я от выступления категорически отказался под предлогом бессистемного расстройства вокабулярия к концу рабочего дня, но послушал выступающих с интересом; явно бросалось в глаза, что докладчики испытывали недостаток в пульте дистанционного управления презентацией: приходилось просить листать слайды сидящего за ноутбуком человека.

Ясно, что радиокружок хакспейс выруливает в основном за счет энтузиазма его активистов и базы ИТМО, и у ребят просто могло отсутствовать нужное оборудование. Уверен, что это было не последнее их мероприятие с проведением презентаций, поэтому предлагаю свой Arduino-вариант аналогичного устройства - надеюсь, оно пригодится не только им.

Ингредиенты

Сначала создадим прототип - из того, что найдется под рукой. Мне всегда несколько проще, потому что у меня под рукой целый mk90.ru/store ;)

1. Плата Freeduino32u4 - содержит единственный чип ATmega32u4, который может изображать из себя клавиатуру, и поэтому именно ее мы будем подключать к компьютеру с презентацией;
2. Плата Freeduino Nano - будет находиться в руке у докладчика, считывая нажатия на кнопки прокрутки и передавая их Freeduino 32u4;
3. Кнопки, проводки и пара беспаечных макеток, чтобы не хвататься за паяльник по пустякам.
4. Комплект модулей беспроводной связи - наверное, самые дешевые устройства для передачи низкоскоростного информационного потока через эфир для небольших расстояний.


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

Прежде всего, вот заранее мой ответ фанатикам  IEEE 802.11, на вопрос "почему в списке нет wifi?!": не палите из пушки по микробам! В нашей задаче не нужна маршрутизация, одновременная коммуникация между несколькими устройствами и повышенная проникающая способность радиоизлучения. Нас устроят гораздо более простые устройства  - т.н. RF-трансиверы. В основном, они отличаются мощностью, несущей частотой и способом модуляции. Возьмем недорогой маломощный модуль, используемый в самоходных радиоуправляемых игрушках и работающий на нелицензируемой в России частоте 433 МГц, с модуляцией ASK.

"ASK" означает, что частота и фаза сигнала остаются постоянными, а для кодирования единицы и нуля варьируется амплитуда. Подобные приемники и передатчики можно собрать и самостоятельно, подробнее об этом можно прочесть, например у Алексея Кравченко в книге "10 практических устройств на  AVR, книга 2".

Однако, слабые места такого решения тоже выглядят внушительно:
  • два передатчика, работающие на одной несущей частоте, будут конфликтовать, мешая друг другу;
  • приемник не имеет возможности отличить посылку от одного передатчика от посылки другого - надо позаботиться об идентификации программным способом; 
  • сильная подверженность помехам, радиус действия зависит от питающего напряжения; 
  • практически нулевая безопасность, шифрование аппаратно не поддерживается.

Что-то решается программно, что-то - схемотехнически, но самое главное - такие приемопередатчики поддерживаются ArduinoIDE с помощью специальной библиотеки VirtualWire.

Схема

Рисуем схему, которая будет подключаться к USB:


И ту, которая в руке у лектора (с кнопочками):


Предполагаем пока, что обе платы питаются от компьютера, через USB.

Макет

Как бы не ругали беспаечную макетку за надежность контактов, на несложных схемах работать с ней весьма удобно. Я использую сочетание жестких и гибких проводов (вообще, это дело вкуса - гибкими быстрее, но менее наглядно). С платой 32u4:


С платой Freeduino Nano:


Кнопки устанавливать я поленился, выбрав в качестве имитации их нажатия втыкание проводка в дырочку рядом с соответствующим контактом Nano (естественно, другим концом провод воткнут в GND).

Скетчи

Как уже упоминалось, существует библиотека VirtualWire. Она будет делать за нас всю нудную работу - не только управлять приемником и передатчиком, но и кодировать наше сообщение помехоустойчивым кодом, а также считать/проверять контрольную сумму всего сообщения. Выбирая пины Arduino-совместимой платы для подключения приемника и передатчика, я вполне сознательно выбрал те, с которыми библиотека работает по умолчанию (помните об этом, если будете менять схему - не забудьте передать соответствующие параметры библиотеке).

Скетч передатчика:

#include <VirtualWire.h>

#define buttonsCount  3
int bState[buttonsCount];
int bNum[buttonsCount] = {2,3,4};

void setup() {
  // buttons
  for (byte i=0;i<buttonsCount;i++) {
    bState[i] = HIGH;
    pinMode(bNum[i],INPUT); // для ясности, после сброса все пины и так уже входы
    digitalWrite(bNum[i],HIGH); // pullup
  }
  // инициализируем последовательный порт - только для отладки
  Serial.begin(9600);
  // инициализируем библиотеку VirtualWire
  vw_setup(2000);      // скорость обмена в бит/сек
}

void loop() {
   for  (byte i=0;i<buttonsCount;i++) {
     if (digitalRead(bNum[i])!=bState[i]) {
       if (bState[i] == HIGH) {
         char key[2] = {i+1,'\0'}; 
         vw_send((uint8_t *)key, strlen(key));
         vw_wait_tx();
         bState[i] = LOW;
       } else bState[i] = HIGH;
     }
   }
   delay(100);
}

Перед началом использования кнопок, в setup включаем подтягивающие резисторы (зачем нужны подтягивающие резисторы, я уже писал). Далее, сканируем изменение состояния кнопки и, если она перешла из состояния "свободна" в "нажато", генерируем и передаем через беспроводной модуль сообщение с номером кнопки (единственный байт со значением 1, 2 или 3). Задержка в конце - примитивная борьба с дребезгом.

Скетч приемника:

#include <VirtualWire.h>

#define KEY_LEFT 80
#define KEY_RIGHT 79
#define KEY_ESC 41
#define KEY_F5 62


void setup() {
  pinMode(13, OUTPUT); // для индикации приема
  vw_setup(2000); // скорость обмена в бит/сек 
  vw_rx_start();  // инициализация и запуск приемника
}

void loop() {  
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(buf, &buflen)) // неблокирующее чтение
  {
     digitalWrite(13, HIGH); // Зажигаем светодиод L - принято сообщение  
     byte key = buf[0];
     
     if (key==1) Keyboard.print(' ');
     else {
      { 
        KeyReport kbd = {0};
        if (key==2) kbd.keys[0] = KEY_LEFT;
         else kbd.keys[0] = KEY_RIGHT;
        Keyboard.sendReport(&kbd);
      }
      {
        KeyReport kbd = {0};
        Keyboard.sendReport(&kbd);
      }                        
     }     
     digitalWrite(13, LOW);
   }
   delay(200); 
}


Этот скетч будет корректно работать (и вообще скомпилируется) только с последним пропатченным ядром ArduinoIDE для Freeduino 32u4 - там функция sendReport сделана публичной, чтобы скетч был способен генерировать нажатия не только на символьные клавиши (буква 'A', цифра '8' или пробел), но и управляющие коды - (стрелки, F-клавиши и т.п.). После вызова sendReport с кодом нажатой клавиши, нужно всегда делать еще один, чтобы сообщить о ее отпускании, в противном случае через некоторое время получим режим повтора.

В данном скетче кнопка №1 транслируется в пробел, кнопка №2 - стрелка влево, кнопка №3 - стрелка вправо. Функция vw_get_message вернет нам полученное сообщение только в том случае, если совпала подсчитанная контрольная сумма - но для нас это полностью прозрачно, просто учитывайте, что она избавляет нас от необходимости проверять достоверность принятой информации с точки зрения эфирных искажений нашего примитивного ASK-сигнала ;)

Roadmap

Итак, макет завелся. Что дальше?

Устройства для реальной жизни можно делать и на основе готовых плат Freeduino, и с помощью ЛУТ-а. Но имейте ввиду, что ATmega32u4 выпускается только в SMD (в отличие от ATmega328P).

По питанию приемника все понятно - экономить не надо. А вот с передатчиком придется повозиться - продумать батарейную схему питания, позаботиться об экономном расходовании ее ресурса.

Наконец, если будут донимать помехи, можно попробовать улучшить помехоустойчивость (повторять сообщение о нажатии в эфир несколько раз или припаять антеннки).

Все это вы уже можете начинать самостоятельно или же подождать моего продолжения, если когда оно появится ;)

25.11.2011

Книга про Arduino на русском

Спешу поделиться хорошей новостью: издательства наконец-то заинтересовались темой Arduino и выпустили перевод Соммерса (отличилось питерское издательство BHV):



Книгу в руках пока не держал, но доступен небольшой фрагмент в виде PDF (только оглавление и введение). Его хватает, чтобы оценить объем рассмотренных вопросов, но, к сожалению, недостаточно для понимания качества и полноты изложения. Тем не менее, уже сейчас Программирование микроконтроллерных Плат Arduino/Freeduino можно купить:
Если кто-то уже может поделиться впечатлениями - милости прошу в комменты.

27.07.2011

Статья в Хакере

Завтра появится в продаже августовский номер Харкера с моей статьей Обзор лучших Shield-плат для Arduino в разделе Phreaking



Это мой первый опыт работы с бумажными изданиями, надеюсь - не последний ;) Выражаю благодарность Сергею Сильнову и Никите Кислицину за возможность "выйти в тираж" ;)

02.12.2010

Getting Started With Processing на русском

Не так давно я коротко упоминал о выходе книги Getting Started with Processing в издательстве O'Relly при содействии Make. С некоторой надеждой я периодически навещал страничку на сайте Озон.ру, но увы - нашему российскому монстру книжной интернет-торговли эта позиция  настолько неинтересна, что остается до сих пор недоступной для заказа.

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

Листая электронную книгу, я честно старался к чему-то придраться, но не смог. Четко соблюдена терминология, при этом сбалансировано употребление английских слов - ровно столько, чтобы читатель не был окончательно введен в ступор очередным русскоязычным термином (который на самом деле и не стоило переводить). Текст легко читается, и местами создается устойчивое ощущение, что язык оригинала - именно русский. Даже комментарии в скетчах переведены, хотя именно этим переводчики обычно пренебрегают.

В настоящий момент книга готовится к выходу в одном из питерских издательств. Автор перевода любезно согласился опубликовать для читателей mk90.blogspot.com отрывок из книги (содержание, предисловие и первая вводная глава):


Как только у меня появится дополнительная информация о выходе бумажной версии книги,  обязательно поделюсь этой информацией с моими драгоценными читателями ;) Если среди таковых окажутся заинтересованные торговые организации - с удовольствием передам ваши предложения автору перевода.

06.08.2010

Металлоискатели


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

Вот что пишет автор этой книги, Андрей Щедрин, в неопубликованном фрагменте предисловия к 3-му изданию:

Эпоха, в которую мы живем - это эпоха сплошных суррогатов. Наука подменяется ремеслом, творчество – плагиатом, товары - китайским ширпотребом, культура – телевидением (перечислять можно долго). Человек эпохи суррогатов, не прилагающий никаких усилий, обречен на деградацию. Добродушный Иванушка-дурачок из старых сказок давно превратился в слабоумного Лёню Голубкова. А лень, наряду с дорогами и дураками – одна из бед нашей страны. Ведь “троечник”, списывающий у соседа контрольную и даже не пытающийся потрудиться над собой, превратится, в лучшем случае, в бездарного инженера, бездарного журналиста, бездарного политика… Тридцать лет назад в книжке “Занимательная математика” Перельман рассказывал школьникам о финансовых “пирамидах”. Но видимо, и творцы ГКО, и жертвы “МММ” - не читали в детстве книжек!..

Снимаю шляпу, подписываюсь под всеми словами и горячо благодарю за потраченный труд!