2018年02月25日

One-Wireインタフェース

今回はOne-Wireインタフェースについて紹介します。

One-Wireインタフェースはその名の通り、
1本の信号線とGNDで通信するシリアル通信規格です。


信号線から電力を受けることができるため、
信号とGNDの2本のみで通信できます。
また、One-Wireのデバイス1つ1つに固有ID(識別番号、64bit)があるため、
1つのデータライン上の複数デバイスから特定デバイスを呼び出すことができます。

I2Cも7bitの固有アドレスがあります。
同じデバイスの場合は基本的に同じアドレスとなります。
そのため、同じデータライン上に同じデバイスは1つしか繋げることができません。
一方、One-Wireはネットワーク機器のMACアドレスの様に
完全に固有のIDのため、同じデータラインに同じデバイスを複数繋ぐことができます。


便利なOne-Wireインタフェースですが、
1つのデータラインでやり取りするため、
通信速度は期待できません。



入手性のよいOne-Wireデバイスは
他にEEPROM、NVRAMなどがOne-Wireデバイスとしてあります。


急激な温度変化のない環境で定期的に温度を監視する場合などに
1つのデータラインに複数のOne-Wire温度計を設置して
監視すると配線を減らすことができるので効果的です。


STM32マイコンでOne-Wireデバイス(One-Wireデバイス)と通信する

One-Wireデバイスを呼び出す場合、
2種類の方法があります。
データライン上に1つのデバイスしかない場合は
SKIP_ROM_CMDで固有ID指定なしで呼び出します。

データライン上に複数のデバイスがある場合は
MATCH_ROM_CMDで固有IDを指定して該当するデバイスのみ呼び出します。



今回のサンプルコードの場合、
DS18B20_GetTemperature()では
SKIP_ROM_CMDで固有ID指定なしで温度を取得します。
DS18B20_GetSelectDeviceTemperature(***)では
MATCH_ROM_CMDで固有IDを指定して温度を取得します。


ICの配線を簡易化できるOne-Wireインタフェースは面白いと思いました。
2本の配線なので配線の存在感を消すことができます。

現状の課題としては温度計くらいしかデバイスがないことでしょうか。
今後のOne-Wireセンサデバイス種類の拡充に期待です。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2018年02月16日

PS2/USB変換アダプタ

今回は現在開発中のデバイスについて紹介します。


プログラミング専用こどもパソコンichigojamやサーバマシンなどでは
キーボードのインタフェースとしてUSBでなく、PS2がまだ使われています。
一方でUSBが広まり、PS2のキーボードが入手しづらい状況です。

そこで開発しているものがPS2/USB変換アダプタです。


世の中で販売されているPS2/USB変換アダプタ
PS2のキーボードをUSBデバイス化して
古いキーボードを最新のPCで使える変換アダプタです。
これではichigojamやサーバマシンでは使えません。


今回、開発しているPS2/USB変換アダプタは
USBキーボードをPS2化する変換アダプタです。
世の中で販売されている変換アダプタとは変換の向きが逆です。


調べる限り、このような変換アダプタは販売されていないようです。
USBのHostの処理は面倒なため、コストもかかるのが要因でしょうか。


構成としては
[市販USBキーボード]<-USB->[USB Host(Vinculum)]
<-UART->[STM32マイコン]<-PS2->[PC,ichigojam]
です。


本当はVinculumのみでPS2も扱えればよいのですが、
現行のVinculumUはPS2ポートがなく、
GPIOで処理する必要があります。

VinculumTはPS2ポート搭載していますが、
チップ単価が高いため却下。
Vinculumは独自RTOSが搭載されているため、
GPIOでus単位のPS2の処理を実装するのが厳しいため、
STM32を搭載してPS2の処理をさせています。

設計中の基板はこんな感じ。
PS2USBChanger.jpg
裏と表にVinculumとSTM32のチップをそれぞれ搭載しています。
両側にUSBとPS2のポートが搭載される感じです。
電源はPS2から給電のため、挿せば使えるという感じです。
一般的なキーの動作確認ができましたが、
特殊キーのデバッグがまだ残っている状況です。

