ArduinoとAquesTalkをI2Cで接続してみました
配線は以下の通り
| Pin | AquesTalk | -> | Arduino |
|---|---|---|---|
| 1 | /RESET | RESET | |
| 4 | SMOD0 | GND | |
| 5 | SMOD1 | 5V | |
| 7 | VCC | 5V | |
| 8 | GND | GND | |
| 20 | VCC | 5V | |
| 22 | GND | GND | |
| 27 | SDA | A4 | |
| 28 | SCL | A5 |
SMOD0 と SMOD1 については技術資料の 表9.1 通信モード を参照
I2Cで接続するには SMOD0 = 0 、 SMOD1 = 1 にする必要があります
あとは12番の AOUT をアンプの IN+ 、 GND を IN- に接続します
技術資料の 5. 基本回路 にある回路図を見ると、これ以外に VCC と AOUT にコンデンサが追加されています
これはバイパスコンデンサというものらしく電源の安定化やノイズの発生を抑えたりする役割があるそうです *1
とりあえず、無しでも動きました(ぇ
他に 9.2. I2C通信 の部分を見ると SDA 、 SCL 共に 5KΩ 程度のプルアップ抵抗が必要とあります
プルアップ抵抗なんですが調べたところ標準の Wire.h を使う場合Arduino内蔵の抵抗で問題なさそうなので *2 *3
これも無しで試したところ、動きました
というわけでAquesTalk以外に特に部品を追加することなく準備ができました
動作確認に使用したスケッチはGitHubにありますがここに貼り付けておきます *4
#include <Wire.h>
#define PICO_I2C_ADDRESS 0x2E
void setup() {
Wire.begin();
}
void loop() {
isReady();
Wire.beginTransmission(PICO_I2C_ADDRESS);
Wire.write("yukkurisiteittene\r");
Wire.endTransmission();
// send once
while(1) {}
}
void isReady() {
while(1) {
Wire.requestFrom(PICO_I2C_ADDRESS, 1);
while(Wire.available() > 0){
if(Wire.read() == '>') {
return;
}
delay(10);
}
}
}
