PIFWの開発設計メモ

このページは筆者の開発メモであり、一般公開している情報ではありません。
各種問い合わせ等には対応できませんのでご了承ください。

仕様

raspbian イメージ

https://www.raspberrypi.org/downloads/raspbian/

ここから、「RASPBIAN JESSIE WITH PIXEL」のZIPを取得する。
ZIP解凍後SDカードにddする。
LITEから最小限必要なモジュールを組み込んだイメージができあがった。

WaveShare互換 3.5インチ TOUCH LCD

WaveShareの製品が何もせずそのまま使える。(標準でドライバモジュールが組み込まれているので有効にするだけ)

公式からLCD-Showをダウンロードしてtar展開。 http://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A)

$ tar xvf LCD-show-*.tar.gz
$ cd LCD-show/
$ chmod +x LCD35-show
$ ./LCD35-show

これをやると/boot/config.txtを上書きするので、その他の設定をしていた場合は消える。
したがって、LCDの設定関係は最初にやるべき。

LCDの上下反転方法

/boot/config.txt

dtoverlay=waveshare35a

これを

dtoverlay=waveshare35a:rotate=270

に、変更すると上下反転する。 続いてタッチパネルのキャリブレーションを行う。

次のコマンドを実行しても同じ(ただし、config.txtが上書きされる)

$ cd LCD-show/
$ ./LCD35-show 180

OSOYOの3.5インチ

OSOYOは専用カーネルが必要でドライバは非公開。(OS Updateすると動かなくなる)

5インチ MDMI タッチLCD

HDMI 5インチHDMIに出力するための設定

$ cd LCD-show
$ ./LCD5-show

/boot/config.txtに次の1行を追記して上下反転させる

display_rotate=2

今まで設定してあったAudio等の設定はすべて消えるので、config.txtを修正する

タッチパネルのキャリブレーション

$ sudo apt-get install -y xinput-calibrator
$ DISPLAY=:0.0 xinput_calibrator

コンソールに表示されたメッセージをメモっておく

$ sudo vi /usr/share/X11/xorg.conf.d/99-calibration.conf

設定ファイルを開いて、Calibrationの所の4つの数字を書き換える

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option  "Calibration"   "3952 219 184 3911"
        Option  "SwapAxes"      "1"
EndSection

WiFiかLANでInternetにつなぐ

OSアップデート

$ sudo apt-get update
$ sudo apt-get upgrade

モジュールインストール

$ sudo apt-get install freeglut3-dev g++ libasound2-dev libcurl4-openssl-dev libfreetype6-dev libjack-jackd2-dev libx11-dev libxcomposite-dev libxcursor-dev libxinerama-dev libxrandr-dev mesa-common-dev usbmount

JUCE5対応

$ sudo apt-get install webkit2gtk-4.0-dev

pifwインストール

$ chmod 755 pifw
$ chmod 755 sw_pifw.py
$ sudo cp pifw /usr/local/bin/
$ sudo cp sw_pifw.py /usr/local/bin/

.xsessionに「/usr/local/bin/pifw」を記述

画面スリープの抑止

.xinitrcを用意して以下の内容を書き込む

xset s off
xset -dpms
xset s noblank

/etc/lightdm/lightdm.confを以下のように編集する

< xserver-command=X
---
> xserver-command=X -s 0 -dpms

編集したらlightdmを再起動する

sudo /etc/init.d/lightdm restart

.config/autostart/screensaver.desktopを作成し、以下の内容を書き込む

[Desktop Entry]
Type=Application
Exec=/home/pi/.xinitrc

クロック固定(1200MHz化)

cpu freq utlをインストール

$ sudo apt install cpufrequtils

設定する

$ sudo cpufreq-set -g performance

/boot/config.txtを編集(行追加)

arm_freq=1200

/etc/init.d/cpufrequtilsを修正(オンデマンドではなく固定にする)

ENABLE="true"
#GOVERNOR="ondemand"
GOVERNOR="performance"
MAX_SPEED="0"
MIN_SPEED="0"

再起動して確認する

$ sudo reboot
$ cpufreq-info

600MHzが0%、1200MHzが100%になっていれば固定化できている

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

CPU温度の確認

$ vcgencmd measure_temp

I2S Audio Interfece

WM8731を使用する。
オーディオはI2S、制御はI2Cで行っている。

alsamixer.PNG

Master : 79/79 0.00dB/0.00dB
Master Plauback: MM
Sidetone: 0
Line: L R/Capture
Mic: --
Mic Boost: 0
Mic Boost: 0
Playback Deem: MM
Capture: 75/75 6.00dB/6.00dB(GAIN調整品)
ADC Hich Pass: 00
Input Mux: Line In
Output Mixer HiFi: 00
Output Mixer Line Bypass: MM
Output Mixer MIC Sidetone: MM
Store DC Offset: MM

ドライバ

スイッチボード

sw_board.png

AIFボード MIDI用拡張ポート(β1のみ)

