TIM Labs

2019年3月アーカイブ

さて、車側ができたので、つぎはリモコン側の製作である。

車を制御するのに、どういう方法にするかは色々ある。
本格的な制御をするなら、本格的なゲームコントローラのようにしないといけないが、以下のような簡単な方法にした。

ボタンを5つならべ、

左回転、後退、停止、前進、右回転

とすることにした。
実は、『ラズパイマガジン1018年12月号』の「リモコン自走カー」の記事のリモコン制御ボタンの並びと同じである。

DSCN4105-600.JPG

並んでいるのは安いトグルスイッチ(袋に10個まとめて入って売られていた)で、押し下げている間だけ導通する。

これをブレッドボード上に並べ、各ボタンとそれに対応させるGPIOポートを導線でつないでいる。
黒はアース(GND)である。

Raspberry Pi 側の対応ポートを全部入力に指定することで、ボタンの押し下げ状態かどうかを読み取っている。
押し下げると、GNDに繋がることでLOWになり、そうでないときHIGHになる。

プログラムはこんな感じ。

    if GPIO.input(18) == GPIO.LOW:
        # 押し下げられたボタンに対する処理

実際には、この前に、使用するポートが入力のポートになることを指定しておく必要がある。

5つのボタンの状態を読み終えたら、0.1秒sleepすることにしている。
そんなに反応の早い車ではないので、この程度で十分人間には瞬時に反応していると思えるハズ。

Bluetooth通信がRaspberry Pi でできることが分かったのだが、Raspberry同士の通信ができると、色々な可能性が生まれるはずだ。

ということでもう一台Raspberry Pi を調達した。

DSCN4108-400.JPG追加購入したのは、左側の小さい方である。

より正確にいうと、右が Rapberry Pi 3 B+ であり、左が Raspberry Pi Zero WH である。

Raspberry Pi Zeroというだけでは色々なモデルがあり、価格もかなり違う。一番安いのは600円+税程度で買えるのだが、BluetoothとWifiがなく、ピンもついていない。
しかし、今回は通信テストを行うということで約2000円のを入手した。

2つの最大の違いは、メモリの容量で、3B+は1GB、Zeroは500MBと半分しかない。
また、コネクタを省略したり、小さいタイプに変更になっている。
HDMIなのだが、ZEROのコネクタはminiタイプで、普通はmini-標準の変換アダプタが必要になる。

どちらも、おなじLinuxベースのOSを入れて動かせるので、普通にbluetoothの通信をすんなり行える。
技術屋さんが相手なら、それだけで十分なのだが、一般の人、お偉い人々には通信ができているのかどうか分からないので、何か分かりやすい具体的な物を作って示さないといけない。

ということで、こんなのを作ってみた。

DSCN4103-600.JPG

Raspberry Piに色々なものが接続できることが分かってきた。

単機能のセンサーは、GPIOのおかげで、非常に簡単に接続できる。
それでも、Raspberry Pi はアナログを直接扱えないので、そういう場合には ADコンバータが必要になるが、実例が本、雑誌、ネットに多数あるので困ることはない。

ということで、もうすこし面倒なものを接続してみようと思ってしまった。

さて、週末に、ちょっと秋葉原に行ってきて、昔良く行っていた電気街などを回ってきた。つまり、ガード下の部品やとか、千石、秋月などのパーツ屋である。
もうちょっと離れたとこりに、ジャンク品を売っている店が昔は多数あったのだが、今はほとんど無くなったようだ

そういうことで、ちょっとふらふらしていたら、こんなものを見つけてしまった。

DSCN4074-450.JPG

これは、bluetoothのゲームコントローラの非常に小さく、そして安いやつである。

よく本や雑誌に取り上げられているのは、PS3のコントローラ「DUALSHOCK3」であるが、そういうのは中古でも結構する。

600円で売っていたので、つい購入してしまったが、実はアマゾンで同じものが333円で売られているのを発見し、がっかりしているところである。

写真はサイズが分かるように、5mm方眼紙の上に置いて撮影した。

下の中国語は、A4よりやや小さい紙1枚だけのマニュアルの折りたたんだ状態の表紙部分である。

