OROCA EduBot

오픈로봇커뮤니티(링크)에서 진행한 교육용 로봇 플랫폼 “EduBot” 개발 프로젝트.

초등학교 코딩 교육에 도움이 될만한 (혹은 쓸만한) 로봇을 만들어보자는 취지하에 몇몇 분들이 모여 개발한 소형 로봇으로, 오픈 소스 모임에선 드물게, 회로개발, 펌웨어(앱, 모듈개발0, 기구(로봇몸체) 설계, 안드로이드 앱, 스크래치 3.0 연동 등의 작업을 각각의 전문가들이 모여 개발한 제품이다.

로봇 개발에 필요한 여러가지 작업 중, 내가 참여한 부분은 상위 소프트웨어 연동을 위한 펌웨어 개발, Blockly 연동 안드로이드 앱, 스크래치 3.0과의 연동 및 패키징 작업이었고 이를 담당하여 진행하였다.

EduBot의 경우 ExpressIF사에서 개발한 ESP32모듈을 메인으로 사용하고 있는데, WiFi, Bluetooth Classic, Bluetooth LE 등을 한 칩에서 지원함. 이 중 스마트폰과 스크래치 3.0과의 연동은 BLE를 사용하였고, 효율적으로 접근이 가능하도록 로봇의 기능을 분류하고 이에 대한 Service/Characteristics를 정의하고 세부 항목을 구현한다.

const BLEUUID = {
    motor_service:                 0xe005,
    char_motor_set_step:          '34443c33-3356-11e9-b210-d663bd873d93',
    char_motor_set_speed:         '34443c34-3356-11e9-b210-d663bd873d93',
    char_motor_set_distance:      '34443c35-3356-11e9-b210-d663bd873d93',
    char_motor_set_accel:         '34443c36-3356-11e9-b210-d663bd873d93',
    misc_service:                  0xe006,
    char_misc_color_led:          '34443c37-3356-11e9-b210-d663bd873d93',
    char_misc_play_sound:         '34443c38-3356-11e9-b210-d663bd873d93',
    char_misc_set_text_oled:      '34443c39-3356-11e9-b210-d663bd873d93',
    char_misc_set_image_oled:     '34443c3a-3356-11e9-b210-d663bd873d93',
    char_misc_status_info:        '34443c3b-3356-11e9-b210-d663bd873d93',
    sensor_service:                0xe007,
    char_sensor_floor_sensors:    '34443c3c-3356-11e9-b210-d663bd873d93',
    char_sensor_distance_sensors: '34443c3d-3356-11e9-b210-d663bd873d93',
    char_sensor_imu_sensors:      '34443c3e-3356-11e9-b210-d663bd873d93',
    char_sensor_all_data:         '34443c3f-3356-11e9-b210-d663bd873d93',
};

펌웨어앱의 경우 Arduino Sketch를 이용하여 개발한다. 이 부분은 OROCA의 다른 멤버분께서 작업해 주셨으며, 나는 이를 이용하여 BLE 연동을 위한 앱을 개발하였다.

스크래치 3.0과의 연동작업은 블로그의 포스팅으로 해당 과정을 정리하였다.

https://ahnbk.com/?cat=63

안드로이드 앱 개발은 구글의 Blockly를 이용하여 개발하였다. Blockly는 블록을 이용한 코딩 기능을 제공하는 일종의 프레임웍으로 이를 로봇과 연동하기 위해선 블록의 디자인 및 각 블록에 대한 코드 변환 기능을 작성하여야 한다.

본 프로젝트에 참여하면서 기여한 내용들은 해당 Repository에 소스가 전부 공개되어 있다.

참조링크: