Category Archives: H3

ラズパイ用Waveshare / Kuman 3.5インチ 320×480タッチパネル付き液晶をOrange Piで使う


正月にアマゾンで「Kuman Raspberry Pi 3 2用ディスプレイ タッチパネル 3.5インチ 320*480 SPI インターフェース Raspberry Pi Model B B+ A+ A SC06」というのがタイムセールで売っていたので買ってみた。

買ったまましまってあったのをすっかり忘れていたので、今頃になって使ってみた。

この製品はWaveshareの「3.5inch RPi LCD (A), 320×480」のコピー製品。
なので、情報はWaveshare側で追う必要がある。

いろいろ面倒な試行錯誤があったのですが、最終結果を書いておきます。

2017/04/10の時点では、液晶表示はできました。
タッチパネル動作については、まだ全然できていません。


Orange Pi PCでSPI接続の液晶で表示をする場合に必要な設定

インストールしておくもの

フレームバッファの動作チェックに使うfbiコマンド

apt install fbi

X-Windowを今回のLCDに出力するために使う

apt install xserver-xorg-video-fbdev

モジュールを読み込むための /etc/modules-load.d/waveshare.conf の内容

flexfb
fbtft_device

上記で指定したモジュールのパラメータ指定 /etc/modprobe.d/waveshare.conf の内容

options flexfb width=320  height=480  regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
options fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:2,dc:71

X-Windowで表示させるための /usr/share/X11/xorg.conf.d/98-fbdev.conf の内容

Section "Device"
  Identifier "myfb"
  Driver "fbdev"
  Option "fbdev" "/dev/fb8"
EndSection

注: /dev/fb8 は環境によっては番号が変わるはずです

これで再起動することで、LCDに表示されるようになりました….

ただ・・・時々、うまく表示されないことがあるのが謎です・・・

armbianフォーラムの「[SOLVED] Orange PI PC H3 Winner, compiled with igorpecovnik jessie desktop」に/boot/bin/orangepipc.binをfexに変換し、[disp_init]と[hdmi_para]にある下記項目を変更する、という話があった。