EXP_CN_MIDI.png

MIDI

UARTにMIDIを通すには、UARTクロックを変更する必要がある。
https://openenergymonitor.org/forum-archive/node/12412.html

GPIO UARTクロックを変更し、Bluetoothを無効にする

Bluetoothを無効にする

$ sudo systemctl disable hciuart
$ sudo nano /lib/systemd/system/hciuart.service
change the first ttyAMA0 in ttyS0

/boot/cmdline.txt から、次の文字列を削除する(デフォルトではUARTはコンソール)

console=serial0,115200

/boot/config.txt に、次の文字列を追加する

dtoverlay=pi3-miniuart-bt
init_uart_clock=39062500
init_uart_baud=38400
dtparam=uart0_clkrate=48000000

再起動

$ sudo reboot

ALSAにMIDIデバイスとして見えるようにする

https://github.com/cjbarnes18/ttymidi

UART-MIDI I/F

MIDI-UART.png

フォトカプラは高速品が好ましいが汎用品でも問題ない。
トランジスタも汎用品(2SC1815等)でも問題ない。
回路図の型番は表面実装用のチップ。

GPIO

SIGNALPIN(内)PIN(外)SIGNAL
3.3V125V
GPIO-2(I2C SDA)345V
GPIO-3(I2C SCL)56GND
GPIO-4(空き)78GPIO-14(UART TXD)
GND910GPIO-15(UART RXD)
GPIO-17(TP IRQ)1112GPIO-18(I2S BCK)
GPIO-27(空き)1314GND
GPIO-22(空き)1516GPIO-23(空き)
3.3V1718GPIO-24(LCD RS)
GPIO-10(SPI MOSI)1920GND
GPIO-9(SPI MISO)2122GPIO-25(空き)
GPIO-11(SPI SCK)2324GPIO-8(LCD CS)
GND2526GPIO-7(TP CS)
ID-SD2728ID-SC
GPIO-5(ENC-B)2930GND
GPIO-6(ENC-A)3132GPIO-12(LEFT)
GPIO-13(DOWN)3334GND
GPIO-19(I2S LRCK)3536GPIO-16(RIGHT)
GPIO-26(UP)3738GPIO-20(I2S DIN)
GND3940GPIO-21(I2S DOUT)

LCDとTPは共用でSPIを使っていて、CSで切り替えている。
TPは割り込み(IRQ)で取り込む。

AUDIOはI2Sで接続。
AD/DAチップの制御はI2Cで行っている(レジスタ設定時のみ)。

UARTはMIDIに使用予定。

その他の空きGPIOはスイッチ類に使用予定。
現在はプッシュスイッチ2個とロータリーエンコーダーのみ。

ストレージのサイズ変更(縮小)

以下は別PC(Linux専用機)のFedoraでの作業

概要: 第2パーティションの使用量は2GB弱。
目標パーティションサイズを2.3GBとする。(少し余裕を残さないと後で困る)
resize2fsで縮小するサイズは2.2GBとする。

e2sck -f /dev/sdd2
チェックする(必須)

resize2fs -p /dev/sdd2 2200M
目標パーティションサイズより少し少なくする
指定サイズが小さすぎて縮小が無理だとエラーがでる

fdisk /dev/sdd
dコマンドで第2パーティションを削除する
pコマンドで状態を確認する
nコマンドで新しいパーティションを作る(開始シリンダに注意)
pコマンドで状態を確認する
wコマンドで書き込む

ストレージのサイズ変更(最大に拡張)

e2fsck -f /dev/sdd2
チェックする(必須)

fdisk /dev/sdd
dコマンドで第2パーティションを削除する
pコマンドで状態を確認する
nコマンドで新しいパーティションを作る(開始シリンダに注意)
pコマンドで状態を確認する
wコマンドで書き込む

resize2fs -p /dev/sdd2
サイズ指定をしなければ、パーティションサイズまで自動で拡張される

SDカードからイメージを作成

SDカードに作成した状態から、最小限のサイズだけイメージ化する。
例えば、8GBのカードに最小構成を作成して上記パーティションの縮小作業をして2GBまで切り詰めたとする。
これをそのままddやWin32DiskImageでイメージ化すると、8GBカードの後半6GBもゴミデータとしてファイルに書き出されてしまう。

こうしてやれば、出来上がったイメージを4GBのカードに展開することもできる。

IPアドレスを調べるスクリプト

#!/bin/sh
/sbin/ifconfig -a |
   grep "inet addr" |
   grep -v "127." |
   sed -E 's/[\t ]+inet //g' |
   sed -e 's/ Bcast/\nBcast/g' |
   sed -e 's/ Mask/\nMask/g'
sleep 10

添付ファイル: fileMIDI-UART.png 1028件 [詳細] filesw_board.png 1089件 [詳細] filepi3_gpio.png 586件 [詳細] filealsamixer.PNG 1118件 [詳細] fileEXP_CN_MIDI.png 1116件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-27 (月) 23:39:34