본문 바로가기

로봇청소기

로보킹(VR6270LVM) 사운드 및 ftp 파일 전송 방법

로보킹(VR6270LVM) 사운드 및 ftp 파일 전송 방법

 

 

 

 

앞에 올려진 게시물들을 참조하셔서 로보킹에 무선랜 연결 및 텔넷 접속을 하시면,

이런 저런 정보를 알 수 있습니다.

 

그중에 이번엔 로보킹 내부의 음성파일.. 곧 사운드 관련 정보를 확인해 봤습니다.

 


로보킹에 접속하여 이것저것 뒤져보다 보니 다음의 내용을 확인할 수 있었습니다.

 

[most2120@root: /proc/asound]cat version
Advanced Linux Sound Architecture Driver Version 1.0.21.

 

ALSA 드라이버 1.0.21 버전 사용중이군요..

 

[most2120@root: /proc/asound/card0/pcm0c/sub0]cat info
card: 0
device: 0
subdevice: 0
stream: CAPTURE
id: most-wm8960 HiFi WM8960-0
name:
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1

 

[most2120@root: /proc/asound/card0/pcm0c/sub0]cat hw_params
closed

[most2120@root: /proc/asound/card0/pcm0c/sub0]cat status
closed

[most2120@root: /proc/asound/card0/pcm0c/sub0]cat sw_params
closed


[most2120@root: /proc/asound/card0/pcm0p/sub0]cat info
card: 0
device: 0
subdevice: 0
stream: PLAYBACK
id: most-wm8960 HiFi WM8960-0
name:
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0

 

[most2120@root: /proc/asound/card0/pcm0p/sub0]cat hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 16000 (16000/1)
period_size: 128
buffer_size: 2048

 

[most2120@root: /proc/asound/card0/pcm0p/sub0]cat status
state: RUNNING
owner_pid   : 500
trigger_time: 1475180318.500040667
tstamp      : 1475213863.874168333
delay       : -536738816
avail       : 536740864
avail_max   : 536740864
-----
hw_ptr      : 536738816
appl_ptr    : 0

 

[most2120@root: /proc/asound/card0/pcm0p/sub0]cat sw_params
tstamp_mode: NONE
period_step: 1
avail_min: 128
start_threshold: 1
stop_threshold: 1073741824
silence_threshold: 0
silence_size: 1073741824
boundary: 1073741824

 

 

WM8960 사운드칩을 이용하고 있으며,

녹음(CAPTURE)부분은 비활성화 되어 있고, 재생(PLAYBACK)부분만 활성화 되어 있습니다.

일단.. 뭐.. 제 VR6270LVM의 경우, 음성인식 기능이 없는 모델입니다.

 

사용중인 사운드 포맷은 S16_LE 에 16000 rate 이며 Mono 입니다.

 - S16_LE(PCM Signed 16bit Little Endian) 16000 rate Mono

 


내장 된 사운드 플레이어

[most2120@root: /usr]aplay --version
aplay: version 1.0.11rc2 by Jaroslav Kysela <perex@suse.cz>

 

aplay 라는 사운드 플레이어를 통해 사운드가 재생되고 있습니다.

 

참고삼아 aplay 관련 옵션 조회해본 내역입니다.

 

[most2120@root: /usr]aplay --help
Usage: aplay [OPTION]... [FILE]...

-h, --help              help
    --version           print current version
-l, --list-devices      list all soundcards and digital audio devices
-L, --list-pcms         list all PCMs defined
-D, --device=NAME       select PCM by name
-q, --quiet             quiet mode
-t, --file-type TYPE    file type (voc, wav, raw or au)
-c, --channels=#        channels
-f, --format=FORMAT     sample format (case insensitive)
-r, --rate=#            sample rate
-d, --duration=#        interrupt after # seconds
-s, --sleep-min=#       min ticks to sleep
-M, --mmap              mmap stream
-N, --nonblock          nonblocking mode
-F, --period-time=#     distance between interrupts is # microseconds
-B, --buffer-time=#     buffer duration is # microseconds
    --period-size=#     distance between interrupts is # frames
    --buffer-size=#     buffer duration is # frames
-A, --avail-min=#       min available space for wakeup is # microseconds
-R, --start-delay=#     delay for automatic PCM start is # microseconds
                        (relative to buffer size if <= 0)