IoTの世界の標準語は中国語なのだが、一応裏面は英語になっていたものの、そんな詳しい説明はない。

入手したものの、ちゃんと認識できるか不安である。
記事になっているようなゲームコントローラなら、記事を参考にプログラムを作れば良いだけであるが、こういう品物を買うと苦労もいっしょに買ってしまうことになる。

Raspberry Piを入手したら、まずはあれこれGPIOに繋いで、情報を取得したり、表示したり、モータを回したりなどするのが当然だろう。


Raspberry Piに、3.5インチのカラー液晶を繋ぐのは、単に差し込むだけで終わってしまうのでとても簡単で、何のお勉強にもならない。
しかし、IoTをやろうとすると、もっと簡易で安い超小型液晶、つまり壊しても気にならないくらい安い液晶に、センサーから得られた値を表示するなどが普通だろう。
ということで、とても安い、2行16文字表示しかできない500円ほどで入手できる液晶表示モジュールを買って動かしてみた。

LCD2L-disptest−600.JPG回路はラズパイマガジン2018年12月号を参考にし、プログラムはラズパイマガジンのWEBサイトからダウンロードし、液晶動作チェックと無関係な部分を全部削って動かしてみた。

液晶上に表示できる文字は、用意されている256個のパターンだけで、英数字記号(ASCII)、カタカナとアクセントなどが付いた英小文字、数学記号などである。
カタカナで濁点、半濁点があると2文字に分けて液晶に送ってやらないといけなくて面倒である。
それだけではなく、2行16文字を意識して表示を制御するプログラムを書くのはとても面倒なので、用意されていたこの液晶(AQM1602)用のモジュールを使い、文字列を送って表示しただけである。

右の赤いボタンは、2行に収まらない文字列の場合には、2行いっぱいまで表示し待つようにしていて、スイッチが押されたら1行だけスクロールして次行を表示するようにしてみた。

表示している文字は、"Raspberry Pi ノ Mathematica ハ タダ" である。

Raspberry Pi の性能がとても高いのが分かったので、普通のパソコンの代りができないかと思って、対応可能な言語やIDEを調べてみた。

とりあえずRaspberri Pi を起動して、メニューのProgrammingを開くと、いっぱい出てきた。

RasPiProgrammingMenu.pngまあ、Pythonを使うのが一般には多いようだが、JavaやScrachも標準で対応している。

Node-REDというのは、マウスの操作だけで色々なことが出来るプログラム開発環境と言っていいのかな。
まだ使ったことがないので、以下省略。

Sense HAT Emulatorは、その名前の通り、Raspberry Pi 用のアドオンボードの1つで、結構値段が高い。つまり、本体より高いのだ。そのためだろうが、買わなくても同様の動きがエミュレートできるエミュレータが標準で装備されているのだ。たぶん、このエミュレータでしっかり遊ぶと、いつまでもエミュレータでは物足りなくなって本物を買ってくれるという戦略かな。

最後にあるWolframは、Mathematicaのプログラミング言語だ。

このメニューにないものでも、C, C++, perl, lua, rubyなどにも対応しているし、いろいろ頑張ってインストールする気があれば、相当多数のプログラミング言語が使えるらしい。

なんたってRaspberry Pi は Linuxベースなので、色々なものが移植されている。
もし、ソースがあれば、自分でコンパイル、インストールなどすれば動いてしまうものは相当ありそうだ。

それで、諸般の都合で、JavaをGeanyエディタ上で使って、プログラミング教育を2週間ほど行った。
相手は、日本語が通じない海外の学生だったので、英語版、つまり標準のままのインストールを行ったmicroSDカードを用意して行った。

元のJavaのソースは、Windows上のEclipseでちょろちょろっと書いたもので、何の変更もなくRaspberry Pi上で動いたのだが、後でデータの入出力仕様を変更したので、その部分だけプログラムを書き直した。

Raspberry Pi、 Linuxに慣れている人なら、何ら勉強しなくて使えるので、とても便利。

このアーカイブについて

このページには、2019年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2019年2月です。

次のアーカイブは2019年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