1.Pythonでクムクムのライブラリーを使う方法

クムクムプログラミング

学習用ロボット(クムクム)をPythonのプログラムから動かす

学習用ロボット(クムクム)とPCの間は、BLEモジュール’RN4020’が持つMLDPモードという通信方式を使って通信を行っています。
MLDPモードとは、Microchip Low-energy Data Profile のことで、SSP (Serial Port Profile) を使って無線化することを指します。

そして、クムクムをPythonのプログラムから動かすには、まず、PCとクムクムの間でシリアル通信ができないといけません。
Pythonでシリアル通信を行うことも可能ですが、ここでシリアル通信を行い、クムクムを制御するためのコマンドなどを作っているととても時間がかかってしまいます。

Python用ライブラリがある

学習用ロボット(クムクム)のサイトに、Python用ライブラリがあり配布されています。

Qumcum Pythonライブラリ

クムクムのサイトで下記の注意がありますのでご一読ください。

使用上の注意

1.API(DLL)はサンプルβバージョンにより不具合などがある場合もあります。
2.APIの細かい使い方、サンプルプログラムの内容、改造などについてのご質問については原則的にお答えできません。
3.技術的なアドバイスや細かい内容について個人的な範囲でのお答えは原則的にお答えできません。
4.API・サンプルのs著作権は弊社に帰属しますが、第三者への配布などはご自由です。

あくまで個人の学習用として参考としてお使いください。

使用上の注意を確認いただいたうえで、QumcumのサイトからPython用ライブラリ(qumcum_python.zip)をダウンロードします。

ダウンロードはこちらから。

Qumcum Pythonライブラリを展開する

Qumcum Pythonライブラリをダウンロードしたらqumcum_python.zipを選択して、右クリックメニューから「すべて展開…」で圧縮ファイルを展開します。

圧縮ファイルを展開すると下記のようなフォルダがあります。

フォルダ 内容
doc Qumcum Pythonライブラリのドキュメントがあります。
lib/x64 Python(64-bit)をインストールした場合のQumcum Pythonライブラリの本体(プログラム実行に必要なファイル)があります。
lib/x86 Python(32-bit)をインストールした場合のQumcum Pythonライブラリの本体(プログラム実行に必要なファイル)があります。
sample Qumcum Pythonライブラリを使うサンプルプログラムがあります。

各フォルダ内のファイル

フォルダ ファイル 説明
doc Qumcum_python用インターフェース一覧.pdf クムクム制御用APIのインターフェースの説明が書かれたドキュメントです。
lib/x64 QumCommLib.dll Python(64-bit)をインストールした場合のDLLです。
lib/x86 QumCommLib.dll Python(32-bit)をインストールした場合のDLLです。
sample QumCommLib.dll サンプルにはPython(32-bit)をインストールした場合のDLLが入っています。
sample qumcum.py QumCommLib.dllを使うためのPythonモジュール
sample sample.py PythonからQumCommLib.dllのみを使ってクムクムを制御するサンプルプログラム
sample qumcum_sample.py qumcum.py経由でQumCommLib.dllを呼び出してクムクムを制御するサンプルプログラム

 

QumCommLib.dllとPythonモジュール(qumcum.py)とプログラムの関係

クムクムとPCを接続し、Qumcum Pythonライブラリを使ってPythonで制御するには2通りの方法があります。

a. PythonからQumCommLib.dllのみを使ってクムクムを制御する

クムクムの制御を呼び出すプログラムのコード上から直接QumCommLib.dllをロードし、接続を行い制御します。

b. qumcum.py経由でQumCommLib.dllを呼び出してクムクムを制御する

クムクムの制御を呼び出すプログラムからはqumcum.pyをインポートして、APIを呼び出して制御します。

上記2つの方法は、それぞれ下記のような特徴があります。

方法 メリット デメリット
a. PythonからQumCommLib.dllのみを使ってクムクムを制御する DLLを直接呼び出すことができるので他のコードの影響が少ない DLLのロードからアンロードまでの管理を自分のプログラム内で行わなければいけない
b. qumcum.py経由でQumCommLib.dllを呼び出してクムクムを制御する qumcum.pyがDLLのロードからアンロードまでの管理を担ってくれるのでプログラムのコード量を抑えることができる インポートを行うためqumcum.pyの実装に依存することになる

 

Qumcum Pythonライブラリを使用するための準備

シリアル通信を使用するため、接続するシリアルポートを確認しておく必要があります。
確認を始める前にクムクムの通信機がPCとUSBケーブルで接続されている場合は、いったん通信機を外しておいてください。

シリアルポートの確認方法

  1. デバイスマネージャを開きます。
    デバイスマネージャは[スタート]ボタン上で右クリックして[デバイスマネージャ]をクリックすると開くことができます。
  2. デバイスマネージャの<コンピュータ名>の中にある「ポート(COMとLPT)」の横の→をクリックして展開します。
  3. この状態でクムクムの通信機とPCをUSBケーブルで接続します。
  4. クムクムの通信機が認識されると「USB Serial Port(COM*)」(*はCOMポートの番号)というデバイスが表示されます。

この“COM*”(*はCOMポートの番号)の部分が、Qumcum Pythonライブラリでクムクムと通信を行うときに必要になります。

QumCommLib.dllのみでの使用方法

実行するプログラムのフォルダに QumCommLib.dll を置きます。
QumCommLib.dllは、Python(64-bit)をインストールした場合は qumcum_python\lib\x64 Python(32-bit)をインストールした場合は qumcum_python\lib\x86のDLLを使用してください。

PythonからQumCommLib.dllのみを使ってクムクムを制御する

DLLの関数を呼び出すには、スクリプト内に dll = cdll.QumCommLib と記述して、DLLをロードし、dll.関数名でAPIを呼び出します。

import os
import time
from ctypes import *

# DLLのフォルダにカレントディレクトリを追加します
os.add_dll_directory(os.getcwd())
# DLLをロードします
dll = cdll.QumCommLib

# COMポートの番号文字列を生成
port = c_char_p('COM7'.encode('utf-8'))

# Qumcumと接続
h = dll.qumcomm_connect(port, 115200)

「COMポートの番号文字列を生成」の部分で指定している’COM7’の部分は、さきほどデバイスマネージャで確認した’COM*'(*はCOMポートの番号)を指定します。

Qumcum Pythonライブラリでは sample/sample.py にサンプルがあります。

qumcum.py経由でQumCommLib.dllを呼び出してクムクムを制御する

同じフォルダにあるqumcum.pyの関数が使用できるようインポートし、そのインポートした’qumcum’に関数呼び出しを記述して呼び出します。

import qumcum

# Qumcumと接続
# ※"COM7"は通信機を接続したときに表示されたCOMポートの名称です
qumcum.connect("COM7")

qumcum.connect()の引数で指定している’COM7’の部分は、さきほどデバイスマネージャで確認した’COM*'(*はCOMポートの番号)を指定します。

Qumcum Pythonライブラリでは sample/qumcum_sample.py にサンプルがあります。