Навигация |
ИнструментыЯмаПолезные ссылкиЗачем мне блог?Рейтинг контентаКодекс админаФотогалереяi-pay![]() |
Последние записи |
Смонтировал видюху, моменты из жизни 2013-15На уазике до ск. Верблюд по Торгашинскому хребтуBreaks волна #9 осенний funkК нам на дачу пришел медведьСтарая бомба! Крутой рифмоплет |
Каменты [еще] |
Теги |
Друзья |
Подключаем Arduino Uno к Freebsd по USB
Октября
2013 года
10
2013 года
Теги: freebsd, Раздел: zgbox.ru ![]() ![]() ![]() |
Просмотров: 2672 |

Имеем:
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
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
# 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
....

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