MENU

Raspberry Pi Pico WでMicroPythonを使ってタイマー割り込みを実装する

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

今回は、「タイマー」と「割り込み」という2つのキーワードに焦点を当て、Raspberry Pi Picoでどのようにこれらを活用できるかを解説します。

どちらも制御系のシステムでは重要な要素で、リアルタイムコンピューティングにおいて必須の知識となりますので、実際にコードを書いて試してみてください。

目次

なぜRaspberry Pi Picoなのか?

Raspberry Pi Picoは、手頃な価格で高性能なマイクロコントローラです。MicroPythonというPythonのサブセットを使用することで、初学者でも簡単に組み込みプログラミングを学ぶことができます。

また、現在最新のRaspberry Pi Pico Wでは無線LANが搭載され、IoTのアプリケーション開発にも活用できるようになりました。

MicroPythonの開発環境

Raspberry Pi Pico、Raspberry Pi Pico Wで動作するMicroPythonのプログラムを開発する環境として、Thonnyを使用します。

Thonnyを使用することで、コーディングからファイルの転送、Raspberry Pi Picoでの実行を全てツール内で行うことが可能です。

Thonnyのインストールから使用方法までを、以下の記事で解説しています。

Raspberry Pi Pico Wの入手先

Raspberry Pi Pico WはAmazon等で2,000円以下という低価格で入手することができます。

