2018年01月06日

OLEDリセット回路

あけましておめでとうございます。
2018年もよろしくお願いいたします。



今回はOLEDの配線を減らすためのOLEDリセット回路を紹介します。
以前にAmazonのOLEDを紹介しました。


oled2.jpg



秋月でも同様のOLEDの販売がされましたが、
手持ちのOLEDとピン構成が若干異なります。

AmazonのOLEDはSPIでも対応できるように
CSなどのピンが余分にあります。


OLEDの種類ごとに配線が異なると面倒なので、
RESなどのピンをなくして、秋月のOLED同様に4線(電源含む)にしてみました。

なお、事前にOLED背面のR3を外してR1へ取付、
R8をジャンパさせてI2Cモードに改造しています。


RESピンはVCC電源投入後の一定時間後に
LOWからHIGHにする必要があります。
VCC電源と同時にRESをLOWからHIGHにすると
画面が乱れて正常に動作しません。

RES用の配線を減らすために
RC回路でリセットを一定時間後に掛かるようにしました。


配線は次の通り。

oled.jpg

100k抵抗と0.1uFコンデンサでRESを
VCCに対して遅らせてLOWからHIGHにしています。



これでマイコン側との接続は
VCC、GND、SDA、SCLの4線となります。


RESの漏れ電流が不明なため、
トライ&エラーで100k、0.1uFと決定しました。
51kでは上手くリセットが掛からない場合があったので、
100kと決めてみました。


今のところ、N=5で上手く動いています。

ラベル:部品
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) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2017年06月17日

ProjectionBallオープンハードウェア化

先月、MakerFaireBayAreaに参加して以降、
海外からの問い合わせが増えました。


一方で海外向けに販売できる体制を短期間で構築できないため、
最新版のProjectionBall IoTをオープンハードウェア化することにしました。

ProjectionBall IoT v5.4の特徴
・スマートフォンやPCからWifi経由で遠隔操作可能
・アナログ時計、デジタル時計を内蔵
・任意の文字列を表示可能(最大32文字、フォント内蔵)
・直径が10cm(旧モデル12cm)と一回り小さく
・Wifiはアクセスポイントモード、サーバモードの両対応


◆ProjectionBall IoTファームウェア&ソースコード

◆ProjectionBall IoT部品リスト&STLデータ&カーバーデータ

◆ProjectionBall IoT Wifiモジュールソースコード


ドキュメント類や説明がまだ充実していない状況のため、
英語版のドキュメント含め、順次、追加していきたいと思います。


また、国内向けにはProjectionBall IoTの完成版を
近日、協力会社から販売開始予定です。



ぜひ、Facebookページへ「いいね」をお願いします。

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

2017年05月12日

コードプロテクト機能

今回はSTMマイコンのリードプロテクト機能(RDP)について紹介します。


製品などにSTMマイコンを組み込んで出荷する場合に
JTAGやSWD端子を介してマイコン内部のデータを取り出して、
解析やコピーされてしまうことを防止するためにリードプロテクト機能を利用します。


F4やL4ではPCROPという更に強化されたプロテクト機能があります。
第三者のコードをCPUに実行させて内部のコードを取り出す操作を防止します。
ただ、F3ではPCROPに対応していません。


他に意図しない書き込みを防止するための書き込みプロテクト機能(WRP)もあります。


今回は一般的なリードプロテクト機能についてのみ紹介します。


リードプロテクト機能には3つのレベルがあります。

◆読み出し保護レベル0
 コードプロテクトなし、書き込み、読み込み可能、初期状態。

◆読み出し保護レベル1
 JTAG、SWD等で読み込み不可、書き換え可。
 また、読み出し保護レベル0へ変更も可

◆読み出し保護レベル2
 JTAG、SWDの認識を不可にさせるため、
 読み込み書き込み完全に不可。
 また、読み出し保護レベル2から他のレベルは変更不可。

今後、ファームをアップデート等に対応させるためには、
最大でも読み出し保護レベル1が適当なようです。
読み出し保護レベルを2にしてしまうと
マイコンを丸ごと載せ替えない限り何も変更できません。


上記の読み出し保護レベルの変更方法は
ST-Link Utilityから行う方法とコード内から行う方法の2種類あります。



◆ST-Link Utilityから行う方法

ST-Link Utilityの「Target」から「OptionByte」を選択します。

readprotect-btn.jpg

上部の「Read Out Protection」の項目のレベルを変更します。
FlashSectorProtectionを必要に応じて解除、もしくは選択して
「Apply」をクリックすると
現在の書き込まれたファームに対して保護が適用されます。

readprotect.jpg



◆コード内から行う方法
 コード上に埋め込む場合はSTコミュニティー内のこちらで紹介されていました。



毎回行うのは面倒という場合はコードに埋め込んだ方が良さそうです。

ただ、更新ファームを配布する場合はファイルとして配布されてしまうため、
あまりプロテクトを掛ける意味は薄くなってしまいます。


製品のコピーを避ける場合は
コードプロテクト&OTAアップデートなどを利用する他に
Apple製品のように基板の色を黒色等にして、
配線パターンを見にくくするなど多面的に対策する必要がありそうです。


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

2017年04月01日

STM32CubeF3 v1.7.0

今回はCubeMXのライブラリをアップデートした際に
遭遇した不具合?について共有したいと思います。


先日リリースされたSTM32CubeMX4.2.0
とSTM32CubeF3 1.7.0を適用しました。


その後、STM32CubeF3 1.6.0で生成した
CubeMXのプロジェクトファイル(*.ioc)を開いて、
再度、別のコードを生成すると
・HALドライバはSTM32CubeF3 1.6.0
・自動生成コードはSTM32CubeF3 1.7.0という
現象が発生しました。

そのため、STM32CubeF3 v1.7.0から増えたパラメータ

htimX.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

がHALドライバにないため、
コンパイルが通らないという現象が発生しました。



cubemxf3.png

設定はSTM32CubeF3 1.6.0から読み込む設定です。


STM32CubeF3 1.6.0で生成したCubeMXの
プロジェクトファイル(*.ioc)を流用せずに
0から新規プロジェクトで生成すると上手くバージョンが一致したコードが生成されました。

古いバージョンで生成したプロジェクトファイル(*.ioc)は
テンプレートの読み込み先を最新にするか、
0から新規プロジェクトで生成するのが良さそうです。

特に新しい機能が追加された場合、
旧ドライバにない機能をコメントアウトで対応できますが、
新機能が不定となる可能性もあり、
別の不具合を起こす可能性もあるので、統一した方がよいと思いました。


バージョンアップするとこいう不具合が起きたりするので、
アップデートを見送るか、適用するか悩ましいものです。


ちなみに新しく増えたパラメータAutoReloadPreloadは
TIMx_ARR registerのバッファ有無切替が可能なようですが、
どのような効果があるのか、
資料を見つけられず良く分かりませんでした。
また、追って調査してみたいと思います。


**追記**
おすすめできる方法ではありませが、
あとから再度、旧ライブラリで生成する場合は
*.iocファイルをテキストエディタで開いて、
V1.X.X.Xの部分を書き換えるのが手っ取り早い方法と分かりました。

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