見出し画像

Petoi Bittle 入門 (5) - NyBoard

以下の記事を参考に書いてます。

NyBoard V1_0

前回

1. NyBoard V1

NyBoard V1」は、猫型ロボット「Nybble」用に設計されたArduino互換のあコントローラ「NyBoard V0」を犬型ロボット「Bittle」用に改良した次世代版です。これまでのバージョンとの互換性を保ちつつ、より使いやすいようにデザインが一新されています。

画像1

・メインチップに「Atmel ATMega328P」を採用していますが、20MHzに加速せず、16MHzを採用しています。これにより、「Arduino Uno」と互換性を確保しています。

・「PCA9685」は16チャネルのPWMチャンネルを制御します。ピンの順番は変わっていますが、マッピングはソフトウェア内で処理されるので、ボード上のインデックスを読む必要はありません。

・6軸モーションセンサー「MPU6050」は、PCB上に設計されています。内蔵DMP(Digital Motion Processor)をサポートしており、モーションデータを計算するだけでなく、独自のフュージョンアルゴリズムやフィルタリングアルゴリズムに生データを提供します。

・スキル用の定数を保存するため、8KBの「オンボード I2C EEPROM」を引き続き採用しています。

・電源システムを再設計し、より安定した電源を供給できるようになりました。また、周辺機器の構造も最適化されています。

・ワイヤレスでのアップロードや通信が可能な「Bluetoothドングル」の搭載を開始しました。全て通信ポートのボーレートは、デフォルトで「115200」に設定されています。

・「リセットボタン」は背面に配置されています。

・「Seeed Studio」の拡張モジュールのプラグアンドプレイに「4x グローブソケット」を追加しました。ソケットの他に標準的な2.54mmの「スルーホール」も用意しています。

・7個の「WS2812 RGB LED」をボード上に追加しました。

・「バッテリーソケット」は逆になっています。

2. NyBoard V1_0の構成

「NyBoard V1_0」の構成は、次の通りです。

画像2

3. オンボードコンポーネント

◎ メインコントローラ
「NyBoard V1_0」では、メインコントローラーに「Atmel ATMega328P-MUR」を採用しています。レイアウトを考慮して「QFN32」の小型版を採用していますが、通常の「TQFP32」とほぼ同じです。「ATMega328P」は、5V電源の16MHzで動作します。2KBの「SRAM」、32KBの「Flash」、1KBの「オンチップEEPROM」を搭載しています。「Arduino Uno」と同じブートローダを搭載し、シリアルポートからスケッチをアップロードすることができます。

◎ I2Cスイッチ
メインチップは5Vで動作していますが、他のペリフェラルは3.3Vのロジックレベルで動作しています。「PCA9306」を使って、「ATMega328P」の「I2Cバス」を3.3Vに変換します。また、バス上に「I2Cスイッチ」を追加しました。これを "Arduino "または "Raspberry Pi "に切り替えるることで、オンボードのペリフェラルのI2Cマスターを変更することができます。

◎ MPU6050
MPU6050」は、機器の動作状態を取得するために、多くのDIYプロジェクトで広く使用されています。「MPU6050」は、3つの加速度と3つの角度の運動状態を検出します。また、「DMP」を搭載しており、メインコントローラの演算リソースを使わずに直接状態を計算することができます。「NyBoard V1_0」の「I2Cアドレス」は「0x68」です。割り込み端子は、「ATMega328P」の「PD2ポート」(または「Arduino Uno」のD2ピン)に接続されています。
「MPU6050」のライブラリはたくさんありますが、ここでは「I2CDev/6050DMP」を使用しています。他のバージョンを使うこともできます。

画像5