-T, --stop-delay=#      delay for automatic PCM stop is # microseconds from xrun
-v, --verbose           show PCM structure and setup (accumulative)
-I, --separate-channels one file for each channel
Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM SPECIAL S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE
Some of these may not be available on selected hardware
The availabled format shortcuts are:
-f cd (16 bit little endian, 44100, stereo)
-f cdr (16 bit big endian, 44100, stereo)
-f dat (16 bit little endian, 48000, stereo)

 

 

이 airplay 라는 플레이어를 통해, WM8960 사운드 칩을 이용하여

각 상황에 따라 /usr/SNDDATA/ 경로에 있는 snd 파일을 재생하도록 되어 있습니다.

 

자! 그럼 이 사운드 파일을 다운받아 볼 수 있을까요?

물론.. 가능합니다. 로보킹에 올라가 있는건 리눅스인걸요.. -ㅂ-)

 

 

이쪽으로는 별로 잘 알지 못하는 저였기에..

처음엔.. 웹서버에서 파일 접속해서 다운받는 루틴을 보고..

웹경로에 ...을 붙여서 파일이 있는 경로를 재입력 후 웹에서 다운받는 방법을 시도해 보기도 했습니다.

 

예) http://로보킹IP:6260/.../usr/SNDDATA/사운드파일명.snd

 

이런 방식으로도 파일 전송이 되기는 합니다. 다만.. 제대로 전송된건지.. 확인하기도 어렵고

안정성에서도 좀 떨어지는 듯 하더군요..

 

 

그래서 찾아보다 보니.. BUSYBOX 란 놈이 올라가 있더군요..

이게.. 부족한 임베디드 리눅스의 여러 명령어를 보완해주고 있던데요..(저도 검색으로 알았습니다.. 이런게 있단걸.. )

요놈한테 tftp 명령어가 들어가 있더군요..

아쉬운건.. FTP 서버 역할을 하는게 아닌 FTP 클라이언트 기능이기 때문에,

사용자 PC에 tftp 프로그램을 설치하여 FTP 서버 기능을 동작시켜줘야 한다는 겁니다.

 

윈도우에 tftp 프로그램 설치(실행하는 법은 간단합니다. 검색해보면 더 쉽게.. ^^:;)
http://tftpd32.jounin.net/tftpd32_download.html

 

자! 자신의 PC에 tftp 까지 실행시켜 놨다면 로보킹에서 접속 및 파일전송을 해봐야겠죠?

 

우선, 로보킹에 포함 된 busybox 의 tftp 사용 옵션입니다.


most2120# busybox tftp
BusyBox v1.6.1 () multi-call binary

Usage: tftp [OPTION]... HOST [PORT]

Transfer a file from/to tftp server using "octet" mode

Options:
        -l FILE Local FILE
        -r FILE Remote FILE
        -g      Get file
        -p      Put file

 

BusyBox 1.6.1 버전이 실행되며 옵션이 나열됩니다.

 

자.. 실제 사용 예입니다.

 

<로보킹에서 사용자PC로 파일 보내기>
most2120# busybox tftp -l 파일명 -p 사용자PC_IP

<로보킹에서 사용자PC의 파일 가져오기>
most2120# busybox tftp -r 파일명 -g 사용자PC_IP

 

아쉽게도 *.snd 등을 이용한 전체파일 다운로드는 안되는 것 같더군요..

뭔가 다른 방법이 있으면 좋겠는데..

 

저는 무식해서.. 전체 파일명을 복사해서 전체에 명령어를 붙인 뒤,

한번에 명령어 붙여넣어 다운받는 원시적인 방법을 사용했습니다.. ㅋㅋㅋ

이렇게해서 다운받은 snd 파일은.. 아쉽게도 기본 플레이어에서는 플레이가 안되더군요..

SND 플레이 가능한 플레이어를 검색하여 다운받으셔야 합니다.

 

JAM 이라는 플레이어와 GoldWave 라는 사운드편집툴에서 재생이 가능했습니다.

 

 

주의점!!

제 경우, 처음에 사운드 파일 재생을 시도하면 다음과 같은 에러가 발생하더군요.

 

Exception: Integer devide by zero

근데.. 자세히 보니..

충돌 모듈 mp3ParseStream.ax

윈도우의 시스템 파일에 mp3ParseStream.ax 라는 코덱이 설치되어 있는데, 파일 속성을 보니

디지털 서명 : SK Communications Co., Ltd 로 되어 있더군요..

 

위 코덱 파일이 설치 안된 시스템에서 똑같이 테스트를 해보았습니다.

이런.. 아무 문제없이 잘 재생이 되더군요..

