ラベル RAPIRO の投稿を表示しています。 すべての投稿を表示
ラベル RAPIRO の投稿を表示しています。 すべての投稿を表示

2021年9月23日木曜日

Raspberry Pi ZeroでHeadphonesが無くなった

最近こんなの

Adeept Robotic Arm Kit for Arduino

や
こんなの

「Petoi Bittle」(ペトイ・ビトル)

を購入して遊んでいました。








両方共にArduino互換ボードでサーボモーターを駆動する物ですが基本的なプログラムは提供されるのでとりあえず組み立てるだけで動かすことができます。

Arm Kitの方は仕組みは簡単なので工夫すればいろいろとプログラムをして遊べそうです。ただバッテリーが18650を2本とちょっと特殊ですが、バッテリーがなくてもUSBからの給電でも動くので無理してバッテリーを購入する必要はないとおもいます。なをバッテリーを購入するときは充電器も専用なものが必要となるのでご注意下さいね。

Bittleの方は赤外線リモコンもついていて組み立てればすぐに遊ぶことができます。
提供されるプログラムですぐに動かすことができますが、スムーズに歩くようにさせるには調整が必要になるようです。ビデオ等ではスムーズに動いているようですが、この写真のように顔をつけていない物がほとんどです。
ちょっと調整をしてみましたが思ったようにうまく動かすことができません。想像ですが提供されるプログラムは顔の部分がついていない状態で調整されているのではないかなと思われます。顔がつくことで重量バランスが違ってくるので、単純なキャリブレーションで調整できずにプログラム側の調整も必要になるのではないかなと。

ということでBittleのプログラムをざっと眺めてみましたが、各サーボモータの角度を持つフレームを複数用意してループさせることで動作をさせるという形式でした。
うまく歩かない場合はこの角度を微調整していくことでよりスムーズに動作させることが可能になります。とはいえ、なかなか時間がかかる作業になりますので今回は見送り、よたよたと動くことで満足することにしました。

といったことをやっていて、そういえばRAPIROをしばらく動かしていないということに気が付きました。

引っ張り出して来て1年ぶり程に動かしたら、どうも調子が悪いようです。

MicroSDカードでエラーが発生


原因を調べてみると組み込んだRaspberry Pi ZeroのMicroSDカードでエラーが発生しているようです。あちこちのデモで使用した時にきちんとShutdownせずに電源を切っていたのが原因かもしれません。せっかくShutdownスイッチを付けたのですが撤収時にバタバタしてついつい電源をプチンと切ることが多かったのかもしれません。
fsckで修復してみましたがやはりファイルシステムが破損しているようです、ログインがパスワードエラーで弾かれてしまいます。

出来る範囲で必要なファイルをサルベージしてからMicroSDカードをフォーマットしなおしてRaspberry Pi OSからインストールです。

bcm2835 Headphonesがなくなった


Raspberry Pi Zeroにはヘッドフォン用ジャックは付いていませんがHDMIで音声出力も可能にはなっています。また、RAPIROに組み込んで使うときはPWM Audioを利用してスピーカーから音声を出力していました。
ということでOSインストール後音声の出力先を3.5mm Jackに変更しようとraspi-configを実行してみたのですがHDMIしか表示されません。どうやらOSがStretchからBusterに変わったのが原因のようです。ハードウエア的についていない物は表示しないということでしょうか?

config.txtの修正で解決


ネットを検索すると同じような現象でこまっていた方もいるようで、こちらのサイトに解決策が上がっていました。
以下の2行を/boot/config.txtの最後に追加することでGPIO 12と13でPWM Audioが利用できます。(一般的にはGPIO 13と18のペアが利用されますがGPIO 18がRAPIROとの接続ケーブルで使用しているのでペアを変更して利用しています)
dtoverlay=audremap,enable_jack=on
dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4

2019年5月21日火曜日

RAPIROをScratchで制御する

5月25日(土)にスクラッチディ 2019 山梨にデモ出展することになりました。

何も準備できていませんが、この秋から予定しているプログラミング塾での教材をデモしようかなと考えています。Scratchでプログラミング可能なLEGO MINDSTORMS NXT(Enchanting)、Edison(EdScratch)、Scratch Jr on Raspberry Piなんですが、それだけでもちょっと寂しいのでRAPIROにMCをやってもらおうかなと考えました。

 Raspbian StretchではScratch 2.0 オフラインエディターが標準でインストールされています。
