TIM Labs

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に慣れている人なら、何ら勉強しなくて使えるので、とても便利。

RasPi-ele-bb.jpg

Raspberry Piを入手したら、とりあえず標準で載っているプログラミング言語で遊ぶとか、Mathematicaで数式遊びをするとかあるだろう。

しかし、やっぱり電子工作をしなくちゃ面白くない。
いろいろIOを操れるように設計されているので、それを利用しないのでは宝の持ち腐れだ。

ということで、電気通信大学生協で入手したブルーバックスの『最新Raspberry Piで学ぶ電子工作』をとりあえず買って、斜め読みしてみた。

昔と違って、IOの面倒なことは既にRaspberry Pi に組み込まれていて、かなり簡単になっている。

昔は、何でもハンダゴテでハンダ付けしていたが、今はブレッドボードに部品の足を挿すだけで回路ができてしまう便利な時代になっている。

ということで、週末に、ちょっと秋葉原の近くに用事があったついでに、東京ラジオデパート、千石電商、秋月電子を回ってきた。これらの場所は、電子工作するにはお馴染みの店である。そういうところへ行こうとしても、途中でメイドカフェの呼びこみがたくさんある。いつの間にか、秋葉原は電気街から別の街に変わったようだ。

ふらふらしていたら、Raspberry Pi 用の電子工作キットというのが安く売っていたので入手してしまった。

ちゃんと書籍に合致したキットを入手すれば良いのだが、適当に買ってきてしまったので、ADコンバータは本とは異なるものが入っていた。

本にはMCP3208という入力8チャンネルのADコンバータの場合の説明があるのだが、入っていたのは入力2チャンネルのADコンバータであった。つまり、より安いのが入っていた。

本に載っている説明、プログラムなどとはちょっと違うことをしないとAD変換できない。

さて、どうしよう。

DSCN3911−600.JPG

Raspberry Pi3に、3.5インチ、つまりRaspberry Pi本体と同じサイズのディスプレイを付けてみた。

ちいさく、可愛く収まっている。

小さくても、4コアもあるので強力なはずだ。

左側は9x9のナンプレの自動生成が走っているところで、右側にはウェブでこのブログを見ているところだ。この程度は楽勝だ。

ところで、この3.5インチ液晶パネルには、こんな説明書がついてきた。

Raspberry Pi 3 を入手した

DSCN3824−600.JPG 電気通信大学の学内にあるオフィスの目と鼻の先に電子パーツ店がある。より正確にいえば、2mしか離れていない、つまり廊下の反対側に店がある。

そして、同じビルの1Fにあるセブン・イレブンでも電子部品や工具類を販売しているという極めて優れた場所である。

ということで、ついRaspberry Pi 3 を入手してしまった。

OSはネットから最新版の

Raspbian Stretch with desktop and recommended software

をダウンロードして入れた。とりあえず最新版のフル。

2018-11-13-raspbian-stretch-full.img

ZIPが 1978611497バイト(2GB)、展開したら 5297405952バイト(5.3GB)もあり、ダウンロードにちょっと時間がかかった。

それでも、今は簡単に落とせて、16GBのmicroSDカードにイメージを書き込んで、Raspberry Pi 3 に差し込んでUSBから電気を供給したら、簡単に立ち上がってしまった。意外と電気を食うので、ちゃんと3Aまで大丈夫なACアダプタも合わせて入手した。

ディスプレイは、とりあえず手元にあった27inchの4KのモニタにHDMIで繋いだ。
もちろん、ちゃんと表示されたのだが、Raspberry Piに4Kディスプレイではバランスが悪い。
ということで、もっと小さな、ラズパイの上につけられるような小さなのが良い。

オフィスの無線LANには難なく繋がり、ソフトのアップデイトも行えた。
キーボードはUSBでとりあえず繋いだが、マウスはbluetoothで繋いでみた。

本当に簡単になってしまった。
こんなに簡単になってしまって良いのだろうか?

ところで、これで何をしようか?

プログラムでは、以下のように # を使うことがある。

#include <iostream>

