mruby-esp32를 사용하여 ESP32에서 실행되는 응용 프로그램을 Ruby 언어로 작성해보십시오 (입문 편)

mruby-esp32를 사용하여 ESP32에서 실행되는 응용 프로그램을 Ruby 언어로 작성해보십시오 (입문 편)

2022-10-06 last update

6 minutes reading ESP-WROOM-32 mruby ESP32 우분투 mruby-esp32

소개



@경 _ 고양이 입니다. 아시는 분 무사하고 있습니다. 첫 분 처음으로 눈에 띈다.

항상 그렇습니다만, 우선 거절을 한마디.

다음은 나가 소속하는 회사의 의향을 반영한 것도 스탠스를 나타내는 것도 아니고, 단순한 한 개인의 취미의 활동으로부터 낳은 기술입니다.

ESP32 & mruby



ESP-WROOM-32(이하 ESP32)는 Espressif 사의 Arduino 호환 마이크로 컴퓨터 보드입니다.



(위의 사진은 ESP-32를 간편하게 사용할 수 있도록 개발 보드화했다 ESP32-DevKitC)

조금 전에, mruby-esp32 를 사용하는 것으로, ESP32 상에서, 메인 로직을 Ruby 의 코드로 기술해, 어플리케이션을 동작시킬 수 있는 것을 소개하는 기사 를 썼습니다.

이전 기사에서는 Ruby를 사용하여 어떤 기능의 응용 프로그램을 작성할 수 있는지까지 소개하지 않았습니다.

이번에는, mruby-esp32 의 어디를 어떻게 커스터마이즈(물론 쓰는 것은 Ruby 의 코드만!) 하는 것으로, 임의의 기능을 가지는, ESP32 용의 프로그램을 만들 수 있을까, 설명하려고 생각합니다.

mruby-esp32 구성



GitHub에서 clone 등으로 얻은 mruby-esp32 프로젝트의 구성을 굉장히 거칠게 쓰면 다음과 같이 말할 수 있다고 생각합니다.

  • mruby-esp32를 빌드하기위한 스크립트
  • 응용 프로그램의 진입 점이되는 C 언어로 작성된 코드
  • mruby vm 구성 코드
  • Ruby로 작성된 사용자 프로그램 코드


  • mruby-esp32 기반 응용 프로그램 시작 순서



    mruby-esp32를 빌드 한 결과 완성 된 응용 프로그램은 ESP32에서 다음과 같은 단계를 거쳐 작동합니다.

  • C 언어 엔트리 포인트 기능 시작
  • 자신에 저장된 mruby vm을 시작
  • 자신에 저장된 루비 언어로 만들어진 사용자 응용 프로그램 코드 (mruby vm이 실행 가능한 바이트 코드 형식으로 변환 된 것)를 시작한 mruby vm에로드
  • mruby vm이 전달 된 사용자 응용 프로그램 코드 실행


  • Ruby 언어를 사용하여 응용 프로그램을 작성하는 방법



    Ruby 언어로 만든 사용자 응용 프로그램 코드는 임의의 이름을 붙인 스크립트 파일로 작성할 수 있습니다.

    작성한 스크립트 파일은 반드시 디렉토리 "mruby-esp32/main/examples"에 저장해야합니다.

    "mruby-esp32/main/examples"에 저장되고 빌드 시 매개 변수 "MRUBY_EXAMPLE"의 값으로 파일 이름이 지정된 Ruby 스크립트 파일의 내용이 응용 프로그램으로 작동합니다.

    다음 내용의 파일을 "loop_test.rb"라는 이름으로 만들고 "mruby-esp32/main/examples"디렉토리에 저장했다고 가정합니다.
    loop do
      puts "test"
      ESP32::System.delay(10 * 1000)
    end
    

    그리고 개발용 PC와 ESP32를 USB 케이블로 접속한 후, "mruby-esp32"디렉토리 바로 아래에서 다음 명령을 실행했다고 가정합니다.
    $ make MRUBY_EXAMPLE=loop_test.rb
    $ make MRUBY_EXAMPLE=loop_test.rb flash monitor
    

    실행 결과는 다음 사진과 같습니다.


    10초마다 "test"라는 문자열이 계속 표시됩니다.

    즉, 첫 번째 논의대로 Ruby 언어로 스크립트를 작성하는 것만으로 임의의 동작을하는 ESP32 용 응용 프로그램을 만들 수있었습니다.

    ESP32는 다른 전자 부품을 연결할 수 있는 마이크로컴퓨터 보드이므로, 다음은 무엇인가 센서류를 붙여, 거기로부터 계측치등을 취득할 수 있는 어플리케이션을, Ruby 스크립트를 쓰는 것만으로 실현해 보려고 생각 합니다.

    그럼, 또.