1-Wire

トルコのイスタンブールでバスやトラムのプリペイド式チケットとして使用されていたアクビル（Akbil）。プラスチック製キーホルダーに iButton が付いている。

1-Wire はマキシム・インテグレーテッドの登録商標であり[1]、接地線と一本の信号線（兼電力供給線）だけで低速なデータ転送を行うバス規格である。マキシムに吸収されたダラス・セミコンダクタが開発した。I²C に似ているが、データ転送レートがより低く、より長い距離で通信可能である。小さい安価なデバイス（例えばデジタル温度計など）の通信に使われる。

## 概要

[編集]

このバスの長所は2本の線だけで接続できる点である。このため、集積回路には800pFのコンデンサが集積されていて、データ線から電力を得ている。デバイスは非常に小型化でき、単なるコンデンサや腕時計用のボタン電池のように見えるものもある。これを iButton と呼ぶ。

プリント基板に実装されることもあるが、ノートパソコンや携帯電話のバッテリーパックなど、様々な部品の一部として使われている。

実験用機器やデータ収集機器と制御システムの接続に 1-Wire を使うこともあり、その場合のコードには電話用のモジュラーコネクタのコードやカテゴリー5ケーブルなどを使い（RJ-11が最も多い）、ソケットに 1-Wire デバイスが内蔵されていたりする。

センサ群を 1-Wire で接続したネットワークを MicroLan と呼ぶ（登録商標）。例えば、温度センサ、タイマー、電圧センサ、電流センサ、バッテリーモニタ、メモリなどを接続する。これらはバスコンバータ経由でPCに接続できる。PC側インタフェースとしては、USB、シリアルポート、パラレルポートなどから、1-wireへ変換するマスターチップを搭載することで接続が可能である。MicroLan にマイクロコントローラを接続することもできる、この場合は汎用のマイクロコントロラーのオープンドレインのI/Oポートからプルアップして簡単に接続が可能である。Parallax BASIC Stamp、Microchip PIC ファミリー また、オープンドレインのI/Oを持っているマイコンならばどれでも対応可能である。

iButton はボタン電池状のステンレス製のパッケージに 1-Wire 部品を詰め込んだものである。ソケットにタッチさせて 1-Wire バスに接続する。接続は一瞬でよく、クレジットカードをリーダーに通すような感覚で使える。より長時間の接続をする場合は、異なる形状のソケットを使う（はめ込む形状）。

JavaOne 1998 では、iButton をリング上にマウントした JavaRing が紹介された。これは、Java仮想マシン（Javaカード 2.0互換）を内蔵したものである[2]。

それぞれの 1-Wire チップには一意のコードがあり、それぞれ異なる番号を付与されている。これを利用して iButton を鍵として使うことができる。単なる鍵以外にも、警報装置の設定/解除に使うなどの用途がある。

## 詳細

[編集]

MicroLan には、全体を制御するマスターが1つだけ存在する。通常、PCやマイクロコントローラがその役目を果たす。マスターは1度に1つのスレーブだけが通信するよう調停する。

物理層の通信プロトコルは、バスマスターデバイス上の特製ソフトウェアで制御されることが多い。バスマスターデバイスは、1-Wire にプルアップ抵抗を付加することで5Vの電圧を印加し、ネットワークに電力を供給する。専用のドライバ回路やブリッジも用意されている。

マスターはまず、リセットパルスを送る（480µ秒のローパルス）。これによってバス上の全スレーブ機器がリセットされる（1-Wireからの電力供給で動作するので、これで完全に放電する）。その後、任意のスレーブデバイスが存在を知らせる "presense" パルス（60µ秒以上のローパルス）を送る。

マスターから二進法の "1" を送る場合、短い（1 - 15µ秒）ローパルスを送る。"0" を送る場合、60µ秒のローパルスを送る。パルスの立下りエッジで、スレーブデバイスの単安定マルチバイブレータをスタートさせる。スレーブのマルチバイブレータがクロックとなり、立下りエッジから約30µ秒間、データ線を読む。スレーブのマルチバイブレータのアナログ的誤差があるため、パルスの長さがこのように設定されている。

パラレルポートがないマシンでは、オペレーティングシステムによってはこのようなタイミングを制御できないため、100kbit/sのUARTに専用ソフトウェアを組み合わせて 1-Wire のマスター機能を実現する。USBブリッジチップも同様の波形やタイミングの制御を行う。

マスターがデータを受信する際は、1-15µ秒のローパルスを各ビットを受信する前に送る。送信側スレーブが "1" を送る場合は何もしない。"0" を送る場合はデータ線を60µ秒間0ボルトにする。

