2019年6月9日日曜日

IchigoJamで効果音

IchigoJamでゲームを作ったり電子工作をするときに音がでるといいですよね。
BASICにBEEPや音階をだす機能はあるのですが、サイレンや光線銃的な音が出せたらよいなと実験をしてみました。

IchigoJamで効果音チップを動かしてみる件


使ったもの

  • KD9561 CK9561


とりあえず、通販で買えるこれを試しました。情報はネット検索でたくさん見つかりますので基本情報には事欠きません。ただそれだけなら、この記事はあまり意味がありません。 

Webで見つけた使い方

どの記事も一様に次のように書いてあります。

  • 220KΩ前後の抵抗器をつなぐ(幅はひろいようです)
  • 電源に10uFのコンデンサをいれて+とーに電源をつなぐ。
  • 出力をトランジスタのBASEにつなぐ。
  • トランジスタのコレクタを圧電ブザーにつないで、ブザーの反対側は+につなぐ。
  • K1とK2をーや+につなぐと合計4種類の音がでる。
  • この使い方だと音は酷い。まともなアンプとスピーカにつなぐとかなりましになる。

ちょっと考えました。


  1. トランジスタのBASEに直結するということは、抵抗が内蔵されているか電流出力になっている。しかも、電流は少なくとも数mAはでてくるはず。
  2. IchigoJamで使うのに、音が鳴りっぱなしは使いにくい。

そこで、実験です。

トランジスタを付けずに、8Ωの普通のスピーカを直結してみたらまあまあの音で(オモチャには十分な音質)音量も屋内用なら十分な音量で鳴るではありませんか。これはラッキーです。

次はどうやって音をとめるかですが、元々の使い方では、ボタンを押すと電源がつながるようになっていたはずです。電圧も3.3vでちゃんと鳴りますし、実験では電圧を下げても音量が下がるだけで鳴っています。 それならばと、IchigoJamのOUT1から電源をとるようにつないでみました。するとOUT1,1[enter]と打ち込むと、ちゃんと鳴るんですねえ。

ここまで用意して、いつも電子工作をしている子供たちに半田付けして鳴らしてもらいました。 後は放置して、様子見です。

これを作った子供たちは、その後どうしたか。

その後、OUT2にK2をつないでおいてOUT2,1とOUT2.0でサイレンの種類が変わるようにだけ教えたのですが、しばらくすると、無いはずの色々な音を出し始めた子がいました。GOTO LOOPで1,0を繰り返しWAITでタイミングを調整すると混ざってきていろんな音を出して気に入った音を探していました。 こんな発見をしてくれるなんて、やっぱり子供っていいですねえ。

ちなみに 今日はやっていませんが、K1は+/Open/-につないで3種の音が出る仕様なのでOUT の0,1、-1で音が変えられるはずです。

作ってもらったのは、これです。



 黒ー>GND
 白ー>OUT2
 赤ー>OUT1 (LEDにつなぐと、LED1で音が鳴ります。)

これで、OUT1,1 で音がでて、 OUT1,0で止まります。
OUT2,0 OUT2,1 で音が変わります。

IchigoJamで作るイライラ棒で失敗したらLEDが点くようにプログラムしたものがあったので、赤(+)をソケットのLEDに挿し変えてみたところ、プログラム変更なしで、音の出るイライラ棒ゲームにアップグレードできました。

問題ないか一応の確認

10uFのコンデンサや間接的に8ΩのスピーカなぞをOUTにつないでしまって大丈夫か気になるところですよね。
まず、音を鳴らしているときのOUT1端子の電圧を測りました。

  電源電圧3.3V  OUT1の端子電圧≒2.9V 約0.4V下がっています。

LPC111xの仕様書をNXPサイトで探してきてみたところ OUTをGNDにつないで流れる最大の電流値=50mAとあります。注釈の[15]がついていて、「Limitを値を越えないかぎり容認される」とあります。別のところでLimitを探しますと電源電流値で100mA とありますので、1ピンだけならOUTから目いっぱい電流をとっても許されるようです。

