2015年1月30日金曜日

電圧測定

本日はあいにくの雪でしたが、時間がとれましたので秋葉原の秋月電子にいってきました。
テスター(MS8229)と電源(M-06961 12V-5A)を購入してきました。
電源はRaspberry Piも接続することを考えて大き目の物にしておきました。

さて、早速動作テストを行いましたが、電源でもサーボモータは動きませんでした。
電池ボックスのケーブルもさしてないと、電源からの供給が行われないのが注意点でしょうか。

そこで、早速テスターを使って各部の電圧を測定したものが以下です。

テスターの画面を貼り付けられると良いのですが、測定しながら写真を撮る為には、手が3本ないとダメなので、各部の測定結果だけを示しています。予想通り、U1のVOUT(4番ピン)が出力されていないようです。入力電圧については問題ないので、やはりU1(レギュレータ?)がおかしいようです。念の為に、IC1(レギュレータ)の入力と出力も測定してみましたが、こちらは正常に出力されているようです。
従って、原因はU1(型番が図面に記入されていないので詳細は不明です)のようです。

ただ、これ以上は電子回路の知識が無い私には解析不能です。
今後、ボチボチと知識を高めて、原因の想定ぐらいできるようになりたいものです。

ということで追跡調査はここまでとなります。

さて、そんなことを書いていたらForamにスイッチサイエンスさんから初期不良ではないかということで連絡を欲しいという書き込みがありました。(すでに連絡済みです)

非常に丁寧な対応で、関心しました。
対応内容については書き込んで良いかわからないので書きませんが、個人的には非常に満足しております。

いずれにしろ、新しい基盤を用意して先に進みたいと思います。
まずは動くことを確認して、声を出せるようにして、音声コントロールにカメラモジュールからのストリーミングに、距離センサーの接続もやりたいですね。

まだまだ先は長そうです。

2015年1月23日金曜日

RAPIRO基盤を取り出してテスト

どうやらサーボモータへの電源供給がされていないようなので、RAPIRO基盤を取り出して出来る範囲で確認を行いたいと思います。




まずは、電池がちゃんと接続されているかの確認です。

電源ランプが赤く灯っているので問題はないようですが、この状態ではサーボモータは動きませんでした。



次にArduinoから電源を取り出して、サーボモータの制御情報が正しく出力されているかを確認します。
Aduinoの5VとGNDとサーボモータを接続して電源を供給します。
制御信号だけRAPIRO基盤から取るように接続します。




そして、以下のスケッチをRAPIRO基盤にロードして実行してみます。
一番端にある右足のピッチ用サーボモータ(2番)を利用します。

#include #define POWER 17 // Servo power supply control pin

Servo servo;

void setup() {
  servo.attach(2); // R Foot pitch
  servo.write(90);

  Serial.begin(57600);
  delay(500);

  pinMode(POWER, OUTPUT);
  digitalWrite(POWER, HIGH);

  Serial.println("==== setup end !!");
}

void loop() {
  digitalWrite(POWER, HIGH);
  servo.write(80);
  delay(1000);
  servo.write(100);
  delay(1000);
  servo.write(90);
}





サーボモータが動いていることから、電源制御信号が正しく出力されていることが確認できます。従って、RAPIRO基盤から電源がサーボモータに供給されていないことが確認できます。

サーボモータ制御基板回路図を見るとU1のVOUTが出力されているかをテスターで確認する必要がありそうです。

やはり秋葉原へ行ってテスターを購入してくる必要がありそうです。
テスターと電源を購入してきてさらに確認をしたいと思います。

2015年1月22日木曜日

RAPIRO起動せず

順調に組み立てが進んできましたが、いざRAPIROを動かそうとしたところ

動きません(泣)

Raspberry Piよりコマンドを投げますが、#M5や#M6でLEDの色は変わっているので動いてはいるようです。全てのコマンドを入れてみましたが、LED以外サーバモータはウンともスンともいってくれません。

RAPIROのフォーラムにアップしましたが、コメントが付かないようなので自力て原因究明を続けたいと思います。
まずはフォーラムにアップするまでの経緯をメモっておこうと思います。


組み立て途中で、電源を入れた時に初期位置への移動をサーバモータの音は聞こえていたので、途中までは正常に動いていたと思います。

