Raspberry Pi 日記 (part3)

長嶋 洋一


2013年7月14日(日)

CGクリエイター検定の当日である。 朝の研究室だけでなく、検定事務局のCG-ARTS協会からの連絡があるかもしれない、という事で試験会場にMacを用意したので、試験の合間にもWebの調べものだけは出来る、と気づいた(^_^;)。 そこで一昨日リストアップした、「Raspberry PiのGPIOのUARTにXBeeを繋ぐ」ための関連ページを順に眺めてみた。

このページ は、XBee制御にJavaを使う、ということで「当面パス」と判断した。 もともとJavaに入れ込んでいる人がRaspberry Piというプラットフォームに出会った、という文脈だったからである。 僕としては当面のところ、普通のパソコンでも重いJavaをわざわざRaspberry Piに入れるつもりは無いのだ。

このページ は、Raspberry PiにUSBシリアルアダプタを繋いで、minicomという簡易シリアルコンソールをインストールして「minicom -b 115200 -o -D /dev/ttyUSB0」・・・という手法で、これはXBeeでも使えるもののようなので、今後も要チェックである。

このページ はもっとそのものズバリ、「Raspberry Pi and XBee」というページであり、以下のようなコード例があった。 たぶんserialというのは標準であるので、これはもっとも簡単そうであり、まずは最初にここから追いかけよう、という要チェックページである。

import serial
xbee=serial.Serial(port='/dev/ttyAMA0',baudrate='9600')
xbee.write('8')

このページ のタイトルもまた「Raspberry PI + Xbee: UART / Serial howto」とズバリであった。 こちらもminicomを使う、という解説だったので、これも着手のpriorityは2番手である。

このページ は、タイトルこそ「Raspberry Pi’s onboard Serial connection」とあったが、シリアル接続の詳細というよりは、シリアル経由でRaspberry PIのコンソール出力をプリンタから印刷する、というハッキングが中心だった。 そこでこちらも、「当面パス」と判断した。

このページ には、Raspberry PiのGPIOポートのUARTピン配置ぐらいの情報しかなかったが、そこからのリンクで こんなページ では、なんだかRaspberry Piには2種類のUARTがある・・・などという混乱する情報が充実していた(^_^;)。 これは混乱するだけなので見なかったことにして、とりあえず「当面パス」である。

このページ も「Raspberry Pi and Arduino via GPIO UART」というタイトルで、目標としてはRaspberry PiとArduinoを繋ぐ、ということらしい。 このページは物理的な接続だけで、そこからのリンクで こんなページ に誘導された。 ここは「Pythonでシリアル」という広大な世界で(^_^;)、もしかするとこれもお世話になるような気もする。 とりあえずpriorityを「1.5」とした、要チェックページである。

このページ は、単にYAHOO.COMで「Raspberry Pi GPIO UART」と画像検索した結果ページであり、とりあえずのハンダ付けが終わっているので、もうパスである。 ・・・と調べていたら、なんと午前のペーシックの試験は、単願(1科目)だけでなく併願(2科目)の学生も早々に解答終了して、早めに終わってしまった。 試験監督のバイトをお願いした小畑さんは院生室に休憩に行き、僕もいったん研究室に戻って昼食休憩ということになった。

そして研究室で、相穴熊という地味過ぎる将棋をチェックしながら このページ をさらに眺めてみると、「I didn't test it with a XBee Pro attached, this will certainly draw too much current from the RasPi. The 3.3V supply only delivers 50mA as per this wiki . This is fine with the normal XBee which has 40mA max. current demand as per datasheet. If you need more current (XBee PRO needs 295mA@3.3V when transmitting with maximum output power) you could use the 5V power source with a subsequent voltage regulator as mentioned in the blog entries before.」という記述にドキッとした。 そうだった、Raspberry Piの+3.3Vの電源供給電流は50mAまでであり、またXBeeには通常のXBeeとハイパワーのXBee Proの2種類があったのだが、小出力の通常XBeeの方の消費電流が40mAとギリギリだったのである。 慌ててRaspberry Piに挿していたコネクタを外して、秋月電子のマニュアルと照合したところ、無事にProでない通常版と判明してホッとした。(^_^;)

