相生コンピュータークラブ第4-2回~Raspberry Pi Picoで温度測定しよう~

Raspberry Pi Pico(らずべりーぱいぴこ)を使ったマイコンプログラミングは、今回が2回目です。今回は、音読測定のプログラムに挑戦します。

タッチタイピングの練習とアルゴロジック

クラブ活動のはじめにかならず練習するのは、タッチタイピングです。

タッチタイピングで使うツールは、無料タイピングと寿司打です。

無料タイピング https://manabi.benesse.ne.jp/gakushu/typing

寿司打 https://sushida.net/

タイピングが正確に速く出来るというのは、生成AIの時代だからこそ必要です。生成AIに指示を出すのに、文字で指示を出します。速く正確に文字入力ができないと、それだけでストレスで、生成AIも使いこなせません。やれば身につくスキルのなので、身につくまで続けます。

さて、傍目八目と言って、そばで見ている方は、実際にタイピングの練習をしている方より、どこがよくてどこが悪いのかがわかるものです。自己流で練習して、正確で速いなら問題ないのですが、大体不正確で遅いので修正します。

まずは基本通り(型どおり)にやってみてください。アレンジは基本を修めてからです

スピードが上がらない、とぼやいているメンバーがいました。基本はできているので、スピードアップの方法を教えました。これは、基本ができているからこそ教えられるのです。

Raspberry Pi Picoで温度測定

前回のLチカに続いて、オンボードの温度センサーを使って温度測定をしてみます。これもThonnyでコーディングするだけです。

import machine
import utime

sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

while True:
    reading = sensor_temp.read_u16() * conversion_factor

    temperature = 27 - (reading - 0.706)/0.001721
    print(temperature)
    utime.sleep(2)

コーディング自体は、あっという間です。毎回のタイピング練習の成果です。

プログラムで表示された温度がおかしい?

空調の温度設定が25度なので、実際の気温は26~27度くらいあると思われます。しかし、画面に表示されたのは、20~21度。さて、これやいかに。

大体メンバー全員が同じ数字を表示していました。となると、コードの入力ミスではありません。

原因究明には至っていませんが、下記の原因が考えられます。

  • コードそのものが間違っている
  • そもそもオンボード温度センサーのキャリブレーション(初期設定)がズレていた

通常、オンボードの温度センサーは、周りの発熱体の熱を拾って、温度が高い方に振れます。ということで、上の2点に絞れます。

そこでコードを見直すと、Raspberrypi Picoの公式ドキュメントの通りで間違いありません。すると、キャリブレーションズレというのが想定される原因です。複数の個体が同じプログラムで、同じに変な値を示したというのは、同じロットということでしょう。

大切なのは、「まちがい」に気付けるか

プログラムで一番厄介なのは、バグでもエラーでもありません。もっともらしい間違いを、エラーもバグもなく出力されることです。生成AIでもあります。ハルシネーションというやつです。

このもっともらしい間違いに気付くスキルはめちゃくちゃ重要で、プログラムが書けるとか、ロボットを動かせるとか、そんなのとは比較にならない超重要スキルです。

運営している方には、こういう突発トラブルは胃が痛い話です。しかし、メンバーにとっては出来合いの教材にはない生きた課題になったと思います。

RaspberryPi Picoにヘッダピンをはんだ付けする

RaspberryPi Pico単体で出来ることは、Lチカと温度測定くらいです。マイコンプログラミングの面白さはここからで、外部デバイスをつなぐことで、無限の可能性が広がります

その第一歩がヘッダピンのはんだ付けです。次回の予定ですが、多分1回で全員終わらないので、進めます。また、中学校の技術科目で実習する「はんだ付け」を、先取りしてやってしまいます。

わたしは、同じ教材を使って組み立てて、派手に失敗しています。だからこそメンバーに伝えられるものがあります。わたしがこの教材を組み立てたときは、ヘッダピンが斜めになるわ、LEDを破裂させるわ、大失敗の連続でした。

今なら、わたしの失敗を踏まえて、同じ失敗をしない方法でサポートできます。わたしのような失敗をするのは、もっと後でいいんです。初っ端で大失敗かますと嫌になりますからね。

さて、一人ひとりはんだ付けをのサポートをするとなると、1時間3人が上限かな。普段物静かなメンバーが、一番に「やりたい」って手をあげてくれたのが嬉しかったですね。

待ち時間は、別のスタッフとAIに触れてもらおう

わたしがはんだ付けのサポートをする間、ほかのスタッフのサポートでメンバーには生成AIでプログラミング体験してもらいます。

うまくいかないメンバーもいれば、スタッフ一同驚くようなプログラムを作ったメンバーいます。こちらは追々活かしていきます。