技術書典7でESP32とmruby関連の新刊出します

Fanzine, Techc, Embedded, ESP32, Japanese, mruby

mruby_device_book_top
mruby_device_book_top

技術書典7もいよいよ明日になりました。サークル当選したので、今回も新刊出す予定です。

今回はシンプルにまとめようと思っていたのですが、書いているうちにボリュームが増えてしまって、いつものように100p超になってしまいました。

電子工作を本格的にやり始めてからの自分の経験の集大成でもあるので、興味のある方にはぜひ手にとって読んで頂ければなと思っております。

し37D(2F) Kishima Craft Works でお待ちしています。

https://techbookfest.org/event/tbf07/circle/5677720881070080

新刊の内容

以前、構想だけブログで書いていた計画を本格的にやり始めて、そこで得た知識をまとめています。>「FabGLとmruby-ESP32ボードの構想」

ESP32を使ってVGAディスプレイ出力、キーボード入力、音声出力を実現する基板をゼロから設計し、mrubyで制御できるようするところまで一気に解説しています。

ソフトの経験はあるけど、電気回路とか全然わからない、という方を対象に、基板を設計して、その上で動くプラットフォームを自作するまでの知識を筆者の経験に基づいてわかりやすくまとめています。

デモ

以下のようなmrubyのコードでESP32を制御してVGAディスプレイに画像を表示できます。

結構サクサク動いて感動です。

puts "*** Family mruby v0.0 ***"

class Ball
  def initialize(x,y,r,col,speed)
    @x = x
    @y = y
    @r = r
    @color = col
    @speed = speed
  end
  attr_accessor :x, :y, :r, :color, :speed

  def move(x,y)
    @x += x
    @x = 0 if @x > 320
    @x = 320 if @x < 0 @y += y @y = 0 if @y > 200
    @y = 200 if @y < 0
  end
end

def draw(ball)
  Narya::Display::draw_circle(ball.x,ball.y,ball.r,ball.color)
end

def load_balls
  balls = []
  10.times do 
    balls << Ball.new(rand(320), rand(200)+20, 2, 7, 1 )
  end
  5.times do 
    balls << Ball.new(rand(320), rand(200)+20, 7, 6, 3 )
  end
  2.times do 
    balls << Ball.new(rand(320), rand(200)+20, 12, 5, 4 )
  end
  balls
end

puts "Sprite.new"
sp = Narya::Sprite.new
sp.move_to(100,100)

balls = load_balls
count = 0
loop do
  Narya::Display::clear

  Narya::Display::draw_text(20,5,"Family mruby DEMO!")
  balls.each do |ball|
    ball.move(-ball.speed,0)
    draw ball
  end
  sp.move(3,0)
  
  Narya::Display::swap
end

目次

本編の目次は↓のような感じです。

  • 第1章 オリジナルデバイスの設計の道
    • 1.1 本書の目的
    • 1.2 執筆の経緯
    • 1.3 本書の解説対象範囲
    • 1.4 設計の流れ
  • 第2章 設計図を作ろう
    • 2.1 作りたいものを決める
    • 2.2 必要な機能の整理
    • 2.3 実現方法を考える
    • 2.4 ブロック図を描いてみる
    • 2.5 ピンの配置を決める
  • 第3章 初心者でも回路は怖くない(はず)
    • 3.1 回路設計を始めよう
    • 3.2 回路設計ツールでの回路設計
    • 3.3 本格的に回路設計
    • 3.4 部品の選定と調達
  • 第4章 自分だけの基板を
    • 4.1 プリント基板を使う理由
    • 4.2 KiCadでの基板デザインを覚える
    • 4.3 本格的に基板を作ってみよう
    • 4.4 ガーバーデータの出力
    • 4.5 プリント基板メーカーへ製造依頼
    • 4.6 基板の完成
  • 第5章 mrubyを思いのままに!
    • 5.1 Family mrubyのシステム構成
    • 5.2 ESP32向けのソフト開発環境の選択
    • 5.3 評価用基板
    • 5.4 ESP-IDFビルド環境の構築
    • 5.5 mrubyをESP32へ
    • 5.6 ESP32上でのmruby環境開発
  • 第6章 mrubyを自分のデバイス色に染める
    • 6.1 mrubyとハードウェア
    • 6.2 mrubyとHMI
    • 6.3 mrbgemsによる機能拡張
    • 6.4 ガベージコレクション(GC)
    • 6.5 mrubyによるハードウェア制御
  • 第7章 俺たち戦いはここからだ
    • 7.1 自分だけのオリジナルデバイス
    • 7.2 自分だけのものにしておくのはもったいない!
    • 7.3 Enjoy your dev life!
  • 付録A 参考情報
    • A.1 Ruby/mrubyの解説書籍
    • A.2 参考URL
    • A.3 Narya boardの技術資料
  • 付録B 技術的補足
    • B.1 ESP-IDFの補足情報
    • B.2 FreeRTOSの補足情報

その他

今回で同人誌も3冊めとなりました。書くことは自分の勉強にもなるので、今後もやっていきたいなと思っています。

my 3 books
my 3 books