rss
Навигация
ИнструментыЯмаПолезные ссылкиЗачем мне блог?Рейтинг контентаКодекс админаФотогалереяi-payrss
Последние записи
Смонтировал видюху, моменты из жизни 2013-15На уазике до ск. Верблюд по Торгашинскому хребтуBreaks волна #9 осенний funkК нам на дачу пришел медведьСтарая бомба! Крутой рифмоплет
Каменты [еще]
2017-05-17 11:25:31 [articles] Владимир:
2016-12-20 17:49:41 [articles] Виталик:
2016-12-01 23:34:25 [news] Meteor:
2016-11-11 03:35:47 [articles] Tata10:
2016-07-27 14:28:19 [articles] Сергей:
2016-05-17 09:56:26 [articles] юра:
2016-04-29 18:03:48 [articles] agatsky.dn:
Теги
Друзья
Блог малова Лучшие стихи зая =) Мед в Красноярске Daniil V. Savenkoff Blog | То, что мне когда-то пригодилось... Велкам в друзья!

Подключаем Arduino Uno к Freebsd по USB

Октября
2013 года
10
Теги: freebsd,
Раздел: zgbox.ru -> Статьи -> FreeBSD -> Подключаем Arduino Uno к Freebsd по USB
Просмотров: 2672
В этой статье пойдет речь о том как подключить Arduino Uno к FreeBSD через USB для того чтобы производить обмен данными через последовательный serial порт, т.е. Usb-Com.

image



Имеем:


FreeBSD 7.3 или выше
Arduino
Usb кабель

Задача


Подключить Arduino к FreeBSD для чтениязаписи данных через последовательный serial порт по USB шине.

Решение


Для начала я написал простой скетч который будет выдавать в последовательный порт текст "dance ma monkey" =) для того чтоб увидеть работу в последовательном порту.
Скетч:
int ledpin = 13;

void setup () {
pinMode(ledpin,OUTPUT);
Serial.begin(9600);
}

void loop() {
digitalWrite(ledpin,false);
delay(1000);
digitalWrite(ledpin,true);
delay(1000);
Serial.println("dance ma monkey");
}

При подключении USB шнурка c адруиной к FreeBSD, в /dev/ появляются девайсы типа: /dev/ugen0 /dev/ugen0.2 /dev/ugen0.3 но это не то что нам нужно, нам нужен usb-com девайс для адруино, только с ним можно работать как с COM портом.

