아두이노는 마이크로 컨트롤러 보드 기반의 오픈 소스 하드웨어 플랫폼으로 센서나 모터 등의 전자 부품을 제어하는데 최적화 되어 있습니다. 그러나 하드웨어의 한계로 인해 복잡한 계산 작업이나 멀티태스킹에 적합하지 않으며 네트워크 및 멀티미디어를 지원하지 않아 별도의 하드웨어를 추가로 연결해야 합니다. 무엇보다도 C/C++ 기반의 프로그래밍 언어를 사용하므로 초보자가 사용하기 어렵다는 문제가 있습니다.
그래블로는 웹 기반의 노코딩 IOT 플랫폼으로 라즈베리파이, 비글본, PC 등 다양한 하드웨어에서 실행이 가능하며 어렵고 복잡한 코딩을 몰라도 알고리즘 블록을 배치하여 초보자도 쉽고 빠르게 프로그램을 작성할 수 있습니다. 아두이노에서 많이 사용되는 센서나 모터 등의 부품의 라이브러리를 기본 탑재하고 있으며 네트워크, 멀티미디어, IOT, 산업용 통신 등 다양하고 강력한 기능을 지원합니다. 또한 웹 대시보드를 통해 언제 어디서나 디바이스를 제어하고 모니터링할 수 있습니다.
아두이노와 그래블로의 주요 차이점은 다음과 같습니다.
항목 | 아두이노 | 그래블로 |
코딩 방식 | 텍스트 기반 (C/C++) | 알고리즘 블록을 배치 |
하드웨어 요구 사항 | 아두이노 보드 필수 | 라즈베리파이, 비글본, PC 등 다양한 하드웨어 중 사용자가 선택 |
하드웨어 성능 | 고급 연산 및 멀티태스킹 불가 | 복잡한 IoT 시스템도 원활히 처리 가능 |
네트워크 및 멀티미디어 | 지원 안함. 추가 하드웨어 및 프로그래밍 필요 | 기본 지원 |
웹 대시보드 | 지원 안함. 추가 서비스 필요 | 기본 지원 |
주 사용 목적 | 하드웨어 제어에 적합, 상대적으로 간단한 프로젝트 | 복잡한 IOT 프로젝트 |
장치 라이브러리 | 오픈 소스 라이브러리 사용 | 많이 사용되는 라이브러리 기본 탑재 |
프로그램 실행 방식 | PC에 연결하여 프로그램 업로드 후 실행 | 웹 브라우저에서 바로 작성 및 실행 |
디버깅/오류 처리 | 수동 디버깅 필요, 제한적 디버깅 도구 | 시각적 피드백을 통한 디버깅 용이 |
학습 곡선 | 초보자에게는 다소 어려움 | 초보자도 쉽게 시작 가능 |
스크래치, 엔트리와 같은 블록 코딩은 오늘날 코딩 교육에서 많이 사용되는 비주얼 프로그래밍 도구입니다. 블록을 드래그 앤 드랍하여 프로그램을 작성할 수 있기 때문에 진입 장벽이 낮아 쉽게 사용할 수 있는 장점이 있습니다.
그러나 사실 기존의 블록 코딩은 새로운 프로그래밍 언어가 아니며 C, Python 등의 텍스트 기반 프로그래밍 언어의 문법을 그대로 블록으로 만든 도구입니다. 그러므로 기존 프로그래밍 언어의 모든 기능을 블록으로 표현할 수 없다는 문제점이 있어 블록 코딩으로 구현 가능한 기능에는 한계가 존재합니다. 이러한 한계 때문에 결국은 텍스트 기반의 프로그래밍 언어를 다시 학습해야 하는 문제가 있습니다.
그래블로의 알고리즘 블록은 완전히 새로운 방식의 비주얼 프로그래밍 언어로서 단순하고 직관적인 구조를 사용합니다. 구현하고자 하는 목표를 조건과 동작으로 구분하여 논리적으로 정리하고 그래블로가 제공하는 다양한 타입의 블록을 선택하여 배치하는 것만으로 프로그램을 작성할 수 있습니다.
그래블로가 제공하는 센서, 모터등의 장치 제어, 오디오/비디오, IOT, 산업용 통신 등 다양하고 강력한 기능을 가진 블록을 사용하면 교육용, 취미용, 산업용 까지 폭넓은 분야에 사용될 수 있습니다. 프로그래밍의 기초와 개념을 학습할 수도 있고 실제 생활에 적용할 수 있는 재밌고 독창적인 프로젝트를 만들 수도 있으며 나아가 좀 더 복잡하고 생산성이 높은 전문적인 프로젝트도 만들 수 있습니다. 그리고 무엇보다 중요한 것은 이 모든 과정이 매우 쉽다는 것입니다.
네 웹 브라우저를 끄더라도 컨트롤러는 동작합니다. 그래블로는 웹 브라우저와 컨트롤러 (하드웨어)가 완전히 분리된 통신 구조로 설계되어 있기 때문입니다. 사용자가 웹 브라우저를 통해 작성한 로직은 “RUN모드”로 진입시 컨트롤러로 전달되며 그 이후부터는 웹 브라우저와 상관없이 저장된 로직에 따라 동작합니다. 또한 어떠한 이유로 컨트롤러가 재부팅이 되더라도 컨트롤러의 마지막 상태 및 저장된 로직에 따라 계속 동작하게 됩니다.
그래블로는 각 프로젝트마다 하나의 컨트롤러만 연결할 수 있습니다. 여러 개의 프로젝트에 동일한 컨트롤러를 설정할 수 있으나 반드시 한번에 하나의 프로젝트만 컨트롤러에서 실행이 가능합니다.
새로운 프로젝트를 실행하면 이전 설정은 모두 삭제되며 새로운 설정으로 컨트롤러가 동작합니다. 만약 이전 프로젝트가 이미 실행 중이라면 해당 프로젝트를 정지한 후에 다른 프로젝트를 실행할 수 있습니다.
만약 동일한 프로젝트를 여러개의 컨트롤러에서 실행해야 한다면 프로젝트를 복제한 뒤에 각 프로젝트마다 다른 컨트롤러를 연결합니다.
스텝모터, 네오픽셀, HX711 등 일부 IO장치는 라즈베리파이 0~4에서만 작동합니다. 그 이유는 해당 장치들을 사용하기 위해서는 us (마이크로초, 1/1,000,000초) 단위의 정확한 타이밍으로 GPIO를 제어해야 하고, 현재 라즈베리파이 0~4에서만 해당 기능을 지원하기 때문입니다.
일반적으로 PC의 CPU는 일반적으로 멀티태스킹 운영체제에서 다양한 애플리케이션을 동시에 실행하며, 실시간 제어를 위해 설계된 것이 아닙니다. 이로 인해 GPIO와 같이 정밀한 타이밍을 요구하는 신호 제어에서는 CPU가 자주 중단되어, 정확한 타이밍으로 제어가 불가능하고 지연이 발생할 가능성이 큽니다.
반면, 라즈베리파이 0~4 의 Broadcom SoC는 GPIO 제어를 위해 DMA를 활용할 수 있도록 설계되어 있습니다. 그러므로 DMA 기능을 사용하면 CPU의 개입 없이도 GPIO 핀의 상태를 정밀하게 제어하고 신호를 매우 짧은 시간 간격으로 정확하게 출력할 수 있습니다.
안타깝게도 라즈베리파이 5는 GPIO 제어를 위해 RP1이라는 새로운 칩셋을 사용하기 때문에 이전 모델과 같이 DMA를 통해 GPIO의 타이밍을 정확하게 제어하는 것이 현재로서는 불가능합니다.