安さに引かれ Orange Pi One をゲット

ARM の開発ボード界隈も低価格化になってきて、うれしい選択肢がまた出来ました。Orange Pi One が売り出されたのです。

Orange-Pi-One-ubuntu-linux-and-android-mini-PC-Beyond-and-Compatible-with-Raspberry-Pi-2-1

買うかどうか迷っていましたが、使ってみないと良し悪しが体感できませんので、結局安さに負けてゲットしました。

Orange-Pi-One-ubuntu-linux-and-android-mini-PC-Beyond-and-Compatible-with-Raspberry-Pi-2 これが、9.99ドルです。送料とかも入れると、13ドルちょっとなので、現実には、1600円ちょいします。

10ドル以下という価格でリリースされているボードは現在3機種ほどあります。以下に比較表があります。

 

Raspberry Pi Zero, C.H.I.P, and Orange Pi One Boards’ Features and Price Comparisons
Raspberry_Pi_Zero_vs_CHIP_vs_Orange_Pi_One

 

Raspberry Pi Zero と、C.H.I.P  と  Orange Pi One はそれぞれいいところがあって迷います。表を引用しますと以下のようです。

  Raspberry Pi Zero C.H.I.P Orange Pi One
Processor Broadcom BCM2835 single core ARM11 processor @ 1GHz

(~1250 DMIPS)

Allwinner R8 Cortex A8 processor @ 1 GHz

(2000 DMIPS)

Allwinner H3 quad core Cortex A7 processor @ 1.2 GHz
(4x 2280 DMIPS)
GPU VideoCore IV ARM Mali-400 ARM Mali-400MP2
Video Decoding 1080p30 for H.264, MPEG2* and VC1*
1080p video encoding (H.264)* Extra licenses required

H.264, H.263, VC1, Mpeg1/2/4, VP6/8,  up to 1080p60

H.265/HEVC 4K@30fps video decoding. 1080p@60fps video decoding for H.264 BP/MP/HP, VP8, MPEGl/2, MPEG4 SP/ASP GMC, H.263, Sorenson Spark, WMV9/VC- l, JPEG/MJPEG, etc

Video Encoding “Full HD H.264 video encoding”

H.264 1280×720@30fps video encoding

H.264 1080p@30fps video encoding

RAM 512MB 512 MB 512 MB
Storage micro SD card slot 4GB NAND flash micro SD card slot
Ethernet

No

except via external USB to Ethernet adapter

No

except via external USB to Ethernet adapter

10/100M Ethernet
Wireless Connectivity

No.

Except via external USB / SPI / UART Wifi and/or Bluetooth module

WiFi 802.11 b/g/n and Bluetooth 4.0
No.

Except via external USB / SPI / UART Wifi and/or Bluetooth module, or Orange Pi Lite board upgrade

USB 2x micro USB 2.0 ports (including one OTG). One port needed for power 1x USB 2.0 host port, 1x micro USB OTG port. One port needed for power 1x USB 2.0 host port, 1x micro USB OTG port. Power via power barrel.
Video mini HDMI with CEC, and unpopulated 2-pin header for composite

3.5mm jack for composite video

HDMI and VGA only available via add-on board

Full size HDMI
Audio Via mini HDMI Via 3.5mm jack Via HDMI
I/Os and other peripherals Unpopulated 40-pin header with 26 –GPIOs, 1x UART (debugging), 1x SPI, 1x I2C, PCM/I2S Two 40-pin expansion headers with GPIOs, 2x I2C, 1x UART, 1x SPI, LCD signals, CSI signals, PWM, etc… 40-pin header mostly compatible with RPI with GPIOs, 2x I2C, 3x UART, 1x SPI

1x CSI camera connector

Power 5V via micro USB
Typical power consumption: 0.1A to 0.14 @ 5V
5V via micro USB or LiPo battery
Typical power consumption: TBD
5V via power barrel
Typical power consumption: TBD
Dimensions 65 x 30mm 60 x 40 mm 70 x 50 mm (Estimated TBC)
Linux Support

Official: Raspbian,  OpenELEC, OSMC. Many other community supported distros.

Custom Linux distribution (No firmware download link yet) Lubuntu, Raspbian, Debian with XFCE, Fedora 22, Arch Linux ARM, etc…
Android Support

No

No Android 4.4
Community Largest community so far for a development board. Mostly on Raspberry Pi Forums. Relatively active forums on Next Things website thanks to ~40,000 Kickstarter backers, and other people who pre-ordered since then. Active (but at times slow) forums for Orange Pi boards.
Documentation, source code and hardware files. Documentation is available via eLinux RPI Wiki, but there does not seem to be much specific info for  Raspberry Pi Zero, so you’d need to use mix info from RPi2 and RPi Model B.

Linux mainline work in progress (See Wiki on github)

Schematics are not available, even in PDF format, and the board hardware is closed source.

Broadcom BCM2835 datasheet is however available.

Somewhat incomplete and outdated documentation can be found on the docs page on Next Things website.

U-boot, buildroot, and Linux source code, as well as hardware design files can be found on github. CHIP is open source hardware.

Linux mainline work in also progress (See free-electrons)

Documentation can be found on Orange Pi Wiki, but details are sometimes lacking, or information is wrong.

I had a pretty smooth experience with Orange Pi 2 mini board, but some others had more issues, so I’d expect more of the same with Orange Pi One.

The company usually releases the schematics of their boards in PDF format, but the board is not open source hardware per se.

Linux mainline work in progress (See sunxi-linux)

Listed Price $5 $9 $9.99
Shipping (to my location)  $12.55 (via Adafruit)

At the time of launch, but cheaper options should be available later…

$6.22 $3.43 (Estimated, based on Orange Pi PC shipping)
Distribution network and Availability Wide sales network, with most online retailers and some brick and mortar shops selling Raspberry Pi boards.

But Raspberry Pi Zero is now unavailable due to the high demand.

Only available via getchip.com for now.

Current pre-orders are expected to ship in June 2016.

Likely only available on Aliexpress once it is launched.

Availability date TBD.

どうです?迷いますよね。実際、入手性とか送料とか、いろいろ考慮すると、微妙な感じでますます迷います。

 

C.H.I.P が出たときもびっくりしましたが、Raspberry Pi Zeroが出てきて、後発で喧嘩を売るようにOrange Pi One と来ました。何を作るか、どんな目的に使うのかとか、そういうのは使ってみないとわかりません。とにかくこの安いボードをゲットしたくなり、一番入手しやすくてCPU パワーがありそうな Orange Pi One をゲットしました。

 

Kernel ビルドの手軽さや、ビデオドライバーの事を考えると、Raspi か、C.H.I.P が良さそうです。H3 の CPU を使っている Orange Pi One はちょっと苦労するかと思います。逆に、ビデオドライバーなんて使わないし、ハードウェアエンコードは入らないっていう用途にはCPU パワーがある Orange Pi One に魅力が行きます。

 

CPU は限界まで回そうと思っているので、ファン+ヒートシンク仕様にしようと以下もゲットしました。ファンは前ゲットしたもののあまりがあるので、それを使います。何に使うかは、あれこれいじってから、考えることに。

 

今のところの候補は、GPSをプラスして高精度NTPサーバか、32bit のDACを付けてI2S経由のHiFI音楽プレイヤー化、あとはE-Inkディスプレイを組み込んだ、バッテリー駆動のポケットLinux(これはちょっと敷居が高いので無理かもですが)。当初の目的の学習用のopenstack 用()くらいでしょうか。

HTB18c3lJXXXXXcPXVXXq6xXFXXXn

電源も、L型のプラグをゲットしておきました。

HTB1LKOlJFXXXXXtXVXXq6xXFXXX5 

2月か3月はこれで遊べそうです。2,000円弱でかなり遊べると思います。あと数年後には、こういうのが送料込みで1コインで買える時代が来るはずで、モニタやキーボード込みのものが5000円以内で出てきて学校とかでノートの代わりに必須となる時代が来るかもしれません。

INA226 を RasPi の ruby でi2c

PCB が組みあがったのですが、これを RasPi で i2c するサンプルをググってみたら、いくつかありました。

RasPi は、i2c が使えるようにモジュールをロードしておきました。RasPi でi2c は初めて使います。無事に出来るでしょうか?

# lsmod
Module                  Size  Used by
★i2c_dev                 6027  0 
cfg80211              386508  0 
rfkill                 16651  1 cfg80211
rpcsec_gss_krb5        20958  0 
nfsd                  263569  2 
snd_bcm2835            18649  0 
snd_pcm                73475  1 snd_bcm2835
snd_seq                53078  0 
snd_seq_device          5628  1 snd_seq
snd_timer              17784  2 snd_pcm,snd_seq
snd                    51038  5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device
★i2c_bcm2708             4990  0 
joydev                  8879  0 
spi_bcm2708             5137  0 
evdev                   9950  2 
uio_pdrv_genirq         2958  0 
uio                     8119  1 uio_pdrv_genirq

 

先輩たちがサンプルコードは書いているはずなので、探したところ、python でやるのとか、ruby でやるのとかがすぐ見つかりました。

とりあえず、動作確認したいので以下のサイトのコードを参考に必要な部分だけ使わせてもらいました。

Rabbit Note

BeagleBone Black で作るロギング機能付き電力計 (ソフト編)

BeagleBone Black(BBBと略するようです)での環境ですが、大変参考になりました。

使わせていただいたコードは最下部に付けておきます。で、配線は写真のようにちょっと雑ですが配線。負荷には、ちっさいファンをつけてみました。

SingleShot0023 スレーブアドレスは、何も設定しないと、0x40 が設定されるようです。

# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --  

 

プログラムを起動すると、以下のようになります。

# ./test.ruby
--------- 2016/01/25, 01:33:22
4.78125 V
151 mA
0.29 W
--------- 2016/01/25, 01:33:22
4.78125 V
151 mA
0.289 W
--------- 2016/01/25, 01:33:23
4.78875 V
152 mA
0.291 W
--------- 2016/01/25, 01:33:23
4.7875 V
151 mA
0.29 W
--------- 2016/01/25, 01:33:24
4.7875 V
150 mA
0.289 W
--------- 2016/01/25, 01:33:24
4.7875 V
151 mA
0.29 W
--------- 2016/01/25, 01:33:25
4.79 V
152 mA
0.292 W

負荷にLED を点けてみると、以下のようです。

# ./test.ruby 
--------- 2016/01/25, 01:35:31
4.88 V
2 mA
0.005 W
--------- 2016/01/25, 01:35:31
4.88 V
2 mA
0.005 W
--------- 2016/01/25, 01:35:31
4.9125 V
2 mA
0.005 W
--------- 2016/01/25, 01:35:32
4.91375 V
2 mA
0.005 W
--------- 2016/01/25, 01:35:32
4.91375 V
2 mA
0.005 W

 

まだあまりちゃんと理解していませんが、内部のレジスタの ox05 に、キャリブレーションする設定値を入れるようです。

以下の C のサンプルコードから、シャント抵抗に0.025R を使っている場合は、以下のように計算した16進数を入れればよいようです。書き込むとき、以下のコードでは、リトルエンディアンに変換していました。

https://github.com/jarzebski/Arduino-INA226/blob/master/INA226.cpp

0.025Ω = 0.00512/(0.025*0.0001)=2048 = 0x08 0x00

 

0x05 の補正レジスタを見てみると、

# i2cget -y 1 0x40 0x05 w

0x0008

という値が帰ってきました。

 

さて、そんな感じでとりあえずコードは以下のようにしてみました。

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
 
IOCTL_I2C_SLAVE = 0x0703
 
# Script for power meter using the following parts
# - Power Meter module (IC: INA226)

# # i2cdetect -y 1
#      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
# 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
# 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 70: -- -- -- -- -- -- -- --

class PowerSenseor
  def initialize(i2c_bus=1, dev_addr=0x40)
    @i2c = File.open(sprintf('/dev/i2c-%d', i2c_bus), 'rb+')
    @i2c.ioctl(IOCTL_I2C_SLAVE, dev_addr)

    @dev_addr = dev_addr
    @v_val = 0
    @c_val = 0
    @p_val = 0

    # shunt resistor = 0.002Ω = 0.00512/(0.002*0.001)=2560 = 0x0a 0x00
    #                  0.025Ω = 0.00512/(0.025*0.0001)=2048 = 0x08 0x00
    #   内部レジスタ[0x04] (Current) = 内部レジスタ[0x01]×内部レジスタ[0x05] / 2048
    exec_cmd("i2cset -y 1 0x#{dev_addr.to_s(16)} 0x05 0x08 0x00 i")
    # conversion time = 332us, number of average = 16
    exec_cmd("i2cset -y 1 0x#{dev_addr.to_s(16)} 0x00 0x04 0x97 i")
  end

  def sense
    # i2cset/i2cget は 10ms オーダーの時間を消費するのでここでは使用しない 
    @i2c.write(0x02)
    @v_val = conver_signed(@i2c.read(2))

    # 0x04 電流レジスタ
    @i2c.write(0x04)
    @c_val = conver_signed(@i2c.read(2))

    # 0x03 Powerレジスタ
    @i2c.write(0x03)
    @p_val = conver_signed(@i2c.read(2))
  end

  def conver_signed(bytes)
    # convert endian
    return bytes.unpack('n').pack('S').unpack('s')[0].abs
  end

  def get_voltage
    return calc_voltage(@v_val)
  end

  def get_current
    return calc_current(@c_val)
  end

  def get_power
    return calc_power(@p_val)
  end

  def exec_cmd(cmd)
    val=`#{cmd} 2> /dev/null`
    raise StandardError, "FAIL: #{cmd}" unless $?.success?
    return val
  end

  def calc_voltage(v_val)
    return v_val * 1.25 / 1000.0
  end

  # 0x04 電流レジスタ
  def calc_current(c_val)
    return c_val / 10
  end

  # 0x03 Powerレジスタ
  def calc_power(p_val)
    # return p_val * 0.025
    return p_val * 0.001
  end
end

require 'optparse'
params = ARGV.getopts('lq')

data_list = []

Signal.trap(:INT){
  if params['l'] then
    printf("time,voltage,current,power\n")
    data_list.each{|data|
      printf("%10d,%.3f,%.3f,%.3f\n", data[0], data[1], data[2], data[3])
    }
  end
  exit(0)
}

sensor = PowerSenseor.new
require "date"

start_time = Time.now
i = 0
while true
  sensor.sense
  v = sensor.get_voltage
  c = sensor.get_current
  p = sensor.get_power

  dt = DateTime.now
  print "--------- "
  print(dt.strftime("%Y/%m/%d, %H:%M:%S"), "\n")

  print v
  print " V\n"
  print c
  print " mA\n"
  print p
  print " W\n"

  if ((i & 0x7F) == 0) then

  else
    sleep 0.5
  end
  i = (i & 0xff) + 1
end

 

▼まとめ

・0x05 にシャント抵抗値を入れた補正値を書き込む

・書き込む最は、16進をリトルエンディアンにして書き込む

・0x04 はPowerレジスタで、0x04 は電流レジスタ。

・LSB ってなに?

・ちっこい今使っているファンは、150mA くらい使っていて0.3W ほど

・c のサンプルはすぐに見つからなかったけども、どうんな感じになるんだろう?

・自分で作ったハードが動いてうれしぃ!

・レジスタって、どういう回路なの? どういう仕組みで覚えているんだろう?

INA226 電流センサーの I2C ボードを作った

小さな部品も大きく見えるようになって、作業しやすくなったのでPCB の半田付けを再開しました。

今回は、電流センサーの INA226 です。

b

回路図は、チュートリアルを参考に上記のようにしました。

a

ブレッドボードをまたぐ4ピッチ幅にしてあります。プリントに出すPCB のあまり部分に無理やり作ったので少し窮屈です。

3

こんな感じでテープで固定しつつ半田付け。小さいですが、モニターで見れるので問題なしです。

2

以下、作業ステップ。

SingleShot0007

フラックスをつけます。 SingleShot0008

半田小手の先にちょっと半田を付けて位置決め。ブリッジしても気にしない。 SingleShot0011

ブリッジを小手を当てて取ります。 SingleShot0012

こんな感じで、ブリッジを除去。 SingleShot0013

フラックスを麺棒で掃除。 SingleShot0014

反対側もつけて、チェック。 SingleShot0015

シャント抵抗もつけて、ピンヘッダーを付けてとりあえず本日終了。 SingleShot0021 裏側も小さな抵抗とコンデンサーを付けています。

 

かなりマイクロスコープがあるおかげで作業がしやすくなりました。必須ですね。これは。

300円のmicroSD の 8GB も来たのでラズパイで I2C してみます。品質はどうでしょうかね?

こんなに、ぼやけた印字でしたっけ?なんか偽造品の臭いがしますが、、、、

SingleShot0022

あとで、手持ちの本物と比べてみますか。

到着 500X 8LED 2MP Digital Microscope usb

前回、PCB の半田付け用にゲットしたマイクロスコープが到着しました。早速、osx に取り付け。ドライバを入れてQuickTime で見てみました。

1

画面のキャプチャも取れるし、動画取れるのでなかなかよさそう。マクロも満足の出来です。

0.3mm の穴も見えます。上の画像の一部をさらにマクロで撮ったものです。

2

これで、部品の上下や部品番号なんかも気軽に見えるし、かなり作業が楽になりそうなのでPCB の半田付けを再開してプロジェクトを進めようと思います。

3000円台の時にゲットしておいてよかった!普通の値段だと5000円以上してちょっと手が出しにくかったので。筐体はアルミで軸部分をひねれば上下に台座が移動します。なかなか使いやすそうな台座です。

 

a

ぽちったモノ

正月あけてから、ものすごく眠くてほとんど作業が進まずモンモンとしています。

そんな中、やる気を出すために以下の2点を購入。1つは、SDCard の8GB でクラスUHS-1(Class10)のもの。340円だったので3枚ぽちりました。

sdcard8g

aliexpress で sdcard は結構チャレンジな感じですが、一度試してみることに。日本からだと微妙に8GB くらいの容量で安いのがなくて。OrangePI One 用に先に購入しておくことに。

 

あと、もう1つは、マイクロスコープ。当初作ろうと思っていたのですが、安くて良さそうな素材の CCD がなくて、以下のが安くなっていたのでゲット。チェック時は5000円以上していまいたが、3660 円ほどだったので、ぽちっと。ぱっと見は、アルミ素材っぽく長く使えそうな感じですが、解像度や実際の品質は来てからじゃないと不明。

a

osx でも使えるとのことですが、果たしてどうでしょうか? PCB の半田付けやパーツの方向チェックなど、画面でも見れていいかなぁと。

b

osx で使う場合はそのことを教えてねとありましたが、ドライバとかosx 用のをつけてくれるんでしょうかね?

これが到着したら、PCB 半田付けを頑張ることに。

OrangePi PC をクロックダウン

OPI PC にファンをつけて、ついでに sccript.bin を作り直して1.5MHz から1.2MHz にクロックダウンして運用していますが、CPU 温度は30度から40 度を推移しているようです。

h3_temp-day-2