ハードはとりあえずOKとして、ソフトの方もちゃんと読んでみると、上記のシンプルなPythonコードのためには、「If you want to communicate via Python you have to get pyserial (sudo apt-get install python-serial or sudo apt-get install python3-serial for Python3).」ということで、DHCPに切り換えてモバイルWiFiルータに切り換えて「apt-get」が必要なのだ、と判明した。 この記述から、対応したモジュールを「apt-get」するために、使っているRaspberry PiのPythonのバージョンを調べる必要があるが、 このページ からあっさりと、「python -V」または「python --version」とすればいい、と解決した。

そして、「sudo apt-get install python-seria」ないし「sudo apt-get install python3-serial for Python3」について、YAHOO.COMで「python serial」で検索すると、どうしても ここ にやってくる、と判明し、 ダウンロード ページにあるのは、「pyserial 2.6」というものであると判った。 Pythonのバージョンの2と3との違いと、この2.6というのはどうやら無関係のようだが、実に紛らわしい(^_^;)。 とりあえずこの「pyserial-2.6.tar.gz」をダウンロードして解凍してみると、これまで何度となく見てきた膨大な世界が出て来た。 解凍したディレクトリの直下にある「README.txt」の肝心の部分には、以下のような記述があった。

Documentation
=============
For API documentation, usage and examples see files in the "documentation"
directory.    The ".rst" files can be read in any text editor or being converted to
HTML or PDF using Sphinx.

Examples
========
Examples and unit tests are in the directory "examples".

Installation
============
Detailed information can be found in "documentation/pyserial.rst".

The usual setup.py for Python libraries is used for the source distribution.
そしてその「setup.py」を見ると以下のようになっている。 これはつまり、ここでゲットした「pyserial-2.6.tar.gz」をRaspberry Piにrcpしてunzipして、上記のようにPythonがバージョン3である事を確認してから「sudo python3 setup.py install」とやれば、「sudo apt-get install python3-serial」と同じことになりそうな気がする。 apt-getは自分でインターネット上の該当モジュールの最新版を探し当てて取って来るので、これが結果として、たぶんPython3に対応した「pyserial-2.6」となるのでは、という事である。 以下のsetupのソース内でも、Python2.3未満だと「ごめんなさい」である。 しかし、そうやって失敗して長い回り道をしたような苦い記憶も蘇る(^_^;)。
# setup.py for pySerial
#
# Direct install (all systems):
#   "python setup.py install"
#
# For Python 3.x use the corresponding Python executable,
# e.g. "python3 setup.py ..."

import sys

from distutils.core import setup

if sys.version_info >= (3, 0):
    try:
        from distutils.command.build_py import build_py_2to3 as build_py
        from distutils.command.build_scripts import build_scripts_2to3 as build_scripts
    except ImportError:
        raise ImportError("build_py_2to3 not found in distutils - it is required for Python 3.x")
    suffix = "-py3k"
else:
    from distutils.command.build_py import build_py
    from distutils.command.build_scripts import build_scripts
    suffix = ""

if sys.version < '2.3':
    # distutils that old can't cope with the "classifiers" or "download_url"
    # keywords and True/False constants and basestring are missing
    raise ValueError("Sorry Python versions older than 2.3 are no longer"
                     "supported - check http://pyserial.sf.net for older "
                     "releases or upgrade your Python installation.")

# importing version does not work with Python 3 as files have not yet been
# converted.
#~ import serial
#~ version = serial.VERSION

import re, os
version = re.search(
        "VERSION.*'(.+)'",
        open(os.path.join('serial', '__init__.py')).read()).group(1)