途中でちゃんと動作確認をしておけばよかったですが、初期化されていることで確認OKとして、楽しみを後にとっておいたのが悔やまれます。

使用しているエネループも今回購入して、満充電したものを使っているので電源が原因とは考えられません。Raspberry Piを組み込むと電源不足で不安定になるという話も上がっているので、まずはRaspberry Piを取り外して再チャレンジです。

動きません(泣)

いままで電源を入れると初期化される動作をしていたのも、しなくなりました。

突然です。

音も聞こえなくなりました。
エネループも再度充電しているので、問題はないと思うのですが。

全てのサーボモータが壊れたということも考えにくいので、基盤の方が壊れたのでしょうか?
サーボモータ制御基板仕様を見ると「Rapiro基板のスケッチ(プログラム)を自分で作ってサーボモータを使う際はA3ピンをHIGHにすることを忘れないようにしてください。」とありますが、サーボモータ制御基板用標準ファームウエアもこちらのサイトからダウンロードしていますし、ソースを見てもちゃんとHIGHTにしています。

そこで、まずは原因究明の為、サーバモータの確認を行うことにしました。
いったんRAPIROを分解して基盤が取り出せるようにしました。

別に購入してあったArduinoにRAPIROのサーボモータを接続して簡単なスケッチで動作確認をしました。

うごきます~

全てはテストしませんでした、サーボモータに問題はないようです。

となると基盤ですか?

まずは基盤からサーボモータに電源が行っているか確認したかったのですがテスターがありません。今度秋葉原に行って買ってこようと思います。

それまで確認作業は休憩です。


2015年1月10日土曜日

ArduinoとRaspberry Piを接続

いよいよRaspberry PiをRAPIROに搭載しようと思います。

その前にRaspberry Piの設定を一部変更しておく必要があります。

RAPIROのモータを制御しているArduinoはRaspberry PiのGPIOへ接続して、Raspberry Pi側からはシリアルポートとして利用します。
この時、Raspberry Piのデフォルト設定ではこのシリアルポートがコンソールとして利用される前提で設定されています。

そこでCentOS7からsshでRaspberry Piにログインして以下の修正を行っておきます。

pi@raspberrypi ~ $ sudo vi /boot/cmdline.txt

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

という行があるので[ console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 ]の部分を削除して

wc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait

と変更します。

次に

pi@raspberrypi ~ $ sudo vi /etc/inittab

TO:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

と言う行を見つけてコメントアウトします。

#TO:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

ケーブルの接続についてはこちらの写真を参考にしてください。特にネジ止めもなく爪で止めているだけなので取り外しも簡単です。なお、Model Bを前提に作成されているのでModel B+の場合は若干の手間がかかるようです。Model B+の場合はこちらを参考にRAPIROへ取り付けてください。

以上で、無線LAN経由でRAPIROを制御することができるようになりました。

いよいよアプリケーションを作って遊びたいと思います。

2015年1月7日水曜日

CentOS7からRaspberry Piへssh

今日はRAPIROに組込むRaspberry Piの設定を行っていましたが、ちょっとつまづいた処があるのでメモを!

Raspberry Piのインストールとupgradeは問題なくできましたが、インストールはHDMIケーブルを使ってTV画面で行いました。
ところが、いつまでもTVを使っていると家族から白い目でみられるので、まずは無線LANで自宅のネットワークに接続して、新しく作ったCentOS7からssh接続を試みることにしました。

このRaspberry Piは最終的にRAPIROに搭載する予定なので、無線でないとRAPIROがケーブルを引きずって動くことになるので、初めから予定していました。

無線LANも、問題なくSSID等を設定後、接続完了!

デフォルトでsshdも起動されているので、ssh接続も問題ありませんでした。

$ ssh -X pi@192.168.XX.XXX

でログインして、コマンドラインでの作業は問題なくできました。

次に、X11のアプリケーションですが、
まずは

pi@raspberrypi ~ $ scratch
Executing: /usr/lib/squeak/4.10.2-2793/squeakvm -encoding UTF-8 -vm-display-x11 -xshm -plugins /usr/lib/scratch/plugins/:/usr/lib/squeak/4.10.2-2793/ -vm-sound-alsa /usr/share/scratch/Scratch20131203.image
XShmAttach: BadAccess (attempt to access private resource denied)
X Error: BadShmSeg (invalid shared segment parameter)
  Major opcode of failed request:  130
  Minor opcode of failed request:  3
  Serial number of failed request: 87
