kogame2004のブログ

電子工作+プログラミング、書道が好きな中学一年生。 小3より各種ワークショップで色々な体験をしているうちに電子工作+プログラミング(フィジカルコンピューティング)に興味を持ち、現在に至ります。RaspberryPiでのもの作りは小4の4月から始めました。

レインボー風車をRaspberryPiで動かす      Pythonに挑戦!!! 前半

8月後半、僕はMFTで出展したレインボー風車を超音波センサを使い、NanobordAG(センサボード)からではなく、RaspberryPi(名刺サイズのコンピュータ)から制御できないかと考えた。
僕は処理スピードの速いRaspberry Pi2でやることにした。
ソフトウェアはNOOBS_v1_4_0のRaspbian(Debian)にした。

最初はRaspbianの中のScratchGPIOから制御しようかと思ったが、「この節目で何かのプログラミング言語を使ってみたらどうだ。」と父に背中を押されたのもあり、Python言語をドットインストールで学ぶ。(けれど、ほんの少し w )  
f:id:kogame2004:20151014171952j:plain
8月23日
 まずは、Raspberry Pi2と超音波センサをブレッドボード、ジャンパーワイヤで繋ぐ。
f:id:kogame2004:20151014191432j:plain
以下のサイトを参考に製作。

 いよいよ、超音波センサで風車を回すPythonプログラムを作る。
超音波センサで距離を測るPythonプログラムは、上記記載のサイトにあり、Raspbian上のLeafpadというテキストエディタにpasteする。『名前を付けて保存』でfuusya-test.pyと名前を付けた。
(.pyはつけなくてもよいが、実行するファイル名を打つとき sudo python fuusyaの所で、Tabキーが使えない。(僕の場合))

linuxターミナルで実行する。
ヤッター!
超音波センサで距離が測れた。
 でもここまでは参考にしたサイトに書いてあるので喜びは控えめに。

 次はモータを回す。風車のモータではなく、近くにあった小さなモータを回す。
試すためでもあるが、風車のモータはワイヤーネットに固定してあり、色々不都合なことがあるから、小さなモータで最初は試す。

 超音波センサの距離を測るプログラムに入っている出力Pinのセッティング方法や、出力Pinの出力方法をヒントにし、父からのアドバイスも受けながら、モータをpythonで制御することができた。

 pythonで超音波センサーを動かすことはできた。
モータも動かす事ができたから、後は組み合わせだけだ。

 8月30日・夜

 8月23日の続きに取り掛かる。
超音波センサを使ってモータを回すことに成功した。

 超音波センサと障害物の距離を計り、センサーの値が12cm未満の時にモータが回り、12cm以上の場合はモータを停止させるプログラムを作った。
「これで回るようになった。」と喜び、僕は続きをすぐやることはせず、9月中旬までずっと放置していた。

 8月末はコンテストの締切もあったし、夏休みの自由研究の発表用紙の仕上げもあった。そちらが一応完成したら、気持ちがダラけたのもあるし、また読書にハマってしまったのだ。w 
 上橋菜穂子さんの「炎路を行く者」

 上橋菜穂子さんのシリーズは全部面白いので、興味ある人はぜひ読んで。
 僕は「獣の奏者」から読み始めて、「守り人シリーズ」にもはまり、この夏は「鹿の王」にはまった。w

9月13日 OtOMO寺子屋

f:id:kogame2004:20151015223755j:plain

OtOMO寺子屋で続きに取り組もうとしたが、家での作業とは違い、TVがない。
つまり、Raspberry Pi2のモニタが無い。仕方ないので、まずはモバイルプロジェクターを繋いで椅子の背に投影してみた。
周りが明るすぎて、細かい字などが読み取りにくい。ノートを置いてみたりしたが、全くダメでモバイルプロジェクターは諦めた。

f:id:kogame2004:20151015223820j:plain


次に昨年10月~12月に作った「Raspberry Piの自作Pipad」の画面を使ってRaspberry Pi2起動。これはうまくいき、Raspberry Pi2が使えるようになった。

肝心のpythonのプログラムの続きだが、うまくいかない。行き詰まったままだ。

f:id:kogame2004:20151015222258j:plain

どんなプログラミングを作るか(仕様?)が自分の頭の中でうまく組めないままだった。だからOtOMO寺子屋での成果はあまりなかった。

