C/C++言語を使って、Raspberry Piのプログラムを作成する方法について、すでに、述べました(Raspberry Pi C/C++ プログラミング、Amazon Services International、Inc.)。
ここでは、GPIO経由の入出力に関して、LinuxのファイルIOライブラリ、を使いました。
今回は、サンプリングのレートを上げるために、GPIOピンへ、直接、アクセスするプログラムを作ります。プログラミング言語は、前回同様、C/C++、を使います。
GPIOピンへ、直接、アクセスするプログラムは、elinuxのURL、などにおいて、公開しています。
ここでは、Gordon Henderson作成のライブラリ、wiringPi、を使います。
通信方式、SPI、I2C、に関して、実機を使って実験を行います。
SPIは、GPIOのピンを、4本、使います。
これに対して、I2Cは、2本、です。
資源を多く使用するSPIは、スピードという点において、I2Cより、勝ります。
実機を使って実験した結果、サンプリングレートは、最大
100 KHz
あるいは、サンプリングの時間間隔でいえば
10 μ秒
を実現しました。
処理速度は、供給電源電圧、使用温度、パルス幅、配線、…、など、など、パラメータの影響をうけます。
本書のプログラムを検証する際には環境条件に注意する必要があります。条件が異なれば、結果も異なる、可能性があります。
1章 イントロダクション
1.1 はじめに
1.2 OS
1.3 Geany
1.4 wiringPiのインストール
1.5 gpio
1.6 LED
1.7 スイッチ
2章 ディジタル入出力
2.1 はじめに
2.2 ディジタル出力
2.3 ディジタル出力の時間測定
2.4 ディジタル入力
2.5 ディジタル入力の時間測定
2.6 サンプリング時間
2.7 割り込み処理
3章 IOエクスパンダ
3.1 はじめに
3.2 74HC595
3.3 sr595
3.4 NJU3711
3.5 NJU3714D
4章 I2CとSPI
4.1 はじめに
4.2 MCP23017
4.3 MCP23S17
4.4 MCP23S17の時間測定
5章 SPI
5.1 はじめに
5.2 機材の準備
5.3 MCP3002
5.4 ダイレクトアクセス
5.5 MCP3208
5.6 ダイレクトアクセス
6章 I2C
6.1 はじめに
6.2 ADS1115
6.3 ADCプログラミング
6.4 ADC時間計測
6.5 計測データの分布
6.6 MCP4725
6.7 TMP102
library.h
おわりに
参考資料
Raspberry PiのGPIOを介して、センサー情報を取り込むプログラム、を作りました。
プログラムは、Linuxの監視下、で走ります。
Linuxは、ユーザーのプログラムに対して、「待った」、をかけます。この介入を避けることはできません。実測すると、サンプリング間隔に対して、およそ、10 msec程度のブラックアウト、を持ち込みます。
地震 → 潮位検出 → 警報、…、というように、人の命を左右するアプリケーションに、Raspberry Piを応用することは、不可です。
いま、仮に、このようなアプリケーションを、ハードリアルタイムアプリケーション、と呼びます。
別シーンとして、健康診断において、心電図のデータを記録する状況、を考えます。
ベッドに横になり、センサーを貼り付けます。
看護婦は、モニターを見て、波形が落ち着いたならば、ボタンを押し、データを採取します。
このような応用を、仮に、ソフトリアルタイムアプリケーション、と呼びます。
観測波形から、処理に適する部分を抽出して、処理する、というタイプのアプリケーション、すなわち、ソフトリアルタイムアプリケーションにおいて、Raspberry Piは、十分に、機能します。
Raspberry Piは、ハードリアルタイムアプリケーション、は難しいとしても、ソフトリアルタイムアプリケーションの分野において、十分に、機能を発揮すると、期待できます。
ここでは、GPIO経由の入出力に関して、LinuxのファイルIOライブラリ、を使いました。
今回は、サンプリングのレートを上げるために、GPIOピンへ、直接、アクセスするプログラムを作ります。プログラミング言語は、前回同様、C/C++、を使います。
GPIOピンへ、直接、アクセスするプログラムは、elinuxのURL、などにおいて、公開しています。
ここでは、Gordon Henderson作成のライブラリ、wiringPi、を使います。
通信方式、SPI、I2C、に関して、実機を使って実験を行います。
SPIは、GPIOのピンを、4本、使います。
これに対して、I2Cは、2本、です。
資源を多く使用するSPIは、スピードという点において、I2Cより、勝ります。
実機を使って実験した結果、サンプリングレートは、最大
100 KHz
あるいは、サンプリングの時間間隔でいえば
10 μ秒
を実現しました。
処理速度は、供給電源電圧、使用温度、パルス幅、配線、…、など、など、パラメータの影響をうけます。
本書のプログラムを検証する際には環境条件に注意する必要があります。条件が異なれば、結果も異なる、可能性があります。
1章 イントロダクション
1.1 はじめに
1.2 OS
1.3 Geany
1.4 wiringPiのインストール
1.5 gpio
1.6 LED
1.7 スイッチ
2章 ディジタル入出力
2.1 はじめに
2.2 ディジタル出力
2.3 ディジタル出力の時間測定
2.4 ディジタル入力
2.5 ディジタル入力の時間測定
2.6 サンプリング時間
2.7 割り込み処理
3章 IOエクスパンダ
3.1 はじめに
3.2 74HC595
3.3 sr595
3.4 NJU3711
3.5 NJU3714D
4章 I2CとSPI
4.1 はじめに
4.2 MCP23017
4.3 MCP23S17
4.4 MCP23S17の時間測定
5章 SPI
5.1 はじめに
5.2 機材の準備
5.3 MCP3002
5.4 ダイレクトアクセス
5.5 MCP3208
5.6 ダイレクトアクセス
6章 I2C
6.1 はじめに
6.2 ADS1115
6.3 ADCプログラミング
6.4 ADC時間計測
6.5 計測データの分布
6.6 MCP4725
6.7 TMP102
library.h
おわりに
参考資料
Raspberry PiのGPIOを介して、センサー情報を取り込むプログラム、を作りました。
プログラムは、Linuxの監視下、で走ります。
Linuxは、ユーザーのプログラムに対して、「待った」、をかけます。この介入を避けることはできません。実測すると、サンプリング間隔に対して、およそ、10 msec程度のブラックアウト、を持ち込みます。
地震 → 潮位検出 → 警報、…、というように、人の命を左右するアプリケーションに、Raspberry Piを応用することは、不可です。
いま、仮に、このようなアプリケーションを、ハードリアルタイムアプリケーション、と呼びます。
別シーンとして、健康診断において、心電図のデータを記録する状況、を考えます。
ベッドに横になり、センサーを貼り付けます。
看護婦は、モニターを見て、波形が落ち着いたならば、ボタンを押し、データを採取します。
このような応用を、仮に、ソフトリアルタイムアプリケーション、と呼びます。
観測波形から、処理に適する部分を抽出して、処理する、というタイプのアプリケーション、すなわち、ソフトリアルタイムアプリケーションにおいて、Raspberry Piは、十分に、機能します。
Raspberry Piは、ハードリアルタイムアプリケーション、は難しいとしても、ソフトリアルタイムアプリケーションの分野において、十分に、機能を発揮すると、期待できます。