6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

日本Androidの会秋葉原支部ロボット部Advent Calendar 2018

Day 25

ドライバーレスArduino互換機(まなぼ~ど改め)あそぼ~ど

Last updated at Posted at 2018-12-24

前記事「デバドラ不要usbhidでアップロードできる教育系arduino」で、とりあえず動作したドライバーレスArduino互換ボードの製品化に向けたブラッシュアップについて記述します。
###まなぼ~ど改め「あそぼ~ど」
ボードの名前は、学ぶというより、遊ぶほうがしっくりくるかな~と
KIMG2540~2.JPG
manaboard-sch-mod.png
###変更した部分
基になったbootmon-1127から変更したソフト・ハードについて以下で説明します。

###ブートローダーとユーザーアプリの切換について
電源投入やリセットスイッチを押した時、ブートローダーかユーザーアプリを以下の条件で起動します。
・USB接続時はブートローダーを起動、ユーザーアプリのアップロード後にユーザーアプリを起動。
・USB未接続時は、ユーザーアプリを起動。
USB接続状態は、"USBDATA-"端子をUSB給電から1.8KΩプルアップ、10kΩプルダウンしてレベル判別しています。

main.c 変更部分
	/* jump	to application if jumper is	set	*/
//	    if(bootLoaderCondition()){
	/* jump	to application if DMINUS_BIT is Low	*/
        if((PIND & (1 << USB_CFG_DMINUS_BIT)) ) {

充電池運用での操作手順です
1)USB未接続、電源スイッチONでユーザーアプリ起動
2)USB接続、リセットスイッチ押してユーザーアプリアップロード待ち
3)ArduinoIDE等でユーザーアプリをアップロード、完了後にユーザーアプリが起動
4)USB切り離してもユーザーアプリ継続、リセットスイッチ押すと、ユーザーアプリ再起動
5)利用終了時に電源スイッチOFF

###電源周りとLipo充電池の電源制御
サーボやDCモータの給電はLipo充電池直結です。
MPUは3.3Vレギュレータから給電します。
USB給電から3Ω経由でLipoを充電します、充電完了でLipo内臓コントローラーが電池を回路から切り離すので3直列の赤LEDが点灯します。
電源スイッチでLipo電池を回路から切り離します。

###頒布するために、VID/PIDライセンス入手
試作では、V-USBで許諾されているホビー自作ライセンスのUSB VID/PIDを使っていました。
頒布するためには、VID/PIDライセンスを確保する必要があります。少量(一万個まで)であればオープンソース向けのpid.codesやATMELMPU向けのmicrochip usblicensingで無料ライセンスを入手できます。
(参考)USBのベンダーIDとプロダクトIDの話

入手したVID/PIDやVENDOR_NAME,DEVICE_NAME等をソースコードに定義して、BOOTLOADHID.exeとbootloaderファームウエアを生成します。

usbconfig.h
/* -------------------------- Device Description --------------------------- */

#define  USB_CFG_VENDOR_ID       0xD8, 0x04
/* USB vendor ID for the device, low byte first. If you have registered your
 * own Vendor ID, define it here. Otherwise you use obdev's free shared
 * VID/PID pair. Be sure to read USBID-License.txt for rules!
 */
#define  USB_CFG_DEVICE_ID       0xXYXY
/* This is the ID of the product, low byte first. It is interpreted in the
 * scope of the vendor ID. If you have registered your own VID with usb.org
 * or if you have licensed a PID from somebody else, define it here. Otherwise
 * you use obdev's free shared VID/PID pair. Be sure to read the rules in
 * USBID-License.txt!
 */
#define USB_CFG_DEVICE_VERSION  0x00, 0x01
/* Version number of the device: Minor number first, then major number.
 */
#define USB_CFG_VENDOR_NAME     'T','i','i','s','a','i', 'D','i','p','J','p',
#define USB_CFG_VENDOR_NAME_LEN  11
/* These two values define the vendor name returned by the USB device. The name
 * must be given as a list of characters under single quotes. The characters
 * are interpreted as Unicode (UTF-16) entities.
 * If you don't want a vendor name string, undefine these macros.
 * ALWAYS define a vendor name containing your Internet domain name if you use
 * obdev's free shared VID/PID pair. See the file USBID-License.txt for
 * details.
 */
#define USB_CFG_DEVICE_NAME     'a','s','o','b','o','a','r','d'
#define USB_CFG_DEVICE_NAME_LEN  8
/* Same as above for the device name. If you don't want a device name, undefine
 * the macros. See the file USBID-License.txt before you assign a name if you
 * use a shared VID/PID.
 */

変更済のbootmon-1127ソースコードはこちら


###あそぼ~ど の使い方

###基板レイアウト
manaboard.png
BATT: LIPO充電池端子でUSB端子側がマイナス(黒ケーブル)
SW: 電源スライドスイッチでUSB端子側が電源ON
RstSW: リセットボタン
M1: モーター1
M2: モーター2
LED6: D13に接続された動作確認用LED
LED1,2,3: Lipo充電完了時に点灯
LED4.5: USB通信時に点滅
デジタル端子(D3~D13)
 黄色が信号線、黒が0V、赤色が3.3V(300mA)
アナログ端子(A0~A7)
 黄色が信号線、黒が0V、赤色がLipo電池の電圧(4.2V~3V)

###あそぼ~ど の起動手順

ボードをUSBに挿して電源スライドスイッチON(USB側),リセットボタンを押してブートローダーを起動、コントロールパネル-ハードウェアとサウンド-デバイスとプリンターを開いてUSBデバイス"asoboard"が追加されていることを確認します。

###ArduinoIDE/Ardublockの使い方
ArduinoIDE/Ardublockでbootloadhid.exeを取り替えてから起動します。
変更済Arduino+Ardublockファイル一式 arduino-1.8.9_ASBorg.zipはこちら
ArduinoIDEでは、ボードをstuduino mini、書込装置をstuduino miniに設定します。シリアルポートは使わないので、ポート番号の設定は何番でもいいので何か設定しておきます。

Blink等のサンプルスケッチを開いて、アップロードします。
アップロード完了すると、ボード上でアプリが実行されます。
ArduinoIDE.png

Ardublockではモーターブロックが用意されていないので、サブルーチンを作ってみました。
M1(speed),M2(speed)で2つのモータをスピード制御できます。
speedパラメーターは、正転0~255、逆転-1~-255 です。
AsbMotorTest.png

###StuduinoBPEの使い方

変更済StuduinoMiniBPEファイル一式 StuduinoMiniASB.zipはこちら
StuduinoBPEでは初回のみ、「編集-基板の選択」をstuduino mini単体に設定し、
「編集-入出力設定」で、「チェックを全てはずす」をクリックしてから、モーターのチェックボックス等をチェックします。
stm3.png
「実行-プログラムの作成・転送」の前にボードをUSBに挿して電源スイッチON,リセットスイッチを押してブートローダーを起動、USBデバイス"asoboard"が追加されていることを確認します。
アップロード完了すると、ボード上でアプリが実行されます。
最初のテストはモーターを回してみましょう。


###ロボットカ~に仕立ててみました
かまぼこ板をボディにしてロボットカ~に仕立ててみました
ちびギアモーターを左右駆動前輪に、Lipo充電池とちびボールキャスターを裏面に両面テープで貼付けてあります
画像

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?