Depois de ter Wi-Fi decidi testar mais alguns dispositivos USB que uso com o Raspberry Pi.
Para começar, uma vez que o EV3 apenas tem uma porta USB, imprescindível um hub, de preferência pequeno:
Hub KUNFT 4 Portas USB 2.0 H-088 (na Worten por €6,99)
Com o EV3 ainda desligado liguei-o e a ele o dongle Wi-Fi (ThePiHut).
Da primeira vez não obteve rede, não sei se não esperei tempo suficiente. Retirei o hub, liguei novamente (sem o dongle Wi-Fi) esperei um pouco e depois liguei o dongle e desta vez obtive rede. E a partir daqui cada boot/reboot com tudo ligado funcionou sempre bem.
root@ev3dev:~# lsusb (...) Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Agora o audio:
[Nota: o EV3 já tem uma placa de audio interna, suportada pelo ALSA, e um altifalante interno também. Mas tanto quanto percebi funciona de modo semelhante ao jack audio do Raspberry Pi, por PWM, consumindo CPU… além de ser mono e não permitir ligação externa a um amplificador]
DIY USB to Audio Module for Raspberry PI / Arduino / MAC / PC + More – Green (SKU 315287 na DX – DealExtreme, US$10.88)
root@ev3dev:~# dmesg (...) input: Burr-Brown from TI USB Audio DAC as /devices/platform/ohci.0/usb1/1-1/1-1.4/1-1.4:1.2/0003:08BB:2704.0001/input/input2 hid-generic 0003:08BB:2704.0001: input: USB HID v1.00 Device [Burr-Brown from TI USB Audio DAC ] on usb-ohci.0-1.4/input2 (...)
root@ev3dev:~# lsusb (...) Bus 001 Device 004: ID 08bb:2704 Texas Instruments Audio Codec (...)
O ALSA reconhece de imediato a nova placa de som:
root@ev3dev:~# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: legoev3 [LEGO Mindstorms EV3 speaker], device 0: LEGO Mindstorms EV3 [LEGO Mindstorms EV3] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: DAC [USB Audio DAC], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
root@ev3dev:~# alsamixer ┌───────────────────────────── AlsaMixer v1.0.28 ──────────────────────────────┐ │ Card: LEGO Mindstorms EV3 speaker F1: Help │ │ Chip: F2: System information │ │ View: F3:[Playback] F4: Capture F5: All F6: Select sound card │ │ Item: Playback Esc: Exit │ │ │ │ ┌──┐ │ │ │ │ │ │ │ │ │ │ ┌───────── Sound Card ─────────┐ │ │ │- (default) │ │ │ │0 LEGO Mindstorms EV3 speaker│ │ │ │1 USB Audio DAC │ │ │ │ enter device name... │ │ │ └──────────────────────────────┘ │ │ │▒▒│ │ │ │▒▒│ │ │ │▒▒│ │ │ │▒▒│ │ │ └──┘ │ │ 75 │ │ <Playback> │ │ │ └──────────────────────────────────────────────────────────────────────────────┘
E para tocar um ficheiro mp3 (previamente trasnferido por ssh):
root@ev3dev:~# apt-get install mpg321 root@ev3dev:~# mpg321 -a hw:1,0 Thunderstruck.mp3
Rock’n Roll!!!
Durante a execução o mpg321 consome entre 22 a 25% de CPU. É um bocado alto (quando se utiliza a rede em simultâneo, por exemplo um update, ocorrem soluços) e como dizem que o SoX consome menos CPU…
root@ev3dev:~# apt-get install sox libsox-fmt-all root@ev3dev:~# export AUDIODEV=hw:1,0 root@ev3dev:~# play Thunderstruck.mp3
Durante a execução o play consome 20 a 22% de CPU, apenas marginalmente melhor.
Mas como SoX permite vários formatos (wav, ogg…) permite o redireccionamento (pipe) de outros comandos como o espeak:
root@ev3dev:~# espeak -v pt-pt “olá” –stdout | play -t wav –
E temos o nosso EV3 a falar português 🙂