Blog Archives

shotaのマイクロマウス研修15[回路設計③ 物体検出センサ回路]

こんにちは、shotaです。

社員研修として、オリジナルマウスの製作しています。

[前回の記事]では電源回路について書きました。

今回は物体検出センサ回路(通称:壁センサ回路)について書きます。

 

物体検出センサ回路

物体検出センサ回路のブロック図はこのようになりました。

点線から左側が内部回路で、上半分が発光回路、下半分が受光回路です。

点線から右側が外部回路です。回路はありませんが、赤外線を反射する壁があります。

 

物体の検出にはフォトリフレクタ[LBR-127HLD]を使用します。

フォトリフレクタには赤外線発光ダイオードとフォトトランジスタが内蔵されており、ダイオードが発光した赤外線が壁で反射し、フォトトランジスタで受光されることで壁を検出できます。

壁がない場合は、赤外線が反射されず、フォトトランジスタが受光できません。

 

回路図はこのようになりました。

自分のマイクロマウスには、この検出回路が4つ搭載されます。それぞれ、前(左)・左・右・前(右)の壁を検出します。

 

それでは発光回路・受光回路について説明します。

発光回路

回路図は[HM-StarterKit]を流用していますが、より詳しい発光回路の動きについては[マイクロマウスのセンサについて②]を参考にしました。

 

参考記事に書いてあるとおり、環境光による壁の誤検知を防ぐため、発光ダイオードをパルスでON/OFFさせます。パルスの周波数は1kHzとします。

発光ダイオードを1kHzでON/OFFすると、それに伴い電源電流が変動します。この変動をなだらかにするためにローパスフィルタを搭載しています(回路図のR5とC11)。

素子の定数はHM-StarterKitの値をそのまま使用しています。電源ICがHM-SterterKitのものから変わっているので、実際に動かした時の波形を見て定数を変えようと思います。(もしかしたらフィルタ回路が不要かもしれません。)

 

ON/OFFするパルスは、ESP32から出力します。発光した赤外線が別の受光部に入らないように、4つのダイオードを別々のタイミングで発光させたいです。

そのためには、パルスの出力端子も4つ必要ですが、ESP32の端子数が足りないため出力端子を2つに減らしています(回路図のIRLED_R_FLと、IRLED_L_FR)。

本来は別々に点灯させる、RとFLを同時に点灯させます。同じようにLとFRも同時に点灯させます。

RとLのセンサは角度が傾いているので、センサRとFL、LとFRのペアで発光すれば、誤検知しません(おそらく)。

受光回路

こちらも、HM-StarterKitの回路図を流用します。

フォトリフレクタに内蔵されているフォトトランジスタは、ベース電流の入力が光の入力に置き換わったトランジスタです。