(注:Scratch3.0のリリースに合わせて2019年1月2日からScratch2.0オンラインエディターの提供が終了しました。)
そしてオフラインエディターには拡張機能があり、独自のブロックを簡単に追加できるようです。
Python で軽量サーバを作って Scratch 2 のHTTP拡張を待ち受けてみる
これで、拡張機能を作ってScratch(RAPIROとは別にRaspberry Pi 3で動かします)でシナリオ通りにRAPIROに喋らせるという魂胆です。確認の為にRaspberry PiでScratch2を立ち上げて、Shiftキーを押しながら「ファイル」を選ぶと「import experimental extension」と表示されるので、行けそうです。

Step1:HTTP拡張機能の作成


参考のページを元に拡張機能を定義しようとしましたが、外部のHTTPサーバへアクセスすることはできないようです。ポート番号は指定できますが、サーバについては指定方法がないようです。

仕方がないので、Bottle+PythonでRAPIROへリクエストを繋ぐ簡易サーバを作成しました。次にJSON 形式の.s2eファイルを作成して、拡張機能を読み込ませようとしましたが、うまく読み込んでくれません。URL を指定するようダイアログが出るので、「file:///.s2eファイルへのパス」で指定しても読み込んでくれません。

ここで、断念かと思いましたが・・・


Step2:Javascript Extensions


拡張機能で検索をしているとこちらのページにたどり着きました。
ここに
The current 2.0 extensions available in the offline editor, like the PicoBoard extension, are Javascript extensions.
とありました。
ということで、Step1で作成したPythonと.s2eファイルをJavaScriptに変換してみました。

Javascriptで拡張機能を作成する詳細仕様はこちらに上がっていますが、Ajaxも使えるようなのでRAPIROへのリクエスト送信も簡単に記述できました。

さて、実際にテストしてみると無事に拡張ブロックが表示されました。
今回は、最低限の機能だけ拡張機能として取り込んだので、今後時間を見てバージョンアップしたいと思います。



Javascriptについてはこちらにアップしてあります。

2019年5月17日金曜日

RAPIRO完全無線化 ー完結編(ソフトウエア)ー

大分時間が空いてしまいました。他の事で時間が取られてしまって書いている時間が取れませんでした。
さて、RAPIROの完全無線化についてハードウエアの方は完了したので、ソフトウエアの設定を行いたいと思います。と言っても、各パーツについてはすでに動作確認が終わっているので、それらを統合して簡単に使えるようにするだけです。

なお、以下の作業はRAPIROに組み込んだRaspberry Pi Zero B+(以下 PiZero)での作業になるので、まずは、sshでログインしてください。

Step1:カメラ画像のストリーミング


カメラ画像のストリーミングについてはこちらに投稿しておきましたが、PiZeroの電源を入れたら自動的にストリーミングを始めるようにサービス化しておきます。

まず、/home/pi/streaming/streaming.shとして以下を作成します。
#! /bin/sh
export LD_LIBRARY_PATH=/usr/local/lib/mjpg-streamer
mjpg_streamer -o "output_http.so -w /usr/local/share/mjpg-streamer/www" -i "input_raspicam.so -fps 5 -x 480 -y 320"
次に、/usr/lib/systemd/system/streaming.serviceとして以下を作成します。
[Unit]
Description=Mjpg-Streamer

[Service]
ExecStart =/home/pi/streaming/streaming.sh
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target
以下のコマンドで作成したサービスをsystemdに登録します。
$ sudo systemctl enable streaming.service

Step2:RAPIROコントローラ(Python)


Bottle + PythonでRAPIROを外部から制御できるようにします。HTTPでコマンドを受け取ると、シリアル通信でRAPIROへコマンドを投げるという簡単な仕組みです。
Python用軽量Webフレームワークとしては他にFlaskもあり、どちらも簡単にREST風アプリが作れますが、私はBottleを利用しています。

Pythonのソース(本体)とindex.html、RAPIROのサーボモータをOFFにする機能をつけたスケッチをGitHubに上げてあるのでそちらを参照してください。詳細はソースを見ていただければすぐにわかると思います。
index.htmlではmjpg_streamerの提供するCSSファイル等をstaticフォルダ経由で利用しているので注意してください。又、python3、bottleについてはインストール済みであるとします。
$ cd ~
$ git clone https://github.com/KeiIchimaru/rapiroctl.git
$ cd rapiroctl
$ ln -s /usr/local/share/mjpg-streamer/www static
スケッチについてはRAPIROへの書き込みを行っておいてください。
あとはサービスとして登録する作業になります。
/usr/lib/systemd/system/rapiroctl.serviceとして以下を作成します。
[Unit]
Description=RAPIRO Controller