また、出力電流特性あたりも VDD-0.4Vを基準にかいてあります。ということは0.4Vさがるような使い方というのはそれほど無茶ということもなさそうです。

ということで、これだけなら(他にも何かつなぐとどうなるかわかりませんが)すぐに壊れてしまうようなことはなさそうです。

スピーカ直結で作るのも簡単。部品集めも楽。音質も問題なし。で言うことありません。

屋外用とか、音量を上げたいときはアンプにつないでください。

以下参考ですが、6ピンのピンヘッダをパターンの反対側から半田付けすれば、ブレッドボードに挿すこともできます。+が繋げられないように見えますが、調べてみると+と名前のない端のピンは中でつながっていました。つまり+と書いてある端子でなく6番目のピンをつかえば、無理なく6ピンでブレッドボードで配線できるようです。

ただし、以上は私の入手したものの場合ですので、各自確認の上でご使用ください。
私は5台ほど組み立ててすべて同じように動くことを確認できています。

キットにしてみた。

ご要望にお応えしてキットにしました。内容の保証はできませんが、試してみたい方々用に説明書を置いておきます。自己責任でお楽しみください。


2019年3月31日日曜日

IchigoBoy 2、IchigoBoy Pocket2

IchigoBoyを更新します。

皆さんからご意見頂きまして改定することにしました。

IchigoBoy2

抵抗器の配置で違う種類が混ざっていたので並べなおしました。
抵抗の足の間隔を少し広げて付けやすくしました。
モニターコネクタが当たっていたので切欠きました。
LCDの位置を左右中央に移動しました。
電池コネクタを少し移動しています。
OUT1~6に配線できるパッドを追加しました。キースイッチと切り替えでうまく使えば利用できます。
コマンドが裏側に書いてありますが、電池ボックスで隠れにくいように少し移動しました。
バックライトにジャンパー線を付けていましたが、パターンを追加してジャンパーの半田付けを不要にしました。暗く設定するときはパターンを削ればOKです。
     等々。

IchigoBoy Pocket2

ROMを追加しました。(OFFできるので、外付けROMも使えます。)
Bボタンが押しにくかったので位置を調整しました。
電源スイッチに足つきの壊れにくいものも使えるようにしました。従来タイプも使えます。
基板の中央になりましたが、OUT1~6の端子を出しました。キースイッチと共用ですが使えます。


補足

PocketはROMを追加しました。スイッチの間に置きましたのでちょっと目立ちます。
OUT1~6を配線を半田付けして引き出せるように追加ポートを用意しました。
INはLCDに使っているので、やめておきました。LCDのあるコントローラなどに利用できるとおもいます。
OUT1~6はBoy的にはINに設定して使いますのでそのままであればボタンの状態が追加ポートでわかります。ここで、OUTに変えるとスイッチの状態ではなくOUTした状態に変わります。注意点は、INで使うときはスイッチの状態(通常0で押すと3.3V)になることと、抵抗が入っているので取りだせる電流に制限があることです。

回路は基本的には変わっていませんので掲載は省略します。

回路図追記(Pocket ROM付き版、OUTPORTはIchigoBoy2と同じです。)
ダウンロードはこちら


告知

メイカーフェア京都2019にエントリーしましたので、これにもっていく予定です。



メイカーフェア京都2019に出展しました。お買い上げいただいた皆様ありがとうございました。





Ichigojam用モニターTVの中の基板

IchigoJamで使っているダッシュボードモニタの故障品が届きました。
修理しようとして溜まっています。
とりあえず写真だけ撮ってあったたけで修理は進んでいないのですがこれはこれで面白いので公開しておきます。