setup(
    name = "pyserial" + suffix,
    description = "Python Serial Port Extension",
    version = version,
    author = "Chris Liechti",
    author_email = "cliechti@gmx.net",
    url = "http://pyserial.sourceforge.net/",
    packages = ['serial', 'serial.tools', 'serial.urlhandler'],
    license = "Python",
    long_description = "Python Serial Port Extension for Win32, Linux, BSD, Jython, IronPython",
    classifiers = [
        'Development Status :: 5 - Production/Stable',
        'Intended Audience :: Developers',
        'Intended Audience :: End Users/Desktop',
        'License :: OSI Approved :: Python Software Foundation License',
        'Natural Language :: English',
        'Operating System :: POSIX',
        'Operating System :: Microsoft :: Windows',
        'Programming Language :: Python',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.3',
        'Programming Language :: Python :: 2.4',
        'Programming Language :: Python :: 2.5',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.0',
        'Programming Language :: Python :: 3.1',
        'Programming Language :: Python :: 3.2',
        'Topic :: Communications',
        'Topic :: Software Development :: Libraries',
        'Topic :: Software Development :: Libraries :: Python Modules',
        'Topic :: Terminals :: Serial',
    ],
    platforms = 'any',
    cmdclass = {'build_py': build_py, 'build_scripts': build_scripts},

    scripts = ['serial/tools/miniterm.py'],
)
無事に試験が終了して、返送答案を取りに来たクロネコヤマトに渡した後で、せっかくなので、3台ジョイントしたものでない単独のRaspberry Piに63号機のSDカードを挿して、上記の「pyserial-2.6.tar.gz」の転送を試してみた。 まず、これはzipでなかったのでunzipではなくて(^_^;)、「tar zxvf pyserial-2.6.tar.gz」とやると、ズラズラと解凍された。 そして「sudo python3 setup.py」とやると、「error: no commands supplied」というエラーが出た(^_^;)。 ここでこの日記の過去ページを調べて「install」の抜けを発見して、改めて「sudo python3 setup.py install」とやってみると、順調にbuildが出来てあれこれコピーした後に途中でパッタリと止まってしまって焦ったが(^_^;)、無事に以下のように作業はエラーなく終了した。
Last login: Sun Jul 14 07:18:31 on console
nagasm-Mac-mini:~ nagasm$  ls
Desktop		Downloads	Movies		Pictures	Sites
Documents	Library		Music		Public
nagasm-Mac-mini:~ nagasm$ ssh pi@172.16.65.63
pi@172.16.65.63's password: 
Linux raspberrypi 3.6.11+ #456 PREEMPT Mon May 20 17:42:15 BST 2013 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jun 25 02:06:09 2013

pi@raspberrypi ~ $ rcp nagasm@172.16.65.31:Desktop/pyserial-2.6.tar.gz .
Password:
pyserial-2.6.tar.gz                                                 100%  114KB 113.6KB/s   00:01    

pi@raspberrypi ~ $ ls
Desktop        RPi.GPIO-0.1.0  blink1-tool    ocr_pi.png           python_games    twilight.png
GPIO_clear     SimpleOSC       blink_autorun  pyOSC                pyusb-1.0.0-a1
OSC_disp63.py  bcm2835-1.25    null           pyserial-2.6.tar.gz  pyusb-1.0.0a3

pi@raspberrypi ~ $ unzip pyserial-2.6.tar.gz
Archive:  pyserial-2.6.tar.gz
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of pyserial-2.6.tar.gz or
        pyserial-2.6.tar.gz.zip, and cannot find pyserial-2.6.tar.gz.ZIP, period.