基本的シーケンスは、リセットパルスの後に8ビットのコマンドを送り、データを8ビット単位で送受信する。一連のデータが転送された後に、誤り検出は8ビットCRCで行う。CRCは16bitの計算も対応している。

多数のデバイスが1つのバスを共有できる。各デバイスには一意な64ビットのシリアル番号が付与されている。シリアル番号の最上位バイト（8ビット）はデバイスの種類を表している。最下位バイトは8ビットCRCである。デバイスに共通なコマンドと特定のデバイス対応のコマンドがある。マスターが選択コマンドとデバイスのシリアル番号を送ると、次のコマンドは選択されたデバイスのみが実行する。バスには、バス上の全デバイスのシリアル番号を収集するアルゴリズムがある。これによって、どういうデバイスがバス上に接続されているかを知ることができる。デバイスを探す場合、enumerationコマンドをブロードキャストし、アドレス（シリアル番号）を送信して、アドレスを1ビット送信する度に応答を待つ。スレーブは、そこまでのアドレスが一致していれば 0 を返す。マスターは、この単純な方式で正しいアドレスビットの並びを得る。これは64ビットの空間の力まかせ探索よりもずっと速い（あるビットで応答が返ってこなければ、そこから先の探索を打ち切ることができるため）。バス上のデバイスの位置も重要となることがある。そのような場合に対応するため、バスをパススルーしたり切断する特殊デバイスも用意されている。

## 脚注

[編集]

1. ^ 1-Wire Products
2. ^ An introduction to the Java Ring, by Stephen M. Curry, JavaWorld.com, April 1st, 1998.

## 外部リンク

[編集]

ウィキメディア・コモンズには、1-Wireに関するメディアがあります。

* 1-Wire デバイス
* iButton
* 1-Wire Weather Station Construction (Book)
* 1-Wire Weather Instrument Kit
* OWFS - 1-wire filesystem for Linux
* OWFS - 1-wire filesystem for Linux (Old Site)
* OPNODE project (opn-one : 1-Wire home automation controller)
* Guides to working with 1-Wire, for programmers and engineers
* jHomeNet - 1-Wire home automation program
* 1-Wire ON/OFF temperature controller with RS-232C communications interface to a personal computer
* 1-Wire LANによる気象観測l ナチュラル研究所

* 表
* 話
* 編
* 歴

主要項目|

* システムバス
* フロントサイドバス
* バックサイドバス（英語版）
* デイジーチェーン
* コントロールバス（英語版）
* アドレスバス
* バスコンテンション（英語版）
* バスマスタリング
* ネットワークオンチップ（英語版）
* プラグアンドプレイ
* バス帯域幅の一覧

コンピュータバス規格|

* S-100バス
* Unibus
* VAXBI（英語版）
* MBus
* STD Bus（英語版）
* SMBus（英語版）
* Q-bus
* Europe Card Bus（英語版）
* ISA
* STEbus（英語版）
* Zorro II（英語版）
* Zorro III（英語版）
* CAMAC（英語版）
* FASTBUS（英語版）
* LPC
* HP Precision Bus（英語版）
* EISA
* VME
* VXIバス
* NuBus
* TURBOchannel（英語版）
* MCA
* SBus
* Cバス
* NESA（Eバス）
* 98ローカルバス
* VLB
* HP GSC bus（英語版）
* CoreConnect（英語版）
* InfiniBand
* UPA（英語版）
* AGP
* Compute Express Link (CXL)
* Direct Media Interface (DMI)
* RapidIO
* インテル QuickPath インターコネクト
* HyperTransport
* NVLink
* APバス

ストレージバス規格|

* ST-506
* ESDI
* SMD（英語版）
* Parallel ATA
* SSA（英語版）
* DSSI（英語版）
* HIPPI
* シリアルATA
* eSATA
* eSATAp（英語版）
* mSATA
* SCSI
* Parallel SCSI（英語版）
* Serial Attached SCSI
* ファイバーチャネル
* SATA Express
* U.2 (SFF-8639)
* U.3
* M.2
* NVM Express
* EDSFF（英語版）

ペリフェラルバス規格|

* Apple Desktop Bus
* HP-IL
* HIL（英語版）
* MIDI
* マルチパス
* RS-232 (シリアルポート)
* EIA/RS-422
* RS-423（英語版）
* RS-485
* DMX512-A
* IEEE-488 (GPIB)
* IEEE 1284 (パラレルポート)
* UNI/O（英語版）
* ACCESS.bus（英語版）
* 1-Wire
* I²C
* SPI
* EIA/RS-485
* Parallel SCSI（英語版）
* Profibus
* USB (USB Type-C)
* FireWire (1394)
* Camera Link
* External PCI Express x16
* Thunderbolt
* PCI
* PXI（英語版）
* PCI-X
* PCI Express