電解コンデンサを交換したら動きましたが、、
ケースに入りません。(^^;;;

中身は色々ありますね。
故障個所ですが、ざっと見たところでは電解コンデンサの容量抜けですねえ。電解コンデンサのてっぺんは平らなのが初期状態ですがよく見ると膨らんできています。典型的な不良モードです。コンデンサとしては機能しなくなってると考えられます。

となれば修理作業は単純で、コンデンサを交換すればOKです。

ただ、故障したのは面実装用の小さな部品を使っていて熱がコモッタというのが根本にある可能性があります。それだと同じ部品を持ってきて交換してもまた壊れます。
外形が大きなコンデンサに変えればよいですが、それだとケースに収まらなくなります。

1台はフェライトコアが割れていました。割れたかけらが残っていれば瞬間接着剤で貼り付ければ治りますが、なくしてしまいました。

面実装コンデンサの交換はそれなりに難しいというのもあって放置ですが、近いうちに直したい。です。

LPC1114 にプログラムを書く

IchigoJamに使われているLPC1114は、NXPから無償のコンパイラが入手できます。
書き込みTOOLもFlashMagicがNXP社のサイトからダウンロードできます。
ところが、コンパイラがつくるファイルはELFフォーマットでそのままではFlashMagicでは書き込みできません。Linuxだと変換TOOLがあるのですが、Windowsにはないようです。
LPCExpressoを買えば、ELFファイルを書き込めるので問題はないのですが、FlashMagicでも書けるようにしてみたい。

ELFをBINやHEXファイルにするTOOLを作ろうというのが今回のテーマです。

NXP社のコンパイラ

まずは、LXP11xx用のTOOLとExampleをダウンロードしてきます。
無償でも256Kbまでコンパイルできるようで、問題なく使えます。LPC1114には32KBしかメモリがないので余裕です。

さて、とりあえず以前にも使ったことのあるBlinkyをReleaseでコンパイルしました。
コンパイルに先立って参照するライブラリをコンパイルしておかないとエラーになります。

プロジェクトのReleaseフォルダのなかに「LPCX1114_cmsis2_blinky.axf」というのができていました。拡張子が予想とちがいますが、これがELFファイルのようです。

次に中を見たいのでバイナリエディタを探してもいいのですが、後で変換する予定なので中をみるツールを作ることにします。

ファイルをバイナリでひらくプログラム

Visual Studio2013

C#のデスクトップアプリを作ることにします。
Form1にボタンとテキストボックスを貼って、テキストボックスのマルチライン=TrueにしてFrom1に次のコードを書きます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace ArmElfHandle
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        
        byte[] elf;

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            if(ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {

                FileStream fs = new FileStream(ofd.FileName, FileMode.Open);

                elf = new byte[fs.Length];

                fs.Read(elf, 0, elf.Length);

                fs.Dispose();

                StringBuilder sb = new StringBuilder();

                for(int i=0; i<elf.Length; i++)
                {
                    sb.Append(elf[i].ToString("x2"));
                    if((i%16)==7)
                    {
                        sb.Append(" -");
                    }

                    if((i % 256) == 255)
                    {
                        sb.Append("\r\n\r\n");
                    }
                    else if((i % 16)== 15)
                    {
                        sb.Append("\r\n");
                    }
                    else
                    {
                        sb.Append(" ");
                    }
                }

                textBox1.Text = sb.ToString();
                
            }

        }
    }
}

実行するとファイルを開くダイアログが現れるので、先ほどのELFファイルを指定します。
結果はこんな感じです。”45 4c 46”(ASCIIでELF)が最初にあってよさげです。
これで、ELFファイルのバイナリダンプができました。このTOOL上では見にくければ適当なテキストエディタなどにコピペすれば見やすくなります。

ELFファイルのダンプリスト

さて、ELFファイルですが、最初の256バイトはこうなっていました。

7f 45 4c 46 01 01 01 00 - 00 00 00 00 00 00 00 00
02 00 28 00 01 00 00 00 - 03 01 00 00 34 00 00 00
6c 5b 02 00 00 02 00 05 - 34 00 20 00 02 00 28 00
13 00 10 00 01 00 00 00 - 00 00 01 00 00 00 00 00
00 00 00 00 ac 06 00 00 - ac 06 00 00 05 00 00 00
00 00 01 00 01 00 00 00 - 00 00 02 00 00 00 00 10
ac 06 00 00 04 00 00 00 - 0c 00 00 00 06 00 00 00
00 00 01 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00

