Railsエンジニアが電子工作初心者になるまでの軌跡

とりあえず電子工作初心者と名乗っていいほどには知識がついたと思うのでポエムを書く。
何をすればいいかよくわからなかった状態から、どうやって初心者に至ったか。いったん棚卸ししたいのと、もしかしたら電子工作に興味がある人の役に立つかもと思ったので書く。

## 自己紹介
Railsエンジニア歴10年ほど。Ruby大好き
プログラミングは基本的に嫌い。
コンピュータの都合に人間が合わせる必要があるのは嫌い。
大学は情報系だが、電子回路についても一応学んだ。
電子工作歴約１ヶ月(2022年５月現在)。ArduinoとESP32で土日は遊んでいる。

## プロローグ
Webエンジニアなので、IoTというワードに興味を持っていた。
4年ほど前（2018.11）に、jsでマイコンを制御できるという [obniz](https://obniz.com/ja/products/obnizboard) がおもしろそうだったので買った。
サンプルをいくつか試して簡単に動いて感動したが、それっきり引き出しにしまってた。
そのときブレッドボード等が必要で電子工作のスターターキットを買った。
Kuman arduino用セット 電子工作 スターターキット
https://www.amazon.co.jp/dp/B01AXYBYW0

## 放置から復活するきっかけ
#### マンガ
2つのマンガをきっかけに何か作りたい欲が出てきた。

1. ハルロック - 西餅
https://www.amazon.co.jp/dp/B00LP8GDKW
女子高生が電子工作をするマンガ。作例が充実してる。第1話で顧問の先生が『電子工作界において「作るまでもない」は禁句な』と言いながらPICマイコンでぐりぐりお仕置きするのが印象的。

2. ラッキー - 村上かつら
https://www.amazon.co.jp/dp/4091815804
犬型ロボットと少年のお話。液晶に表示できる5文字のみでコミュニケーションをとる犬型ロボット。機能よりも何が必要か考えさせられる。涙腺にくる。

#### 電子工作系Youtuber
勉強のために最近見ているYoutuberもやる気の継続のためによかった。

* イチケン / ICHIKEN
https://www.youtube.com/c/ICHIKEN-video
抵抗やらコンデンサやらいろいろ燃える。やってはいけないことが笑いながら身につく

* 今日から始める電子工作
https://www.youtube.com/c/BuonoTV
満遍なく電子工作の知識について教えてくれる

## やったこと
#### Arduino
本を見ながらそこに書いてあるサンプルを動かした。

実践Arduino！ 電子工作でアイデアを形にしよう - オーム社
https://www.amazon.co.jp/dp/B074SFCRXS

幸い手元には4年前に買った電子工作スターターキットがある。Arduino UNO互換機も入ってた。
知識としてちゃんと身につけながら進めたかったので、回路図を書きながら進めた。
[fritzing](https://fritzing.org/download/) というツールでブレッドボード図と回路図が書けるので、何か作ったらソースコードと一緒に保存した。
また、手書きのノートにも残すようにした。ノートの右側にはソースコードの一部、左側には回路図と使用した電子部品。
スターターキットに入ってた電子部品にはどの足をどこにつなげればよいかわからないものがあったので、ググってデータシートを探してノートに残した。
型番もわからないものが入ってたのでそういうのは秋月電子で似たやつを探してそこのデータシートを参考にした。
<img width="600" alt="ノート" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914/ea739b1e-7dec-dcec-4cbb-8bca0ef32a36.jpeg">
なんとなくで残していたノートだが、電子部品とライブラリは数多あるので何を使ったか残すのはいいことだと思った。
書き間違えることもあるのでボールペンはフリクションで消せるやつにしてる。

上記の本を参考に（一部本にないが応用して）、
* Lチカ
* CdSでの明るさ測定
* タッチセンサー
* passive buzzerで音を鳴らす
* 超音波センサーでの距離測定
* 赤外線リモコン
* フルカラーLED
* 可変抵抗でLEDの光量調整
* LCDへの文字の表示
* 温度湿度センサー
* Processingとfirmataプロトコルでの連係
* サーボ

等をやった。

### ESP32
本の内容を一通り終えるとだいぶ知識が身についた。
この段階でArduino UNOでは物足りなくなってきたので、
WifiとBLEが使える、ESP32を買った。
https://www.amazon.co.jp/dp/B07MH58JS2

ネットの記事を参考に、
* センサーの値をGoogleスプレッドシートに書き込んだり
* Bluetoothキーボードとして認識させたり

等をした。
<img width="600" alt="ESP３２" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914/537e01f2-60ef-0721-6c5b-c2ae2d13047b.jpeg">

## 開発環境について
Arduinoは、C言語を拡張したArduino言語というのを使っており、IDEを使ってUSBで接続されたマイコンにプログラムを書き込む。
ESP32もArduino言語で動かせる。
構文も簡単なのでRuby以外好きになれない自分にも拒否反応はなかった。
以下はLチカのサンプル
```c
const int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}
```

最初はArduinoが用意している [Arduino IDE](https://www.arduino.cc/en/software) を使って開発を行なっていたが、次第に内臓のエディタに不安を覚えたので、いまは [PlatformIO](https://platformio.org/) という VSCode のプラグインを使っている。

## スターターキット以外に買ったもの
* マルチメータ
* はんだごて（※スターターキットの中にピンヘッダを取り付けないといけないやつがあったので、そのタイミングで購入）
* はんだ
* はんだ吸取り線
* コテ先クリーナー
* 26AWGワイヤー
* ニッパー
* 単３×４電池ケース(※USBを抜いて単体で動くか確かめたかったので。単体で動くとちょっと感動した。電池が1.5Vということもこのとき初めて知る)
* 電解コンデンサ0.1uF〜1000uFの24種類セット
* アルミホイル(※自作タッチセンサーのため。抵抗とアルミホイルだけでタッチセンサーができるのはおもしろかった)

## 所感
Rubyist なので最初は mruby を触ろうかと思ったがめんどくさそうなのでやめた。マイコンに対する動作要件や環境構築等も知識がないため躓いたらやだなと思って。ライブラリもなさそうだし。
Rubyを触るとしたら普通のRubyをRaspberry Piに入れて、[pi_piper](https://github.com/jwhitehorn/pi_piper)で操作するとかかな。
Raspberry Piはいま値段が高いので、当分はArduinoを触ると思う。

４年前のobnizのときと違って、Arduinoにのめりこめてるのは簡単なLチカから仕組みを理解することを意識して進めてこれたからだと思う。
あと、電子工作は簡単なサンプルが動いただけでもなんとも言えない万能感を覚えるのも理由だと思う。

## 今後
ATTiny85という200円以下で買えるマイコンがArduinoで動かせるらしいので試してみたい。
https://akizukidenshi.com/catalog/g/gI-09573/

あとはセンサー類をいろいろと試したり、ユニバーサル基板に手はんだしたり、ドリルで穴開けて基板をケースに入れたり、電池でどのくらい持つか電力消費を計算したり。
何か使えるものを作れるようになるには、まだできるようにならないといけないことがたくさんあるが当分は電子工作にはまっていると思う。