pi@raspberrypi ~ $ tar zxvf pyserial-2.6.tar.gz
pyserial-2.6/
pyserial-2.6/CHANGES.txt
pyserial-2.6/README.txt
pyserial-2.6/MANIFEST.in
pyserial-2.6/examples/
pyserial-2.6/examples/setup-miniterm-py2exe.py
pyserial-2.6/examples/port_publisher.sh
pyserial-2.6/examples/wxTerminal.wxg
pyserial-2.6/examples/enhancedserial.py
pyserial-2.6/examples/scanwin32.py
pyserial-2.6/examples/rfc2217_server.py
pyserial-2.6/examples/wxTerminal.py
pyserial-2.6/examples/port_publisher.py
pyserial-2.6/examples/tcp_serial_redirect.py
pyserial-2.6/examples/scan.py
pyserial-2.6/examples/setup-wxTerminal-py2exe.py
pyserial-2.6/examples/setup-rfc2217_server-py2exe.py
pyserial-2.6/examples/wxSerialConfigDialog.py
pyserial-2.6/examples/scanlinux.py
pyserial-2.6/examples/wxSerialConfigDialog.wxg
pyserial-2.6/setup.py
pyserial-2.6/documentation/
pyserial-2.6/documentation/shortintro.rst
pyserial-2.6/documentation/index.rst
pyserial-2.6/documentation/pyserial.rst
pyserial-2.6/documentation/pyparallel.rst
pyserial-2.6/documentation/pyserial.png
pyserial-2.6/documentation/pyserial_api.rst
pyserial-2.6/documentation/conf.py
pyserial-2.6/documentation/appendix.rst
pyserial-2.6/documentation/examples.rst
pyserial-2.6/documentation/Makefile
pyserial-2.6/PKG-INFO
pyserial-2.6/test/
pyserial-2.6/test/test_readline.py
pyserial-2.6/test/run_all_tests.py
pyserial-2.6/test/test_high_load.py
pyserial-2.6/test/test.py
pyserial-2.6/test/test_advanced.py
pyserial-2.6/test/test_url.py
pyserial-2.6/test/test_iolib.py
pyserial-2.6/LICENSE.txt
pyserial-2.6/serial/
pyserial-2.6/serial/win32.py
pyserial-2.6/serial/serialposix.py
pyserial-2.6/serial/rfc2217.py
pyserial-2.6/serial/serialwin32.py
pyserial-2.6/serial/tools/
pyserial-2.6/serial/tools/miniterm.py
pyserial-2.6/serial/tools/list_ports.py
pyserial-2.6/serial/tools/list_ports_posix.py
pyserial-2.6/serial/tools/__init__.py
pyserial-2.6/serial/tools/list_ports_windows.py
pyserial-2.6/serial/urlhandler/
pyserial-2.6/serial/urlhandler/protocol_socket.py
pyserial-2.6/serial/urlhandler/protocol_loop.py
pyserial-2.6/serial/urlhandler/protocol_rfc2217.py
pyserial-2.6/serial/urlhandler/protocol_hwgrep.py
pyserial-2.6/serial/urlhandler/__init__.py
pyserial-2.6/serial/sermsdos.py
pyserial-2.6/serial/serialutil.py
pyserial-2.6/serial/serialjava.py
pyserial-2.6/serial/__init__.py
pyserial-2.6/serial/serialcli.py

pi@raspberrypi ~ $ ls
Desktop        RPi.GPIO-0.1.0  blink1-tool    ocr_pi.png    pyserial-2.6.tar.gz  pyusb-1.0.0a3
GPIO_clear     SimpleOSC       blink_autorun  pyOSC         python_games         twilight.png
OSC_disp63.py  bcm2835-1.25    null           pyserial-2.6  pyusb-1.0.0-a1

pi@raspberrypi ~ $ cd pyserial-2.6

pi@raspberrypi ~/pyserial-2.6 $ ls -l
合計 52
-rw-r--r-- 1 pi pi 13700 11月  2  2011 CHANGES.txt
-rw-r--r-- 1 pi pi  2850  8月  9  2011 LICENSE.txt
-rw-r--r-- 1 pi pi   968  7月 21  2010 MANIFEST.in
-rw-r--r-- 1 pi pi  1399 11月  2  2011 PKG-INFO
-rw-r--r-- 1 pi pi  1237  8月  9  2011 README.txt
drwxr-xr-x 2 pi pi  4096 11月  2  2011 documentation
drwxr-xr-x 2 pi pi  4096 11月  2  2011 examples
drwxr-xr-x 4 pi pi  4096 11月  2  2011 serial
-rw-r--r-- 1 pi pi  3215  8月 22  2011 setup.py
drwxr-xr-x 2 pi pi  4096 11月  2  2011 test