これを後述のLINKを参考に手作業で調べてみます。

ELFヘッダの手解析

7f 45 4c 46  最初の4バイトは固定です。3バイトは”ELF”ですね。
01      EI_CLASS:32ビットアーキテクチャ
01      EI_DATA:リトルエンディアン
       (複数バイトの値は下位バイトから書くということ)
01      EI Version は 1
00 - 00 00 00 00 00 00 00 00 ゼロで埋めてあるらしい。将来拡張用かな

02 00     種類。実行ファイル。(予想通りですね)
28 00     マシンの種類。ARMの仕様書に40と書いてあり一致しています。
01 00 00 00 - Version 1
03 01 00 00  e_entry; システムが最初に送る制御コードの仮想アドレス
34 00 00 00  e_phoff; プログラムヘッダテーブルのオフセット
6c 5b 02 00  e_shoff; セクションヘッダテーブルのオフセット
00 02 00 05 - e_flags; マシン固有のフラグ
34 00     e_ehsize; ELFヘッダのバイト数
20 00     e_phentsize;プログラムヘッダテーブルの登録ごとのバイト数
02 00     e_phnum; プログラムヘッダテーブルの登録数
28 00 -     e_shentsize; セクションヘッダのバイト数
13 00     e_shnum; セクションヘッダテーブルの登録数
10 00     e_shstrndx; セクション名テーブルのあるセクションテーブル番号

これで52バイトですので、テーブル中のELFヘッダのバイト数34と一致しました。
プログラムヘッダテーブルのオフセットが34なのですぐ次がプログラムテーブルだとわかります。テーブルには2つの登録がありテーブルの大きさが20なので各々32バイトです。
とりあえずセクションテーブルは使いません。フラグが何かCPUの設定を持っていそうです。

プログラムヘッダテーブル

ELFヘッダからヘッダテーブルの位置と大きさがわかりました。
次の2ブロックからなるテーブルがあるとわかりました。

エントリー1:
                  01 00 00 00 - 00 00 01 00 00 00 00 00
00 00 00 00 ac 06 00 00 - ac 06 00 00 05 00 00 00
00 00 01 00 

エントリー2
                  01 00 00 00 - 00 00 02 00 00 00 00 10
ac 06 00 00 04 00 00 00 - 0c 00 00 00 06 00 00 00
00 00 01 00

手作業で解読してみます。
エントリー1:
01 00 00 00 - p_type セグメントタイプ
00 00 01 00   P_offset セグメント内のアドレスオフセット
00 00 00 00   p_vaddr 仮想アドレスオフセット
00 00 00 00   p_paddr 相対アドレスマシン用の物理アドレス
ac 06 00 00 - p_filesz ファイル内でのプログラムのバイト数
ac 06 00 00    p_memsz メモリイメージ内でのプログラムのバイト数
05 00 00 00   p_flags メモリセグメント用のフラグ
00 00 01 00   p_align ファイル内のセグメントの配置指定のための数

エントリー2
01 00 00 00 -  p_type セグメントタイプ
00 00 02 00  P_offset セグメント内のアドレスオフセット
00 00 00 10   p_vaddr 仮想アドレスオフセット
ac 06 00 00   p_paddr 相対アドレスマシン用の物理アドレス
04 00 00 00 -  p_filesz ファイル内でのプログラムのバイト数
0c 00 00 00    p_memsz メモリイメージ内でのプログラムのバイト数
06 00 00 00  p_flags メモリセグメント用のフラグ
00 00 01 00  p_align ファイル内のセグメントの配置指定のための数

ELFファイルのアドレスオフセットの位置からfilesz分だけ読み出して使えばよさそうです。
エントリー2のファイル内のデータが4でメモリ上では12で足りませんが、不足分はゼロで埋めます。
これで、ELFからプログラムコードが取得できそうです。