Raspberrypi
¥1,513 (2023/11/30 12:35時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

またはんだ付けの道具をお持ちでない場合や、はんだ付けが面倒という方向けには「Raspberry Pi Pico WH」という製品名でピンヘッダ実装済みのものが販売されています。

ノーブランド品
¥2,190 (2023/12/03 15:26時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

MicroPythonとは

MicroPythonは、Pythonプログラミング言語のコンパクトなバージョンで、マイクロコントローラー上で動作します。Pythonの簡潔さと柔軟性を活かしながら、ハードウェア制御のための豊富な機能を提供します。

MicroPythonの開発環境については、以下の記事で詳細を解説しています。

タイマーとは

タイマーは、一定の時間間隔でイベントをトリガーするハードウェアコンポーネントです。これは、定期的なタスクの実行や、時間に基づく制御など、さまざまな用途で使用されます。

割り込みとは

割り込みは、特定のイベント(例:タイマーの満了、ボタンの押下)が発生したときに、プログラムの通常の流れを一時的に中断し、特定のタスク(割り込みハンドラ)を実行するメカニズムです。

作成したMicroPythonコード

このプログラムは、Raspberry Pi Pico上でMicroPythonを使用して、タイマー割り込みを利用してコマンドラインに定期的にメッセージを出力するものです。

MicroPythonコード解説

以下は、プログラムの各部分の解説です。

  1. import micropythonmicropythonモジュールをインポートします。これは、MicroPythonの特定の機能にアクセスするために使用されます。
  2. micropython.alloc_emergency_exception_buf(100) – 割り込み処理中に例外を作成するためのバッファを割り当てます。これは、割り込みハンドラ内で例外が発生した場合に、それを適切に処理するために必要です。
  3. def print_message(timer): – タイマー割り込みが発生するたびに呼び出されるコールバック関数を定義します。この関数は、コマンドラインに”Timer interrupt triggered”というメッセージを出力します。
  4. timer = Timer() – 新しいタイマーインスタンスを作成します。
  5. timer.init(mode=Timer.PERIODIC, freq=1, callback=print_message) – タイマーを初期化します。このメソッドには以下のパラメータがあります。
    • mode=Timer.PERIODIC – タイマーの動作モードを設定します。Timer.PERIODICは、タイマーが定期的に割り込みを発生させることを意味します。
    • freq=1 – タイマーの周波数を設定します。この例では、freq=1は1Hzを意味し、タイマーは1秒ごとに割り込みを発生させます。
    • callback=print_message – タイマー割り込みが発生するたびに呼び出される関数を設定します。この例では、print_message関数がコールバックとして設定されています。
  6. 最後に、プログラムはメッセージ “タイマーを開始しました” を出力し、メインループに入ります。ただし、このプログラムではメインループは何もしません。タイマー割り込みは自動的に発生し、コールバック関数が定期的に呼び出されます。

全体のソースコード

このプログラムをRaspberry Pi Picoにアップロードし、MicroPythonを使用して実行すると、コマンドラインに1秒ごとに”Timer interrupt triggered”というメッセージが表示されます。

from machine import Timer
import micropython

# 割り込み処理中の例外を作成するための設定
micropython.alloc_emergency_exception_buf(100)

# コマンドラインに文字を出力する関数
def print_message(timer):
    print("Timer interrupt triggered")

# タイマーを作成
timer = Timer()

# タイマーを初期化して、周期的にコマンドラインに文字を出力する
timer.init(mode=Timer.PERIODIC, freq=1, callback=print_message)

# メイン処理(タイマーは自動で呼ばれるので、何もする必要がない)
print("タイマーを開始しました")

実行結果

先ほどのコードを実行した結果が以下の通りです。

timer.initで設定した通り1秒間隔で割り込み処理が実行されていることが確認できました。

組込みソフトウェアの知識を仕事に活かすには

趣味でマイコンのプログラムを書いてるから、仕事でも活かしたいなあ。
でも自信が無い…

そんな時は、一度スクールで体系的に基礎を学ぶといいよ。

趣味のプログラミングスキルを活かしたいけど、「実務レベルで通用するか不安」という方には、プログラミングスクールを受講してみるのがおすすめです。

プログラミングスクールのカリキュラムは、企業の研修などでも利用されており、実践的で即戦力となるスキルを習得することが可能です。

Winスクールでは、Web系や機械学習、データサイエンスなどに加え、プログラミングスクールでは珍しいハードウェアを扱うC言語組み込みシステムやハードウェアとクラウドを連携させたIoTシステムの講座が非常に充実しています。

授業内容も受講者に対して組み込み用マイコンボードRaspberry Piを用意し、実機を使いながら学べる本格的なカリキュラムが用意されています。

また、受講者のスケジュールやロケーションに応じて、対面授業オンライン授業を選択、もしくは組み合わせて受講できるため、プログラミング初心者の方でも安心です。

家電自動車業界などへの転職を目指したい方に非常におすすめです。

また近年、クラウドソーシングのプラットフォームにも、マイコンボードを使った組み込みソフトウェアの開発案件も多く募集されており、副業でマイコンのソフトウェア開発を行う方も増えています。

クラウドワークスなどで「Raspberry Pi」と検索すると、開発解説記事作成などの案件が出てくるよ。

スクールで基礎をしっかり押さえておけば、安心して案件に応募できるね。

 プログラミング言語Python, C, C#, Java, JavaScript(React.js), Ruby, PHP, 他
 授業形式対面&オンラインが選択可能
 学習期間90分×40回(60時間)(C言語&組込みシステム開発(マイコンボード)コースの例)
 費用353,100円~(C言語&組込みシステム開発(マイコンボード)コース例)
 補助金、給付金一部の講座が教育訓練給付制度対象
 転職支援個別の就職カウンセリング、無料の就職支援セミナー
 実績・信頼性年間17,000人以上の受講者、年間1,484社の企業研修実績

\ Winスクール公式サイトを見てみる! /

まとめ

Raspberry Pi PicoとMicroPythonを使用して、タイマーと割り込みを活用する方法について解説しました。割り込みによる処理は、特にモーターなどフィードバック制御で役立ちますので、ぜひ活用してみてください。

それでは、また次の記事でお会いしましょう。

日経BP
¥3,520 (2023/10/11 11:19時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング
よかったらシェアしてね!
  • URLをコピーしました!
目次