virt_flyのブログ -36ページ目

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

↑Raspberry Pi Pico(画像はraspberrypi.comより)

 

意外といいかも!Raspberry Pi Pico

 

RGB LEDを使って7色にアクリル板を光らせることができるようになりましたが、そのためにだけRaspberry Pi Zeroを1個専用に使うのは、費用対効果が悪すぎます。

 

より安価で、購入後使わぬままだったRaspberry Pi Picoを引っ張り出してきて使うことにしました。これだって、今では購入時の1.3倍に価格が上昇してしまってますから(注1)、もったいない気がしないわけではありません。

 

いらぬ心配

 

Raspberry Pi Picoは他のRaspberry Piシリーズと異なり、OSを載せないマイコンであってパソコンのように使うことができず、接続したパソコンから転送されたプログラムを機械語に翻訳してPicoに実行させるようですね。

 

プログラム名をmain.pyとしてPicoに書き込めば、Pico単体でもプログラムを実行できるということで、世間ではもっぱら簡単な計測などの電子工作向きに使われているのではないでしょうか。

 

こうした使い方(arduinoも同様なのでしょう)がやっかいそうに思えたのが、これまでさわらずにきた理由です。なにせ、Picoの電源を入れても動かなければどうしよう、またパソコンとつないでプログラムを修正の上、再度書き込みが必要になるのかと思えば億劫にもなります。

 

実際には、Raspberry Pi Picoをパソコンに接続した状態でThonnyというIDE(統合開発環境)を使ってプログラムを作成すれば、その場でプログラムの実行結果が確認できるので、さほど心配する必要もないとわかりました。ま、それでもプログラムを変更したくなったときは、少々面倒くさくはあります。

 

Picoって、意外といいかも(注2)

 

↑光るアクリル板の色をRaspberry Pi Pico(FRISKの容器の中)でコントロール

 

Raspberry Pi Picoの使い方(簡単な覚書)


Picoの使い方は、いくつものサイトに紹介されていますが、少々まごつくところがあったり、2度目以降でも手順を忘れすっ飛ばすこともあったので、簡単な覚書を残すことにします。開発環境はThonnyの使用を前提。

 

①Picoとパソコンとの接続(Picoを初めて使用するとき、あるいは開発環境を変えたいとき、初期化したいとき以外は、不要)

Picoとパソコンに接続するとき、Picoの基板の上の白い[BOOTSEL](冒頭の写真のUSBポート左横の白い小さいボタン)を押しながらUSBケーブルを接続します。しばらく押し続け、ピコッと音がしたら離してしてOK。

 

②ファームウェアの書き込み(Picoを初めて使用するとき、あるいは開発環境を変えたいとき、初期化したいとき以外は、不要)

次いで、PR1-PR2フォルダが表示されるので、ここにUF2ファイルをダウンロードしてきてコピペするのですが、一般的にINDEX.HTMをクリックせよとされるものの、開いたページのどこからダウンロードしたらよいのかわかりにくくて迷います。

 

 

開いたRaspberry Piのサイトのドキュメンテーションのページ、そのページが開いていなければ上部の[Documenntation]をクリックして開き、さらにすぐ下のタブの[Microcontorollers]にアンダラインが入っているか確認もしくはクリック。

 

 

次いで、[MicroPython Getting started with MicroPython]をクリックして開いたページで「Drag-and-Drop MicroPython」の項に「Download the correct MicroPython UF2 file for your board:」と小さな字で書かれた箇所を見つけ、直下の[・Raspberry Pi Pico]をクリック。ダウンロード開始。

 

ダウンロードしたrp2-pico-xxxxxxxx-unstable-v1.19.1-xxx-xxxxxxxxxx.uf2てな風な名前のuf2ファイルを、PR1-PR2フォルダにドラッグ・アンド・ペーストします。

 

③Thonnyのインストール・起動

Raspberry PiのRaspberry OSだとデフォルトでインストール済。UbuntuではUbuntu Softwareから簡単にインストールできます。Windowsでは、Thonnyのサイトからダウンロードしてきてインストールすることになります。詳細略。

 

↑Thonnyを開いた画面

 

④Thonnyの設

Thonnyが起動したら、Thonnyのウインドウ右下の表示をクリックして[インタプリタ設定]を開き、どのインタプリタを使用するかを指定するボックスで、ドロップダウンメニューから[MicroPython(Raspberry Pi Pico)]を選択。

 

ポート部のボックスには、ドロップダウンメニューから[ポートの自動検出を試す]を指定します。

 

⑤プログラムの実行・保存

コードエディタ部分にプログラムを書き込み、緑のRUNボタンをクリックして実行。赤のSTOPボタンで停止。

プログラムの保存は、コンピューターかPicoを保存先を指定して保存します。

 

なお、Picoに保存する場合、main.py名で保存すると、Picoの電源を入れたら自動的にプログラムが実行されます。

 

※パーミッションエラー

UbuntuでThonnyを実行しようとすると、PermissionError: [Errno 13] Permission denied: '/dev/ttyACM0'というエラーが発生しました。ググった結果、次のように実行することで解消できました(参照元:Bye Bye Moore PermissionError: [Errno 13] Permission denied: '/dev/ttyACM0'とか怒られたら - Bye Bye Moore (hateblo.jp))。

 

 $ sudo chmod 666 /dev/ttyACM0

 