FlashMagicについて

バイナリファイルを書きだしてFlashMagicで書き込むというのが当初のプランでしたが、FlashMagicが汎用ツールのためCPUのIDチェックなど手厚く処理します。このため、時々書き込めなかったりします。
ISPでの書き込み手順は公開されているので、こうなったら自分で作ることもできます。
ISP書き込みはすでに作ったことがあるので問題ないでしょう。



ELFファイルフォーマット:







2018年6月2日土曜日

IchigoBoy作りました

 GameBoyは有名なポケットゲーム機です。

これのオマージュとでもいうのでしょうか、Arduinoを使ったこんなのもあります。
自分でもゲームがプログラムできるというのも興味を惹かれます。
https://www.switch-science.com/catalog/2880/

そこで、自分でも作ってみました。

外観



コンセプト

電池で動く携帯ゲーム機を作る
IchigoJam V1.2で装備されたMobileモード(128x64 LCD表示)を使う。
IchigoJamとしても動く。<<テレビとキーボードとROMカセットが使える。

特徴


  • 単四電池3本動作
  • IchigoJam BASIC搭載で 小学生でも自分でプログラムできる。
    • IchigoJamT基板は別途ご用意ください。
  • DIP部品を使っているので、自分で半田付けして組立できる。
  • 128x64ドット モノクロ液晶搭載
  • 3V動作キーボードなら電池で使えます。電池が新しければ5Vキーボードでも消費電流が少なければうごきます。試してみてください。
  • IchigoJamに通常の5Vをつないでも使えます。キーボード(5V品)を使う時や電池がないときはこれで。
  • TXD、RXDなど通信用信号もソケットに出してあります。

回路



回路を工夫してありタクトスイッチを押すと、IN(番号)=1になります。

  • これでプログラムの移植が簡単になります。
  • OUTで何かを動かすとき面白い動作ができますが、これは後日書きます。

ソフトウエア

STARTキーを押しながら電源ONで起動するメニュープログラムを用意しています。メニューでプログラムを選んでプログラムスタートできます。


1 'Mobile Menu
5 IF IN(9)=0:GOTO5
10 L=0:I=1
20 SWITCH1:CLS:UART1
30 OUT1,-1:OUT2,-1:OUT3,-1:OUT4,-1
40 OUT5,-1:OUT6,-1
50 CLS:?"***************"
100 FILESL,L+3
110 ?"***************"
120 ? CHR$(226);" ";CHR$(227);" & START";
130 LC0,I:?CHR$(225);
200 IF IN(5)=1: GOTO 300
210 IF IN(8)=1: GOTO 400
220 IF IN(9)=0: GOTO 500
230 GOTO200
300 IF I>1:I=I-1:GOTO 600
310 IF L>4:L=L-4
320 IF L<100: L=0
330 GOTO 600
400 IF I<4:i=I+1:GOTO 600
410 IF L=0:L=100:GOTO 600
420 IF L<227:L=L+4:GOTO 600
430 GOTO 600
500 LRUN L+I-1
600 IF IN(5)=1:GOTO 600
610 IF IN(8)=1:GOTO 610
620 IF IN(9)=0:GOTO 620
630 GOTO 50

既にあるIchigoJamモバイル用のプログラムは、キーボードを読むためのIN()コマンドを書き換えるとIchigoBoyで動く筈です。プログラムを入力したらSAVE 0しておいてくださいね。

LINK

記事にしていただきました。くっくわしい。 ありがとうございます。m(_ _)m
http://fukuno.jig.jp/2138

作ってみた個人的感想など

PCN三重さんで少量販売頂きました。
色々コメントも頂いていますので、今後の参考にします。ありがとうございました。
7月の大阪南港メイカーズバザール2018で展示即売予定です。

