header source
my icon
esplo.net
ぷるぷるした直方体
Cover Image for Pro MicroでI2Cを動かす (1) - Pro Microのセットアップ

Pro MicroでI2Cを動かす (1) - Pro Microのセットアップ

だいたい9分で読めます

お知らせ: この記事の内容を大幅に加筆修正してまとめた書籍ができました。まとまった情報が欲しい場合はぜひ確認してみてください。


自作キーボードやセンサーモジュールなどではI2Cを使って複数のICを接続し、処理をさせることがよくあります。このシリーズでは、Pro Microに搭載されているI2Cポートを使ってIOエキスパンダーを動かしてみます。
第1回のこの記事では、まずPro Microをブレッドボード上で動かせるようにします。I2Cはまだ関係ないですが、今後のために重要なステップです。
なお、実験なのでブレッドボード上に実装します。

用意するパーツ

第1回で使うもののみ掲載します。まとめ買いしたい場合は他の記事も参照してください。

  • ブレッドボード(BB-801 など)x1
    • ハーフサイズのブレッドボード x1(組み合わせて使用予定)
  • Pro Micro + ピンヘッダ x1
    • Type-C版はもげにくいので、高価ですが安心です。グルーガンで固定できる人や、他のPro Microが余っていればそれでもOKです。
    • 後述しますが、Pro Microには色々あるので注意が必要
  • リセット用スイッチx1
  • ジャンパーワイヤ x たくさん
    • 何かと使うのでたくさん欲しい
  • Pro MicroとPCを繋ぐケーブル
    • 充電専用ケーブルだとちゃんと認識されないこともあるらしい

動作確認をするだけなので、これだけです。

ざっくりした用語 / 引用情報

  • Pro Microの種類: とにかく互換機がたくさんある。自分のPro Microがどれなのかを把握し、チップやピンアサインを知ることが大事です。
  • Pro Microのピン配置(ピンアサイン): Pro Microから出ているピンが何かという情報。チップ(ATmega32U4)のどの足がどこに接続されているかを確認できる。これも種類によって違うので、基板の印字などを見て同じものを探す。今回は一般的な下図のものとして進める

引用: https://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/ProMicro16MHzv1.pdf
引用: https://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/ProMicro16MHzv1.pdf

用意するソフト

  • Arduino IDE
    • Pro Microのファームウェアを焼くための環境。これは便利

実装

1. Pro Microとピンヘッダをはんだ付けする

Pro Microをブレッドボードに挿すため、ピンヘッダをくっつけます。

どちらの面を上にするか、ピンヘッダの高さは十分か(ケーブルが挿せるか)を考える必要があります。私はとにかくもげにくくするため、ケーブル差込口を下にして固定しようとしています。しかし、一般的には逆で、回路図では左右反転するので要注意です。


多分逆

はんだ付けは、とりあえず今回使うピンだけ行えば良いです。対象はGND x3, RST, VCCです。使うピンが増えたら、必要に応じてはんだ付けします。次回以降は2(SDA)と3(SCL)も使うので、一度に付けたい場合は追加ではんだ付けします。

2. ブレッドボードで配線する

Pro Microを一番上に置いて、必要なピンを配線します。下図の通り、ブレッドボード左右の+レーンと−レーンを繋ぎ、GNDとVCCを接続し、#RST(RSTに上線)とGNDにスイッチを繋ぐと完了です。Pro Microの2,3ピンがある方を広くすると後々楽です。


Pro Microとリセットスイッチ

Resetによくある挙動ですが、#RSTピンは何もしなければhighに、リセットする際はlowにします。そのため、GNDとスイッチで繋いでリセット処理が走るようにしています。次のHookup Guideに書かれています。

Pro Micro & Fio V3 Hookup Guide - SparkFun Learn - learn.sparkfun.com

ちなみに、#RSTは内部的にプルアップされているので、放っといてもhighになります。内部プルアップは今後も頻出する便利なやつです。


引用: Figure 8-1: https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf

3. Arduino IDEでプログラムを焼く

Arduino IDEを起動し、次のリンクにあるサンプルコードをコピペしてコンパイルします。LEDがチカチカして分かりやすいので良いです。

https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/example-1-blinkies

Arduino IDEではどのボードを対象にするかを選ぶ必要があります。「Pro Microが無いぞ?」と絶望するのですが、前掲の記事にある通りArduino Leonardo互換なのでそれを選びます。物によってはうまく動かないこともあるらしいので、こちらの記事などを参考に、別のボードを選んで焼きます。

焼き方は、リセットスイッチをダブルクリック(Pro Microの種類によってはシングルクリック)し、750msだけブートローダーが起動するのでその間に焼きます。事前にArduino IDEでアップロードボタン(Cmd+U)を押し、ブートローダーを起動すると自動的に認識して焼いてくれます。

焼く対象(Port)も選ぶ必要があります。まだ一度もプログラムを焼いていないと、何も認識されていないことがあります。ブートローダーは認識するはずなので、リセットしてPort一覧に項目が増えるかを見てみましょう。見つかったら、急いで選び焼いてもらいます。

上手く行かない場合、まずはブートローダーが認識されているか確認します。Macの場合、Pro Microを接続していない状態で ls /dev/tty.\* を叩きます。Macbookだと /dev/tty.Bluetooth-Incoming-Port が元々いたりします。Windowsだとデバイスマネージャー的なものから見える可能性があります(未検証)。次に、接続してリセットをダブルクリックし、同じコマンドで表示が増えるか確認します。自分の場合は /dev/tty.usbmodem12101 という名前で出てきました(USBハブ経由)。これで出てこない場合は、Pro Micro自体の不良か、リセットボタンがちゃんと機能していないかが疑わしいです。後者の場合は、ピンセットでPro Microの#RSTとGNDをショート(x2回)して起動するかも試してみましょう。

4. Arduino IDEで出力を見る

無事に書き込みができ、Pro Microがピカピカしだしたらあと少しです。

まずは、ブートローダーではない状態でも /dev/tty などに表示されるかを確認します。通常状態でPCから正しく認識できているかの確認です。Arduino Leonardoの場合、IDEから焼くとUSBファームウェアも一緒に焼かれるようで、これによりPCと良好なコミュニケーションが取れるようになります。もし見つからない場合、適切なボードを選んで焼いていない可能性があります。前述の記事を見つつ、Arduino Leonardo以外も試してみましょう。

上手く繋がっていそうな場合、"Tools" -> "Serial Monitor" を開き、"Hello world!" 的な文言が確認できたらOKです。プログラム中に Serial.println(…) という記述がありますが、これはArduino IDEから確認できます。つまり、printデバッグができるということです。

シリアルモニターに繋がらない、的なメッセージが出ている場合、違うPortを選んでいないか確認し、抜き差ししたりして様子見します。

この状態であれば、ブートローダーに入らなくても、アップロードボタンを押すだけでプログラムが更新できるようになります。これは便利。

まとめ

最初のセットアップ部分は詰まりやすいので、ここまで無事に動いたら祝杯ものです。私もArduino Leonardoのボードを選ぶことに気づかず、一日が溶けました。

次回は本題のI2Cに入ります。

Share