^C
pi@raspberrypi ~ $

とエラーになってしまいます。

早速Googleさんにお伺いを建てるとこちらのサイトに回答がありました。

pi@raspberrypi ~ $ sudo vi /usr/bin/scratch

で編集モードに入って

VMOPTIONS="-encoding UTF-8 -vm-display-x11 -xshm -plugins /usr/lib/scratch/plugins/:$SQ_DIR/"

となっている行が、初めの方にあるので[ -xshm ]オプションを削除して

VMOPTIONS="-encoding UTF-8 -vm-display-x11 -plugins /usr/lib/scratch/plugins/:$SQ_DIR/"

とすることで、無事にscratchをssh経由実行することができました。

scratch以外にもIDLE、IDLE3も問題なく実行可能でした。
なお、midoriはepiphanyに切り替わっていましたが、多少エラーを吐いたようですが実行できました。

2015年1月6日火曜日

CentOs7とArduino

Goole+では写真やリンクに制限があるようなので、ブログを始めることにしました。

現在RAPIROの組み立てを行っていますが、Windows8の開発環境は問題なく構築できましたが、空いたPCがあったのでCentOs7をインストールしてこちらにも開発環境を構築してみることにしました。

CentOs7のインストールについては他のブログに詳しくあるのでここで書くのも今更なので省略しますが、本当に簡単にインストールできました。特別な周辺機器がなければWindowsのインストールと変わらない程の簡単さですね。

開発環境としてArduino IDEとAndroid Studioをインストールして見ようと思います。

まずは、Arduino IDEです。

Linuxへのインストールはこちらに記述されていますまが、ダウンロードサイトから圧縮ファイルをダウンロード後、解凍して適当なフォルダに移動させれば完了です。
あとは、 開発用ユーザを'lock'グループに追加して終わりです。

今回はArduino 1.5.8 BETAの64bit版を/usr/localへインストールしました。


# usermod -a -G lock ユーザID

Arduino UNOをUSBで接続すると、問題なく認識してくれたようです。

#dmesg | tail
usb 4-1: new full-speed USB device number 2 using uhci_hcd
usb 4-1: New USB device found, idVendor=2341, idProduct=0043
usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=220
usb 4-1: Manufacturer: Arduino (www.arduino.cc)
usb 4-1: SerialNumber: 95335343136351F07262
cdc_acm 4-1:1.0: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
SELinux: initialized (dev fuse, type fuse), uses genfs_contexts
usb 4-1: USB disconnect, device number 2
perf samples too long (2514 > 2500), lowering kernel.perf_event_max_sample_rate to 50000
usb 4-1: new full-speed USB device number 3 using uhci_hcd
usb 4-1: New USB device found, idVendor=2341, idProduct=0043
usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=220
usb 4-1: Manufacturer: Arduino (www.arduino.cc)
usb 4-1: SerialNumber: 95335343136351F07262
cdc_acm 4-1:1.0: ttyACM0: USB ACM device
#


Arduino IDEも問題なく起動して、サンプルのLチカを実行させようとしたところ、ボードへの書き込みでエラーになってしまいました。

どうやらポートへのアクセス権限がないようです。

IDEの表示にはこちらのサイトを参照せよ!となっているので見るとUnoについては/dev/ttyACM0をサポートしていないので、RXTX libraryにpatchを当てなさいとの説明のようです。

ただ、エラーメッセージはパーミッションエラーとなっているので、ちょっと違うかなと。

さらにGoogleさんにお伺いをたてているとこちらこちらのサイトに行き着きました。

デバイスを確認すると

# getfacl /dev/ttyACM0
getfacl: Removing leading '/' from absolute path names
# file: dev/ttyACM0
# owner: root
# group: dialout
user::rw-
group::rw-
other::---

#

となっていたので

# usermod -a -G dialout dialup ユーザID // 2015.01.22 修正

で、無事にスケッチも書き込めてテスト完了です。

Edisonが故障した一件

 最近またEdisonで遊んでいます。 教育用のデバイスとしてよく出来ているなと思っている Edison ですが、現在3台を所有しています。 最近このうちの1台が調子が悪くなってしましました。具体的にはBeep用のデバイスが壊れたようです。購入時にチェックをしたつもりですが今回久...