マトリョーシカ的日常

ワクワクばらまく明日のブログ。

知らなくてもIoTはできるけどあったら楽しい知識/マイコンのしくみと動かし方

f:id:kyokucho1989:20191010043719p:plain

IoTばっかし

 最近仕事でもIoTをやるようになっていて、寝ても覚めてもIoTのことを考えている。こいつを極めようとおもったら本当に広範な知識が必要だ。機械加工からはじまって、回路設計やら、半田づけやら、セキュリティのあれこれ。クラウドとのデータのやりとりや、AI・機械学習、ウェブに表示させるためのフロントエンドの技術ももっていないといけない。やばい。楽しいけどやばい。

 それでも全部知っている必要なんてない。知識はありものですませることができる。私たちもスマホがどうやって動いているのか理解しなくても難なくそれを操ることができている。夢を見るメカニズムがわからなくたって平気。生きているのだから。そういうわけで、ブラックボックスでも入出力の対応さえ知っていればIoTをやっていくことができる!

 ……でも、知ってた方が楽しいこともある。

マイコンの中身

 トランジスタ技術の「マイコンのしくみと動かし方」を読んだ。絵がたくさん使われていて、わかりやすい解説がなされていた。マイコンはCPUとメモリと周辺機器から構成されている小さなPCのこと。CPUはメモリを読んだり書き換えたりしてあたりを動かしている。メモリの中にはレジスタという特別なやつがいて、大事なメモリの番地を覚えている。CPUがどこから読み書きを行うかを覚えていてくれるのだ。そうやってうごいている。

 レジスタがなぜそんなにも物覚えがいいのかというとフリップフロップ回路のせいである。メモリやレジスタは0と1の集まりであるが、レジスタの01はフリップフロップ回路で構成されている。この回路は信号の値を保持することができる。レバーのようなものだ。

 こんな要領で、マイコンの内部構造やA/D変換、PWM制御、タイマー割り込みのことが書かれていた。結構たのしい。はっとしたのはA/D変換の章。m5stackやarduinoでいうanalogRead()。これはアナログの入力信号を2進数で表現するのだが、けっこう処理に時間がかかる。arduinoなら100μsec。 「なんでだろう」とおもっていたけど、内部構造がわかったのでしっくりきた。あれは中で比較演算をやっていて、「これとあってる? ちがう!」「じゃあこれは? ちがう!」と確認しているらしい。なるほど!

 arduinoは10ビットの分解能(0が10個)で0~1023まで表現できる。m5stackは12ビット。0~4095である。そういうわけで、ひとつのループの間にいくつもanalogRead()を組み込んでしまうと、処理がおいつかなくなってm5stackがふっとぶ。実際わたしはなんどもふっとばした。

おわり

 IoT関係なく、知らないことがわかるのは楽しい。この世界がどういう仕組みで動いているのかちょっとだけわかった。やった。人類の叡智の積み重ねのうえで私たちはごろ寝している。そのまま生きることも可能だけど、こうやって内部の動きをちょっとのぞいてみるのも、それはそれでいいものだね。

 書籍:
マイコンのしくみと動かし方―徹底図解 (トランジスタ技術special forフレッシャーズ)