オーディオ規格|

* ADAT Lightpipe（英語版）
* AES3（英語版）
* Intel HD Audio（英語版）
* Inter-IC Sound
* MADI（英語版）
* McASP（英語版）
* S/PDIF
* トスリンク

コンピュータバス規格 （ポータブル）|

* PCカード
* ExpressCard

コンピュータバス規格 （組み込み）|

* Multidrop bus（英語版）
* AMBA（英語版）
* Wishbone（英語版）
* AXI

ビークルバス|

* LIN（英語版）
* J1708（英語版）
* J1587（英語版）
* FMS（英語版）
* J1939（英語版）
* CAN
* VAN（英語版）
* FlexRay
* IDB-1394
* MOST

* 補足:インタフェースのリストは通信速度がおおよそ速い順。セクションの最後に挙げているインタフェースが最も速い。
* カテゴリ

* 表
* 話
* 編
* 歴

インダストリアルオートメーション通信プロトコル

プロセスオートメーション|

* AS-i（英語版）
* BSAP（英語版）
* CC-Link
* CIP（英語版）
* CAN bus
* CANopen
* DeviceNet（英語版）
* ControlNet（英語版）
* DF-1（英語版）
* DirectNET（英語版）
* EtherCAT
* EGD（英語版）
* Ethernet Powerlink（英語版）
* EtherNet/IP
* FIP（英語版）
* FINS（英語版）
* Fieldbus
* FOUNDATION fieldbus（英語版）
* H1（英語版）
* HSE（英語版）
* GE SRTP（英語版）
* HART Protocol（英語版）
* Honeywell SDS（英語版）
* HostLink（英語版）
* INTERBUS
* IO-Link
* メカトロリンク
* MelsecNet（英語版）
* Modbus
* Optomux（英語版）
* PieP（英語版）
* PROFIBUS
* PROFINET（英語版）
* RAPIEnet（英語版）
* SERCOS interface（英語版）
* SERCOS III（英語版）
* Sinec H1（英語版）
* SynqNet（英語版）
* TTEthernet（英語版）

ファクトリーオートメーション|

* FL-net
* MTConnect（英語版）
* OPC
* OPC DA（英語版）
* OPC HDA（英語版）
* OPC UA（英語版）
* SCADA

ビルオートメーション‎|

* 1-Wire
* BACnet
* BatiBUS（英語版）
* C-Bus（英語版）
* CEBus（英語版）
* DALI（英語版）
* DSI（英語版）
* DyNet（英語版）
* EnOcean
* EHS（英語版）
* EIB（英語版）
* FIP（英語版）
* KNX
* LonTalk
* Modbus
* oBIX（英語版）
* VSCP（英語版）
* X10
* xAP（英語版）
* xPL（英語版）
* Z-Wave
* ZigBee

電源システムオートメーション（英語版）
(スマートグリッド)|

* IEC 60870（英語版）
* IEC 60870-5（英語版）
* IEC 60870-6（英語版）
* DNP3（英語版）
* FIP（英語版）
* IEC 61850（英語版）
* IEC 62351（英語版）
* Modbus
* PROFIBUS

自動メーター測定（英語版）
(スマートメーター)|

* ANSI C12.18（英語版）
* IEC 61107（英語版）
* DLMS/IEC 62056（英語版）
* M-Bus（英語版）
* Modbus
* ZigBee

自動車電子技術|

* AFDX（英語版）
* ARINC 429（英語版）
* CAN bus
* ARINC 825
* SAE J1939（英語版）
* NMEA 2000（英語版）
* FMS（英語版）
* FIP（英語版）
* FlexRay
* IEBus（英語版）
* SAE
* J1587（英語版）
* J1708（英語版）
* KWP2000
* UDS
* LIN（英語版）
* MOST
* VAN（英語版）
* UAVCAN（英語版）

関連項目|

* 通信プロトコル
* 産業用イーサネット
* PLC
* シーケンス制御
* ラダー・ロジック
* IEC 61131-3
* 分散制御システム
* 自動化情報システム
* 製造実行システム
* M2M
* メカトロニクス
* インダストリー4.0
* スマートファクトリー
* インダストリアルインターネット
* コンピュータ統合生産
* 第四次産業革命
* ソサエティー5.0
* ホームオートメーション
* BIM
* デジタルツイン
* IoT

* カテゴリ
* オートメーション
* 通信プロトコル
* 組み込みシステム
* ファクトリーオートメーション
* ビルオートメーション
* 自動車電子技術
* 情報システム
* 制御工学