[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 3
screen0_output_mode = 5
screen1_output_type = 3
screen1_output_mode = 5
fb0_width = 800
fb0_height = 480
fb1_width = 800
fb1_height = 480
 
[hdmi_para]
hdmi_used = 1
hdmi_x = 800
hdmi_y = 480
hdmi_power = "vcc-hdmi-18"
hdmi_cts_compatibility = 1

この情報を元に関連する記述を下記の様に書き換えたところ、安定して表示されるようになった。

[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 3
screen0_output_mode = 5
screen1_output_type = 3
screen1_output_mode = 5
fb0_format = 0
fb0_width = 320
fb0_height = 480
fb1_format = 0
fb1_width = 320
fb1_height = 480
hdcp_enable = 1
hdmi_cts_compatibility = 0

[hdmi_para]
hdmi_used = 1
hdmi_power = "vcc-hdmi-18"
hdcp_enable = 0
hdmi_cts_compatibility = 1
hdmi_x = 320
hdmi_y = 480

もちろん、元のbinファイルを「bin2fex orangepipc.bin orangepipc.fex」でテキスト形式のfexファイルに変換し、編集したあと、
「fex2bin orangepipc.fex orangepi.bin」でbinファイルに戻すという手順も行っています。


参考にしたサイト

・Raspberry PiとOrange PiのGPIO指定の違いについて
RaspBerry Piで遊んでみる」の「WiringPiとWiringOP」の記載と
このページで紹介されていた「WiringOP

実際に実行してみて得られた下記の実行結果からGPIOの番号を得ました

osakanataro@orangepipc:/work/lcd/LCD-show$ gpio readall
 +-----+-----+----------+------+---+-Orange Pi+---+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |    SDA.0 | ALT5 | 0 |  3 || 4  |   |      | 5V       |     |     |
 |  11 |   9 |    SCL.0 | ALT5 | 0 |  5 || 6  |   |      | 0v       |     |     |
 |   6 |   7 |   GPIO.7 | ALT3 | 0 |  7 || 8  | 0 | ALT3 | TxD3     | 15  | 13  |
 |     |     |       0v |      |   |  9 || 10 | 0 | ALT3 | RxD3     | 16  | 14  |
 |   1 |   0 |     RxD2 | ALT3 | 0 | 11 || 12 | 0 | ALT3 | GPIO.1   | 1   | 110 |
 |   0 |   2 |     TxD2 | ALT3 | 1 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |     CTS2 | ALT3 | 0 | 15 || 16 | 0 | ALT3 | GPIO.4   | 4   | 68  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | ALT3 | GPIO.5   | 5   | 71  |
 |  64 |  12 |     MOSI | ALT4 | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |     MISO | ALT4 | 0 | 21 || 22 | 0 | ALT3 | RTS2     | 6   | 2   |
 |  66 |  14 |     SCLK | ALT4 | 0 | 23 || 24 | 0 | ALT4 | CE0      | 10  | 67  |
 |     |     |       0v |      |   | 25 || 26 | 0 | ALT3 | GPIO.11  | 11  | 21  |
 |  19 |  30 |    SDA.1 | ALT4 | 0 | 27 || 28 | 0 | ALT4 | SCL.1    | 31  | 18  |
 |   7 |  21 |  GPIO.21 | ALT3 | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   8 |  22 |  GPIO.22 | ALT3 | 0 | 31 || 32 | 0 | ALT3 | RTS1     | 26  | 200 |
 |   9 |  23 |  GPIO.23 | ALT3 | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  10 |  24 |  GPIO.24 | ALT3 | 0 | 35 || 36 | 0 | ALT3 | CTS1     | 27  | 201 |
 |  20 |  25 |  GPIO.25 | ALT3 | 0 | 37 || 38 | 0 | ALT3 | TxD1     | 28  | 198 |
 |     |     |       0v |      |   | 39 || 40 | 0 | ALT3 | RxD1     | 29  | 199 |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-Orange Pi+---+------+----------+-----+-----+
osakanataro@orangepipc:/work/lcd/LCD-show$

・Waveshare 3.5インチTFTパネルのメーカ公式情報
3.5inch RPi LCD (A), 320×480 製品ページ」と「3.5inch RPi LCD (A)情報ページ
最終的には、ピンをどのような用途で使っているか、しか参考になる情報は無かった。

・Waveshare 3.5インチTFTパネルを汎用のflexfbで認識させるパラメータ
おっさんエンジニアの実験室」の「Waveshare 3.5 Spotpear TFTパネルをRPi2に付けて・・」で紹介されているfbtftのIssue#215「Support for Waveshare 3.5 Spotpear」の「fergie4000さんのコメント

modprobe flexfb  width=320  height=480  regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
modprobe fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24

fbtft_deviceのgpios指定はRaspberry Piの場合で、そのままOrange Pi PCで使うとセグメンテーションフォルト。
WiringOPを実行(gpio readall)して、resetで使う22ピンのRST、dcで使う18ピンのLCD_RSがOrange Pi PCでは何番にあたるかを確認。
wPiなら「gpios=reset:6,dc:19」、BCMなら「gpios=reset:2,dc:71」ということで、試してみた結果、後者の「gpios=reset:2,dc:71」となった、

・fbtft_deviceとflexfbのパラメータの意味
fbtft_device」と「flexfb
とはいえ、flexfbのinitパラメータに関しては完全に呪文

・fbtftの表示動作確認で使えるコマンド
fbtft公式の「Framebuffer use」。
fbiコマンドで画像出力する、というのが簡単。

・armbianでのモジュールパラメータの設定方法
Allwinner(Generic)のEnable Hardware Features」の「Connect your LCD Display

・Waveshare 3.5インチTFTパネルのタッチパネルを認識させるパラメータ
fbtftのIssue#215「Support for Waveshare 3.5 Spotpear」の「pykoonさんのコメント
fbtft wikiの「Touchpanel

ただし、armbian環境ではads7846_device が無く、ads7846 しかない。

ラズパイではoverlaysで制御するようだが、armbian wikiの「Allwinner DT overlays」にあるarmbian-add-overlayを実行しようとしても無いので、使えなさそう・・・
armbian forumの「ads7846 / Banana pro」を見ると使えそうなことが書いてあるんですが・・・

99-calibration.confのサンプル

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option  "Calibration"   "3932 300 294 3801"
        Option  "SwapAxes"      "1"
EndSection

・バックライト関連
fbtftのwikiに「Backlight」という項目はあるのだが、製品ページのピン配列を見ると該当しそうなものが見当たらない。
制御できないのではないか?


2017/05/05追記

・タッチパネル続報
三日坊主な私がいつまでブログやれるか...( ̄~ ̄;)の「Raspberry Pi でタッチパネル」に、下記でads7846_device単体でのコンパイルができる、という記載を発見

git clone https://github.com/notro/fbtft_tools.git
cd ~/fbtft_tools/ads7846_device; make && sudo make install

これを試してみると、armbian環境でもコンパイルできた。
調整の手法については、
特に縛りなくの「ebayで購入した3.2インチTFT液晶をRaspberry Piで使ってみる」と、fbtft公式の「ads7846_deviceのマニュアル
をあわせてみて試したところ、下記でとりあえず、タッチパネルの認識ができることを確認

insmod /lib/modules/3.4.113-sun8i/extra/ads7846_device.ko  gpio_pendown=1 cs=0 verbose=2 x_min=270 x_max=3830 y_min=340 y_max=3900

しかし、fbtft_deviceとバッティングするようで、どちらかしか利用できない状態
どうすればいいのかなぁ・・・

・動画再生
armbianのmplayはmplay2なので

sudo SDL_VIDEODRIVER=fbcon SDL_FBDEV=/dev/fb8 mplayer -vo sdl -framedrop -vf scale=360:240 動画.mpg

-vf scaleで適切なサイズを指定して縮小処理を行うような指定にしないと、動画の表示サイズが大きい場合、再生出来ない。

メモリ2GBになったOrange Pi Win Plusが登場


ようやくOrange Pi Win用のOSイメージが「公式ダウンロードリンク」に追加されたのでダウンロードを開始。
1つめが終わって2個目をダウンロードしようとしたらページがないという・・・

おや?と思ってページをリロードしてみると、さきほどまで「Orange Pi Win」と書かれていたものが「Orange Pi Win and WinPlus」に書き換わっているという・・・

そんなわけで、Allwinner A64搭載で、メモリが2GBになったOrange Pi Win Plusが登場です。
Orange Pi Win Plus Development Board

既存のOrange Pi Winは送料込み$28.41でしたが、メモリが1GBから2GBに増強されたOrange Pi Win Plusは$33.84になりました。
昨日発売されたAllwinner H5搭載のOrange Pi Primeもメモリ2GBで$33.84ですね。

どちらがいいかは悩むところですね

・Orange Pi Win Plusの利点?
 他にも採用例が多いAllwinner A64
 Windows IoTにも対応する可能性大
 電源をmicroUSBコネクタとすることも可能
 無線/BTがAP6121
 LCD端子(MIPI DSI 30ピン)があるので直つなぎもできる

・Orange Pi Primeの利点?
 電源は従来のOrange Piシリーズと同様にEIAJ#2で供給の安定化をはかっている
 無線/BTが、おそらくRTL8723CS 
 RCAビデオ出力がある


下記は、Allwinner H5/A64搭載のボードリストです。

Allwinner H5搭載版のOrange Pi Zero Plus2も登場。H3搭載版と1ドル違い


2週間前にAllwinner H3搭載のOrange Pi Zero Plus2が発売されました。
関連記事「Allwinner H3搭載のOrange Pi Zero Plus2登場

OrangePiのgithubにあるH5向けSDKに、Orange Pi Zero Plus2の名称があるので、H5じゃなくてH3なのかーと、残念だったのですが・・・発注したH3搭載版のOrange Pi Zero Plus2が届いた今日になって、H5搭載版のOrange Pi Zero Plus2が発売されるという・・・

しかも・・・価格差は1ドルしかないという・・・

H3搭載版Orange Pi Zero Plus2 送料込み$22.05
H5搭載版Orange Pi Zero Plus2 送料込み$23.05

スペックはSoCが差し替わってる以外は同じ模様。

いやさ・・・H3とH5が差し替え可能ってのはNanoPi Neo2でのサンプル例があったから知ってたけどさぁ・・・
まさかこの短時間で出してくるとは・・・・・・・・

くそったれ

Allwinner H3搭載のOrange Pi Zero Plus2登場


Orange Pi Zero Plus 2」が送料込み$22.05で登場

最初、Allwinner H5 SDKにOrange Pi Zero Plus2の名前が登場したので、H5搭載機かと思っていたのですが、Allwinner H3搭載ということで発売されたのがちょっと残念ではあります…

小型でHDMIコネクタ、eMMC 8GB付きと、組み込んで使うには最適な感じです

小型のOrange Piで比較するとこんな感じです。

Orange Pi Zero Orange Pi Zero Plus 2 Orange Pi One
SoC H3 H2+ H3
RAM 256 / 512 512 512
ストレージ microSDスロット eMMC 8GB+microSDスロット microSDスロット
有線LAN あり なし あり
WiFi あり XR819 あり AP6212 なし
Bluetooth なし あり AP6212 なし
HDMI端子 なし あり あり
GPIO 26pin+13pin 26pin+13pin 40pin
USBコネクタ USB*1+micsoUSB OTG*1 microUSB OTG*1 USB*1+microUSB OTG*1
電源供給 microUSB OTG microUSB OTG 極性統一#2

Allwinner A64搭載のOrange Pi Winが$28.41で販売開始


Allwinner A64搭載のOrange Pi Winが$28.41で販売開始されました。

Orange Pi Win Development Board A64 Quad core Support linux and android Beyond Raspberry Pi 2


既に販売開始されているAllwinner H5搭載のOrange Pi PC2と比較すると・・・

・SoCが異なる(同点)
 Allwinner H5 vs Allwinner A64
 ただし、演算能力的な差異は、ほぼ無い。
 Allwinner A64を、Allwinner H3とピン互換にしたものがAllwinner H5となる。

・GPUが異なる(PC2の勝ち)
 H5のGPUはMali450、A64のGPUはMali400MP2
 H5の方が性能は良い

・メモリは同じ
 OPi Win、OPi PC2共に1GBと同点

・LCD端子の有無(Winの勝ち)
 OPi Winは、LCD接続用のMIPI LCD端子あり
 OPi PC2は、無い
 LCDを直接駆動する必要がなければ、メリットでは無い
 (HDMI端子はどちらにもある)

・無線LAN/Bluetoothの有無(Winの勝ち?)
 OPi Winは、AP6212によるWiFi 802.11b/g/nと、Bluetooth 4.2に対応
 OPi PC2は、搭載されていない
 ただし、日本で合法的に使用するには、技適が無いものは不要要素なので
 利点と言えるかは微妙

・ボタンなどが多い
 OPi Winにはデバグとか組み込み用に便利なものがある
 OPi PC2は最小限

・オンボードeMMC
 OPi Winの標準構成はeMMCはないが、オプションで提供予定
 OPi PC2は、そのようなスペースは無い

・サイズの違い(PC2の方がコンパクト)
 OPi Win 93mm x 60mm 48g
 OPi PC2 85mm x 55mm 38g

・電源供給の違い
 OPi Winは、極性統一#2端子か、microUSBか、スイッチにより切り替え可能
  また、外部バッテリーの接続用端子ありのため、UPS的運転可能?
 OPi PCは、極性統一#2端子のみ

・USB端子数の違い
 OPi Winは4ポート
 OPi PC2は3ポート

というわけで、Armbian入れて、ボード単品もしくはHDMI出力で使う、という場合には、Orange Pi PC2の方がコストメリットもあり、優れています。
Orange Pi Winは、組み込んでLCD出力やバッテリー駆動とかを行わせようという場合に向くような感じです。

で・・・Orange Pi Winの「Win」って、何なのか?ってことなんですが、
同じAllwinner A64を使っているPINE A64BPI-M64って、Windows 10 IoTに対応してるんですよね。
(詳しくは→「Allwinner A64搭載ボードのBPI-M64とPINE64がWindows 10 IoTに対応開始」2016年8月)

なので、このOrange Pi Winも、Windows IoTに対応するっていう意味なんじゃないかなぁ・・・と思ってはいるのですが
今回の販売にあたっては、何も触れられていないのが残念なところです・・・

はたして、どうなるんでしょうね


OPi Winオンボードに搭載されている電源制御ユニット(PMU) AXP803について調べたら、同じくAllwinner A64を使っている「NanoPi A64」でも使われていることが判明。
NanoPi A64の基板サイズは64mm x 60mm と、OPi PC2より小型サイズ。