漆黒な技術メモ

管理人が必要に応じて自分のメモを好き勝手に投下するたまり場的ブログ

【ちょっと技術的なことAdventCalender】 hackU実装振り返り-2. mbed2台を直結する-

この記事はちょっと技術的なことAdventCalenderの21日目です。
今日は、以前に引き続きhack Uで苦労したことにうちの1つをつらつら書いていこうと思います。

前回「mbed×websocketをやろうとしたらライブラリの都合でmbed2台を直結することになった」というお話をしたと思います。
今日は、そこで苦労した「意外とちゃんとわかってなかった電気回路のお話し」をしようと思います。

mbed2台を直結する

mbedをはじめとしたマイコン関係のモノを繋ぐときには、p9,p10などのピンにジャンパ線を差し込み、UARTを利用したシリアル通信を行うのが一般的かと思います。 f:id:igbt3116redtrain:20161223050117p:plain
(https://www.switch-science.com/catalog/250/より引用)
しかし我々、シリアルポートを繋ぎ、サンプルプログラムを動かしても、通信できない…

なんかよくわからないけどシリアル通信はうまくいかないと判断し、仕方なく複数の空きピンを利用して並列送信をすることにしました。
しかしそれでもうまくいかない…

原因はソフトウェアではなく電気回路

単純な1,0のDigitalOutの通信がうまくいかないのはいくらなんでもおかしい、と思い、DigitalInをいろんなピンにつないで動きを見てみました。
すると、DigitalInと同じmbedのVCCでは入力を1とみなすのに、もう片方のmbedのVCCでは入力を0と判定しました。
ここでもしかしてと思い、一方のmbedのVCCからもう片方のmbedのGNDの電圧を測定すると…0Vでした。

つまり、ただVCCとGNDを用意すればいいだけではなく、きちんと「回路」を形成してあげる必要があるようです。
電気をきちんとわかってる人からしたら「何当たり前のことを言ってんだこいつは」と思われるかもしれませんが、ソフトウェアだけをいじってる人間はこの辺が意外とわかってなかったりするようです(byわかってなかった人)

回路を形成する

形成するといってもそんな難しいことではありません。通信用のピンの他に、互いのmbedのGNDをジャンパ線で直結するだけです。
f:id:igbt3116redtrain:20161223051742j:plain
これを行うだけで、2台のmbedの信号を無事やり取りすることができました!

今日はここまで