[Service]
ExecStart =/home/pi/rapiroctl/rapiroctl.py
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target
以下のコマンドで作成したサービスをsystemdに登録します。
$ sudo systemctl enable rapiroctl.service
以上で、PiZeroのポート80でHTTPリクエストを待ち受けているので、ブラウザでアクセスするとサンプルの画面が表示されます。サンプルではカメラからのストリーミングも表示しているので、RAPIROに搭乗して操縦しているような感覚が得られると思います。(移動すると、画面が左右に大きく揺れるので酔いやすい方はご注意くださいw)

Step3:shutdownスイッチ


PiZeroはRAPIROの頭部に組み込まれているので、shutdownする場合は外部からsshでログインする必要があります。その為にPCを立ち上げるのも面倒なので、ハードウエア編で触れていますが、こちらのサイトを参考にshutdown用タクトスイッチを付けることにしました。利用したGPIOはBCM23(P16:物理ピン番号)とGND(P14)を使い、組み立てる時にタクトスイッチから配線しておきました。

PythonのプログラムはGitHubに上げてあるので、すでにダウンロードしてあるはずですのでサービスとして登録するだけです。
/usr/lib/systemd/system/shutdownbuttond.serviceとして以下を作成します。
[Unit]
Description=Shutdown by Button Daemon

[Service]
ExecStart =/home/pi/rapiroctl/shutdownd.py
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target
以下のコマンドで作成したサービスをsystemdに登録します。
$ sudo systemctl enable shutdownbuttond.service

Step4:動かしてみて


以上で、全て完了したので動作確認です。
PiZeroの電源をONにすると、しばらくしてカメラが赤く光って起動が終了したことがわかりますので、その後RAPIRO本体の電源を入れて準備完了です。

ブラウザからPiZeroにアクセスすると下のような画面が出てきます。どう動くかは、各自試してみてくだサイ。ノートパソコンやスマフォからだと画面からはみ出て使いずらいと思いますので、各自自由にカスタマイズして使いやすい画面にして頂ければ幸いです。


rapiroctl.pyそのものはhttpサーバとして動いているだけなので、スマフォアプリを作成するなど応用は色々あると思います。

画面下部の「Play」はaudioフォルダ内の.wavファイルを再生する機能です。アンプが組み込んであるのでRAPIROを喋らせることができます。「Say」は指定されたテキストを音声合成して喋らせようとしたのですが、処理に時間がかかるので現在は使っていません。この辺りのこともそのうち時間ができたら投稿したいと思います。

電源を切るときは、タクトスイッチを長押しするとshutdownプロセスが開始されるので、しばらくしてカメラのランプが消えたら、PiZeroの電源を切って、最後にRAPIRO本体の電源を切ってください。


2019年4月16日火曜日

RAPIRO完全無線化 ー完結編(ハードウエア)ー

親指の抜糸は終わりましたが、一部の神経は切断されているのでちょっと感触がおかしな状態です。とは言え、作業には支障が無いのでRAPIROの完全無線化を終わらせたいと思います。

出来上がった状態はこんな感じです。



リチウムイオン電池を搭載してRaspberry Pi Zero W用の電源としています。RAPIROに付属している標準の接続ケーブルだとRaspberry Piの電源をRAPIROから取るようになっていますが、今回はそのケーブルからは電源を取らず(UART+RESET用のケーブルを作成しましたが、標準ケーブルからRaspberry Piの+5vに行く2本の線を外してもOKです)にRAPIROの電源と完全に分離しているので、より長い時間、動作させることができます。

Step1: ベース基盤


RAPIROの頭部にRaspberry Pi Zero Wやリチウム電池をのせる為にベースとなる基盤が必要になりますが、RAPIROの頭部はRaspberry Piの基盤サイズを対象としているので、このサイズの基盤を探します。

こちらのサイトで見つけました。

Raspberry Pi用の基盤はいくつかありますが、HAT用の物がほとんでサイズ的にも小さな物ばかりですが、基盤サイズで価格も手頃(¥165+税)でした。








Step2:電源部


部品:

・6W 5V UPS mobile power Diy Board Charger & Step-up DC DC Converter
・1500mah lithium-ion polymer battery 3.7 V 
・基板用マイクロUSBコネクタ(電源専用)
・マイクロUSBコネクタDIP化
・ピンヘッダ 1×40 (40P)
・TJC8ピンターミナル(メス) (10本入)
・コネクタ用ハウジング 2P
・配線用コード

TJC8ピンターミナル+コネクタ用ハウジングは工具が必要になるので、工具が無い場合はブレッドボード用ジャンパワイヤーを利用することも可能です。

組立:

USBコネクタをDIP化基盤に取り付ける時には基盤の表裏に気をつけて、こちらの写真を参考に半田付けしてください。なお、ピンヘッダについては下の写真のようにちょっと変則的な取り付け方をします。これは参考にした写真ではブレッドボードでの利用を想定していますが、今回はユニバーサル基盤に取り付けるので、基盤との接触を避ける為にこのような取り付けを行いました。

DCDCコンバータについても、取り付け用の穴が無いので同じようにピンヘッダを取り付けてからベース基盤に半田付けします。配線については、部品のサイトにある画像の通りに配線すれば問題ありません。

電源の出力側についてはマイクロUSBオスコネクターでRaspberry Pi Zero Wへ電源を供給しますが、途中にミニスライドスイッチを入れて電源のON/OFFができるようにしておきます。USBからの給電にしてあるので、電源スイッチによるノイズも問題ないと思います。


Step3:RAPIROへの組込


部品:

・2.6mmネジ+ナット(ホームセンターで精密ねじ、精密ねじ用ナットとして販売されてます)

組立:

RAPIROの後頭部へ、電源スイッチとShutdown用タクトスイッチ(ソフトで解説)を取付ける為に片面ユニバーサル基盤を加工します。

大まかに切断した後、RAPIRO後頭部へ当てながらヤスリで微調整をしていきます。電源スイッチはこのユニバーサル基盤にネジ止めしますが、ネジ穴の位置は具合を見ながら位置決めをします。今回の写真ではちょっと中に寄りすぎでした、もう少し外よりの方が良かったと思います。

RAPIROへの取付位置も実際に調整しながら決めます。なお、電源スイッチを取付たねじの頭があるので、ナットを1つか2つ挟んであげてください。

また、電源スイッチのボックス部分がアンプモジュールを取付けるスペーサーに当たることもあるので、そちらとの兼ね合いも見ながら取付位置を決める必要があります。

当初はネジ1本で支えようとしましたが、実際にスイッチを操作すると安定しないので、上側もネジ止めするようにしました。

次に、Raspberry Pi Zero Wをベース基盤にねじ止めしますが、ここでも基盤同士が接触しないように、ナットを間に挟んで高さ調節をします。今回は3mmのナット1つを挟みました。

最後に、スペーサ(11mm)を使ってアンプモジュールを取付け、配線をして終了です。

Step4:スピーカ用の穴


スピーカは頭部に内蔵しますが、そのままだと音がこもるので耳の部分に穴を開けて音が外に出やすいよう加工してあげます。

まずは、方眼紙に半径2cmの円を描いて穴を開ける位置を決め、マーク部分に穴を開けます。

次にRAPIRO頭部を前後合わせて仮止めし、方眼紙を耳の部分に当てセロテープで仮止めし、上から油性ペンで印をつけてあげます。

方眼紙を外し、頭部を前後分離してからマークに合わせてドリルで穴を開けます。

今回使ったのは2mmの木工用のビットを利用して穴を開けました。あまり力を入れると割れる恐れがあるので、ドリルの自重で穴を開けるような感じで作業します。




2019年1月17日木曜日

RAPIRO起動せず!

EdisonがRaspberry Piで使えるようになったので、ふと部屋の片隅で埃をかぶっていたRAPIROを引っ張り出して来て久々に電源を入れてみました。

が、RAPIRO起動せず!

どうやらまた基盤が飛んでしまったようです(泣)
スケッチの書き換えは出来るので、おそらくまた電源周りのトラブルかと思います。基盤の修理にチャレンジしても良いのですが、やることも多いので基盤の購入をして乗り切ることにしました。

1週間程で到着した基盤と交換すると問題なく起動しました。

が、動きが不安定です!

数回は問題なく動いていたのですが、電源ONでRAPIROが振動するようになりました。電源ONでサーボモータが全て初期位置に移動するのですが、多少のずれで音が発生することは組み立てマニュアルにも記載されていますが、調整済みのはずが体を左右に振るなどおかしな動きをはじめました。