그래서 바로 해당 파일을 삭제했더니.. 원래 제 PC에서도 아무문제 없이 재생이 됩니다.

 

이 파일.. 언제 설치가 된건지.. 여하튼 SK 꺼니깐.. 네이트온 혹은 싸이월드 관련해서 설치하다 생긴게 아닐까..

의심만 할 뿐.. 검증은 안해봤습니다.. ^-^;;

 

 

자.. 그나저나..

 

이렇게.. 사운드 파일 속성도 파악됬고..

/usr/SNDDATA/ 경로에 사운드파일이 있다는 것도 알아냈으니..

 

이제.. 이걸 교체만 가능하다면..

 

로보킹에게 다른 목소리를 입혀줄 수 있다는 건데요.

 

누군가.. 류승룔 버전이나 유준상 버전 목소리좀 빼주실 분 없을까요? ㅋㅋ

그것만 가능하면.. 제꺼에도 적용 가능할 것 같은데.. ^^;;

 

암튼.. 조만간 테스트 해보겠지만..

파일 변경해서 적용가능 하다면..(별도로 락을 걸어놓은게 아니라면 가능할겁니다) 

 

이쁜 혹은 잼난 목소리로 상황에 따른 음성 녹음 해주실 수 있는 분..  나타났으면 좋겠어요.. ㅎㅎ

 

 

참고로 로보킹(VR6270LVM) 안에 내장되어 있는 사운드파일 리스트 내용 적어놓습니다.

 

