はじめに
センサーの専用ライブラリに頼らず「データシートを読んでセンサーをArduinoで使える」人が、初心者を同じレベルまで電子工作ができるように教育することを想定しています。Lチカまではたくさん資料があるけど、そこから先はどうすれば…と思って自分のメモとして書きました。そのため、初心者の人がこれを読んで自力で学ぶには不親切かもしれません。目標のセンサーは秋月のセンサーモジュールぐらいのつもりです。
質の高い書籍や資料は存在しますが、何か一つの資料だけで完璧に習得できるということはまずなく、完璧な入門書を使うとその先が分からなくなるということもあるので、様々な資料を使いながら電子工作に慣れていくというのが良いかなと思います。その主軸として、特に以下のことを考えてこのプランを作りました。
- 本やネットの内容をコピーするのではなく、自分でものを作れること
- 問題を解決する能力をつけること、問題を回避する能力をつけること
- 自分でさらに知識をつけることができる基盤を作ること
やること
やることを順番にまとめて、学べることを箇条書きにしました。マイコンはSeeduino XIAOを想定しています。
魚ではなく魚の釣り方を教えるイメージで以下の通りにすれば、電子工作がある程度できるようになると思います。
チカチカ
チカチカ(非安定マルチバイブレータ)を回路図を読んで作ります。できればコンデンサや抵抗を変えて周期の変化を確かめたり、波形をオシロで見せつつ仕組みの解説をしたいところです。
- 回路図の読み方
- ブレッドボードの使い方
- はんだ付け
- 電子回路
- LEDと保護抵抗
- コンデンサ(RC回路)
- トランジスタのスイッチング
Lチカ
まずはLチカでArduinoの基本的な使い方を学びます。プログラミングも初心者の場合はここからゆっくりプログラミングについて教えます。
スイッチでLEDのON/OFF
スイッチを押したらLEDが光るようにします。
PCとシリアル通信
スイッチが押されたらPCにシリアル通信をするプログラムを書きます。printデバッグ用に早めにこれをやると良いかなと思います。押されている間ずっと通信するのではなく押された瞬間に通信するプログラムにします。
可変抵抗でLEDの明るさ調整
可変抵抗で分圧回路を作り、それをADCで読み取ってLEDの明るさを調整します。LEDの降下電圧を確認するため、DAC→PWMの順で実践します。PWMの出力波形をオシロで見せられると良いです。
- 分圧
- ADC
- DAC
- PWM (analogWrite)
Seeeduino XIAOのADC(analogRead)はすべてのピンで10bit、analogWriteは0番ピンのみDACでデフォルトは10bit、それ以外のピンはPWMでデューティー比は8bitで設定できます。詳細はこちらの記事を参照してください。
圧電ブザー
LEDだけだとつまらないので音を出してみます。まずは単純にONOFFを繰り返すプログラムを書いてPWMについて理解したあと、tone関数を使ってみると良いと思います。圧電ブザーはミニゲームでも活用できます。
- PWM
サーボモータ
PWMを素直に書いたあと、Servoライブラリを導入すればライブラリについても学べます。
- PWM
- ライブラリ
スイッチでLEDの点灯/点滅
複数のセンサーや周辺機器を制御することを想定して、あるLEDを一定周期で点滅させつつ、別のLEDのON/OFFをスイッチで切り替えられるようにします。まずはタイマや割り込みを使わないでプログラムを組んで、delay中はスイッチの判定ができないことを確認します。タイマと割り込みについて解説した後、以下のような方法で実装します。
- delayで点滅し、割り込みでスイッチを監視する方法
- delayで点滅し、ピン変化割込みでスイッチを監視する方法
- タイマ割り込みで点滅し、loopでスイッチを監視する方法
- 時間関数を使って点滅し、loopでスイッチを監視する方法
Seeeduino XIAOのタイマ割り込みは、Arduino IDEのスケッチ例を参考にしてください。ピン変化割り込みでは、ピンの番号に注意してください。
このように割り込みには様々な使い方がありますが、以下の方針で使う方法を選ぶと良いと思います。
- 優先度の高いタスクを割り込みで実行する
- 割り込みルーチンの実行時間を短くする
- プログラム全体でdelay関数を使わないでいいようにする
学ぶのは以下の内容です。
- タイマ
- 割り込み
LEDとスイッチでミニゲーム
数個のLEDとスイッチのセットで作れるミニゲームを実装します。光ったLEDに当たるスイッチを制限時間内に押すモグラ叩きゲームがちょうど良いと思います。これに圧電ブザーを加えてみても良いです。ここでじっくり自力で仕様を考えてプログラムを組んでデバッグすることが重要です。
- 変数や制御文などの"プログラム"
- デバッグ
部品を壊す
予期しないタイミングで部品を壊してしまうよりは、一度簡単な部品を壊す経験をしてしまう方が安全だと思います。その経験としてLEDを保護抵抗無しで電源(保護回路あり)に直接つなげます。電解コンデンサの逆接は危険ですが、LEDの破壊程度であれば何かカバーを被せれば十分安全に試せると思います。
- 絶対最大定格
- 故障モード
2022/01/06追記
LEDの破壊の様子はYouTube等で見ることができます。実験の前に動画を見て危険だと思われる場合は、LEDの破壊の代わりに適切な抵抗を挟んだうえでヒューズを溶断してみるのをおすすめします。
センサ(ADC)
いきなりシリアル通信は難しいので、ADCで読めるセンサを使います。
- データシートの読み方
センサ(シリアル通信)
シリアル通信(ArduinoのSerial(UART)に限らず)で読めるセンサを使います。Arduinoのコードをなんとなく追うのではなく、まずシリアル通信のプロトコルについてしっかり理解して、どんな信号がやりとりされているのかを把握するべきです。その後Arduinoの関数の役割を理解すれば詰まることなく進められるはずです。
- シリアル通信
必要な知識・スキル
知識そのものを自分で書くと時間が足りないので、いい感じの資料をまとめました。もちろん全部覚えてもらうことはないです。
ほぼ全ての基礎
電子工作のための電子回路基礎
Arduinoをはじめよう 第3版
組込みエンジニアの教科書
実際の製作
プログラミング
Arduino・マイコン
公式Arduinoリファレンス
garretlab
NOBのArduino日記!
spiceman
- そもそもコンピュータ・マイコンとは
Digikey(動画)
そもそも「マイコン」って何? - マイコンやセンサーを動かすための外部の回路
- 電源(レギュレータ・コンデンサなど)
- プルアップ・プルダウン
- マイコンの機能
一般の回路・部品
- Electrical Information
マイコン以外の電子部品、電気・電子回路 - 秋月のカタログ
使える武器が増えるのでどんなカテゴリがあるか知っておいた方が良いです。
単純な技術以外のスキル
問題解決・問題回避
もの作りで一番必要なのは失敗が許容される状況だと思います。無計画でいいというわけではなく、大きな失敗を避けること、失敗してもそれを解決できることが重要です。(チームの場合は人間関係がゴタゴタしないことも重要)
- 問題回避
最初から完璧を目指して全部作って最後に動作確認をすると、問題の原因特定が困難です。ある程度の機能を作ったら動作テストを心がけ、細かい失敗を前提とした製作をします。Done is better than perfect. - 問題解決
経験があれば問題から直接原因を推測したり、よく観察してすぐに原因を特定できたりしますが、慣れないうちは以下の手順を丁寧に行うことをおすすめします。- 分割する
動かない理由を特定するには、当然ですが動く理由をしっかり理解していることが必要です。そのうえで、仕組みを小さな構成要素に切り分けて一つずつ調べていきます。仕組みの最初から最後まで順番に調べていくのは手間が手間がかかり、どの程度細かく分割すればいいか分からなくなるので、二分探索の要領で進めていくと良いです。 - チェックする
切り分けた各部分について、以下の方法で問題ないか調べていきます。
A 想定通り動作しているか調べる
B 条件を変えて調べてみる(対照実験) - 分からないことはググる/人に聞く
質問の仕方
- 分割する
LEDが光らないなら、まずマイコン側と回路側で分割します。テスターを使ってマイコンから正しい電圧が出ていることが分かれば(A)、問題は回路側にあることになります。LEDが故障しているなら、LEDを交換する(B)ことで原因にたどり着くはずです。これは単純な例ですが、複雑な問題も同じように解決できます。
データシートの読み方
読んで慣れるしかない?
なにかアドバイスあればコメントください。
公式ドキュメントの扱い方
公式サイトと他のサイトはそれぞれどちらも長所短所があるので、使い分けを意識します。
- 他のサイトを見て全体像を把握する
- 公式サイトにたどり着く
- まずサイトの構成を知る
- 必要な所を読む
- 公式ドキュメント(公式リファレンスとも)
その技術や製品そのものについて書いてある
それの仕様,使い方をちゃんと学べる
信頼性が最も高い(外部サイトは情報が古いかも) - 他のサイト
- それを外部の視点から書いたもの
他の技術や製品と比べて書いてある
外から見るので全体像が掴める - 公式に書いてないことを書いたもの
バグは外部サイトに書いてある事が多い - 公式の記述を要約しているもの
分かりやすいけど結局公式のトップページが神
- それを外部の視点から書いたもの
最後に
おすすめの工具・測定器を布教して終わりにしたいと思います。
- はんだごて FX600
- こて台 633-01
- こて先 2.4D型 T18-D24
- ハンダ吸取器 SS-02
- はんだ吸煙器
- オシロスコープ HDS272S
最後まで読んでいただきありがとうございました。
-
771_8bit
さんが
2022/01/03
に
編集
をしました。
(メッセージ: 初版)
-
771_8bit
さんが
2022/01/06
に
編集
をしました。
-
771_8bit
さんが
2022/01/12
に
編集
をしました。
-
771_8bit
さんが
2022/02/02
に
編集
をしました。
-
771_8bit
さんが
2022/02/11
に
編集
をしました。
-
771_8bit
さんが
2022/02/11
に
編集
をしました。
-
771_8bit
さんが
2022/02/24
に
編集
をしました。
ログインしてコメントを投稿する