Raspberry Pi2 model Bに3.5インチのタッチパネルディスプレイを接続しました。
RaspberryPi2 Model B (ラズベリーパイツーモデルビー) RS版
http://akizukidenshi.com/catalog/g/gM-09024/
Quimat 3.5インチタッチスクリーン HDMIモニタTFT LCDディスプレイ Raspberry Pi 3 2 Model B Rpi B B+ A A+ 映画 アーケードゲーム オーディオ入力 RPi GPIOブレークアウト拡張ボード 保護ケースキット アクリル(透明) QC35Chttps://www.amazon.co.jp/gp/product/B075K56C12/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1
Quimat 3.5インチタッチスクリーン は、HDMIで接続するLCDディスプレイです。ケースなしもありますが今回はケースありを選択しました。
HDMIの小型タッチパネルはいくつかありますが、本品は、GPIOピンが引き出せます。
開封した写真です。
GPIOが引き出せるのでタッチパネルに使用していないピンは使用できます。
組立後の写真です。
タグ別アーカイブ: ARM
Raspberry PI2 + Chainer
Raspberry PI2でAIを試すためChainerをインストールしました。
https://chainer.org/
Pythonは、raspbian9.1に初めからインストールされています。
バージョンは、Python 2.7.13 を使用しました。
以下の物をインストールしました。
sudo apt-get install python-dev
sudo pip install chainer
Chainerは、3.3.0がインストールされました。
テストのため デモプログラムtrain_mnist.pyを実行しました。
sudo python train_mnist.py
動作完了までに112091 秒かかりました。約31時間かかったことになります。
いろいろやってみようと思います。
Google AIY VOICE KIT ASSEMBLY
Google AIY VOICE KITを組み立てます。
カラー冊子のマニュアルに詳しい組立方法が記載されています。
またプロジェクトのホームページにも組立方法があります。
https://aiyprojects.withgoogle.com/voice#assembly-guide
樹脂の支柱を2本取り付けてVoice HATを取り付けます。支柱の取り付けは固いので破損させたり、怪我したりしないように注意してください。
付属品の他に、小さいプラスドライバと両面テープが必要です。プラスドライバは、スピーカ接続に使用します。
ケーブルでマイクボードを接続します。
ボタンケーブルを接続します。
次に箱ケースを組み立てます。
中箱を組み立てます
スピーカをはめ込みます。
中箱を箱ケースに収めます。
ボタンを上蓋にはめ込み配線します。配線ピンを間違えないように接続します。
両面テープは、マイクボードを貼り付けるに使用します。マイクはボードの左右にあり、箱の小さい穴にマイクが合うように貼り付けます。
LPC4370 UART2
デバッグ等で使用できるようにLPC4370のUART機能を使用してみました。USBシリアル変換に以下のモジュールを使用しました。
超小型USBシリアル・モジュール【MPL2303SA】http://www.marutsu.co.jp/pc/i/137791/
periph_uart_rbサンプルプログラムでループバックの確認をしました。
LPC-LINK2が1.27㎜ピッチコネクタなので以下基板を使用しました。
10ピン2.54ピッチ(2×5)←→1.27ピッチ(1×10)変換基板 (4個入)
http://akizukidenshi.com/catalog/g/gP-07380/
他に1.27mmピッチボードソケット 2列80PとI型ヘッダーソケット 2列x5(10pin)
http://eleshop.jp/shop/g/gE2P134/
http://eleshop.jp/shop/g/gDA9364/
を使用して配線できるようにしました。
USBのCDCとUART2が使用できるようになりました。
LPC-LINKⅡ AS AN LPC4370 EVALUATION BOARD
HSADCを体験したくLPC4370の評価ボードとしてLPC-LINK2を購入しました。
http://akizukidenshi.com/catalog/g/gM-06706/
LabTool 、デバッガ用のLPC-LINK2が既にあるので今回3枚目のLPC-LINK2となります。同じボードとしては一番多く保有するボードとなりました。
開発環境で若干問題がありました。LPC-LINK2をCMSISM-DAPとして使用するとSPIFIのフラッシュに書き込みができませんでした。CMSISM-DAPはあきらめRedLinkを試すことにしました。新しいLPCXpressoは、デフォルトのデバッガがCMSISM-DAPなので、ちょっと古いものを使用しました。
LPCXpresso v7.1.1_125がPCに入っているのでこれで試したところ問題なくデバッグができるようになりました。
LPCXpresso v7.1.1_125でサクッとLED点滅の「periph_blinky」サンプルが動いたので、動作確認でUSBでシリアル通信が使用できるように「usbd_rom_cdc_vcom」サンプルを試しました。
CDCのドライバは、」以下のURLからダウンロードしました。
https://www.lpcware.com/content/nxpfile/lpcxpresso-link2-usb-driver-package
lpc_driver_setup.exe
この実行ファイルをダウンロードして実行します。
LPC USB VCom Portとして認識されました。
無事、Tera termでループバック通信ができました。
それにしてもLPC4370は、コアが3つもあるのですね。現状Cortex-M4だけを使用しています。いずれトリプルコアも使ってみたいですがまずはデュアルですね。
LPC4330-Xplorer i2s Reberve
LPCOpenの periph_i2sプロジェクトを改造して簡単なReberveを作成します。 前回のDelayを改造するので、設定は同じサンプリング周波数は32kHz、16bitデータ長のステレオ設定としました。 データ取得も同じ、割り込みで取得します。
一番単純な1系統のフェードバック系だけを作成します。入出力はステレオですが、バッファリングは、メモリ節約を考えて16bit符号なし整数としました。反響音は、左右同じ音を使用します。バッファ長は、100msecとし、3200個、3.2kBとなります。フィードバック量は、まず、0.2で試しました。原音0.8に対して100msecバッファの音0.2を足し合わせて出力します。Delayとの違いは、バッファに、原音でなく足し合わせた音を保存するところです。
フェードバック量を変えると長い反響が続き面白かったです。
LPC4330-Xplorer i2s DELAY
LPCOpenの periph_i2sプロジェクトを改造して簡単なDELAYを作成します。
サンプリングレートからi2sの通信速度を設定できるのでこちらを利用することにしました。
サンプリングレートは、48kHzも必要なく、処理時間を確保したいので32kHzとします。16bitデータ長のステレオ設定としました。
データは、割り込みで取得します。とりあえず、0.5秒間のDELAYを実現するために32bit符号なし整数のバッファを作成します。バッファ長は、32000の半分なので16000個、64kBとなります。リングバッファで使い、今回のデータと16000回前のデータを足し合わせて出力しました。
今回、これだけです。まずは、足し合わせはできることが確認できました。もっと複雑な処理に挑戦したいと思います。
LPC4330-Xplorer i2s LPCOpen sample
NXGのサンプルに引き続きLPCOpenのi2sを使用してみます。
LPCOpenは以下のページからダウンロードできます。
https://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc43xx-packages
LPCXpresso v7.9.2_493 IDEにサンプルをインポートします。この中の periph_i2sプロジェクトを使用します。
このサンプルには、ポーリングと割り込みとDMAを使ったサンプルが含まれています。
ただし、これを使用するには、UARTでコマンドを送る必要があります。幸いにもXBeeをつなげておいたのですんなりとコマンド送信ができました。
ビルドも難なく通り、書き込みも難なく終わりデバッグできますが、ギターを鳴らしても音が聞こえません。
Decimator volumeが大きくADC入力が減衰しすぎのようです。NXGのサンプルと同じ値にしました。
UDA1380_REG_DECVOL_DEFAULT_VALUEの0xE4E4を減衰でなく増幅側の0x0F0Fに変更しました。
音が聞こえるようになりました。音が大きすぎるのでこれもNXGのサンプルで変更したようにしました。
UDA1380_REG_MSTRVOL_DEFAULT_VALUEの0x0000を0x8080に変更しました。
その他の設定は、48kHzで16bitデータ長になっています。16bitなので送受信時にFIFOから1回の読み書きで行っています。
ポーリングは、転送が追い付いていないのか、ノイズだらけで使い物になりません。
割り込みは、リングバッファを使うとADとDAがかみ合わないのかノイズがでるのでNXGと同じようにバッファをつかず、直接転送すれば使用できます。
DMAは、ノイズありませんが、ADCからDACへ直接転送している設定なので入力を処理して出力に出すことができません。メモリに転送する方法を探ろうと思います。
当面、割り込みを改造して遊んでみようと思います。
LPC4330-Xplorer i2s NXG sample
LPC4330-Xplorer
http://akizukidenshi.com/catalog/g/gM-06457/
LPC4330-Xplorerには、オーディオ・コーデック(UDA1380)が搭載されています。
これを使用し、i2sのサンプルでギターの入力をヘッドホンで聞いてみようと思います。
サンプルは、NXGの物とLPCOpenの物を使用します。
まずは、NXGのサンプルで試してみます。
NXGのサンプルは以下のページからダウンロードできます。
http://shop.ngxtechnologies.com/product_info.php?cPath=21_37&products_id=104
LPCXpresso v7.9.2_493 IDEにサンプルをインポートします。この中の LPC4330_Xplorer_Audioプロジェクトを使用します。
ビルドも難なく通ります。MCU Settingsだけ変更が必要です。Default flash driverを
LPC18_43_SPIFI_4MB_64KB.cfx
に変更してください。
デバッガには、LPC-LINK2を使用しました。現在LPC-LINK2はCMSIS-DAPとして使用しています。
書き込みも難なく終わりデバッグできます。
ギターとヘッドホンをつないで聞いてみました。スルーしているだけなのヘッドホンからギターの音が聞こえました。ちょっと音がでかいです。
デフォルトでマスターボリュームが最大(0x00)なので左右とも0x80を設定しました。
UDA_Reg_write((UDA1380_REG)UDA1380_REG_MSTRVOL, volume);
レジスタに設定するだけでボリュームがコントロールできます。
その他の設定は、44.1kHzで32bitデータ長になっています。32bitなので送受信時にFIFOからLRの両方の取り出しと書き込みを2回行っています。
今回変更したのは、これだけです。i2sは、割り込みを使用した取り込みです。今後、入力信号を処理して出力してみたいと思います。
mbed NXP LPC1768 CMSIS-DAP
mbed NXP LPC1768のファームウェアが更新され、CMSIS-DAPに対応したのでLPCXpressoでローカルでバッグを試してみました。
最新ファームウェアを以下サイトからダウンロードします。 https://developer.mbed.org/handbook/Firmware-LPC1768-LPC11U24
rev 141212を使用しました。CMSIS-DAP support です。 mbedmicrontroller_141212.if
このファームウェアをmbedドライブに書き込みます。電源リセットすれば、ファームウェアが有効になります。
これだけでは、CMSIS-DAPとして認識されません。Windows側にもドライバをインストールする必要があります。
以下サイトからドライバがダウンロードできます。 https://developer.mbed.org/handbook/Windows-serial-configuration#1-download-the-mbed-windows-serial-port
mbedWinSerial_16466.exe
このファイルを実行するとドライバがインストールされます。
これで準備できました。
これを機にLPCXpressoもアップグレードしました。LPCXpresso v7.9.2_493を使用します。
プログラムは、オンラインコンパイラで作成したプロジェクトをオンラインコンパイラでエクスポートできます。エクスポートするとき、いくつかのIDEの選択ができますが、ここでは、LPCXpressoを選択します。
プロジェクトは、zipファイルでダウンロードされます。
圧縮ファイルのままLPCXpressoでインポートします。
プロジェクトには、mbed-SDKも含まれているので、そのままローカルコンパイルができました。
USBケーブルをmbed LPC1768につなげば、他のLPCXpressoボードと同様に書き込み、デバッグが可能です。ソースコードでブレークすることもできます。
今回は、LEDチカチカの簡単なプログラムで試しました。 オンラインコンパイラもよいのですがデバッグできないのとbinファイルをダウンロードして、毎回コピーするのが面倒でした。LPCXpressoは、純正コンパイラでないのと、フリー版なのでサイズの制限がありますが、mbedでちょっと使ってみようと思います。