床拭きロボットの製作(1)
Posted by arms22 on 2016年12月30日

DCモータのフィードバック制御をやりたくなったので、その実験用に床拭きロボットを作ることにしました。現状、木のフレームにブレッドボードとやっつけ感満載ですが、ある程度仕様が固まってきたらフレームは3Dプリンタで作って、専用の基板も起こしたいと思います。
メインのマイコンモジュールはAdafruit Feather M0 Bluefruit LE、モータドライバはPololu TB6612FNGデュアルモータドライバを採用しました。TB6612FNGの出力は2つありますが、並列にして電流を稼ぐつもり。
Pololuの直径25mmのエンコーダ付きギアードモータにタミヤのスポーツタイヤを付けています。バッテリーはニッケル水素直列6本の7.2Vを予定。ゆくゆくはラジコン用のリチウムイオンバッテリーに置き換えたい。
スポーツタイヤ付属のホイールハブがPololuのモータシャフトに合わなかったので3Dプリンタでホイールハブを作りました。タイヤとホイールも3Dプリンタで作れるといいな。
部品リスト
- Pololu 20.4:1 金属ギヤードモータ 25Dx50L mm LP 6V 48CPRエンコーダ付き
- Pololu 直径25mm金属ギヤードモータ用ブラケット 2個入り
- タミヤ スポーツタイヤセット(56mm径)
- Pololu TB6612FNGデュアルモータドライバ
- Adafruit Feather M0 Bluefruit LE
Blynkを使ってスマートフォンからAdafruit Feather M0 Bluefruit LEを制御する方法
Posted by arms22 on 2016年12月21日

Blynkとは?

Blynkプラットフォームのアーキテクチャ
インターネットを介してArduinoやRaspberry等を遠隔制御するアプリを構築するためのiOS/Android向けのプラットフォームです。ウィジェットと呼ばれる部品をドラッグ&ドロップで画面に配置することで、デバイスを制御するためのリッチなUIを簡単につくることができます。またデバイス側のコードを記述することなく直接ハードウェア(デジタルピンまたはアナログピン)を制御することができます。
基本的にデバイスとスマートフォンはBlynk Cloudを介して通信するのですが、最新のバージョンではBLE(Bluetooth Low Energy)を使ってデバイスと直接通信することができるようになりました。今回はこの機能をつかってFeather M0を制御してみたいと思います。
Blynkアプリのインストールとアカウントの作成
まずはBlynkアプリをインストールします。インストールが終わったらBlynkアプリを起動し、新しいアカウントを作成してください。Blynkアプリで作成したプロジェクトデータはクラウド上で管理されるので、スマートフォンが変わってもプロジェクトを作り直す必要はありません。
For iOS
https://itunes.apple.com/us/app/blynk-control-arduino-raspberry/id808760481?ls=1&mt=8
For Android
https://play.google.com/store/apps/details?id=cc.blynk
Blynkプロジェクトの作成

ロボットコントローラー風のUI
Blynkアプリを起動して”Create New Project”をタップし新しいプロジェクトを作成します。HARDWARE MODELはArduino Zeroを選択します。AUTH TOKENはArduinoのスケッチに埋め込むのでE-Mailで自分宛てに送信しておきましょう。空っぽのプロジェクト画面が開いたら画面をタップして、上の画像のようにBLEウィジェット、ジョイスティック、ラベル、LED 2個を配置します。

ウィジェットの設定
ウィジェットにピン、ラベル、値の範囲等設定します。ウィジェットには仮想ピン(V1〜V255)を割り当てます。BlynkアプリとFeather M0は仮想ピンを通してデータのやり取りを行います。実際のハードウェアの制御はBlynkアプリから送られたきたデータをもとにFeather M0で行います。
ハードウェア

実態配線図

回路図
DCモータを動かしてみたかったのですが、回路がやや複雑になるのでとりあえずLEDをモータに見立てて制御してみます。ピン12とピン11にLEDを接続します。A0に接続している半固定抵抗は使用していないので省略してOKです。
BLEライブラリとBlynkライブラリのインストール
Arduino IDEにFeather M0 Bluefruit LE用のBLEライブラリとBlynkライブラリをインストールします。Arduino IDEを起動してライブラリマネージャを開き(スケッチ > ライブラリをインクルード > ライブラリを管理)、Adafruit BluefruitLE nRF51とBlynkをインストールします。
サンプルスケッチ
Blynkライブラリのサンプルスケッチをベースにジョイスティックデータの取得とLEDの制御、Blynkアプリ側のラベルとLEDの制御を追加しています。auth[]の中身をAUTH TOKENに書き換えてFeather M0に書き込んでください。
BlynkアプリからFeather M0にデータを送る
次のように仮想ピンに対応するBLYNK_WRITE関数を実装し、param.asInt()で値を取得します。
// 仮想ピンV1の書き込み
BLYNK_WRITE(V1)
{
// 仮想ピンV1を通してジョイスティックの値を読み取る
int x = param[0].asInt();
int y = param[1].asInt();
(省略)
}
Feather M0からBlynkアプリにデータを送る
次のように仮想ピンに対応するBLYNK_READ関数を実装し、Blynk.virtualWrite()で値を書き込みます。
// 仮想ピンV2の読み込み
BLYNK_READ(V2) // ウィジェットの読み込み周期で呼び出される(1秒〜)
{
// 仮想ピンV2にスピードを書き込む
Blynk.virtualWrite(2, speed);
}
ウィジェットをPUSHモードに設定すると、任意のタイミングで値を書き込めます。
動かし方