反応もよく、ゲーム機で終わらせるのはもったいない感じです。ROMソケットに出ているIN3などを使って制御端末や実験冶具製作にも使っています。BASICで簡単なプログラムで色々便利に使ってます。
こんなモノにも使ってみたい。

  • 自作CNCのコントローラ
  • 自作リフロー半田機の温度制御
  • ロボカー・Ichigoチョコのテスト器


2017年12月17日日曜日

GPD Pocket を改造しました

>> English Page

ご存じ、GPD Pocketですが、良くまとまっています。これにμSDカードスロットと生体認証の指紋リーダを追加しましたので、まとめておきます。

GPD PocketにμSDカードリーダと生体認証を追加改造

よくできた超小型PCなのですが、使ってみると3点ほど不満が。

SDカードリーダが欲しい

クラウドサーバでもいいのですが、使い慣れたSDがあると便利です。

生体認証でロック解除がしたい。

パスワードや暗証番号は手間だし、見られる心配も気になります。

SIMで公衆回線でネットにつなげられるといいなあ。

これは、金属筐体なので難しそうで今後の課題にします。バッテリー寿命も気になるしね。当面はテザリングで我慢しましょう。

LINK 参考にさせて頂いたLINK

英語サイトですがRedditさんで早い時期から情報があります。
こちらは雑技工房さんで日本語サイトの改造記事です。
色々考えたのですが、結局雑技工房さんの記事と同じような内容になってます。

基本方針

キーボードユニットへのフレキ配線を横取りしてUSB2.0のハブにつなぎます。
電源もここからとります。バスパワーですね。
ハブのポートの一つをキーボードユニットにつなぎます。
マイクとスピーカの配線もここにあるので、それはそのままキーボードユニットにつなぎます。
以上で、USB2.が3ポートと5V電源が取れました。
そこに生体認証デバイスとuSDカードリーダをつなぎます。
ここで注意があります。uSDカードリーダの電源にuSDソケットのカード検出スイッチを入れておきます。こうしないと、Windowsのカードを抜く操作の後、SDを差し替えたとき認識してくれません。ソケットからSDを抜いたとき電源をきれば、再挿入で再認識してくれるわけです。

パーツなど

USBハブ:AitendoさんのUSBハブコントローラ基板 [M4-FE1.1S]
    4ポートのUSBハブです。3ポートを使っています。
水晶:ハブコントローラチップ用の12MHxの水晶を別途購入必要です。
生体認証デバイス。:AMAZONで購入。後で写真を挙げますので探してみてください。
SDカードリーダ:アキバで買ったUSBタイプのカードリーダを分解して基板を使いました。
FFCコネクタ:HIROSE[FH19C-10S-0.5SH]。基板高0.9mmです。高いと入りません。
延長基板:SANHAYATO[ICB-067]0.5mmのピッチ変換基板で厚さ0.1mmです。切って使います。
FFC: メーカー等不明の0.5mmフレキケーブル。引き出しの奥で眠ってました。
SDカードソケット;HIROSE製[DM3AT-SF-PEJM5] Akitukiさんで購入。飛び出し量が多く良いです。これをSDカードリーダに後点けで載せています。
他に配線材料や両面テープ、カプトンテープを使いました。

他に、半田付け必要です。筐体加工にはCNCまたはフライス盤があるといいです。ボール盤でもできるかも。

ギャラリー

完成するとこうなります。

uSDカードがここまで出るので抜き差しが簡単にできます。


筐体を削ります。これが一番の難関です。自作のCNCで加工しました。


中から見るとこうなります。久々の加工でちょっと失敗っぽい。



回路は試作と動作確認から始めます。USBハブの試験回路です。
これはハブ基板にケーブルを着けた試験回路です。

各パーツが確認できたので、並べてみます。収まりよし!
左から、生体認証デバイスーuSDカードリーダーUSBハブ基板です。

SDカードの収まり確認です。かなり出るので抜きやすそう。

HUB基板はこの方向の実装がよさそうです。

延長用基板を載せて長さを決めます。
基板はサンハヤトの0.1mm厚のリジッド基板をハサミで切ってつくりました。

FPCコネクタを半田付けしました。


USBハブにアクセスランプを点けるための配線引き出しですが、結局使っていません。

配線開始。

延長基板をつけて。

収めてみます。



生体認証デバイスです。以下分解手順です。2か所の爪をドリルアウトします。

すると金属枠が抜けます。


樹脂はゴリゴリとニッパー等で切ります。中身を傷めないように注意して。

分解完了。センサーのフレキをちぎらないように。

GPD Pocketのフレキですが抜き差し寿命があります。
抜き差しを繰り返すとこんな感じでフレキのパターンの接触部がへこみます。
こうなると接触不良を起こします。
そんな時は、先端を少しだけ切り取ると新しい部分が接触するので修理できます。

 さいごに

基本的には雑技工房さんと同じ改造です。
FFCが手持ちを使ったのですが、同じものは見つかりませんでした。残念ながら入手先不明です。
改造は自己責任でお願いします。

GPD Pocket [ Adding uSD & Biometric device]

GPD pocket is a good mobile PC, and I like very much to use. But I wanted to add uSD card reader and Biometric device.

Adding Micro SD Card Reader & Biometric Device

Soon I stareted to use my GPD Pocket, I thought it's a good idea to add some feature on it.

Micro SD Card Reader

Biometric Device (Finger Print Reader) for Quick & Secure Log-in

SIM card might be convenient, but leave this on wish list.

LINK

Reddit
雑技工房さんで日本語サイトの改造記事: Page is written in Japanese. My project became almost same as this page.

Basic Idea

Since Keyboard unit of Pocket uses USB 2. interface, 4 port USB hub can be inserted.
Now 3 ports and 5V power are avilable to add some devices.
I added a Finger print reader and a uSD card reader. I boughr compact USB devices and pick PCBs inside of them. Photos of the Finger print reader are posted later on this page.
It is one caution for a uSD card reader. I insert Card Detect Switch to Power line of SD reader. Without this after remove a SD card, windows cannot recognize new inserted card.

Parts

USB hub: Sold at Aitendo[M4-FE1.1S] PC Board type small size USB hub.
X'Tal: HUB controller reqire 12MHx X'Tal but not included.
Biometric Device: See photos later, I bought this at Amazon.
uSD Card Reader: USB Type compact card reader.
FFC Connector:HIROSE[FH19C-10S-0.5SH]. 0.9mm high. This low hight is requird.
Extention PCB:SANHAYATO[ICB-067] 0.5mm to 2.54mm pitch convert PCB. This is ridgit 0.1mmm thick PCB.
FFC or FPC: 0.5mm 10 way FFC. I found this in my parts box. No other information is avilable.
uSD Card Soket:HIROSE[DM3AT-SF-PEJM5] Push on, push off type.
Other: Double stickey tape, Capton tape, wire etc.

You need milling machine such as CNC. Drill press could be used, (but I'm not sure.)

Photos

Final look

uSD card out this position. It's easy to remove it.


Most dangerous step. Mill holes.

Hole from inside. It's not a perfect.



Circuit sould be tested before millimg GPD Pocket.
This is test fixture of USB hub.

Try to locate all component in GPB Pocket.
As you can see, it's enough space.
From Left- Biometric Device, SD Reader, USB hub.

SD card OFF POSITON.

It's better to flip USB hub.

Locate extention PCB.
I cut PCB with Scissors.

Locate FFC and FFC Soket


Wire out for indicater LED, but not used.

Start wiring.

Adding extention PCB.

All fit inside.



Biometric device. Finger print reader.
At first, drill out stopper.

Metal frame can be removed.


Cut plastic carefully.

Done this part.

Flex cable of GPD Pocket has very short remove life.
After 10 times on/off cycle, FFC is dimpled at contact position like this photo.
In this situation, the keyboard stop working.
In order to repair, you cut top of PCB which moves the contact point.

 At The End

Basics of this project is same as the Japanese Link.
I cannot give information about FFC. Please fined one yourself.

Please remodel it at your own risk.