2017年09月15日

BOOT0切替なし書き換え

今回はSTM32マイコンでBOOT0切替なしで
書き換えを行う方法を紹介します。

CubeMXでNucleo等を選択すると
BOOT0切替なしでファームの書き換えができます。

一方で、マイコン単体を選択して
最低限の設定でCubeMXで生成したコードを一度書き込むと、
次回の書き換え等でBOOT0をHighにして電源を入れないと
SWD端子に接続したSTLinkからマイコンが認識されず、
ファームの書き込みや削除ができない現象が発生しました。


原因としてはシリアルデバッグを有効化せずにCubeMXで生成したコードを書き込むと、
シリアルが無効化されてプログラムが動いてしまうことです。
書き換える場合はBoot0をHighにして電源を入れて
bootをシステムメモリに変更することで書き換えできます。

意図しない書き換え防止やセキュリティ強化になりますが、
Boot0のジャンパやスイッチの切り替えが面倒です。


ここで、BOOT0切替なしで書き換えを行う方法を紹介します。
CubeMXの設定でシリアルデバッグを有効化します。

serial-debug.jpg


この状態で生成したファームを書き込むと次回以降の書き換えは
BOOT0切替なしで書き換えできます。


製品としてファームを書き込む以外の実験用途では
意図しない書き換え防止やセキュリティ強化が不要なため、
CubeMXの設定でシリアルデバッグを有効化するのが
Boot0切替の手間がなく便利です。



posted by Crescent at 00:00| Comment(0) | 組込ソフト | このブログの読者になる | 更新情報をチェックする

2017年09月04日

直交エンコーダ読込(Quadrature encoder)

今回はSTM32マイコンで直交エンコーダを読み込む方法をご紹介します。



秋月で販売しているロータリーエンコーダを使用しました。
1kΩより大きい抵抗ではインピーダンスが大きすぎるようで
330Ωでプルアップすると読み込めました。

CubeMXの設定は下記の通りです。

Combined ChannelsをEncoder Modeに設定すると
A相、B相を接続するポートが自動的に割り当てられます。

tim-encoder.jpg



詳細設定は次の通りです。
Periodに設定した値までカウントすると0にリセットされます。
また、EncoderModeをTI1とTI2に設定することで
4逓倍となります。

この設定の場合、
今回のエンコーダは1回転24パルスですが、
4逓倍で1回転96パルスとなります。


tim-encoder2.jpg


CubeMXで自動で生成されたコードから下記のコードを追加しました。



 HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
  printf("Initialized Success!!\n");

  while (1)
  {
    HAL_Delay(300);
    int8_t uwDirection = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3);
    uint16_t cnt=TIM3->CNT;//htim3.Init.Period;
    printf("CNT:%d, Drc:%d \n",cnt,uwDirection);
  }

__HAL_TIM_IS_TIM_COUNTING_DOWN関数で回転方向を取得できます。
エンコーダの値はTIM3->CNTで取得します。


実際にコードを実行してエンコーダを回転させてみました。

result.jpg


実際のロボットなどの位置取得では、
1回転で0に戻ると制御できないため、
0で割り込みを発生させて繰り上がり、繰り下がり処理等を行うのが一般的です。

また、他にチャタリング防止等のフィルタ機能もあるようなので、
必要に応じて使ってみると良いと思いました。



posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2017年08月16日

OpenMV試食

今回は単体で画像認識等の処理が可能な
OpenMVという部品を紹介します。

通常は画像処理はraspberryPIやBeagleboneなど
ARMでもAシリーズとOpenCVが動くOS上で処理を行うことが一般的です。

ただ、OSを積むとOSのバージョンによる差や電源断によるシステムイメージ破壊など
色々考えることが増えて大変です。

OpenMVはSTM32F7マイコンにmicroPythonを組込んで、
組込マイコン単体で処理できるデバイスです。

他のマイコンに組込んで画像処理を行うことができます。

スイッチサイエンスでも扱い始めたようですが、
それより1か月前にロボットショップで発注したものが届いたため、
ちょっと試食した様子を紹介します。


まずはUSBをPCへ繋ぐ前に
開発環境をインストールします。
QTベースのソフトでなかなか良くできています。
インストールと一緒にドライバもインストールされます。

