ロジックアナライザでI2C 信号を見ると

INA226 と arduino の I2C 信号をロジックアナライザで見てみました。

コードは前回と同じものです。1秒ごとに4つのデータをゲットしています。

1

トリガは、SDA にかけました。Hi から Low になって信号が行くようです。

まず、I2C アドレス0x40 のレジスタ 0x02 を投げて、値が帰ってくる流れが見えます。読み出しには、1.7ms ほどかかっていることがわかりました。ビットの信号は、4us 程度のようです。SDAでビットが立っているのを判別しているようです。

 

たとえば、最初は INA226_REG_BUSVOLTAGE  (0x02) を読み出しているようで、値は16進数で 0x0E9E が帰ってきています。10進数では、3742 でこれに1.25 を掛けたものが mV になるので、4677.5 mV = 4.6775V ということですね。精度は、0.1mV ということです。

 

I2C のリアルタイムな生データを見るのは今回が初めてです。なかなか、IC同士で通話している感じがおもしろいですね。

1000分の1,2秒で、データを読み取っていて、0 と 1 の Hi と Low の信号のやり取りでそれをやっているというのが目で見えてわかりやすいです。ロジックアナライザって偉い存在ですね。

 

▼まとめ

・INA226 と arduino の I2C 信号を見てみた

・SDA の LOW にトリガーをかけて採取。

・スレーブアドレス+データ領域を指定すると、対応するスレーブから値が帰ってくる

・SCL にビットデータが流れ、SDA にデータ流れる感じ。両方ともHi になった部分が ビットが立つ感じ。

・ビット のHi になる時間は、4us ほど。

・1つのレジスタの読み出しには、1.7ms ほどかかる。

・呼び出しから応答までの間隔は、1ms ほど。0.7ms でデータをやり取りしている。合計で1.7ms

・安物のロジックアナライザでも十分現象を観察できた。

I2Sというのに手を出してみる事に

RasPi2 も電源を付けることがだんだんと少なくなってきていますので、ここらでちょっと使い方を変えてみることに。

I2C を調査しているときに、I2S というキーワードも目に入りました。寄り道して散歩していると、なにやら 音関連のようです。どうやら、DAC を USB 経由じゃなくて、I2S インターフェイスを使ってやり取りしてDA 変換するものとのこと。こうして音だしすると、びっくりするくらい音が綺麗というじゃありませんか。

 

I2S するのは、以下のようなのが定番のようです。RasPi の GPIO ヘッダーにかぶせるタイプです。TI のチップである、PCM5122という 32bit のDAコンバータが載っています。

HIFI-DAC-I2S

お値段も手が出る範囲ですし、一回自分の耳で聞き分けれるかどうか、試してみたくなりました。今は、osx から内臓の音出力を使ってデジタルアンプに出しているだけのシンプルなものです。これでも、かなり気に入っていますが、果たしてよくなるのでしょうか。いや、良くなったしても自分の耳で判別できるでしょうか?

 

外付けで、音専用マシンとしてPCを付けなくても鳴らせるようにデジタルアンプも安いものですが購入してみました。こちらも、TIのチップ、TPA3116D2が載っているようです。電源は安定化電源から取る予定。

amp_TPA3116あと、アンプとRasPiをつなぐ短いRCAケーブルもゲット。ま、普通のビデオ線のあまりでもよかったのですが、それっぽい雰囲気を出してみたかったので。

 rca_cable

トータル50ドルほどです。スピーカーは今ある自作の天つり式のじゅうたんスピーカーです。さぁ、どんな感じになりますでしょうか。みんなオーバーにブログで言っているだけなんじゃないかと思っていますが。そんなに変わらないでしょう?

SDCard16GB 来たのでRasbian Jessie 入れてみた

SDCard の16GB のテスト代わりに、RasPi に Raspbian Jessie を入れてベンチマークしてみました。

 

環境はこんな感じ。

# uname -a
Linux raspberrypi 4.1.13-v7+ #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015 armv7l GNU/Linux

で、ベンチマーク

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: raspberrypi: GNU/Linux
   OS: GNU/Linux -- 4.1.13-v7+ -- #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0: ARMv7 Processor rev 5 (v7l) (0.0 bogomips)
          
   CPU 1: ARMv7 Processor rev 5 (v7l) (0.0 bogomips)
          
   CPU 2: ARMv7 Processor rev 5 (v7l) (0.0 bogomips)
          
   CPU 3: ARMv7 Processor rev 5 (v7l) (0.0 bogomips)
          
   23:14:27 up 11 min,  3 users,  load average: 0.23, 0.16, 0.10; runlevel 5

------------------------------------------------------------------------
Benchmark Run: 月  2月 01 2016 23:14:27 - 23:42:32
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       13364099.5 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1935.3 MWIPS (9.9 s, 7 samples)
Execl Throughput                               1438.9 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        136337.7 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           38047.7 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        359110.7 KBps  (30.0 s, 2 samples)
Pipe Throughput                              788483.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 141326.6 lps   (10.0 s, 7 samples)
Process Creation                               3012.6 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3025.1 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                    406.0 lpm   (60.2 s, 2 samples)
System Call Overhead                        1760060.4 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   13364099.5   1145.2
Double-Precision Whetstone                       55.0       1935.3    351.9
Execl Throughput                                 43.0       1438.9    334.6
File Copy 1024 bufsize 2000 maxblocks          3960.0     136337.7    344.3
File Copy 256 bufsize 500 maxblocks            1655.0      38047.7    229.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     359110.7    619.2
Pipe Throughput                               12440.0     788483.7    633.8
Pipe-based Context Switching                   4000.0     141326.6    353.3
Process Creation                                126.0       3012.6    239.1
Shell Scripts (1 concurrent)                     42.4       3025.1    713.5
Shell Scripts (8 concurrent)                      6.0        406.0    676.6
System Call Overhead                          15000.0    1760060.4   1173.4
                                                                   ========
System Benchmarks Index Score                                         491.8

あら、なんか速いんじゃないでしょうか?

以前計測したときは、400ちょい超えたくらいだったはずです。

業務用スーパーのデザート

スマートニュースを見てて、食品ネタで引かれる記事がありました。

家の近くにもあるので、早速ゲットしてきました。

【業務スーパー】激ウマ超コスパケーキが話題! 体重140kgオーバーのライターもまとめ買いする実力とは?
http://mitok.info/?p=41046

ネタ元によると、ショコラケーキの方がうまいらしいです。買いに行ったときは、最後の1つだったようでなんか人気なのかなと。とりあえず、1個づつゲット。約600円

1

15分~30分くらい自然解凍してケースごと包丁で切り分け。説明書きでは、常温だと30分が目安とのこと。 2

本当にうまいのでしょうか? 3 おやつタイムに、みんなで食べてみたところ、本当においしいです。

好みもあるのでしょうが、どちらも濃厚です。軍配は、甲乙付け難く、リッチショコラケーキとリッチチーズケーキを両方セットで楽しむのが定番になりそう。

二人分切り分けても、まだ1/3 くらいなので、3角切れ1つあたり50円というコストパフォーマンスの良さ! 家の近くに業務用スーパーがある方はぜひ、ご賞味を。

 

さて、電子工作の方はOrange Pi One も到着し、現在ヒートシンクを加工中。初期動作は確認し、Orange Pi PC で動作していたSDCard をそのまま抜いて起動するのを確認。温度が結構あがる設定なので、ヒートシンクを付けてからベンチマークを行う予定です。

 

SingleShot0027

コイル部分がCPU面に対して若干出ているので、その部分のヒートシンクを切り落とす感じです。

OrangePi One にFan を付けて全開ベンチマーク

Orange Pi One にファンを付けてみました。

Orange Pi PC と比較すると一回り小さいです。

one_pc

ファンを付ける前にCPU の刻印をキャプチャーしておきます。G1035BA 61A3 とあります。FAN を付けないと負荷時80度を超えますので、1GHz 以内にしないとファンは必須です。

SingleShot0029

このコイルがじゃまなのでヒートシンクを切り落とします。

aa こんな感じ。

b

ファンとヒートシンクは適当なネジをヒートシンクに間にねじ込みます。

a

付けたかんじ。常時回しっぱなしにしておくので裏面の電源部から半田づけして直接5V をとりました。GPIO から温度を見て回すっていうのもありですが、1つプロセスを消費するし、GPIO からの配線が面倒だったので。回しっぱなしでも、0.3W 程度なので月約5円です。

c

温度は、ベンチマーク中でも室温24度で、60度くらいまでしかあがりません。なかなか冷えているようです。ちなみに、平常時は、45度くらいになっています。

one

h3_temp

ベンチマーク中のCPU 温度

ESP12_DHT22_-_ThingSpeak

ベンチマーク中の室温

 

lobo kernel にて以下のようになりました。

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: OrangePi: GNU/Linux
   OS: GNU/Linux -- 3.4.39-01-lobo -- #1 SMP PREEMPT Sun Oct 25 14:46:41 CET 2015
   Machine: armv7l (armv7l)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   20:13:59 up 8 min,  2 users,  load average: 0.70, 0.77, 0.44; runlevel 3

