micro_mruby_for_arduino_Uno를 사용하여 Arduino Uno에서 Ruby로 이동하는 응용 프로그램 쓰기

이 글은 Fujitsu Advent Calender 19일째 글이다.

개시하다


@GORO_Neko.아는 사람은 인사가 뜸하다.처음 뵙겠습니다.
응, 먼저 거절하면 한마디만 해.
나는 일에 있어서 mruby/c가 전혀 없다.
다음은 자신의 소속사 의사를 반영하거나 입장을 밝히는 것이 아니라 단순히 개인의 취미 활동에서 나온 기술이다.

Arduino Uno에서 실행되는 응용 프로그램에 루비 언어로 쓸 수 없습니다.


저도 그렇게 생각하는 시대가 있었어요.
그렇기 때문이죠? 
Arduino Uno SRAM 탑재 물량은 2KB 정도?
Cruby는 말할 것도 없고, 업무를 위해 필요한 최저 메모리량인 400KB의 mruby와 40KB의 mruby/c는 모두 움직이지 말아야 한다고 생각합니다.

이 녀석.. 움직인다!


포기하면 경기가 끝난다는 말이 자주 떠올랐어야 했다.
아두노 언노에는 루비 스크립트로 만든 앱을 만든 VMmicro mruby for arduino, 유노머루비/c 기반)을 만든 사람이 등장했다.
이거 대단해.
그 가난한 메모리만 있는 아두노 언노에서 루비 스크립트로 만든 앱이 진짜로 움직였어요.
[모바일 프로그램의 예]
test-001.rb

puts "hello world"

이 앱을 실행할지, 아두노 언로를 리셋할 때마다 PC에서 시작하는 터미널 소프트웨어의 디스플레이 화면에'hello world'라는 문자열이 표시됩니다.

등가교환의 대가


이렇게 가난한 환경에서 활동하기 위해'미크로 머루비 포 아두노'는 원래 루비가 가진 기능 중 일부를 대가로 포기하는 등가교환을 했다.
기초적인 무루비/c로 보면 루비기능 또는 클래스가 완전히 포함되지 않았습니다.의.
또한'micro muruby for arduino'는 다음과 같은 표준류를 바탕으로 귀납 처리되었다.
 • Array
 • Hash
 • Range
 • Math
이러한 등가교환 구현에 따라'미크로 머루비 for arduino'는'아두노 언노'에서 루비 쓰기를 실행하는 앱을 완성했다.

GPIO를 조작할 수도 있습니다.


GiitHub에 코드를 공개한 사람은 여기.에도 해설이 있다.
해설 페이지에서는 루비 스크립트 소개를 통해 아두노 언노의 GPIO를 플레이어가 제어할 수 있도록 했다.
설명 페이지의 예에 따라 Ruby 스크립트를 써서 Arduino Uno의 GPIO를 제어합시다.
'아두노 언노'의'디지털 11 핀'쪽에는 LED 장측 발을,'GND'쪽에는 LED 단측 발의 회로를 연결해 다음 스크립트로 제작된 앱이'아두노 언노'에서 실행되도록 하고,'아두노 언노'에 설치된 발광다이오드가 1초 간격으로 깜박인다.
[회로도]

[GPIO 활용 프로그램 예]
test-002.rb

puts "LED Test"
pin = 11
Arduino.pin_mode(pin,:OUTPUT)
st = :LOW
while(true) do
  if(:LOW == st)
    st = :HIGH
  else
    st = :LOW
  end
  Arduino.digital_write(pin,st)
  Arduino.delay(1000)
end

센서가 값을 읽는 값이 마이크로컴퓨터에서 사람에게 의미 있는 형태로 바뀔 때'micro mururuby for arduino'는 무력하다는 평가를 받을 수 있다.
그러나 마이크로컴퓨터에서는 센서 등 마이크로컴퓨터에 연결된 각 전자부품이 포함된 하드웨어에 대해서만 출력정보를 입력하고, 얻은 정보도 서버로 전송해 그곳에서 가공한다고 판단하면 된다는'micro mururuby for arduino'& Ruby 스크립트는특히 루비처럼 무엇이든 쓰고 싶은 나 같은 사람에게 아듀이노유노는 앱을 쓰기에 좋은 선택이다.
그럼 안녕히 계세요.
[2018/12/26 추기]
속편썼어요.
개발 환경의 구축 방법을 확인하고 싶은 분이 읽어주셨으면 좋겠는데...

좋은 웹페이지 즐겨찾기