pi@raspberrypi ~/pyserial-2.6 $ sudo python3 setup.py
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help
error: no commands supplied

pi@raspberrypi ~/pyserial-2.6 $ sudo python3 setup.py install
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/serial
copying serial/serialcli.py -> build/lib/serial
copying serial/__init__.py -> build/lib/serial
copying serial/serialjava.py -> build/lib/serial
copying serial/rfc2217.py -> build/lib/serial
copying serial/win32.py -> build/lib/serial
copying serial/serialposix.py -> build/lib/serial
copying serial/serialwin32.py -> build/lib/serial
copying serial/sermsdos.py -> build/lib/serial
copying serial/serialutil.py -> build/lib/serial
creating build/lib/serial/tools
copying serial/tools/__init__.py -> build/lib/serial/tools
copying serial/tools/list_ports.py -> build/lib/serial/tools
copying serial/tools/list_ports_posix.py -> build/lib/serial/tools
copying serial/tools/list_ports_windows.py -> build/lib/serial/tools
copying serial/tools/miniterm.py -> build/lib/serial/tools
creating build/lib/serial/urlhandler
copying serial/urlhandler/__init__.py -> build/lib/serial/urlhandler
copying serial/urlhandler/protocol_rfc2217.py -> build/lib/serial/urlhandler
copying serial/urlhandler/protocol_hwgrep.py -> build/lib/serial/urlhandler
copying serial/urlhandler/protocol_loop.py -> build/lib/serial/urlhandler
copying serial/urlhandler/protocol_socket.py -> build/lib/serial/urlhandler
Skipping implicit fixer: buffer
Skipping implicit fixer: idioms
Skipping implicit fixer: set_literal
Skipping implicit fixer: ws_comma
running build_scripts
creating build/scripts-3.2
copying and adjusting serial/tools/miniterm.py -> build/scripts-3.2
changing mode of build/scripts-3.2/miniterm.py from 644 to 755
Skipping implicit fixer: buffer
Skipping implicit fixer: idioms
Skipping implicit fixer: set_literal
Skipping implicit fixer: ws_comma
running install_lib
creating /usr/local/lib/python3.2/dist-packages/serial
copying build/lib/serial/serialcli.py -> /usr/local/lib/python3.2/dist-packages/serial
copying build/lib/serial/__init__.py -> /usr/local/lib/python3.2/dist-packages/serial
copying build/lib/serial/serialjava.py -> /usr/local/lib/python3.2/dist-packages/serial
copying build/lib/serial/rfc2217.py -> /usr/local/lib/python3.2/dist-packages/serial
creating /usr/local/lib/python3.2/dist-packages/serial/urlhandler
copying build/lib/serial/urlhandler/__init__.py -> /usr/local/lib/python3.2/dist-packages/serial/urlhandler
copying build/lib/serial/urlhandler/protocol_rfc2217.py -> /usr/local/lib/python3.2/dist-packages/serial/urlhandler
copying build/lib/serial/urlhandler/protocol_hwgrep.py -> /usr/local/lib/python3.2/dist-packages/serial/urlhandler
copying build/lib/serial/urlhandler/protocol_loop.py -> /usr/local/lib/python3.2/dist-packages/serial/urlhandler
copying build/lib/serial/urlhandler/protocol_socket.py -> /usr/local/lib/python3.2/dist-packages/serial/urlhandler
copying build/lib/serial/win32.py -> /usr/local/lib/python3.2/dist-packages/serial
copying build/lib/serial/serialposix.py -> /usr/local/lib/python3.2/dist-packages/serial
copying build/lib/serial/serialwin32.py -> /usr/local/lib/python3.2/dist-packages/serial
creating /usr/local/lib/python3.2/dist-packages/serial/tools
copying build/lib/serial/tools/__init__.py -> /usr/local/lib/python3.2/dist-packages/serial/tools
copying build/lib/serial/tools/list_ports.py -> /usr/local/lib/python3.2/dist-packages/serial/tools
copying build/lib/serial/tools/list_ports_posix.py -> /usr/local/lib/python3.2/dist-packages/serial/tools
copying build/lib/serial/tools/list_ports_windows.py -> /usr/local/lib/python3.2/dist-packages/serial/tools
copying build/lib/serial/tools/miniterm.py -> /usr/local/lib/python3.2/dist-packages/serial/tools
copying build/lib/serial/sermsdos.py -> /usr/local/lib/python3.2/dist-packages/serial
copying build/lib/serial/serialutil.py -> /usr/local/lib/python3.2/dist-packages/serial
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/serialcli.py to serialcli.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/__init__.py to __init__.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/serialjava.py to serialjava.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/rfc2217.py to rfc2217.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/urlhandler/__init__.py to __init__.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/urlhandler/protocol_rfc2217.py to protocol_rfc2217.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/urlhandler/protocol_hwgrep.py to protocol_hwgrep.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/urlhandler/protocol_loop.py to protocol_loop.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/urlhandler/protocol_socket.py to protocol_socket.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/win32.py to win32.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/serialposix.py to serialposix.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/serialwin32.py to serialwin32.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/tools/__init__.py to __init__.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/tools/list_ports.py to list_ports.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/tools/list_ports_posix.py to list_ports_posix.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/tools/list_ports_windows.py to list_ports_windows.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/tools/miniterm.py to miniterm.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/sermsdos.py to sermsdos.cpython-32.pyc
byte-compiling /usr/local/lib/python3.2/dist-packages/serial/serialutil.py to serialutil.cpython-32.pyc
running install_scripts
copying build/scripts-3.2/miniterm.py -> /usr/local/bin
changing mode of /usr/local/bin/miniterm.py to 755
running install_egg_info
Writing /usr/local/lib/python3.2/dist-packages/pyserial_py3k-2.6.egg-info