------------------------------------------------------------------------
Benchmark Run: Sun Feb 14 2016 20:13:59 - 20:43:47
0 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       15869153.7 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2987.1 MWIPS (9.9 s, 7 samples)
Execl Throughput                               1479.8 lps   (29.4 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        150225.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           40862.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        395921.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                              944200.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  84816.2 lps   (10.0 s, 7 samples)
Process Creation                               3927.2 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   1942.7 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                    261.9 lpm   (60.3 s, 2 samples)
System Call Overhead                        2197538.2 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   15869153.7   1359.8
Double-Precision Whetstone                       55.0       2987.1    543.1
Execl Throughput                                 43.0       1479.8    344.1
File Copy 1024 bufsize 2000 maxblocks          3960.0     150225.4    379.4
File Copy 256 bufsize 500 maxblocks            1655.0      40862.0    246.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     395921.5    682.6
Pipe Throughput                               12440.0     944200.7    759.0
Pipe-based Context Switching                   4000.0      84816.2    212.0
Process Creation                                126.0       3927.2    311.7
Shell Scripts (1 concurrent)                     42.4       1942.7    458.2
Shell Scripts (8 concurrent)                      6.0        261.9    436.5
System Call Overhead                          15000.0    2197538.2   1465.0
                                                                   ========
System Benchmarks Index Score                                         499.1

 

CPUは、以下のように見えています。

# cat /proc/cpuinfo 
Processor    : ARMv7 Processor rev 5 (v7l)
processor    : 0
BogoMIPS    : 4800.00

processor    : 1
BogoMIPS    : 4800.00

processor    : 2
BogoMIPS    : 4800.00

processor    : 3
BogoMIPS    : 4800.00

Features    : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer    : 0x41
CPU architecture: 7
CPU variant    : 0x0
CPU part    : 0xc07
CPU revision    : 5

Hardware    : sun8i
Revision    : 0000
Serial        : 64005035410c1027084e

 

メモリーは、512MB

# cat /proc/meminfo 
MemTotal:         507372 kB
MemFree:          219756 kB
Buffers:            1852 kB
Cached:            34468 kB
SwapCached:            0 kB
Active:           216236 kB
Inactive:          17940 kB
Active(anon):     198284 kB
Inactive(anon):      836 kB
Active(file):      17952 kB
Inactive(file):    17104 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:             0 kB
HighFree:              0 kB
LowTotal:         507372 kB
LowFree:          219756 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:               996 kB
Writeback:             0 kB
AnonPages:        197840 kB
Mapped:            12744 kB
Shmem:              1264 kB
Slab:              21524 kB
SReclaimable:       8720 kB
SUnreclaim:        12804 kB
KernelStack:        1296 kB
PageTables:         3632 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      253684 kB
Committed_AS:    1065072 kB
VmallocTotal:     499712 kB
VmallocUsed:       17300 kB
VmallocChunk:     213772 kB

 

nginx と php-fpm と mariadb を動作している状態で計測。

# ps axu | egrep '[n]ginx|[p]hp|[m]aria'
root       539  0.0  0.8  37836  4516 ?        Ss   20:06   0:00 php-fpm: master process (/etc/php-fpm.conf)
nginx      657  0.0  2.9  57212 15056 ?        S    20:06   0:03 php-fpm: pool www
nginx      658  0.0  2.3  54172 12084 ?        S    20:06   0:03 php-fpm: pool www
nginx      659  0.0  0.6  37836  3432 ?        S    20:06   0:00 php-fpm: pool www
nginx      660  0.0  3.0  57188 15372 ?        S    20:06   0:02 php-fpm: pool www
nginx      661  0.0  1.2  48140  6104 ?        S    20:06   0:02 php-fpm: pool www
mysql      870  0.1 12.3 629000 62764 ?        Sl   20:06   0:12 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root       972  0.0  0.4  32032  2092 ?        Ss   20:06   0:00 nginx: master process /usr/sbin/nginx
nginx      974  0.0  0.5  32036  2816 ?        S    20:06   0:01 nginx: worker process
nginx      975  0.0  0.5  32036  2700 ?        S    20:06   0:01 nginx: worker process
nginx      976  0.0  0.5  32036  2912 ?        S    20:06   0:01 nginx: worker process
nginx      977  0.0  0.5  32036  2768 ?        S    20:06   0:01 nginx: worker process
nginx     1491  0.0  2.3  54228 12144 ?        S    20:06   0:02 php-fpm: pool www
nginx     2009  0.0  3.0  47920 15224 ?        S    20:07   0:02 php-fpm: pool www

 

GPIO も WirelingOP が以下のように使えます。

# gpio readall
 +-----+-----+----------+------+---+--OrangePiPC--+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |   2 |  -1 |    SDA.0 |      |   |  3 || 4  |   |      | 5V       |     |     |
 |   3 |  -1 |    SCL.0 |      |   |  5 || 6  |   |      | 0v       |     |     |
 |   4 |   6 | IO6 PA06 |  OUT | 0 |  7 || 8  |   |      | TxD3     |     |     |
 |     |     |       0v |      |   |  9 || 10 |   |      | RxD3     |     |     |
 |  17 |  -1 |     RxD2 |      |   | 11 || 12 | 0 | OUT  | IO1 PD14 | 1   | 18  |
 |  27 |  -1 |     TxD2 |      |   | 13 || 14 |   |      | 0v       |     |     |
 |  22 |  -1 |     CTS2 |      |   | 15 || 16 | 0 | OUT  | IO4 PC04 | 4   | 23  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | OUT  | IO5 PC07 | 5   | 24  |
 |  10 |  -1 |     MOSI |      |   | 19 || 20 |   |      | 0v       |     |     |
 |   9 |  -1 |     MISO |      |   | 21 || 22 |   |      | RTS2     |     |     |
 |  11 |  -1 |     SCLK |      |   | 23 || 24 |   |      | SPI-CE0  |     |     |
 |     |     |       0v |      |   | 25 || 26 |   |      | CE1      |     |     |
 |   0 |  -1 |    SDA.1 |      |   | 27 || 28 |   |      | SCL.1    |     |     |
 |   5 |   7 |  IO7 PA7 |  OUT | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   6 |   8 |  IO8 PA8 |  OUT | 0 | 31 || 32 | 0 | OUT  | IO9 PG08 | 9   | 12  |
 |  13 |  10 | IO10 PA9 |  OUT | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  19 |  12 | IO12PA10 |  OUT | 0 | 35 || 36 | 0 | OUT  | IO13PG09 | 13  | 16  |
 |  26 |  14 | IO14PA20 | ALT3 | 0 | 37 || 38 | 0 | OUT  | IO15PG06 | 15  | 20  |
 |     |     |       0v |      |   | 39 || 40 | 0 | OUT  | IO16PG07 | 16  | 21  |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+--OrangePIPC--+------+----------+-----+-----+

 

これが、1600円(送料込み)で買えるとはいい時代になりました。さて、これでOrange Pi が2台になったのでいろいろと遊べそうです。とりあえず、ケース作りを考えないとですね。

X2GO

osx から X2Go した図

 

メモリは、512MB と少ないですがCPU パワーがあるのでメモリの範囲内なら、GUI もそれなりに動きます。

CPU クロックは、1.2MHz に設定したほうがよさそうです。正常に周波数がとれていないようなので。ぼちぼちやっていきます。

Orange Pi PC の設定で1.6G の設定をしていても、1.2GHz までのようです。

 

負荷時のCPU クロックの状態

# cpupower frequency-info
analyzing CPU 0:
  driver: cpufreq-sunxi
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 0 1 2 3
  maximum transition latency: 2.00 ms.
  hardware limits: 480 MHz - 1.54 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, interactive, performance
  current policy: frequency should be within 480 MHz and 1.54 GHz.
                  The governor "interactive" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz (asserted by call to hardware).
  cpufreq stats: 60.0 MHz:0.00%, 120 MHz:0.00%, 240 MHz:0.00%, 312 MHz:0.00%, 408 MHz:0.00%, 480 MHz:0.00%, 504 MHz:0.00%, 600 MHz:0.00%, 648 MHz:0.00%, 720 MHz:0.00%, 816 MHz:0.00%, 912 MHz:0.00%, 1.01 GHz:0.00%, 1.10 GHz:0.00%, 1.20 GHz:100.00%, 1.34 GHz:0.00%, 1.44 GHz:0.00%, 1.54 GHz:0.00%

 

▼まとめ

・OrangePi PC 用の Fedora22 でそのままブートした

・CPUクロックは、上限1.2GHz

・ぶん回すなら、ファンは必須

・UnixBench は総合スコア 500程度(OrangePi PC を1.2GHz 駆動したときと同等)

・OrangePi PC との価格差は、600円程度

・Linux を使った組み込みで具体的に何ができるか、どんな用途があるかはまだこれから模索