はじめに
Scratchなどでよく知られるブロックプログラミング環境で用いられる言語には、独自のものが多く、汎用性の高い言語としてArduino IDEで利用される言語が多いようです。
Pythonのプログラミングをブロックプログラミングで行う環境は、私の調べた限りでは、今回紹介する「Mind+」やMicroPythonを利用するM5Stack用の「uiflow」があります。
ここでは、安価に入手可能なLinuxボードのMilk-v DuoとMind+との組み合わせでつくる、Pythonブロックプログラミング環境を紹介します。本稿で使用するMilk-v Duoの環境は、「Buildrootでsftpサーバーをビルド」で紹介した、sftpサーバー搭載の環境です。事前に環境構築を行ってください。
本稿には、「Unagi.py 勉強会57枚目@スイーツバンク」の発表内容を含みます。
Milk-V Duo
このボードには、CVTEK CB1800BというRisc-vのCPUが搭載されており、RAMは64MB、外部記憶としてマイクロSDカードを利用することが可能です。
有線LANのコネクタのついたボードを追加することで、10/100 Mbpsでイーサーネットに接続可能です。
以下の特徴があります。
・コミュニィティ主体で展開
・情報の鮮度が短い(すぐ、自動でパッチが当てられなくなる、ソースへのマージを待つ方が時間の節約)。
・情報の主な言語が中国語(ソフトはBaidu、ハードはOshwhub、利用にはWeChatのIDが必要)
・Raspberry pi (pico)の情報や周辺機器を転用可能
・オープンハードウェアとオープンソフトウェア
・Linuxのリソース
・pinpongライブラリを介してPythonで制御
Mind+
ブロックプログラミング環境のMind+のデスクトップ画面です。
以下に示すように、中央部分にブロックプログラミング部分があり、そのPythonソースファイルが右上部分に表示されます。Linuxボードとの通信はシェルに表示され、その表示は画面右下に表示されます。
今回構築したシステム
Milk-v DuoのLinuxボードにLCDと気温・湿度センサを接続したLinuxサーバーと、Mind+の動作するGUIマシンとは、USBケーブルで接続されています。
GUIマシンからLinuxサーバー側は、RNDIS接続されており、TCP/IPで通信します。サーバー上でのプログラムの動作は以下の様になります。
- デスクトップマシン上でプログラミング
- サーバーにプログラムを転送
- サーバー上でプログラムを実行
- 実行結果が、サーバー上のディスプレイに表示
Linuxサーバー側には、以下の機能があります。
・SSHサーバー
・Sftpサーバー
・Pythonで制御できるGPIO端子
・RNDIS(あるいはEthernet)
GUIマシンとして、Windows、MacOS、デスクトップ環境のあるLinuxマシンが利用可能です。
Linuxサーバー側の設定
MIND+との間のファイル転送に必要な設定を行います。
Rootでファイル転送することが前提になっています。
Mind+は、Linuxサーバーの特定のディレクトリにプログラムを転送します。特定のディレクトリである
“/usr/local/lib/python3.7/dist-packages”
を作成します。
あるいはPython3.7をインストールします。上記のディレクトリは、Pythonインストール時に作成されます。
おわりに
ここまでの設定で、GPIO搭載の安価なLinuxボード「Milk-V Duo」用のPythonプログラムをビジュアルプログラム「Mind+」で実現することができました。
今回の説明は、USB接続経由でRNDISが利用可能で、ROOTでsftpファイル転送可能なLinuxボードなら適用可能です。
例えば、Raspberry pi zeroシリーズにも適用可能です。
また、PythonのプログラムはLinuxサーバー側に保存されます。サーバー起動時に、保存されているPythonプログラムを起動できるよう設定しておくと、GUIマシン無しで動作の実演が可能です。