この状態でベンチマークがどのくらいいくかテストしてみました。

   ========================================================================
   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")
   07:17:03 up 44 min,  2 users,  load average: 1.56, 1.61, 1.56; runlevel 3
   ------------------------------------------------------------------------
   Benchmark Run: Sun Jan 03 2016 07:17:03 - 07:46:42
   0 CPUs in system; running 4 parallel copies of tests
   ::
   System Benchmarks Index Values               BASELINE       RESULT    INDEX
   Dhrystone 2 using register variables         116700.0   17298899.9   1482.3
   Double-Precision Whetstone                       55.0       2969.0    539.8
   Execl Throughput                                 43.0       1464.1    340.5
   File Copy 1024 bufsize 2000 maxblocks          3960.0     149424.6    377.3
   File Copy 256 bufsize 500 maxblocks            1655.0      45277.4    273.6
   File Copy 4096 bufsize 8000 maxblocks          5800.0     380747.9    656.5
   Pipe Throughput                               12440.0     911007.9    732.3
   Pipe-based Context Switching                   4000.0     124699.6    311.7
   Process Creation                                126.0       3414.8    271.0
   Shell Scripts (1 concurrent)                     42.4       1865.6    440.0
   Shell Scripts (8 concurrent)                      6.0        307.0    511.6
   System Call Overhead                          15000.0    2100567.0   1400.4
   ========
   System Benchmarks Index Score                                         516.5

おおよそ、RasPi2 より少し速い500ポイントちょいのスコアです。クロックダウンする前は、600ちょいだったので、すこし遅くなった感じですね。

 

実際にサーバとして仮運用していますので、レスポンスなど見たい方は以下にアクセスしてみてください。昨年からテストで運用しています。

Fedora22 OrangePi PC

http://hack.gpl.jp/

・NGINX + php-fpm + MariaDB

そこそこ重めのアプリケーションのWordPress が動作しています。ネットワーク的には、サーバからの下りは帯域は絞られていると思いますので差し引いてみてください。今のところ、そこそこストレスなく動作しています。

 

当初、OpenStack として勉強用に使おうと思っていたのですが、何年ぶりかで自宅サーバを運用してみたら面白くてOpenStack の構成の検証に環境を壊したくないなぁという感じです。もう一台ほしいなぁと。

WEBを散歩しているとなにやら、Orange pi Oneという10ドルくらいのものも発売されるということで、すこし様子見をしています。

CNXSoft

Orange Pi One is a $10 Quad Core Board with Ethernet and HDMI

Orange_Pi_One

どうやら、WIFI 付きモデルと、10/100M Ethernet モデルが出るようです。なかなか面白そうです。比較表は、OSAKANA TARO さんのページにあります。

OSAKANA TARO のメモ帳

Orange Pi ONEの詳細が出た!

CPU は、今のと同じ 6ドルの H3 (4core)を使うようです。これで、9.99ドルで出せるとはほぼ原価並の価格ですね。メーカ(Shenzhen Xunlong Software)は、かなり大量にパーツを購入しているんでしょう。とにかくこれは出たら買いです。

 

OpenStack Ironic としてベアメタルな構成を考えているのですが、動作に必要な PXE Boot の実験がまだ終わっていません。まだ、OpenStack 自体もあまり良くわかっていないのですが、おそらくベアメタルをコントロールする際に、PXE Boot が必要になると思います。あとIPMI で電源とかなにか操作するようです。このあたりの検証もしないといけません。おそらく、なにか工夫する必要があると思っています。

 

5台くらいの構成で考えているのですが、安いほうがいいよねということで、Orange pi Oneが出てから考えたいなぁと思っています。5000円くらいで、最小構成を目指して OpenStack のベアメタルを勉強してみたいと思っています。

 

まとめ

・クロックを1.2Mhz にダウンさせるとベンチマークは500ちょい

・ヒートシンクと、ファンをつけた状態でアイドル時、温度は30度から40度を推移

・負荷をかけると50度ちょいくらい

・追加購入は、OrangePi PC の15ドルより安い9.99ドルの Orange Pi One というのが出るまで待ち

・U-Boot する仕組みを勉強してみる