Arduino で遊んでみたのでその覚書。
Contents
環境
- Arduino UNO SMD R3
- Arduino Ethernet Shield 2
- 開発環境: Ubuntu 18.04
セットアップ
Arduino IDE のインストール
本家からダウンロード。
手順なども本家に詳しいガイドがある。
Linux の場合は、最終的に自分がおきたい場所に展開後、中で $ ./install.sh
。
一般権限で行うと展開場所に対するメニューエントリーやデスクトップショートカットなどを作成するのみ。
管理者権限で行うと、システムパスからリンクを張るような動作になっているようだが、あまり必要ないと思う。
デバイスのアクセス権限設定
Linux の場合は、IDE の実行ユーザーが Arduino のデバイスファイルに読み書きできる必要がある。
デバイスファイルは /dev/ttyACM*
になる。
dialout
グループにユーザーを追加して、ログアウト/ログインすれば反映される(はず)。
私は面倒なので今回は $ sudo chmod 666 /dev/ttyACM*
とした。
(セキュリティ的にどうなのかは知らないが、本番環境ではないのでまぁいいでしょう)
ひとまず動作確認
IDE で C++チックな "Arduino言語" でスケッチ(ソースコード) を書いて、コンパイル, 転送という流れ。
よく記載されているのが、基盤上のLEDを明滅させるスケッチ。
1 2 3 4 5 6 7 8 9 10 |
void setup(){ pinMode(13, OUTPUT); } void loop(){ digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } |
digital I/O 13ピン がLEDに直結されているので、
これを時間を空けて上げ下げすると LED が明滅する。
Arduino UNO の入出力PINアサイン
本家の DOCUMENTATION に記載がある。
電源
外部電源は
- USB: 5V, 0.5-0.9(?)A
- 外部電源DCジャック: 7-12V, 1A
- 外部電源ピン(Vin, GND): 7-12V, 1A
デジタルI/O
14ピン, うち2ピンは RX/TXに割り当てられている。
基盤上に "~" 付きでラベルされている 3, 5, 6, 9, 10, 11 は 8bit-PWM制御可能。
digitalWrite の代わりに、analogWrite(10, 0xA0)
とかすれば良い。
ピン#13 は基盤上のLED に直結されているので、開発初期においては、ステートを視覚的に確認しやすい。
ADC
6チャンネル, 10ビット。
外部駆動電源ピン
3.3V, 5V, GND など。
Vin は少しややこしくてここから供給することもできるが、
他から供給している時は、3.3V や 5V に調整される前の電源にアクセスできる。
DCジャックから 9V を供給すると、このピンは 9V になる。
その他
- SCL/SDA: I2C通信用
- AREF (Analog reference): ADCの dynamic range を決める基準電圧
Ethernet Shield 2
新しめの IDE は各種ライブラリの導入も簡単にできるようになっている。
メニュー: スケッチ → ライブラリをインクルード → ライブラリを管理 からマネージャを起動、
検索から "Ethernet2" を探して、右のインストールを押下。
これでライブラリと共に、example も合わせて導入される。
メニュー: ファイル → スケッチ例 → Ethernet2 以下に動作するサンプルがある。
"Ethernet Shield 2" では "Ethernet2" ライブラリを使うのがポイントらしい。(出展失念)
やったこと
- シリアル通信による読み書き
- ブラウザ越しに読値などを表示
- digital I/O からの供給電源のON/OFF制御
やりたいこと
- I2C によるセンサ, 他機器の制御, 読み出し
- PoE (Power over Ethernet) による配線簡素化
最終的にやりたいこと
- Vin から昇圧して外部機器に供給
- digital I/O から FET/photo-coupler で一部電源供給を切入, reset/latch解除など
- ADC, センサなどスロー系を読み出し、読値を Ethernet 越しに DBへ記録