注1)2年前の2021年2月の発売開始時のRasoberry Pi Picoの価格は税込み550円。現在は715円(Switchscience)ですから高くなったものです。こう何もかも高くなったのでは、おいそれと趣味にお金を使ってられなくなります。

 

注2)思えば、Raspberry Pi ZeroはmicroSDを挿し替えるだけで何台分にも使えて安上がりだと喜んでいたのですが、16GB程度のmicroSDが安物でも600円前後と結構高く、それくらいならPicoを購入した方が余程値打ちがあると言えます。意外といいかものもう一つの理由です。

 

↑画像ではChatGPTがつくったプログラムを少し改変して動かしています

ChatGPTならプログラミングが学べる

 

ChatGPTが書いたプログラムでLチカができたことを、前回の「ChatGPTにふれてみる(2)」で、お話しました。今度は、1個のRGB(フルカラー) LEDで色を変えて光らせるプログラムを、ChatGPTに書かせてみることにしました。

 

「光るアクリル板」に魅せられて、LEDを取り替えなくても色が変えられたならと思い、注文していたRGB(フルカラー) LEDがちょうど届いたところだったからです。

 

RGB(フルカラー) LEDは使ったことがなく、ネットで使い方を調べるつもりだったので、ChatGPTを知った今となってはこれを使わない手はありません。

 

↑動画に撮ると7色の変化がわかりにくいですが、LEDを見ていると少しはわかるのでは

 

いやー、勉強になりました。赤、青、緑の三原色から7つの色を作り出すプログラムの書き方や、あるいは、アノードコモンがよいと聞いて購入したRGB(フルカラー) LEDですが、これを光らせるにはnotを書き加えればよいなど、ネット検索していたら時間がかかっていただろうことが、ChatGPTだと一発でわかります。グッジョブ!

 

発色の間隔も、time.sleep()をいちいち書かなくても、RGB値を変えながら点灯する関数に数値を書き込むだけで済ませられることも学べました。電子工作やプログラミングの初心者の私には、ChatGPTはまことにありがたいツールです。ヤッタネ!

 

今回は、メモがわりにタイトルも代えて「ChatGPTでプログラミング(1)」としましたが、(2)、(3)があるかはまったく未定。何かもう少し複雑なプログラムに挑戦し、ChatGPTがうまくプログラムを書いてくれれば…。

 

↑はtGPTが回答 3個のLEDを順次点灯させるRaspberry Pi用Pythonプログラム

 

ChatGPTが書いたプログラムでLEDが点灯!

 

前回は、ChatGPTを試してみて、これではフェイク製造機じゃないかと思ったことを紹介しました。それならChatGPTのもう一つの特徴であるプログラミングは大丈夫かい、というのが今日の話題です。

 

さっそくChatGPTに、3個のLEDを順番に点灯させるRaspberry Pi用のプログラムを書かせてみましょう。

 

プログラミング言語にPythonを指定したその結果は、恐れ入りました。抵抗やLEDとの接続の仕方など丁寧な説明つきで、綺麗なプログラムが生成されていくではありませんか(冒頭の画像はその一部)。

 

回答にもとづき回路を組み、プログラムを実行したところ見事に点灯。ただし、ChatGPTへの指示が不十分だったため、LEDはそれぞれ1回点灯しただけでした。

 

↑点滅を繰り返すLED

 

LEDの点灯がループして点灯し続けるように、再度ChatGPTへ指示することにしました。それでわかったことですが、変な日本語だと構文がくずれたようなおかしなプログラムが生成されてしまいます。ChatGPTへの指示はわかりやすさで明瞭な文章にしないとなりません。

 

それと、同じ指示をだした場合でも、プログラムは同じでも説明文書は異なることもあります。プログラムは同じと言っても、互換性のあるGPIOピンは使用するピン番号が異なってくるのは往々にしてあることです。そして同じ指示でも、なんとLED点灯がループしなかった同じ指示でも、ループするプログラムを生成してくれることもあるということです。

 

3個のLEDを順次点灯させ続けるプログラムは、ご丁寧にも緑、赤、青のLEDを使うように書かれたものもありました。ここでは、一番シンプルなプログラムを次に掲載します。

 

                
import RPi.GPIO as GPIO
import time

# GPIOピンの番号
led_pins = [18, 23, 24]

# GPIOピンの設定
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pins, GPIO.OUT)

# 3つのLEDを順番に点灯させる
while True:
  for pin in led_pins:
    GPIO.output(pin, GPIO.HIGH) # LEDを点灯
    time.sleep(1)
    GPIO.output(pin, GPIO.LOW) # LEDを消灯

GPIO.cleanup()

 

初歩的なプログラムですから、どこからかChatGPTがコピーしてきたプログラムでも、著作権で問題になることはないでしょうが、複雑なことが実行できるプログラムだとどうなのでしょう。

 

さて、ChatGPTはどれくらい高度で複雑なプログラムが書けるのでしょう。指示を出す方の力量にもかかってくるような気がします。

 

プログラミング初心者なら、自分の手におえないプログラムをChatGPTが書いてくれるとありがたい、勉強にもなると期待しがちです。でも、ChatGPTがどれくらい長文のプログラムを書いてくれることやら。部分ごとにプログラムし一つにまとめる必要があるとなると、一定のプログラミング知識が必要でしょうし、間違えようのない指示をChatGPTに与えるのもなかなか大変そうです。