Feather M0を通電した状態でBLEウィジェットの設定画面を開き、”Connect BLE Device”から”Adafruit Bluefruit LE”を選びます。プロジェクト画面に戻って画面右上の三角をタップするとウィジェットが動き出します。ジョイスティックをぐりぐりするとFeather M0につながったLEDが点灯し、ジョイスティックを倒し込んだ量に応じた値=Speedがラベルに表示されます。ジョイスティックを前に倒すとFWD-LEDが、後ろに倒すとBCK-LEDが点灯します。
参考記事
Blynk - Getting Started
http://docs.blynk.cc/#getting-started
Adafruit Feather M0 Bluefruit LE
posted with amazlet at 16.12.15
スイッチサイエンス
売り上げランキング: 172,942
売り上げランキング: 172,942
Arduino Zero/M0 互換ボード「Adafruit Feather M0 Bluefruit LE」の開発環境を準備する。
Posted by arms22 on 2016年12月03日

Arduino UNOよりちょっとだけ速くてBLEが使えるボードが欲しくなったので、Arduino Zero/M0 互換のAdafruit Feather M0 Bluefruit LE を買いました。このボードの紹介と開発環境の構築手順についてまとめておきます。
Adafruit Feather M0 Bluefruit LEとは?
Adafruit社製のArduino Zero/M0互換ボードです。コアはArduino Zero/M0と同様、Atmel社のARM Cortex M0プロセッサ「ATSAMD21G18」を搭載していて、クロックは48MHz、3.3Vで動作します。またNordic Semiconductor社のnRF51822チップを採用したBLEモジュール「MDBT40」を搭載しています。
主な仕様:
- ATSAMD21G18搭載
- 動作クロック:48MHz
- 動作電圧:3.3 V
- FLASH:256 KB
- RAM:32 KB
- EEPROM:なし
- GPIO:20 ピン
- PWM:8 ピン
- アナログ入力:10 ピン
- DAC出力:1ピン
- インターフェース:シリアル、I2C、SPI
- リチウムポリマー充電回路搭載
Arduino IDEのインストール
続いて開発環境の構築手順について解説します。まずはArduinoのウェブサイトでArduinoソフトウェア(以下、Arduino IDE)の最新バージョンをダウンロードします。(記事執筆時点で1.6.13が最新)
Arduino - Software
https://www.arduino.cc/en/Main/Software
SAMDコアインストール
次にSAMDボード向けのコンパイル環境をインストールします。
- ボードマネージャを開く(ツール > ボード > ボードマネージャ)
- Arduino SAMD Boards (32-bits ARM Cortex-M0+)」をインストール
Adafruit SAMDボード情報追加
AdafruitのSAMDボード情報(Adafruit Feather M0)を追加します。
- 環境設定を開く(Arduino > Preferences…)
- 「追加のボードマネージャのURL」に次のURLを入力
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
※他のURLがすでに入力されている場合、それぞれのURLをカンマ”,”で区切って入力してください。 - ボードマネージャを開く(ツール > ボード > ボードマネージャ)
- Adafruit SAMD Boards をインストール

ここで一旦、Arduino IDEを再起動。
サンプルスケッチ
環境が整ったのでテストとして次のスケッチを書き込み、LEDの点滅動作を確認します。
次のようにボードを設定し、書き込みボタンを押します。しばらくしてLEDが1秒周期で点滅はじめたら書き込み成功です。
- ツール→ボード→Adafruit Feather M0 (USB Native Port)
- ツール→シリアリポート→Adafruit Feather M0が繋がっているポートを指定してください
AdafruitのWebサイトではBLEモジュールを使ったアプリケーションの例が多数紹介されています(参考URLを参照)。次回はBLEモジュールを使ったスケッチの書き方について紹介したいと思います。
参考URL
Adafruit Feather M0 Bluefruit LE - スイッチサイエンス
https://www.switch-science.com/catalog/2752/
Adafruit Feather M0 Bluefruit LE : Adafruit Industries, Unique & fun DIY electronics and kits
https://www.adafruit.com/product/2995
Overview | Adafruit Feather M0 Bluefruit LE | Adafruit Learning System
https://learn.adafruit.com/adafruit-feather-m0-bluefruit-le/overview
Adafruit Feather M0 Bluefruit LE
posted with amazlet at 16.12.15
スイッチサイエンス
売り上げランキング: 172,942
売り上げランキング: 172,942
Adafruit Feather M0 Basic Proto
posted with amazlet at 16.12.15
スイッチサイエンス
売り上げランキング: 260,974
売り上げランキング: 260,974
該当の記事は見つかりませんでした。