Официальный мануал (http://playground.arduino.cc/FreeBSD/CLI) говорит об установке портов: avr-gcc, avr-libc, avr-binutils, avrdude но они нужны для среды разработки (компиляции, заливки ваших прошивокскетчей в arduino) и в нашем случае НЕ пригодятся! По этому ставить их не будем.

Далее мануал говорит об установке драйвера uarduno из портов (/usr/ports/comms/uarduno), для того чтоб при подключении arduino у вас появились usb-com девайсы типа /dev/cuaUX или /dev/ttyUX
Но тут простой установки недостаточно, необходимо немного поколдовать.

Суть колдовства в том что в порте есть файлик /usr/ports/comms/uarduno/files/ids.txt
в котором указываются product id и vendor id вашего usb-adruino устройства (/dev/ugen0) на которое драйвер будет реагировать и создавать для них нужный девайс /dev/ttyUX с которым и будет происходить последовательный обмен данными.

Кусок содержимого файла ids.txt :
...
// The default value of { 0x2341, 0x0001 } is already included as a reference.
// NOTE: do not remove or modify this entry unless you really really mean it.

// If you change this file, you will need to update it each
// time you obtain a fresh copy of the ports tree.
//
//

{ 0x2341, 0x0001 }, // Arduino UNO, vendor 2341H, product 0001H

// place your entries below this line

// end of file

В котором говорится о том что если у вас другие product id и vendor id вашего adruino то их нужно добавить в этот файл и перекомпилить драйвер. Чем собственно сейчас и займемся.

Узнаем какие у нас product id и vendor id выполнив комманду usbdevs -v
# usbdevs -v
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 powered
port 2 powered
Controller /dev/usb1:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 powered
port 2 powered
Controller /dev/usb2:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 powered
port 2 powered
Controller /dev/usb3:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 powered
port 2 addr 2: full speed, power 100 mA, config 1, product 0x0043(0x0043), Arduino (www.arduino.cc)(0x2341), rev 0.01
Controller /dev/usb4:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 powered
port 2 powered
port 3 powered
port 4 powered
port 5 powered
port 6 powered
port 7 powered
port 8 powered
Из этого видим что adruino подключен к /dev/usb3 и имеет
product id = 0x0043
vendor id = 0x2341

Теперь добавим наши product id и vendor id в файл ids.txt:
// If you change this file, you will need to update it each
// time you obtain a fresh copy of the ports tree.
//
//

{ 0x2341, 0x0001 }, // Arduino UNO, vendor 2341H, product 0001H

// place your entries below this line

{ 0x2341, 0x0043 },

// end of file

Пересоберем драйвер
# cd /usr/ports/comms/uarduno/
# make install clean
добавим строку в /boot/loader.conf для автозагрузки драйвера
# echo uarduno_load="YES" >> /boot/loader.conf

и загрузим сам драйвер вручную
# kldstat
Id Refs Address Size Name
1 22 0xc0400000 77f4a8 kernel
2 1 0xc0b80000 1258c bktr.ko
3 2 0xc0b93000 2000 bktr_mem.ko
5 1 0xc314f000 23000 linux.ko
6 1 0xc32a4000 4000 ng_pptpgre.ko
7 1 0xc32a8000 5000 ng_ksocket.ko
8 1 0xc32fc000 4000 ng_iface.ko
9 1 0xc3304000 7000 ng_ppp.ko
10 1 0xc330d000 4000 ng_vjc.ko
11 1 0xc3313000 3000 ng_tcpmss.ko

# kldload uarduno

# kldstat
Id Refs Address Size Name
1 22 0xc0400000 77f4a8 kernel
2 1 0xc0b80000 1258c bktr.ko
3 2 0xc0b93000 2000 bktr_mem.ko
5 1 0xc314f000 23000 linux.ko
6 1 0xc32a4000 4000 ng_pptpgre.ko
7 1 0xc32a8000 5000 ng_ksocket.ko
8 1 0xc32fc000 4000 ng_iface.ko
9 1 0xc3304000 7000 ng_ppp.ko
10 1 0xc330d000 4000 ng_vjc.ko
11 1 0xc3313000 3000 ng_tcpmss.ko
12 1 0xc45d4000 4000 uarduno.ko

Видим что драйвер uarduno.ko загрузился, теперь переподключаем arduino к USB.
В /dev/ появился /dev/ttyU0, то что нам нужно!

пробуем подключиться:
# cu -l /dev/ttyU0 -s9600
Connected
dance ma monkey
dance ma monkey
dance ma monkey
dance ma monkey
dance ma monkey
....
Profit! =)
Комментарии к записи:
KILLLIK 2013-10-11 18:04:25 [ответить]
когда у меня стоял CarPC, тоже думал чего нибудь соорудить,а с этой штуковиной можно такого наворотить, ух.

видео, стоит посмотреть: http://www.youtube.com/watch?v=fuySWttZjqM
форум:
http://www.pccar.ru/showthread.php?t=2042
=ZG= IP:10.20.1.66 2013-10-11 18:17:09 [ответить]
да да, видал эту тачку, и форум тож читал про нее, имхо слишком много на комп завязано в тачке, а на комп сильно нельзя надеяться, при тряске на наших дорогах да заморозках, вот ардуино да, подумываю че в тачку на нем собрать можно )
KILLLIK 2013-10-11 18:37:13 [ответить]
комп в машине уже есть? или чем управлять будешь? я примерно год отъездил, тогда был ACCENT, моник 10", 2кВт RMS!!! музыки и жесточайше жесткая подвеска. ни чего не отваливалось и не ломалось, разве что HDD 3,5" при -38 запускался со 2го раза. От CarPC сейчас остался моник 10,4" +touch и БП M2-ATX. Может кому надо)
=ZG= IP:172.29.65.227 2013-10-12 17:23:40 [ответить]
Компа в тачке нет, управлять особо не чем, вернее ненашел такой нужной вещи которую бы хотел завязать на комп.
Единственное что хочется - смотреть температуру двигателя, салона и улицы.
У мня штатный уличный градусник меньше -29 не кажет, японцы наверно не думали что тачка будет эксплуатироваться при таких температурах =)
... ну еще бы сделал автосчиталку расхода топлива, чтоб от заправки до заправки сама считала
and 2013-10-14 15:30:02 [ответить]
Как вариант термостанцию с Ethernet сделать
=ZG= IP:10.20.1.66 2013-10-14 16:17:26 [ответить]
все средства уже готовы для eternet термостанции, только датчик влажности нужно кинуть на улицу... в общем коробочку сделать
m1101 2015-01-26 08:27:19 [ответить]
Как загрузить скетч?

Добавление комментария

Ваше имя: (Антиспам) Какой сейчас год?
Ваш комментариий: