вторник, 20 марта 2012 г.

ARDUINO



    Если у вас есть NAS или HTPC, то внешне это скорее системный блок компьютера. Управляются такие машинки как правило по локальной сети через веб-интерфейс или даже по ssh, а в случае HTPC, через телевизор с пульта. Сейчас у многих имеются планшеты умеющие работать в локальной сети с помощью которых легко можно управлять чем угодно. Но меня всегда утомляла мысль управления одним компьютером с помощью другого. Я всегда хотел чтобы на системнике был жидко-кристальный дисплей и несколько кнопок управления. Что бы на дисплее отображалось текущее состояние машины, данные мониторинга, чтобы было видно что машина жива и было видно чем она занимается. Еще хочу чтобы были кнопки управления, меню, т.е. простенькое управление как на музыкальных или медиа центрах.

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

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

    По правде говоря, мои запросы дисплеем не ограничиваются и мне нужно было что-то унифицированное, чтобы полученные наработки я мог использовать в уже специализированных решениях. Я решил, что лучше всего их воплотить я смогу с помощью проекта Arduino/Freeduino. Этот проект имеет большое количество готовых программ распространяемых в виде исходного кода под свободными лицензиями и хорошо документирован, в том числе и на русском языке. Расширяемые платы - шилды, позволяют собрать довольно сложные и эффективные устройства не прибегая к паяльнику вообще или используя его для элементарной пайки.

Например используя плату Arduino:
http://www.dealextreme.com/p/arduino-uno-2011-version-atmega328p-pu-usb-board-66909

и плату расширения с LCD дисплеем и кнопками:
http://www.dealextreme.com/p/lcd-keypad-shield-for-arduino-duemilanove-lcd-1602-118059

можно собрать требуемый дисплей для NAS/HTPC словно детский конструктор.

От слов к делу: быстрый старт Adruino в Slackware.

Для работы с Arduino в Slackware нужно будет последовательно собрать и установить пакеты:
http://slackbuilds.org/repository/13.37/development/avr-binutils/
http://slackbuilds.org/repository/13.37/development/avr-gcc/
http://slackbuilds.org/repository/13.37/libraries/avr-libc/
http://slackbuilds.org/repository/13.37/development/arduino/

После можно будет запустить Arduino IDE командой:
$ arduino

    В моей плате Arduino используется USB интерфейс который через адаптер FT232RL подключен непосредственно к микроконтроллеру ATmega168. Т.о. при подключении платы Arduino ядро видит именно этот адаптер. В dmesg появится:
usb 5-2: new full-speed USB device number 9 using ohci_hcd
usb 5-2: New USB device found, idVendor=0403, idProduct=6001
usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 5-2: Product: FT232R USB UART
usb 5-2: Manufacturer: FTDI
usb 5-2: SerialNumber: A8004RJb
ftdi_sio 5-2:1.0: FTDI USB Serial Device converter detected
usb 5-2: Detected FT232RL
usb 5-2: Number of endpoints 2
usb 5-2: Endpoint 1 MaxPacketSize 64
usb 5-2: Endpoint 2 MaxPacketSize 64
usb 5-2: Setting MaxPacketSize 64
usb 5-2: FTDI USB Serial Device converter now attached to ttyUSB0

в системе устройство появиться как устройство на последовательном порту.
$ ls -l /dev/ttyUSB?
crw-rw---- 1 root dialout 188, 0 Мар 20 11:12 /dev/ttyUSB0

добавьте своего пользователя в группу dialout, чтобы иметь доступ к устройству не только из под рута. При первом запуске в Arduino IDE в меню Tools -> Serial Port выставите рабочий порт к которому подключена плата, в моем случае это /dev/ttyUSB0 и в меню Tools -> Board выставите тип вашей платы, в моем случае это Arduino Nano w/ATmega168. Теперь ваш Arduino готов к работе.

Ссылки по теме:
    Быстрый старт для Slackware на официальном сайте Arduino:
    http://arduino.cc/playground/Linux/Slackware

    Подключение HD44780-совместимого дисплея к Arduino:
    http://robocraft.ru/blog/arduino/503.html

1 комментарий:

  1. новая версия Arduino 1.0.2 уже содержит в себе avr-компилятор, т.е. достаточно поставить лишь пакет Arduino http://slackbuilds.org/repository/14.0/development/arduino/ и добавить своего пользователя в группу dialout. Удобно и глюков меньше. На версии 1.0 у меня Blink не желал работать без инициализации последовательного порта, теперь проблема исчезла.

    ОтветитьУдалить