pi@raspberrypi ~/pyserial-2.6 $ 
これはもしかすると、いつもの面倒な「DHCPに切り換えて、モバイルWiFiルータに切り換えて、ネットからapt-getして、また固定IPに切り換えて・・・」というのをスキップ出来たのかもしれない。 ただし、Raspberry Piにも出来たこの「pyserial-2.6.tar.gz」を解凍したその下には、Mac画面で見ると以下のような膨大なPythonプロクラムがあり、中には「scan」「Java」「server」など、どう考えても上級編も並んでいる。 もっともシンプルなテストサンプルは一体どれなのか(^_^;)。

上の多数のPythonブログラムを眺めて、どれがもっとも基本的か、というのを捜すのは明日以降にする、と決めて、とりあえず このページ にあった、たった3行のサンプルをまずはダメもとで実験することにした。 Python 3の場合には、以下のようにすると書かれていた。

import serial
xbee=serial.Serial(port='/dev/ttyAMA0',baudrate='9600')
xbee.write(b'8')
そこで、かつてPropellerの時に作った、XBeeからのデータを受け取るMaxパッチを走らせておいて、上記サンプルのボーレートだけ対応させた以下のプログラムを「test.py」をRaspberry Piにrcpして「sudo python ./test.py」と走らせてみたが、エラーは出ないものの、沈黙であった(^_^;)。
#!/usr/bin/env python

import serial

xbee=serial.Serial(port='/dev/ttyAMA0',baudrate='38400')
xbee.write(b'8')
まぁ、シリアルポートの「port='/dev/ttyAMA0'」というのもまだ調べていないし、これで何かが届いたらむしろ、気味が悪いところである。 とりあえず今日はこの入口まで、ということで、続きは明日である。

「Raspberry Pi日記」トップに戻る