ただ、PS2は規格がざっくりなところがあり、
あるPCで動いても他で動くかどうか...


上手くいけば3月、4月頃に2千円前後で販売開始する予定です。

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

2018年02月02日

VinculumU 開発環境

以前にVinculumというUSBコントローラを紹介しました。

VinculumがというUSBコントローラかという説明は割愛して、
今回はVinculumの開発環境のインストールと簡単な使用方法を紹介します。


Vinculumの開発環境はVinculum II Toolchainを使用します。
18年2月時点ではV2.0.2-SP2が最新のようです。

ダウンロードしてインストールしましたが、
インストール途中でエラーが発生し、
インストールが完了したものの、
サンプルコードのビルドができない状況でした。

インストール途中のエラーは

path.jpg

「Environment Variable PATH too long to modify」
で環境変数が長く処理できないということのようです。

様々な開発環境をインストールしているため、
このようなエラーが発生したと思われます。
同じWin7でも別のPCではエラーが発生せずに
すんなりインストールが完了しました。


ビルドツールのディレクトリは64bitPCでは
C:\Program Files (x86)\FTDI\Vinculum II Toolchain\Tools\bin
のため、システムのプロパティの環境変数に上記を手動で追加することで解決できます。


path3.jpg

path2.jpg


既に設定された変数値を消さないように
;C:\Program Files (x86)\FTDI\Vinculum II Toolchain\Tools\bin
を末尾に追加します。


これでビルドが通るようになります。




サンプルプロジェクトを開きます。

vin1.jpg



Vinculumと書込みツールを接続して、
Connectボタンをクリックするとデバッガのリストが表示されます。
デバッガが正常に認識されると1つ表示されるはずです。

vin3.jpg

vin2.jpg

選択してconnectをクリックします。

Flashボタンをクリックしてファームを書き込みます。
初回のビルドやコードに変更がある場合は自動的にビルドされたあとに
書込みが実行されます。

vin4.jpg

書込みが完了した後にSTARTをクリックすると
プログラムが動き始めます。



ポイントは環境変数と書込み後のStartだと思いました。
環境変数はともかく、
書き込んだら勝手に走り始めてほしいものです笑

Vinculumはサンプルプログラムが豊富に用意されているため、
サンプルプログラムそのままでも十分な感じです。


開発環境のVinculum Toolchainはシンプルで使いやすいと思いました。
また、後日、Vinculumを使用したUSBデバイス、
USBホストの開発例を紹介したいと思います。
ラベル:部品 開発環境
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2018年01月20日

電子ペーパーモジュール

今回は正月にaliexpressで購入した電子ペーパーモジュールを紹介します。

電子ペーパーの特徴として
・低消費電力(画面更新時のみ電気を供給)
・高い視認性(高コントラスト、液晶のように視野角の制限がほとんどなし)
があります。

ただ、Kindleやスマートウォッチなどに一部、採用されるに留まり、
まだOLEDのように様々な製品への組込、モジュール単位での販売は少ないのが現状です。

日本だと安く入手することが難しいため、
aliexplessで購入しました。
2.9インチモデルで1個2200円前後でした。
+数百円で赤色も表示できるモデルもあります。

中国からそのまま送れず、シンガポール経由で送るとかで
注文してから1か月弱して届きました。



epaper.jpg

既に動作テストとしてロゴが表示されており、
ご覧の通り、電源を供給しなくとも保持されています。

epaper2.jpg

SPI接続で画面の書き換えを行います。

サンプルコードはaliexplessのサイトにWikiリンクがあり、
STM32HAL、RaspberryPI、Arduinoのサンプルが用意されています。


時間を見つけて電子ペーパーを試食してみたいと思います。

電池で動くIoT機器には電子ペーパーが
大活躍できる分野だと思うのですが、
未だ単価が液晶に比べて高く入手性が悪いので残念です。

OLEDと液晶のように適用機器が確立しておらず、
量がでないので高いままだと思いました。

低消費電力の特徴を活かして、
IoT機器の表示機として今後の電子ペーパーのブレイクスルーに期待です。

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

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