再度分解してみると、腰のモータの接続線が一部接触不良になっているようです。

腰の部分も左右に振ることができるのですが、その時接続線が引っ張られてサーボモータ側の接続が一部断線したような状態になっているようです。もっと余裕を持って配線しておけばよかったのですが、組み立てマニュアルに記載がなかったので短くなってしまっていたようです。腕については線に余裕を持つように説明があったのですが、腰の部分にはその記載がなかったようです。

ということで、腰の部分のサーボモータの発注をしました。


ここまで資金を投入したので、以前はできなかったRAPIRO完全無線化をしたいと思います。

RAPIROにはRaspberry Piを組み込むことが可能ですが、以前はまだRaspberry Pi Zero Wは発表されておらずRaspberry Pi 2 B+を使っていたのですが、RAPIROのサーボモータやRaspberry Piの電源、Raspberry PiカメラにUSB無線LANまで組み込むと電池ではさすがに容量不足となるので、AC 100v用の電源アダプタからDC-DCコンバータで電源を2系統取っていたためケーブルを引きずることになっていました。

今回はRaspberry Pi Zero Wを使ってこれを別のリチウムポリマーバッテリーで動かして完全無線化を行ってみたいと思います。

RAPIRO標準の電池からはRAPIROのみを動かして、頭部にRaspberry Pi Zero Wとリチウムポリマーバッテリー+USB充電回路を搭載して無線化したいと思います。
頭部はネジ止めするのでエネループでは交換の度にネジを外さないといけないので面倒ですので、外部からUSBで充電できるようにしたいと思います。

以下次回に続く・・・

2015年4月7日火曜日

まずは音が出るようにしました

しばらく時間がたってしまいましたが、RAPIROにしゃべらそうということで、まずは音が出るようにしたいと思います。
Raspbery PIにはイヤフォンジャックがついていますが、そのままではスピーカを鳴らすのは無理なようなので、ステレオアンプを取り付けることにしました。

【購入した物】
MAX98306搭載3.7WステレオD級アンプモジュール
5cmスピーカ
ステレオミニジャック
ブレッドボード・ジャンパーワイヤ(オス-メス)
耐熱電子ワイヤー

【用意した道具】
半田ごて
半田
ラジオペンチ

【作業内容】
単純にMAX98306に電源用としてブレッドボード・ジャンパーワイヤとステレオミニジャックとの接続用に耐熱電子ワイヤー(4本)を半田付けしただけです。

その他にMAX98306に同梱されていた、スピーカ接続用の端子とゲインの設定用端子も半田付けしました。スピーカは直接半田付けしても良かったのですが、スピーカの交換のことを考えて取り外せるようにしました。

ステレオミニジャックはRaspberry Piのイヤフォンジャックに接続しています。
電源はデータシートによると2.6Vから5.5Vなので、Raspberry Piの5Vから供給してみました。

$ aplay /usr/share/sounds/alsa/Noise.wav

で無事にノイズが再生されました。
初めての半田付けでしたが、無事に成功していたようです。

RAPIROにRaspberry Piを再度取り付けようとしたことろで気が付いたのですが、5V端子はRAPIRO基盤への接続で使っていたんですね。
MAX98306は2.6Vでも大丈夫なので、取り付け時は1番(3.3V)と9番(GND)にしましたが、問題なく音が出てくれました。


さて、次回は音声合成にチャレンジです。

2015年2月20日金曜日

RAPIRO基盤を交換しました

しばらく仕事が忙しくて書き込みできていませんでしたが、やっとRAPIRO基盤の交換を行いました。
やはり基盤がおかしかったようで、交換をしたら問題なく動くようになりました。

スイッチサイエンスさんには感謝です。

次なるステップとしてはしゃべらせる事にチャレンジしたいと思います。

同じくスイッチサイエンスさんの所で入手可能なMAX98306を組み込んで、まずは音を出せるようにします。はんだ付けも必要となりますが、ボチボチと進めていきたいと思います。

とはいえ、果たしていつになるのか・・・

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に切り替わっていましたが、多少エラーを吐いたようですが実行できました。

EXCELの表をKaTeX形式に変換するマクロ

生成AI時代にプログラミング言語を学習する必要はあるのか? 最近では生成AIがプログラムを作成する時代になってきましたが、そんな時代にプログラミング言語を学習する必要はあるのでしょうか? ということで早速 Google さんに聞いてみました。 生成AI時代にプログラミング言語を学...