ここからが悲劇の始まり。

9月19日 
久しぶりにRaspberry Piを立ち上げようとしたら、errorが表示され、起動しなくなっていた。
error表示の詳細をネットで調べてみると、「MicroSDがいけない」と書かれていた。
でも、今まできちんと使えていたのに・・・。
MicroSDはTOSHIBA製で16GB、問題ないはずなのに。
超音波センサーをpythonで動かす続きをやり始めたかったのだが、何度起動させてもRaspberry Pi2は立ち上がらず。
まずは、Raspberry Pi2のPin同士がショートしていないかの確認。
必死に異常な所がないか探した。が、特に目立った異常はなかった。

9月21日 
シルバーウィークだが、母は風邪で寝込んでいるので、どこにも出ることはできず、僕は原因究明の続きに取り掛かる。 (僕も風邪がぶり返していたけれど。)
父が手伝ってくれた。
microSDが原因だということになり、新しいmicroSDの購入をしにビックカメラに行った。
が、amazonで売っているのと比べると値段が高く、店では買わず。
結局、ビックカメラへ行った甲斐はなく、amazonプライムのお値打ちなmicroSDを2つネット注文。 amazonで注文したmicroSDが、22日に届く。
それは、「Transcendの16GB Class10」だった。
TranscendのmicroSDにNOOBSを入れる。
僕はラズパイにTranscendのmicroSDを入れて立ち上げる。
いざ、Raspbianをダウンロード。
でも、100%の所でerrorが表示された。これが第二の悲劇。
ネットでTranscendとラズパイの相性を検索してみたら、「Raspbianがダウンロードできない」「始めは問題ないけれど、再起動かけているうちにkernel errorで立ち上がらなくなる」と書いてあった。
プログラミングは全くわからない母だが、ラズパイには相性の悪いmicroSDがあるということだけは、何かで知っていたらしく、「相性の悪いMicroSDがあることを言っておけば良かった。」と悔いていた。
しかも、2つ買ったので僕も父も「下調べをしていれば良かった。」と後悔した。
どんどん調べていくとRaspberry Piで使えるSDかどうかを見られるようにしてある一覧表の載っているウェブページを見つけることができた。
それがこれ↓
RPi SD cards - eLinux.org
これを見ながらサムスンのMicroSDHCをamazonプライムで買った。

9月23日
サムスンのMicroSDHC16GBが届いた!
今回は失敗した時の事を考えて1つ注文した。
もともとWindowsPCにインストールされているNOOBSをサムスンのMicroSDHCに入れ、Raspberry Pi2に挿入、起動。
ここまでは異常なし。
Raspbianをダウンロードする。
待ってみるとTV画面には、ラズパイのエラーメッセージが・・・。
だぁ~~~。
一応、WindowsPCに入れ、サムスンのMicroSDHCの容量が極端に減っていないかを確認する。

なぜ、容量が極端に減っていないかを確認するのか。それはこの前のTOSHIBA製MicroSDの経験からだ。
上の方で書き忘れたが、TOSHIBA製MicroSDはkernel errorだけでなく、容量が14.9GB位で表示されるはずが、814MBと表示されてしまった。
それを心配していたのだが、勘が当たってしまった。
TOSHIBA製MicroSDと同じ事がサムスンのMicroSDHCでも起きてしまった。
直す手立てはないものかとインターネットを検索してみた所、論理フォーマットをONにすれば直ると書かれていた。
実際にサムスンのMicroSDHCを論理フォーマットさせた所、容量が14.9GBに直った。

再挑戦!!!
サムスンのMicroSDHCにNOOBSを入れ、いざ、Raspberry Pi2 起動。
Raspbianをダウンロードする。あれ~?
ダウンロードの進み方超遅い。
よし、もう一度起動から再スタート。
でも、Raspbianのダウンロードの遅さは変わらない。
仕方ない、一晩 待つか。
熟睡

9月24日
「お、ダウンロード完了している。」やったー!
起動させると正常に動いた。

10月7日

ついにpythonでレインボー風車を双方向に動かすことに成功!
詳細は、別で書こうと思う。

以下は、夏休みの自由研究で学校に提出した発表用の模造紙。
今年は頑張って2枚!最後は腕が痛くて、もげるかと思った。w

f:id:kogame2004:20151015223707j:plain