きょうのかんぱぱ

デジモノが大好きなかんぱぱの日記です。

タグ「RAPIRO」が付けられているもの


RAPIROをpythonで動かしてみました

  • 投稿日:
  • by
  • Category:

RAPIROと遊ぶ時間がなかなか取れなかったのですが、少し遊んでみました。

先日RAPIROに取り付けたRaspberry Piにログインして、pythonでRAPIROを動かしてみました。

サンプルプログラムを参考にしてテストプログラムを作りました。単純にUARTにコマンドを投げるだけのシンプルなものです。

import sys

import serial
import os
import time
import datetime

com = serial.Serial('/dev/ttyAMA0', 57600, timeout = 10)

sys.stdout.write('write #M0\n')
com.write("#M0")
time.sleep(5)

sys.stdout.write('write #M1\n')
com.write("#M1")
time.sleep(5)

sys.stdout.write('write #M2\n')
com.write("#M2")
time.sleep(5)

sys.stdout.write('write #M7\n')
com.write("#M7")
time.sleep(5)

sys.stdout.write('write #M0\n')
com.write("#M0")

これを実行してみました。

$ sudo python rapiro_test.py
write #M0
write #M1
write #M2
Traceback (most recent call last):
File "rapiro_test.py", line 19, in
com.write("#M2")
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 485, in write
raise SerialException('write failed: %s' % (v,))
serial.serialutil.SerialException: write failed: [Errno 5] Input/output error
$

なぜかエラーがでます。
調べたところUARTはOSのコンソールになっているということがわかりました。

psコマンドで確認すると

$ ps ax | fgrep AMA
2039 ? Ss+ 0:00 /sbin/getty -L ttyAMA0 115200 vt100
2055 pts/0 S+ 0:00 fgrep --color=auto AMA

確かにgettyがttyAMA0を使っています。
とりあえずコンソールから切り離します。まずはcmdline.txtの修正。

$ sudo cp /boot/cmdline.txt /boot/cmdline_backup.txt
$ sudo vi /boot/cmdline.txt

これを

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

こうしました。

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

次にinittabの修正

$ sudo vi /etc/inittab

これを

#Spawn a getty on Raspberry Pi serial line
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

コメントアウトしました。

#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

rebootして確認

$ ps ax | fgrep AMA
2069 pts/0 S+ 0:00 fgrep --color=auto AMA

これで大丈夫。pythonで正常に動くようになりました。

rapiro_uart.jpg

RAPIROにカメラを取り付けました

  • 投稿日:
  • by
  • Category:

RAPIROにRaspberry Piのカメラモジュールを取り付けました。

頭の中に取り付けますが、力がかかる部分ではないので、とりあえず2本のネジだけで固定しています。

rapiro_camera.jpg

カメラレンズの穴と、カメラモジュール基板のネジ穴が一致するためにはフレキシブルケーブルを上にして取り付けます。このケーブルの片端はRaspberry PiのHDMIとLANコネクタの間にあるコネクタにとりつけます。Raspberry Piへの接続方法や設定方法、カメラ関連ソフトウェアのインストールなどはRaspberry PiのCameraページが参考になります。

早速、Raspberry Piにログインして、カメラで画像を撮ってみました。

コマンドは以下のようになります。

pi@raspberrypi ~ $ raspistill -w 640 -h 480 -o capture.jpeg

撮影したcapture.jpegをMacに転送して表示したところ・・・

capture.jpeg

あれれ、逆さまになってしまいました。カメラモジュールの取り付け方を間違えたのかなと一瞬思いましたが、ネジ穴の位置から考えるとあの取り付け方しかできません。

何らかの方法で上下を反転させれば良いはずなので、いろいろ調べたところ、それを行うためのパラメタを見つけました。

-rot Set image rotation (0-359)

このパラメタを180と指定すれば上下反転されるはずなので、以下のコマンドを入力しました。

pi@raspberrypi ~ $ raspistill -w 640 -h 480 -rot 180 -o capture1.jpeg

撮影したcapture1.jpegをMacに転送して表示したところ・・・

capture1.jpeg

今度は正常に表示できました。

別コマンドになりますが、もちろんビデオ撮影もできています。

単なるストリーミングという使い方もできますが、いずれは画像認識を試してみたいですね。(残念ながらこのあたりのノウハウはありませんので、これから勉強ですが・・・。)

あと、いろいろRAPIROをいじっていたらふと気がつきました。

rapiro_led.jpg

このUSBコネクタの横にある、縦のスリットは何なのかと思っていたのですが、実はここからRaspberry Piの基板にあるLEDが良く見えるのです。このためにスリットを用意しているのではないかなと。良く考えられていると感心しました。

RAPIROにmbedを載せてみました

  • 投稿日:
  • by
  • Category:

RAPIROが完成してRaspberry Piを載せてみました。

まずは、Raspberry Piの環境設定です。ボード単体で動かしてPythonのシリアルモジュールのインストールや無線LANドングルの設定など一通り済ませました。

rapiro_raspberry_pi.jpg

設定が終わったところで、RAPIROに取り付けます。さすが専用設計のためRaspberry Piがピッタリ載ります。

rapiro_raspberry_pi2.jpg

あとは、Raspberry PiにログインしてPythonで書いたサンプルプログラムを実行するとコマンドに応じた動きをすることができました。カメラモジュールも購入していますが、それはまた後ほど。

少し動かしてみましたが、想像以上にバッテリーが無くなります。デバックにはACアダプタが必須と思われます。電源電圧がだんだん落ちてきてRAPIROが変な動きになってしまいました。

rapiro_raspberry_pi3.jpg

やむなくエネループを充電している間に、Raspberry Piの変わりにmbedをつないでみました。

実はRAPIROの電源をいれたあとに、Raspberry PiのLinux OSの起動に少し時間がかかるのが気になったのです。これがmbedだと電源ON即動くのではと考えたのです。

Raspberry PiとRAPIROのサーボモータを制御しているArduinoとの間の通信はシリアルですので、他のマイコンでも制御可能です。通信速度は57600bpsのようです。

mbedをブレッドボードに取り付けてワイヤーを引き出し、RAPIROのシリアルコネクターに接続しました。接続図は以下の通りです。

RAPIROシリアル --- mbed
---------------------------
1 5V ------- p2 VIN
2
3 GND ------ p1 GND
4 TXD ------ p28 tx
5 RXD ------ p27 rx
6 (BLACK)
---------------------------

実際に接続した写真です。接続は4本しかありません。
rapiro_mbed1.jpg

mbedのオンラインコンパイラでさくっとプログラムを書きました。

RAPIROの電源を入れると無事動き始めました。

rapiro_medb2.jpg

動いている様子をYouTubeにアップしておきました。

今回は単純なコマンドをRAPIROに送ることを試しましたが、Bluetoothでリモコン制御にしたり、様々なセンサーを使った制御などmbedが得意とする分野では手軽に使えるのではないかと思います。

警告とメッセージ