この # をシャープと読んでいる人をよく見かけるが、それって正しいのだろうか?

(1)♯  (2)#

の2つが存在し、一方がシャープで、もう一方は違う呼び方をする。
右肩上がりと、右に傾いているので、形が違い、文字コードも違うので違う文字である。

そもそも、シャープってどういう形だっただろうか。シャープというからには、音楽記号のはずである。sharp.JPG どう見ても、右肩が上がっている。
ということは、(1)がシャープであり、(2)は違うようだ。
そして、(2)の方が、プログラムで出てくる#に近い。

さらに、キーボードの刻印も(2)であるはずだ。

# は元々はナンバーサインと呼ばれていた。そして日本では、井桁という呼び方があった。
# はハッシュとも呼ばれる。 # を付けることでハッシュタグにするのは知られているはずだ。

そして、英語では、普通 hash と言われ、シャープと言われることは無いようだ。

# を正式にシャープと呼ぶなどという正式な決まりはどこにも存在しないはずだが、それが非常に広まってしまっている。
逆に、# をハッシュと言うと、日本国内では通じない可能性が高い。

まあ、困ったものだが、そういう風になっているので、気をつけよう。

謹賀新年

新年明けましておめでとうございます。

今年も、きっと人工知能、AIで明け暮れることでしょう。

次のナンプレの問題は、もちろんAIを使って作ったものです。

ルールは不要かも知れませんが、一応書いておきます。

  1. 縦と横の各列9マスには、1~9の数字が1つずつ入ります。
  2. 3×3の太枠の中の9マスにも、1~9の数字が1つずつ入ります。
  3. したがって、縦、横、太枠内(ブロック)のいずれにも同じ数字は入りません。

    2019-eto.png

ルールさえ知っていれば解けるように、AIが作った問題です。

これがちょっと難しいと思った場合には、数字の入るマスの位置が同じでも、数字の値が違うプレゼント問題がこちらにあります。

遺伝といえばメンデルである。

あのエンドウ豆のシワの有無による研究により、遺伝学が始まったと言われている。

とくに、隔世遺伝というのがあり、子供には親の性質が現れないのに、孫には祖父母の性質が現れるという性質である。

さて、問題は、

一般的な遺伝的アルゴリズムの実装において、隔世遺伝は成り立っているのであろうか?

もう年末も近いので、問題の提起だけしておこうと思う。

正月休みに、ちょっと考えて見て欲しい。

では、良いお年を。

2人での巡回セールスマン問題は、以下のように考えると、できる。

TPS2-exp1.png

上は、両端がない循環しない紐状のルートの場合である。
これの両端の2つの街の間の距離も加え、全体でリング状になるとしたのが一般的な巡回セールスマン問題である。

ここでは、その下側のように、両端にベース(基地)を加えたものを考え、それらの間の距離も考えることにする。
すると、①がセールスマン1の巡回路になり、②がセールスマン②の巡回路になる。

これで、二人のセールスマンの巡回路が決まるので、その長さを求め、最小化すべきものを計算することで、いままでと同様に遺伝的アルゴリズムにより、二人巡回セールスマン問題が解ける。

これが分かれば、次のように考えると3人巡回セールスマン問題も解ける。

TPS2-exp2.png

3人の場合には、両端のない経路を考える時点で、既にベース(基地)が2つ入っている。

この場合、単にベースを2つ、その他の街を1つずつの並べ替えを考えれば良いだけである。

適当に並べたときに、ベースが連続する場合があり、その場合、全くなにもしない移動距離ゼロのセールスマンが発生する訳だが、その場合にはサラリーマン間の移動距離の差が大きくなるので、そのようなケースは自動的に排除されるので、何も問題ない。

このようにして、複数人で手分けをして回る場合の巡回セールスマン問題で、公平で合理的なルートを求めることができるのである。

この他にも、さまざまな条件の巡回セールスマン問題があるので、詳しくは各自で調べてみよう。

いや、自分で勝手にさまざまな条件をでっち上げて、考えてみるのも良いだろう。

月別 アーカイブ