◎ PCA9685とPWMサーボポート
PCA9685」は、「I2Cポート」からの指示により、PWM12ビットの16チャンネルをファンアウトします。そのアドレスは「0x40」に設定されています。「PCB」には16個の「PWMインデックス」が印刷されていますが、ピンマッピングはソフトウェアで行われるため、実際に読む必要はありません。
物理的な配線パターンは、これまでのボードと同じです。ただし、サーボのピンの向きを確認する必要があります。通常のサーボには、PWM、電源(2S)、グランド(GND)の3つのピンがあります。グランドはサーボの黒線に接続する必要があります。
「NyBoard V1_0」では、サーボの電源は2Sリチウムイオンバッテリーに接続されています。付属のサーボは8.4V入力に対応するように設計しています。
通常のサーボは6Vで動作します。SG90のような通常の9gのサーボを直接ボードに接続してはいけません。「PCA9685」には「Adafruit PWM Servo Driver Library」を使用しています。

◎ EEPROM
モーションおよびスキルは、8KBの「オンボード I2C EEPROM AT24C64」で保存します。そのI2Cアドレスは0x54です。スキルのルックアップテーブルは、「ATMega328P」の1KBの「オンチップ EEPROM」に保存されています。<EEPROM.h>を使用しています。新しいコードを作成する際には、これらの違いに気をつける必要があります。

◎ パッシブブザー
ブザーはPD5(またはArduino UNOのD5)で駆動します。電流は2N7002 MOSで増幅されます。

◎ 赤外線受信機
赤外線受信機として「VS1838B」を使用し、PD4(Arduino UnoではD4)に接続しています。これはArduinoのIRremoteライブラリで駆動され、対応するリモコンはNECフォーマットでエンコードされます。フラッシュを節約するために、IRremote.hで他のプロトコルを無効にすることができます。

◎ 電圧検出器
Petoiロゴの2つのLEDは、ボードの電源状態を示しています。左目は青で、ロジックチップを表しています。右目は黄色で、サーボ電源を表しています。NyBoard がバッテリーに接続されている場合は、両方の LED が点灯します。USBダウンローダーから電源を供給した場合は、青のLEDのみが点灯します。
バッテリーには逆流防止用のソケットがあります。電池の出力はADC7(またはArduino UnoのA7)に接続されており、オープンピンには通されていません。ADC7は、分圧器を介して電圧を集める。実際の電圧は、読み取り値の約2倍になります。バッテリー電圧の安全な範囲は10V以下です。

画像3

バッテリーの電圧が7.4V以下になった時点で充電してください。

◎ WS2812 RGB LED
NyBoardに「WS2812 RGB LED」(またはNeoPixel)を7個追加しました。ピン番号はD10です。これらは、「Raspberry Pi」用の「5V DC-DCパワーチップ」から電力を供給され、「ATMega328P」の5Vネットワークとは独立しています。そのため、LEDに電力を供給するためには、バッテリーを接続する必要があります。

◎ グローブソケット
プラグアンドプレイでの接続に便利なグローブソケットを採用しました。ソケットは3種類あります。

画像4

◎ 電源システム
メインのチップには、ノイズ除去と安定性向上のため、「LDO」(Low-dropout)リニア・レギュレータを使用しています。「LM1117-5V」と「XC6206P-3.3V」を使用して、5Vと3.3Vのチップに電源を供給しています。3.3VのLDOは、効率を上げるために5Vの「LDO」の後に直列に接続されている。
バッテリーと「LM1117-5V」の間には、誤接続による破損を防ぐためにダイオードが入っている。USBアップローダには、電流を制限してUSBポートを保護するための自己回復型ヒューズ(6V 500mA)があります。
「Raspberry Pi」は消費電力が大きいので、「DC-DC」は「TPS565201」を選び、5V 3Aの出力を実現しています。ピーク出力は5Aにすることができ、高温/電流/電圧保護機能を備えています。チップが4A以上、100℃以上の出力を続けると、温度が正常に下がるまで電源を遮断します。「WS2812 RGB LED」にもこのDC-DCソースから電力が供給されます。
サーボは2Sリチウムイオン電池で直接駆動しています。電源やNyBoardのピンをショートさせないように注意してください。

画像6

次回


この記事が気に入ったらサポートをしてみませんか?