most2120# ls
SND_BATTERY_CHARGING_BEGIN.snd
SND_BATTERY_LOW.snd
SND_BATTERY_LOW_CHARGING.snd
SND_BATTERY_LOW_SEARCH_CHARGER.snd
SND_BLACKBOX_FAIL.snd
SND_BLACKBOX_FULL.snd
SND_BLACKBOX_LOADING_END.snd
SND_BLACKBOX_LOADING_START.snd
SND_CLEANING_BEGIN.snd
SND_CLEANING_BEGIN_SHORT.snd
SND_CLEANING_CONTINUE_PRECEDING.snd
SND_CLEANING_END.snd
SND_CLEANING_MACRO.snd
SND_CLEANING_MACRO_RETRY.snd
SND_CLEANING_MACRO_SECTOR.snd
SND_CLEANING_RESERVATION.snd
SND_CLEANING_RESUME.snd
SND_CLEANING_SECTOR.snd
SND_CLEANING_SECTOR_MOP.snd
SND_CLEANING_SPOT.snd
SND_CLEANING_ZIGZAG.snd
SND_CLEANING_ZIGZAG_MOP.snd
SND_ERROR_AGITATOR.snd
SND_ERROR_COMPRESS.snd
SND_ERROR_DUSTBIN.snd
SND_ERROR_POWER_SWITCH.snd
SND_ERROR_RESERVATION.snd
SND_ERROR_SIDEBRUSH.snd
SND_ERROR_STUCK.snd
SND_ERROR_SUCTION.snd
SND_ERROR_WHEEL_DROP.snd
SND_ERROR_WHEEL_ENCODER_LEFT.snd
SND_ERROR_WHEEL_ENCODER_RIGHT.snd
SND_ERROR_WHEEL_MOTOR.snd
SND_ERROR_WHEEL_STUCK_LEFT.snd
SND_ERROR_WHEEL_STUCK_RIGHT.snd
SND_FUNCTION_CANCELED.snd
SND_FUNCTION_CLOCK_SET_BEGIN.snd
SND_FUNCTION_CLOCK_SET_END.snd
SND_FUNCTION_KEYLOCK_DISABLED.snd
SND_FUNCTION_KEYLOCK_ENABLED.snd
SND_FUNCTION_KEYLOCK_SET.snd
SND_FUNCTION_MUTE_DISABLED.snd
SND_FUNCTION_MUTE_ENABLED.snd
SND_FUNCTION_REPEAT_DISABLED.snd
SND_FUNCTION_REPEAT_ENABLED.snd
SND_FUNCTION_RESERVATION_CANCEL.snd
SND_FUNCTION_RESERVATION_CHECK_RESERVED.snd
SND_FUNCTION_RESERVATION_DAILY_SELECTED.snd
SND_FUNCTION_RESERVATION_DAILY_SET_END.snd
SND_FUNCTION_RESERVATION_ONCE_SELECTED.snd
SND_FUNCTION_RESERVATION_SET_END.snd
SND_FUNCTION_RESERVATION_SET_START.snd
SND_FUNCTION_TURBO_DISABLED.snd
SND_FUNCTION_TURBO_ENABLED.snd
SND_FUNCTION_VOICE_CHANGE.snd
SND_FUNCTION_VOICE_DISABLED.snd
SND_FUNCTION_VOICE_ENABLED.snd
SND_HOMING_CLEANING_END_SEARCH_CHARGER.snd
SND_HOMING_END_RETURN_START.snd
SND_HOMING_SEARCH_CHARGER.snd
SND_JIG_BEGIN.snd
SND_JIG_MICTEST.snd
SND_JIG_NATIONAL.snd
SND_JIG_NETJIG_TONE.snd
SND_KIDNAP_RECOVERED_CONTINUE_HOMING.snd
SND_KIDNAP_RECOVERING.snd
SND_KOMPRESSOR_DUSTBIN.snd
SND_KOMPRESSOR_PERCENT.snd
SND_LEARNING_ACTIVATED.snd
SND_LEARNING_CLEANING_START.snd
SND_LOGGING_END.snd
SND_LOGGING_NOMEMORY.snd
SND_LOGGING_NOTAVAILABLE.snd
SND_LOGGING_START.snd
SND_MODE_SB.snd
SND_MODE_SPOT.snd
SND_MODE_ZZ.snd
SND_NETWORK_AP_CONNECTED.snd
SND_NETWORK_AP_SEARCHING.snd
SND_NETWORK_CONFIGURATION_RESET.snd
SND_NETWORK_INFORMATION_NOTUPDATED.snd
SND_NETWORK_NETJIG_RESET.snd
SND_NETWORK_ONETOUCH_BEGIN.snd
SND_NETWORK_ONETOUCH_FAILURE.snd
SND_NETWORK_ONETOUCH_SUCCESS.snd
SND_NETWORK_REMOTE_CONNECT.snd
SND_NETWORK_REMOTE_DISCONNECT.snd
SND_NOTICE_UPDATE_END.snd
SND_NOTICE_UPDATE_FAIL.snd
SND_NOTICE_UPDATE_START.snd
SND_NUM_0.snd
SND_NUM_1.snd
SND_NUM_2.snd
SND_NUM_3.snd
SND_NUM_4.snd
SND_NUM_5.snd
SND_NUM_6.snd
SND_NUM_7.snd
SND_NUM_8.snd
SND_NUM_9.snd
SND_NUM_DOT.snd
SND_RMANAGER_CONNECTED.snd
SND_RMANAGER_DISCONNECTED.snd
SND_SD_ACC.snd
SND_SD_AGITATOR.snd
SND_SD_BEGIN.snd
SND_SD_BEGIN_ERROR.snd
SND_SD_BEGIN_RESERVATION_CANCELED.snd
SND_SD_CHARGER_CONTACT.snd
SND_SD_CLIFF.snd
SND_SD_COMPRESS.snd
SND_SD_DUSTBIN.snd
SND_SD_END.snd
SND_SD_FAIL.snd
SND_SD_GYRO.snd
SND_SD_IR.snd
SND_SD_LOWBATTERY.snd
SND_SD_MOP.snd
SND_SD_OFS.snd
SND_SD_PSD.snd
SND_SD_REPEAT.snd
SND_SD_RESULTOK.snd
SND_SD_RETRY.snd
SND_SD_SIDEBRUSH.snd
SND_SD_SUCTION.snd
SND_SD_USS.snd
SND_SD_WHEELLEFT.snd
SND_SD_WHEELLEFTSENSOR.snd
SND_SD_WHEELRIGHT.snd
SND_SD_WHEELRIGHTSENSOR.snd
SND_SYSTEM_BIRTH.snd
SND_SYSTEM_DDING.snd
SND_SYSTEM_POWER_OFF.snd
SND_SYSTEM_POWER_ON.snd
SND_SYSTEM_SILENCE.snd
SND_VOICE_MOVE_SOUND_SOURCE.snd
SND_VOICE_PAUSE_TEMPORARY.snd
SND_VOICE_RECOVER_ERRORHANDLE.snd
SND_VOICE_SPEAK.snd
SND_VOICE_SPEAK_COMMAND.snd
SND_VOICE_STOP_ERRORINPUT.snd

 

 

자.. 다음은 또 어떤 내용이 될런지.. ^^:;

 

덧글은.. 사랑입니다.. 쿨럭!