[赤外LEDとフォトトランジスタ –

続きを読む ›

Posted in DCマウス研修, ブログ, 研修


マイクロマウス研修(kora編)[22] STM32マイコンでLチカ

こんにちは。koraです。

前回、CubeMXでSTM32の初期化コードを作成しました。今回はそれを使ってLEDを点滅させます。

Lチカプログラムの作成
コードのインポート

CubeMXで生成したコードをSW4STM32にインポートします。

SW4STM32を起動して、FileメニューからImportをクリックします。

Existing Projects into Workspaceを選択してNextをクリックします。

Import Projectsウィンドウが開くので、Select root directoryのBrowseボタンをクリックして、CubeMXで生成したコードが入っているフォルダ(前回作成したblink_led)を選択します。

Import ProjectsウィンドウでFinishボタンをクリックすれば、インポートされます。
画面左側のProject Explorerにblink_ledプロジェクトが追加されているので、横の「>」をクリックして中身を開きます。Srcフォルダの下にmain.cファイルがあるので、ダブルクリックして画面中央のエディタに表示します。

Lチカコード追加

CubeMXで生成されたmain.cファイルには、次のようなループが書かれています。

/* USER CODE BEGIN ○○○ */ と /* USER CODE END ○○○ */ に挟まれている部分は、CubeMXで再度コードを生成したときに上書きされません。

なので、次のように書き加えます。

頭に「HAL_」とつく関数はSTM32の機能を使いやすいようにあらかじめ用意されたものです。(マニュアルはこちら
HAL_GPIO_TogglePin()はGPIO出力に設定されているピンのHigh/Lowを切り替えることができる関数です。LEDとつながっているGPIOのポート(GPIOC)とピン番号(GPIO_PIN_15)を指定します。
HAL_Delay()は指定した数字の分だけミリ秒単位で待機する関数です。上の例では100ms待機します。

ビルド

ProjectメニューからBuild Allをクリック、あるいはCtrl + Bでビルドします。問題なければ画面下部のコンソールにBuild Finishedと表示され、実行ファイルであるelfファイルが生成されます。

Lチカプログラムの実行

STM32マイコンへの書き込みには、CubeProgrammerを使用します。

CubeProgrammerのインストール

CubeProgrammerはSTM32にプログラムを書き込んだり、デバッグができるソフトウェアです。こちらのページからダウンロードします。
※最新版でないと新型のマイコンに書き込めないことがあります。今回はバージョン2.0.0をインストールしました。

接続&書き込み

USBシリアル変換モジュールとマウス基板を接続します。STM32F7は電源を入れる時orリセット時にマイコンのBOOTピンをHIGHにしていれば、書き込み可能になります。この基板では書き込みボタンを押しながら電源を入れます。

CubeProgrammerを起動して、接続方法としてUARTを選択し、「CONNECT」ボタンを押します。

接続に成功したら、画面左端の「↓」ボタンを押して「Erase&Programming」画面に切り替えます。次に「Browse」ボタンで先ほど生成した実行ファイルを選択して「Start Programming」ボタンで書き込みを開始します。

「Run after programming」がチェックされていると、書き込み完了と同時にLチカプログラムが実行され、LEDが点滅を始めます。

次回

次回は、シリアル通信でマイコンからPCに文章を表示してみたいと思います。

続きを読む ›

Posted in DCマウス研修


マイクロマウス研修(kora編)[21] STM32マイコンの初期設定

こんにちは。koraです。

今回は、新型マイクロマウスに使うマイコンの初期設定を行います。

SW4STM32のインストール

HM-StarterKitではRenesasマイコンの開発環境としてCS+を使っていました。新型マイクロマウスに搭載しているSTM32マイコンの開発環境としては、SW4STM32(System Workbench for STM32)を使用します。

SW4STM32のインストーラをダウンロードするには、OpenSTM32 Communityにログインして、左端にあるMenu欄の「System Workbench for STM32」からダウンロードページを表示します。Windows版はWindows7のみ対応のように書いてありますが、一応Windows10でも動くらしいです。

ダウンロードしたインストーラを起動してインストールします。インストール完了後、SW4STM32を起動すると、workspaceを選択するように求められます。ここで選択したフォルダの下に、ソフトウェア関連のファイルを保存していくことになります。

STM32CubeMXのインストール

STM32CubeMXはSTM32マイコンの初期設定を視覚的に行うことができるソフトです。UARTやSPIやADCといった機能の初期設定用のコードも生成してくれます。こちらのページからダウンロードできます。ダウンロードが終わったらインストーラの指示に従ってインストールすればOKです。

プロジェクトの作成

CubeMXを起動したら、File → New Projectをクリックし、「New Project」画面を開きます。
検索欄に今回使用するマイコン名「STM32F732RE」を入力し、選択欄で「STM32F732RE」をクリックして、右上の「Start Project」ボタンをクリックします。

プロジェクトを作ったら、File → Save Project Asで、SW4STM32のworkspaceにプロジェクト名(今回はblink_led)を付けて保存します。

ピンの設定

プロジェクトが作成されると、まず「Pinout&Configuration」タブが表示されますので、回路図に合わせてピンひとつひとつにGPIOの出力やSPIのクロックといった機能を設定します。

クロックの設定

「Clock Configuration」タブを開いて、クロックの設定を行います。
できるだけ処理速度を高めたいので、CPUクロック(HCLK)を最大値の216MHzにします。この値が大きいほどマイコンの消費電力も大きくなるらしいですが、それは今後の動作を見て調整しようと思います。

コードの出力

「Project Manager」タブを開いて、「Toolchain/IDE」をSW4STM32にします。また、「Generate Under Root」にチェックを入れます。

次に、「Code Generator」ページで「Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral」にチェックを入れます。これにチェックを入れない場合、初期化コードがmain.cにまとめて書かれてしまい、ファイルが長くなって読みにくくなるためです。

設定が終わったら、画面右上の「GENERATE CODE」ボタンを押します。これで、STM32の初期設定が書かれたC言語のコードが出力されました。

次回

今回出力したコードから、LEDを点滅させるプログラムを作りたいと思います。

続きを読む ›

Posted in DCマウス研修


shotaのマイクロマウス研修14[回路設計② 電源回路]

こんにちは、shotaです。

社員研修として、オリジナルマウスの製作しています。

[前回の記事]では回路ブロック図について書きました。

今回は電源回路について書きます。

 

マウスの回路ブロック図(振り返り)

マウスの回路ブロック図は以下のとおりでした。

今回は、この左上部分の電源回路について書きます。

 

電源回路の回路ブロック図

電源回路のブロック図はこのようになりました。

点線から左側が外部回路で、LiPoバッテリが接続されます。

点線から右側が内部回路で、コネクタから始まり、スイッチやLDO、その先にはESP32マイコンやモータドライバが接続されます。

 

それでは、各ブロックの役割を左から順に説明します。

LiPoバッテリ

LiPoバッテリは、電源回路(広く言えばマウス回路)の電源供給源です。バッテリがなければ回路は動きません。

どのLiPoバッテリを使用するかは、動かしたい回路の電源電圧や消費電流などから選定します。

今回は[HM-StarterKit(通称ハムスター)]で使用しているバッテリ 3.7V 150mAhを使用する予定ですが、容量を何mAhにするかは実際に動かしてみて決めたいと思います。

ESP32はWiFiやBluetoothが使用できるので、150mAhでは容量が足りないことを懸念しています。

 

別のLiPoバッテリ使用する場合は、[Amazonで”lipo 3.7V”と検索]したり、模型屋さんでドローン用のバッテリを調べたりして入手しようと思います。

 

電源コネクタ

電源コネクタは、使用するバッテリのコネクタ形状に合うものを選びます。

今回はハムスターで使用しているものと同じ、JSTのZHコネクタを使います。

[ZHコネクタ データシート]

ケーブルが車体外に飛び出ないようにトップ型を選びます。

また、ケーブルを繰り返し抜き差しすることを想定して、スルーホールタイプ(表面実装タイプではない)を選びます。

(私はケーブルを外すときに、表面実装のコネクタを剥がした経験があります)

 

続きを読む ›

Posted in DCマウス研修, ブログ, 研修


マイクロマウス研修(kora編)[21] リフロー

こんにちは。koraです。

今回は、前回届いたプリント基板にはんだ付けをします。

マイクロマウスは基板が小さいのでほとんどの部品が表面実装部品です。これをリフロー(基板にクリームはんだを塗って部品を載せた後、全体を熱してはんだ付けする方法)で実装します。

リフロー実践

それではさっそくやってみましょう。まず次のものを用意します。

  • プリント基板
  • 実装する電子部品
  • ステンシル
  • クリームはんだ
  • ヘラ
  • 鉄の台
  • ネオジム磁石
  • 無水エタノール
  • キムワイプ
  • ステンシルとは、はんだを載せるところに穴が開いた型板です。Elecrowでプリント基板と一緒に発注しました。

    ステンシルを無水エタノールとキムワイプで綺麗に拭きます。これを基板と一緒にネオジム磁石で台に固定します。
    そしてクリームはんだを塗布します。小さなヘラで上からできるだけ一様に塗っていきます。

    塗り終わったらピンセットで一つ一つ電子部品を載せます。足の多い部品ほど難易度が高いので先にやると比較的楽と聞いたので、ここではマイコンから先に置いています。

    リフロー炉として一般的なホットプレートを使います。(※はんだは健康に良いものではないので、リフローに使ったホットプレートは食用には使わないようにしましょう。)
    ほとんど初めてのリフローなので、1、2個失敗するだろうと見越して3個作ります。

    はんだ付けができたものがこちらです。よく見るとマイコンがずれていたり、はんだブリッジしていたり、セラコンがチップ立ちしていたりと残念な出来です。

    この後、はんだごてを当てて修正し、なんとか使いものになる基板が1個だけできました。(あらかじめ3つ作っておいて良かった…。)

    次回

    できた基板にプログラムを書き込んで、LEDを点滅させてみたいと思います。

    続きを読む ›

    Posted in DCマウス研修


    マイクロマウス研修(kora編)[20] 新機体の基板発注

    こんにちは。koraです。

    前回設計したマウスの基板を、プリント基板メーカーに発注します。
    今回は、価格がお手頃とよく聞くElecrowのPCB Serviceに発注します。

    デザインルールの設定

    Elecrowで製造できる基板の仕様は、ここに載っています。

  • PCB fabrication specification
  • ビアの穴径の最小値は0.3mm(12mil)
    ランド径の最小値は0.6mm(12+6+6mil)
    配線の最小幅は0.15mm(6mil)
    配線同士のクリアランスの最小幅は0.15mm(6mil)

    KiCadのデザインルールはPcbnew → Setup → Design Rules → Design Rules Editorにあります。Global Design Rulesタブで全体の設定、Net Classes Editorでネットクラスごとの設定を行います。
    実は前回の設計の段階で設定していたのですが、もう一度確認します。

    どれも満たしているようなので、次のステップに進みます。

    ガーバーファイルの生成

    ガーバーファイルを生成します。ガーバーファイルはプリント基板の製造に使用されるデータです。
    Kicadでは、Pcbnew → File → Plotから出力することができます。

    2層基板で必要なデータは

  • F.Cu 表面の銅箔パターン
  • B.Cu 裏面の銅箔パターン
  • F.SilkS 表面のシルク
  • B.SilkS 裏面のシルク
  • F.Mask 表面のレジスト
  • B.Mask 表面のレジスト
  • Edge.Cuts 基板の縁
  • ですが、今回は4層基板で設計しているのであと2層分も必要です。

  • In1.Cu 内部の銅箔パターンその1
  • In2.Cu 内部の銅箔パターンその2
  • 必要な設定をした後、Plotボタンをクリックすれば、各レイヤーのガーバーファイルが出力されます。

    ドリル穴のデータは別に生成します。Plot画面下部のGenerate Drill Filesボタンを押して、次の設定画面に入力します。そしてGenerate Drill Fileボタンをクリックすれば出力されます。

    発注

    Elecrowの発注ページはこちらです。
    受け付けているファイル名は、発注ページの下部に書いてありますので、それに従って、ファイル拡張子を変更します。

  • 表面の銅箔パターン プロジェクト名-F.Cu.gtl → .GTL
  • 裏面の銅箔パターン プロジェクト名-B.Cu.gbl → .GBL
  • 表面のシルク プロジェクト名-F.SilkS.gto → .GTO
  • 裏面のシルク プロジェクト名-B.SilkS.gbo → .GBO
  • 表面のレジスト プロジェクト名-F.Mask.gts → .GTS
  • 表面のレジスト プロジェクト名-B.Mask.gbs → .GBS
  • 基板の縁 プロジェクト名-Edge.Cuts.gm1 → .GML
  • 内部の銅箔パターンその1 プロジェクト名-In1.Cu.g2 → .G1
  • 内部の銅箔パターンその2 プロジェクト名-In2.Cu.g3 → .G2
  • ドリルファイル プロジェクト名.drl → .TXT
  • これらのファイルをひとつのzipファイルにまとめてアップロードして、必要な設定を入力した後、支払いを済ませれば発注は完了です。
    データや設定に問題がなければ、製造が開始されます。

    続きを読む ›

    Posted in DCマウス研修


    マイクロマウス研修(kora編)[19] 新機体の設計

    こんにちは。koraです。

    今回は新機体の回路設計です。オープンソースの電子回路設計ソフトKiCadを使用します。

    回路図作成

    まず、新機体で使用するレギュレータやジャイロセンサなどの電子部品を考えます。HM-StarterKitの回路図はアールティのGitHubで公開されているので参考にします。新機体で使用する電子部品が決まったら、KiCadの回路図エディタ(Eeschema)を起動して、シート上へ配置します。

    マイコンにはSTM32を使用するので、マイコン周りの配線はNUCELOの回路図を参考にします。プログラムの書き込み方法も考えて配線します。書き込みについてはGetting started with STM32F7 Series MCU hardware developmentに書かれています。STM32F7シリーズではリセット時にBOOTピンをHIGHにしていれば、ブートローダが起動してプログラムを書き込めるようになるそうです。UARTで書き込む場合は、USART1とUSART3が使用できます。

    作成した回路図がこちらです。

    基板レイアウト作成

    今度はKiCadのプリント基板エディタ(Pcbnew)を起動します。Eeschemaで作成した回路図をネットリストというファイルにエクスポートして、Pcbnewに取り込みます。また、DXFファイルをインポートすることもできるので、CADで作成したマウスの形状をそのまま再現することができます。

    さっそく部品を配置してみましたが…マイコンの右側のピンが基板の左側に伸びていたりして全部の配線を繋げることができませんでした…。

    Eeschemaに戻ってマイコンのピンアサインからやり直します。というわけで戻って修正した回路図と基板レイアウトがこちらです。

    Pcbnewには3D Viewerもついています。直感的に確認できますし、なによりモチベーションが高まるので嬉しいです。

    次回

    いかにもマウスっぽい基板レイアウトができましたので、次回はこれをプリント基板メーカーに発注したいと思います。

    続きを読む ›

    Posted in DCマウス研修


    shotaのマイクロマウス研修13[回路設計①]

    こんにちは、shotaです。

    社員研修として、オリジナルマウスの製作を始めます。

    [前回の記事]ではオリジナルマウスの設計方針を決めました。[HM-StarterKit(通称ハムスター)]の回路を流用して、設計時間を短縮するということでした。

    今回から回路設計を始めます。

     

    マウスの回路ブロック図

    まずはじめに回路ブロック図を作ります。

    回路ブロック図を書くと、システムに必要な回路要素(ブロック)を把握でき、要素間の接続も確認できます。

    各ブロックに使用する素子・ICや、接続する電源電圧等を書いておくとより便利です。

     

    今回は簡易的な回路ブロック図を作成しました。

    [ハムスターの回路図]をベースにしていますが、マイクロマウスとしてはベーシックな回路構成になっていると思います。

    (最近では[吸引ファン]を取り付けるのが流行ってるみたいです)

     

    このブロック図について簡単に説明します。

    • バッテリ・電源コネクタ・電源回路
      • マイクロマウス(というか回路)を動かすには電源が必要です。
      • [マイクロマウス(ハーフサイズ)競技規定]より、マウスの大きさに制限があるため、ACアダプタによる電源供給は難しそうです。
      • 競技規定より、燃焼を利用したエネルギー源は許されないので、残念ながらエンジンは搭載できません。
      • 以上より、比較的サイズの小さいLiPoバッテリを使います。
    •  マイコン回路
      • 競技規定より、マイクロマウスは自立型でなければなりません。そのためには頭脳となるマイコンが必要です。
      • マイコンにはESP-WROOM-32Dを使用します。
    • モータドライバ・エンコーダ・DCモータ
      • 迷路を走行するためにはタイヤとモータが必要です。モータを動かすためにはモータドライバが必要です。
      • また、走行速度や走行距離を推定するためにはエンコーダが必要です。
      • 競技規定より、迷路の壁を飛び越したり、 よじのぼったりしてはいけいないので、残念ながらジャンプ機構は搭載できません。
    • 物体検出センサ回路
      • いわゆる壁センサです。
      • 迷路の壁を検出し、マウス自身の位置や姿勢を推定するために必要です。
    • モーショントラッキング回路
      • マウス自身の位置・速度・姿勢を推定するために必要です。
      • 加速度センサ・ジャイロセンサを搭載します。
    • インジケータ回路
      • プログラムの状態を表示するために必要です。
      • LEDを搭載します。
    • ソフト書き込みコネクタ
      • マイコンにプログラムを書き込むために必要です。
      • 回路規模の縮小のためコネクタを用意せず、基板に導線をハンダ付けしてプログラムを書く方法もあります。
        • 毎回毎回ハンダ付けするのは手間がかかるので採用しません。

    マウスの回路図

    そして・・・出来上がった回路図がこちらです。

    次回から、各回路ブロックについて説明します。

     

    続きを読む ›

    Posted in DCマウス研修, ブログ, 研修


    マイクロマウス研修(kora編)[18] 新機体の構想

    こんにちは。koraです。

    前回まではHM-StarterKitで迷路探索を行っていましたが、今回からは新機体の作成に入ります。

    昨年の全国大会では、マイクロマウス競技(旧ハーフサイズ)のセミファイナルに参加し、完走することができました。
    マイクロマウスがどういうものかだんだんと理解が深まってきたので、いよいよハードウエアから自作して今年の大会に出場したいと思います。

    変更点

    新機体の構想ですが、マイクロマウス競技のファイナル(32×32マス)に挑戦するため、HM-StarterKitをベースにしつつ以下の変更を加えます。

    • 変則四輪にして加速性能と直進性能を上げる。
      二輪に比べ、タイヤにかかる垂直抗力が低下しにくくなるので加速度を上げることができます。また、ハードウェア的に旋回しにくい構造のため直進性能も向上すると考えられます。旋回が難しくなるというデメリットはありますが、そこはパラメータの調整を頑張って対応していきたいと思います。
    • 処理能力の高いマイコンを使用して大きな迷路に対応する。
      STM32F732を搭載して処理能力を向上させます。動作周波数は約2倍、RAM容量は約4倍になります!(一方、パッケージも大きくなるのでハーフサイズの機体に載せるにはちょっと辛いですが…)
    • 壁検知しやすい光センサに替える
      HM-StarterKitの光センサは、取り付けの安定性を重視して赤外線LEDとフォトトランジスタが一体になったフォトリフレクタ(LBR-127)が使用されています。新型機では壁検出性能を上げるため、よりビーム角度の狭いLED(OP265AD)と、より立ち上がりの早いフォトトランジスタ(LTR-4206)を使用します。

    以上の変更点を考慮して、3D CADで形にしてみたものがこちらです。車輪が増えた分だけ前後に伸びたHM-StarterKitというような感じです。

    次回

    それでは次回から、回路CADの使い方を学びながら新型機の回路設計を開始します。

    続きを読む ›

    Posted in DCマウス研修


    shotaのマイクロマウス研修12[オリジナルマウスの設計方針]

    こんにちは、shotaです。

    社員研修として、オリジナルマウスの製作を始めます。

    [前回の記事]ではESP32のSPI機能を使ってみました。

    今回はオリジナルマウスの設計方針を決めます。

     

    オリジナルマウスの仕様

    オリジナルマウスの仕様は[この記事]に書いてます。

    ESP32を使う、というのが一番の重要項目です。

     

    オリジナルマウスの設計方針

    まずはじめに、設計の時間がとても少ないことを考慮しなければなりません。

    全日本マイクロマウス大会は12月はじめごろに開催されるのですが、地区大会がそれよりも早く開催されます。

    [2018年のスケジュール]を見ると、7月頭から地区大会が始まっています。。。

    残りの4ヶ月で迷路を走れるマウスを作らなければなりません。これは厳しい。。。

    ということで、できるだけ頑張らない設計方針を決めました。

    • ESP32のソフト設計・開発に集中する
    • 情報公開できる設計資料を作る

    方針①:ESP32のソフト設計・開発に集中する

    マイクロマウスを実現するには、

    • 走行するためのタイヤ・モータ、壁を検知するセンサー
      • それらを動かす回路
        • 回路を動かすソフト

    を選定・設計・開発しなければなりません。

     

    先程も述べたとおり、大会まで時間がないので・・・

    • 走行するためのタイヤ・モータ、壁を検知するセンサー → HM-StarterKitをコピーする
      • それらを動かす回路 → HM-StarterKitをコピーする
        • 回路を動かすソフト → ここを頑張る!!!

    という方針でマウスを作ります!

    [HM-StarterKit(通称ハムスター)]は弊社アールティが開発・販売するマイクロマウス競技(旧ハーフサイズ)向けの学習キットです。

    HM-StarterKitの回路図は[GitHub]に公開されています。

    そしてなんと、このHM-StarterKitを設計・開発した人が社内にいます! (質問し放題)

    実績があり、情報量も多いマウスをコピーできる貴重な機会なので、この回路図をベースにESP32マウスを作ります。

     

    続きを読む ›

    Posted in DCマウス研修, お知らせ, ブログ, 研修