USBを接続するとカメラ横のLEDが眩しく点灯します。

openmv-photo.JPG



ただ、ソフトを起動して、左下の接続ボタンを押しても
ソフト上でOpenMV本体を操作できない不具合がありました。


良く見るとソフトウェアの右下に「Firmware out of date」と表示されており、
クリックして内部ファームのバージョンを更新するとしっかり認識できました。

openmv.jpg

最初はフォーカスがずれているため、
レンズを外に出す方向にひたすら回してピントを調整します。
調整できると右上にOpenMVのカメラで撮影したLEDのリングが映りました。

ということでポイントはまずはファームのアップデートということのようです。

ラベル:部品
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2017年08月02日

Lattepanda用Arduino変換基板

巷ではRaspberrypiやbeaglebone、nanopiなど
いろいろなARMベースのコンピュータボードがありますが、
その中でも異色なのがLattepandaです。



LattepandaはatomCPU搭載のWindowsマシンでありながら、
Arduino Leonardを搭載したコンボコンピュータボードです。
Amazonなどで入手することが可能です。

残念ながら内蔵のWifiは技適がないため、
使用できません。


Windowsマシンなので普通にキーボード、マウス、HDMIディスプレイをつなぐと
Windowsデスクトップが起動します。



Arduino Leonardが一体になっているため、
デスクトップ上のArduinoIDEからArduino Leonardボードが認識され、
そのまま書込み、実行ができます。


LattepandaのUSBを給電するとArduino Leonardが動作し、
電源ボタンを押すとWindowsが起動する感じです。
なので、Windowsを起動させなくともArduino Leonardとして使用できます。


ただ、問題点としては
内蔵のArduino Leonardはボード上の2列ピンヘッダで
Arduinoヘッダでないため、
手持ちのArdunoシールドが活用できません。

そこで
LattepandaArduno変換基板を作成しました。
Web上では他に似た基板を作成されている方が数人おられましたが、
日本で入手しにくい部品を使用していたり、
手持ちのシールドの部品と干渉するため、
結局、0から設計することになりました...

lattepanda.JPG


また、某サイトでの販売をする予定でしたが、
まだ日本でLattepandaの知名度が低いため、
販売できませんでした。

そのため、試しで作成した基板を1枚送料込みで2000円で販売します。
ご希望の方は連絡ください。
ピンヘッダ、ソケットは別売です。
表面実装部品のみ実装済みです。

ロットや機種により若干、コネクタ等に干渉する場合があるかもしれません。
所有のRev1.1ではちょうど入りました。

lattepanda_.JPG

実際に使用した例です。

ラベル:Lattepanda 部品
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2017年07月25日

測域センサ 構造

今回は測域センサを紹介します。


北陽電機製測域センサURG-04LXを入手しました。

今となってはKinectやRealSenseなど
3Dでキャプチャリングできるセンサが安く入手できるようになっています。
ただ、その分、処理が重く、マイコン等で処理するのは大変です。

マイコンでも処理できるものとして、測域センサがあります。
2Dで平面上の障害物等を検出できます。


最近のメジャーな測域センサというとSeedStudioRPLDARがありますが、
今回は先日、入手した日本製の測域センサURG-04LXの内部構造を少し紹介します。


main.JPG

USB端子とシリアル端子がついています。


internal.JPG

上蓋を外すとモータで回転する円柱があり、
SeedStudioRPLDARと同じような構造のようです。
円柱の上に45度?に傾いたミラーがあり、
蓋の部分についたレーザー光を反射させているようです。

円柱が回転することで反射したレーザー光の方向を変えられるようになっています。



encoder.JPG

また、円柱下側にスリット付の板があり、
モータの位置検出用のエンコーダがついていました。





laser.JPG
蓋の中心部にレーザー発光部があると思われます。


recieve.JPG
円柱を側面から見ると、
レーザー光を受光する部分と思われる側面にレンズがあります。



小さい筺体にレーザーやエンコーダ、ミラーなどの光学部品が詰まっており、
なかなか面白い構造だと思いました。

時間を見つけて、今度は測域センサURG-04LXを実際に使用してみたいと思います。

ラベル:部品
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする