【鎌倉研修日記 vol.30】

8回目は、組込みプログラミングについて取り組む週でした。普通のプログラミングとは違い使用するマイコンの性能について気にしないといけないのでデータシートの重要性がよくわかりました。新型コロナウィルスの感染拡大は続いていますが、それでも続けらるかぎりFabAcademyは進めていきます。

授業動画 #8: 組み込みプログラミング

embedded programming (videoreview)

組込みプログラミングは、プログラミングの中でもなかなかとっつきにくい印象ですが、これによって自分の作るファイナルプロジェクトをどのように動かすのか指示することになるのでとても重要な要素です。すでに自分が制作した電子基板上のマイクロコントローラーにプログラムを実装するというのが今回の課題でした。まずはプログラムを書き込む前にデータシートと呼ばれる説明書のような資料の読み方について学習しました。

#9_01

ピン配置情報(データシート) 今回使ったマイコン(ATTINY44)のピン配置の情報どこのピンがどの役割を果たしているのかをこの図を見ながら確認しました。

データシートはあらゆる電子部品に付随している仕様書で、それをヒントとしながら電子回路やプログラムを設計することになります。マイクロコントローラーは特に機能が豊富なのでパーツ一つに数百ページの説明書きがなされています。これを全て読んでいる時間はないので、必要な部分を都度チェックすることになり、記述の中でも特にマイクロコントローラーに複数あるピンの使い方について知ることが重要だということがわかりました。

#9_02

ピンがもつ機能の詳細(データシート) ピンからは複数の機能をコントロールできます。マイコンへのアクセスのしかたによって設定を切り替えることが可能で、その詳細についてこの表から確認できます。

次に、実際にプログラムをしていく際には2つの方法を使いました。一つは著名なマイコンボード用の統合開発環境であるArduino IDEを使う方法。もう一つはmacのターミナルを利用しmakeコマンド経由で書き込んでいく方法でした。違いはあるものの、どちらもC言語(もしくはそれに近い言語)を利用することになります。C言語は実行するのにコンパイルという作業が必要だったり、書き方も形式張っていて若干の使いづらさを感じさせる言語なのですが、書き込んだ後の処理速度が速いことから,組込み系のプログラミングではほぼ必須の言語となります。今回はまず使い方を覚えるという意味で、昨年の卒業生が作成したプログラムを改造しながら、最終的には基板に取り付けたLEDの光らせ方をボタンで変更できるようなものを作り上げることができました。

#9_03

Arduino IDEでのプログラミング

有名なマイコンボードのArduinoの統合開発環境であるArduino IDEから今回使うマイコンのATTINY44への書き込みが可能です。C言語に似た言語での開発が可能で、書き込み作業の設定も難なくできます。

#9_05

makeファイルを使ったプログラミング

makeファイルを利用して、macのターミナルからプログラムを書き込むことができます。左側がプログラミング時の設定を記述したmakeファイルで、右側が実際に書き込まれるC言語で書かれたプログラムです。

#9_06

プログラム書き込みの際の接続

私が作成したボードへ書き込む際は、パソコンからマイコンへとプログラムを書き込むためのライターであるUSBtinyISPと、マイコンボードに給電するためのFTDIケーブルを接続する必要があります。

#9_07

ボタンとLED

私が作成したボードはATTINY44というマイコンを乗せたボードにLEDとタクトスイッチを搭載しています。このLEDとタクトスイッチを使用したプログラムを組んでしっかりと動作するかテストを行いました。写真はボタンを押すとLEDが光るプログラムを書き込んで、実際に成功したところです。

ファイナルプロジェクトではもっと複雑なプログラムが必要になってくるので引き続き学習を続けて行きたいと思います。(岡)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中