2019年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

サイト内検索

最近のトラックバック

無料ブログはココログ

linux

2016/10/30

トラ技2016年11月号の付録基板を組み立ててみた

トランジスタ技術2016年11月号の付録基板を組み立ててみた。

Tr1611piccaso

 距離センサーと気温気圧湿度センサーは手持ちがあった。アンプ部分は実験用に作った外付け回路を使いまわすから組み立て不要。
 なんで、部品キットは買わずに済ませようと思った。<-これが間違いだったのかも。

 R,Cは部品箱をかき回して集めた。PIC16F1509と2N7000はRSコンポーネンツで見つけて発注。

 残ったのがI2Cインターフェースの液晶モジュール。

 ググると、なんとAmazonで見つかる。Amazonで売ってる、ということに驚く。もう、文字通り、何でもありだわAmazon。
 それも似たようなモジュールがぞろぞろと出てくるのに驚く。さらに値段もバラバラなのに驚く。

 記事で使っているのに近そうな物に当りをつけて発注したのがこれ。
EasyWordMall IIC / I2C / TWI 1602 LCD モジュール ブルー スクリーン IIC/ I2C Arduino用

 御推察の通り、こういったモジュールの出処は中国。
 当然安い。ほかの部品とまとめ買いしたので送料もかからない。
 こうゆうことだと国内の小売りもメーカーも太刀打ちできない。

 但し、データシートの類は一切ついてこない。ブツだけがエアキャップに包まれて郵便物扱いでやって来る。
 メーカー名もはっきりしないので、ネットサーフィン(死語?)というか、それっぽいところを探り探りしてデータをダウンロードする。
 が、得られたデータシートもその製品のものは見つからず、使われているコントローラのものだけだったり、中国語で書かれていて訳が分かんなかったりする。

 さらに、配送に時間がかかる。しっかり2週間、ええ、待ちますとも、子供の頃なんかは部品発注しても届くのはひと月先だったもんな...。
 注文したのをチョット忘れかけた頃合いで、それでもキチンと届くのだからから大したもんだ。

 幸い記事と同等のもの(らしい...)で寸法もあってる。
 PIC16F1509にファームを書き込んでRaspberryPiその他もろもろ実装して、起動したのですが...

   LCDに文字が出ない。


 ということで、ここからが本題ですが、結論から言えば液晶モジュールのI2Cのアドレスが違っていることがあるらしい、ということです。

 トラ技のサポートページからソフトウエア一式"TR1611P.zip"をダウンロードして解凍。
"第2特集第2章(2次試作)\PICスパコン拡張ボード[センサ版]"の中の"CQClock¥lcd1602_lib.c"を見ると

void lcd_out(unsigned char code, unsigned char flag)
{
    char data;
    data = ((code & 0xF0) | flag) | 0x08;   // +RS
    SendI2C(0x7E, data);                    // +BL
    SendI2C(0x7E, (data | 0x04));           // +BL+EN
    SendI2C(0x7E, (data & 0xFB));           // +BL-EN
    __delay_us(30);                         // 遅延
}

 I2Cのアドレスデータは0x7Eとなっている。但しアドレス値は7~1bit(最下位ビットはR/Wフラグ)なので実際の値としては0x3F。
 ところがネット上の他の使用例を調べるとアドレス値は0x27になっている。

Lcd1602a

Lcd1602b

 ここで使っているI2C液晶モジュールは秋月電子通商等でもおなじみのパラレルインターフェースの液晶モジュールに、I2C->パラレル変換ICである"PCF8574"を実装した回路基板を抱き合わせたもののようである。

 ややこしいのは同等品として"PCF8574A"という型番もあって、それぞれアドレス値が異なるということ(機能は同じ)。

 PCF8574   : 0x20~0x27
  PCF8574A : 0x38~0x3F
 (下位3bitは外部端子A2-A0で決まる)

 両方使えば最大16個まで接続できますよ、ということらしいのだけど、単に上位品、機能改良版かと思い込んでしまいそう。こうゆうの、製品化するときは怖いよねぇ。

 トラ技の記事で扱われたモジュールは、"PCF8574A"を使っていたのか?

 ひょっとして出回っているモジュールには"PCF8574"を使ったものと"PCF8574A"を使ったものとが混在しているのでは?
 しかも外部端子A2-A0の設定もよく判らない。全部PULLUPしてあるかPULLODWNしてあるかどっちかだろうけど、検索した画像では同じような基板なのにアドレス設定用のジャンパがあったりなかったりする。

 結局、やって来たモジュールが0x20,0x2F,0x38,0x3Fのどのアドレスかは運次第、だったりして。

 カオスじゃ。
 ビバ、ハロウィーン~!! トリック オア トリート!!ってか


 以下、その他の気づいた点もまとめて。

1.上述の通り、PIC16F1509に書き込むファームウエアはトラ技のサポートページの"TR1611P.zip"の中の
"第2特集第2章(2次試作)\PICスパコン拡張ボード[センサ版]"の中の"CQClock"をI2Cのアドレスを修正した上でコンパイル->焼き直しする必要がありそうです。

2.コンパイル、焼き込みにはMAPLAB X IDEとPICKIT3または相当品が必要。トラ技付録基板はPICKIT3に直結できるICSP端子があるけれど、5V系と3.3V系が混在するので、焼きこみは別途ブレッドボード等で行った方が無難そう。

3.PICKIT3に書き込むファームウェアのソースは上記の通り。一方、RaspberryPi上で実行するPythonのスクリプトは
  "第2特集第2章(1次試作)\ラズパイ\work\talk1.py"
 と、それぞれ別のフォルダにあるので注意。

4.そもそもPIC16F1509に書き込むファームウェアのhexファイルは"TR1611P.zip"の中の
  "第2特集第2章(2次試作)\PICスパコン拡張ボード[センサ版]\CQClock20160926.hex"
 らしいのだけれど、これはトラ技記事にある名称"Raspberry Speech"と異なっていて分かりにくい。

以上、自分で部品集める方の参考になれば。

2012/04/16

中華Androidタブレット HAIPAD M9の内部

先日はHaipad M9の中身を紹介した。

その時はシールド板がかぶさっていたので今回ははずしてみることにした。
シールド板は基板にハンダ付けした枠に上蓋がはめ込んであるだけなので、上蓋の端を慎重にこじれば外れる。

中身の前に、まずは外観

Front

Interface

パッケージ内容。非常にシンプル。

Package

内部。
右、上蓋にはLCD、タッチパネルとHOMEなどのタッチキーのフラット基板がある。
タッチキーのフラット基板にはTouch Sensor用のチップ(eKT2201 elan社製)が載っていた。
左、裏蓋にはメイン基板、バッテリー、スピーカー、振動モーター、WiFiアンテナ,GPSアンテナ。
メイン基板は裏面にもシールド板がある。

Inside

メイン基板。
シールドをはずしたところ。上面。

Pcb2

シールドをはずしたところ。裏面。

Pcb1

さらに主要なチップの型番と配置を示す。

Pcb1chip

以下、各チップの種別と型番を記す。()内はメーカー及び備考。

CPU:uPD77643F  (renesas cortex-a9 533MHz x2core)
flash drive:SDIN5C1-4G  (sandisk 4GB)
DRAM:HY5PS1G831CFP-S6  (hynics DDR2 1Gb x4)
power manager:AXP192  (infinitrue)
HDMI:IT6610FN  (ite)
audio codec:ALC5621 (realtek)
real time clock:AT8563S  (analogtek PCF8563互換)
Software Protect:DM2016N  (sdmctech)
GPS:M-9329  (holux)
WiFi:BM-01-A  (?)

Pcb2chip_2

ZWG99J9D0V <- 用途、メーカー不明 検索にかからない。

重力センサーが見当たらないなあ。( ZWG99J9D0Vか?)

 

2012/02/22

中華Androidタブレット HAIPAD M9 ver2.3.5のrootをとる

 所謂、中華PADのひとつ、”HAIPAD M9”。去年ドキドキ堂にて購入。(<-どこに行ったドキドキ堂!!)

 ディスプレイの質とかメモリ容量とかロゴが無いとか、細かいことを言わなければ割としっかりした作りで、思いの外、使える。何のかんのと言われても実際にカタチにしてしまう者がやっぱり強いよ。GPSもきっちり動作したよ。屋外だと周囲が明るすぎてディスプレイが見えないというオチがあったりするけどね。

 元々のOSはAndroid ver2.2(Froyo)だったが、2012/01/05にOSのアップデートHAIPAD M9  ANDROID 2.3 1220 (ver2.3.5 gingerbread)がリリースされたのでさっそくインストールしてみた。
 マーケットもちゃんと使えるし、遅くなるといったこともなさそう。ただ、rootがとれない。visionary,gingerbreakもだめ。

 唯一Universal root for Rena3 (ファイル名:Universal_qRoot_Rena3.rar)でrootが取れるみたい。詳細は下記リンク(たぶん、同じ人が書いている?)を参照のこと。

 [HACK][TOOL] Universal root for Rena3
 Rooting the Rena 3

 操作としては、さらのSDカードの / にファイルの中身を展開し、"+"ボタンを押したままpower onする(<-systemのアップデートの操作と同じ)と、暫くして"Well done. Root complete."のメッセージが出たら再起動する。海賊マークのSuperuserが見えるはず。

 端末からsuが効くし、Titanium Backup ★ rootも起動するみたい。
但し、以上のこと以外は試していないので、試すなら自己責任で。当方、何が起きても責任は持てません。

R0013203_2

R0013200 ついでに殻割してみた。バッテリー下、左からWiFiアンテナ、振動モーター、スピーカー、バッテリー左側面下、GPSアンテナ、らしい。

2008/12/13

xineの手直しを少々

xineでDVDを見ようとするとエラーのダイアログが出て表示できない。
どうも/dev/dvdが再起動する度に消えるらしい(なんで?fedora10にupgradeしたから?)。
ただ、代わりに/dev/dvd1はある。

そこで~/.xine/configの設定を、/dev/dvd1に書き換えることにした。
下記のとおり。

# device used for DVD playback
# string, default: /dev/dvd
media.dvd.device:/dev/dvd1   #<-コメントはずし/dev/dvd->/dev/dvd1に書き換え

それにしても/dev/dvdを消してるのは誰なんだろう?

追記:2008/01/17
>それにしても/dev/dvdを消してるのは誰なんだろう?
udevですね。下記参考に/etc/udev/rules.d/70-persistent-cd.rulesの該当箇所を削除したら元通りになりました。
/dev/dvd が /dev/dvd1 に変化

nvidiaのディスプレイドライバーでエラー発生

特に表示がおかしいということもなかったんで気にしていなかったが、/var/log/Xorg.0.logをみるとエラーが2ヶ所でていることに気づく。

     (途中省略)
(II) LoadModule: "type1"

(WW) Warning, couldn't open module type1
(II) UnloadModule: "type1"
(EE) Failed to load module "type1" (module does not exist, 0)
(II) LoadModule: "freetype"
    (途中省略)
(EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
(EE) NVIDIA(0):     log file that the GLX module has been loaded in your X
(EE) NVIDIA(0):     server, and that the module is the NVIDIA GLX module.  If
(EE) NVIDIA(0):     you continue to encounter problems, Please try
(EE) NVIDIA(0):     reinstalling the NVIDIA driver.

1番め、type1のエラー
検索してみると...
http://wiki.archlinux.org/index.php/Xorg
の「nvidia-xconfig」の項に

Comment the line  Load           "type1"

とある。説明書きには「現バージョンではtype1 font moduleは使わない。すべてfreetypeに変更した。」そうな。
と、いうことで以下のようにsection "Module"から「Load "type1"」をcomment out
Section "Module"
    Load           "dbe"
    Load           "extmod"
#    Load           "type1"
    Load           "freetype"
    Load           "glx"
EndSection

たぶん、FontPathもいらないと思うのでこれもcomment out
Section "Files"
#    FontPath        "/usr/share/fonts/default/Type1"
EndSection

2番め、GLX moduleのエラー
これも検索してみると、ありました対策が「NVIDIAドライバでOpenGLが有効にならない場合は
(http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a017nvidiaopenglerr.html)
下記のとおりModulePath2文を書き加えて
Section "Files"
      ModulePath   "/usr/lib64/xorg/modules/extensions/nvidia"
     ModulePath   "/usr/lib64/xorg/modules"
#    FontPath     "/usr/share/fonts/default/Type1"
EndSection

glxのドライバーの場所が分からなかったのね。

以上2ヶ所はnVidia Display Setting(コマンドラインでnvidia-settings)ではお世話してくれないようです。

2008/09/29

fedora9 にnvidiaのディスプレイドライバーを導入後、リフレッシュレートを変える方法

fedora9 にnvidiaのディスプレイドライバーを導入後、リフレッシュレートを変える方法

  1. rootでログインしてアプリケーションー>nVidia Display Settingを起動
  2. Xserver Display Configuration resolution にてリフレッシュレートを選択
  3. Save to X Configuration Fileボタンで/etc/X11/xorg.confを書き換える。

もしくは/etc/X11/xorg.confを直接編集してSection "Screen"にOption  "metamodes"を追加する。
 Section "Screen"
    (略)
     Option         "metamodes" "1280x1024_75 +0+0; 1280x1024 +0+0; 1024x768 +0+0; 800x600 +0+0; 640x480 +0+0"
    (略)
 EndSection
設定値の先頭(1280x1024_75)が起動時の解像度とリフレッシュレート(75Hz)の設定。
〜_75を〜_60にすると60Hzになる。
_mnのところを取る(設定値の2項目め1280x1024 +0+0のようにする)とリフレッシュレートはAutoになる。

参考までに、うちのxorg.confはこんな感じ

Section "Monitor"

# HorizSync source: edid, VertRefresh source: edid
# 1280x1024 @ 75.00 Hz (GTF) hsync: 80.17 kHz; pclk: 138.54 MHz
#    ModeLine     "1280x1024" 138.540 1280 1368 1504 1728 1024 1025 1028 1069 -hsync +vsync
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Mitsubishi RDT195S"
    HorizSync       31.0 - 81.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Videocard0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 7300 LE"
    Option         "AddARGBGLXVisuals" "True"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Videocard0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "1280x1024_75 +0+0; 1280x1024 +0+0; 1024x768 +0+0; 800x600 +0+0; 640x480 +0+0"
    SubSection     "Display"
        Depth       24
#        Modes      "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

この設定、実はかなり迷った。なぜかというと

  1. fedora 9付属のGUI設定ツール(システムー>管理ー>ディスプレイ)ではリフレッシュレートを変更できない。
    ただ、ドライバの変更(nv->nvidia)はできたりする。
  2. nVidia Display Settingは"root"でないとxorg.confを書き換えてくれない。
     (当然といえば当然かもしれないけど)
  3. gtfというpixelclock計算ツールの結果をxorg.confの2ヶ所(Section "Monitor"の ModeLineと Section "Screen"の SubSection "Display"のModes) に書き加える方法(参照 http://bbs.fedora.jp/read.php?FID=10&TID=5456)も試したが、私の環境下では変更できなかった。

結局、Option "metamodes"というのがキモ、ということらしい。

追記:2009/01/13
 上記のようにして再起動しても、私の環境下ではリフレッシュレートを変更できなくなっていることがわかった。ドライバをバージョンアップしたせいか?原因がよく分からない。どうも誰かが勝手に60Hzに設定してしまうらしい。
 今のところ、起動する度にnvidia-settingsでリフレッシュレートを設定しなおすしかないらしい。

2008/06/24

Fedora9をインストールするときは

 パーテーションを切る時にボリュームグループ名をデフォルトでない独自の名前に設定しなおすといいですよ。

 具体的にはインスツーラーでパーテーションを設定する時に「パーテーションレイアウトの再確認と変更」をチェックし、次の画面でボリュームグループ名(デフォルトではVolGroup00になっている)を書き換えます。
 こうしないと下位バージョンのFedoraをインストールしたディスクをマウントしてデータを吸い上げたり、ディスクの起動順をBIOSのメニューで切り替えて古いディスクのFedoraを立ち上げる、といった芸当ができなくなります。

 原因はFedora7(から、だったの?...)以降ファイルシステムにLVM(Logical Volume Manager)を採用するようになったためのようです。
 LVMを使うとマウント時に/dev/sda1といったデバイス名を使う代わりに任意のボリュームグループ名を使うようになります。が、このボリュームグループ名がインストール時のデフォルトでは、すべからく"VolGroup00"であるため、Fedora8をインストールしたディスクも、Fedora9をインストールしたディスクも"VolGroup00"となって区別がつかなくなり、不都合が生じることになります。
 インストール時にボリュームラベルがバッティングしないように設定しておけば、上記のような不都合は回避できます。
 なお、LVMを使ったディスクをマウントする時はデバイス名の代わりにボリュームグループ名と論理ボリューム名を使います。例えばFedora9上でデフォルトの状態でフォーマットした(つまりボリュームグループ名がVolGroup00となっている)Fedora8のディスクをマウントしたい時は
   mount -t ext3 /dev/VolGroup00/LogVol00 適当なマウントポイント

 後からボリュームラベルを書き換える方法もあるようですが、面倒だし、下手なことして起動できなくなるのもイヤですから、インストールする時に変えておきましょう。
 まあ、システムが変わって便利になるのは分かるけど、そんな、急に言われても...ねぇ...

広告:

【予約】できるPRO Fedora 9 Linux 完全活用編   [本] 【予約】できるPRO Fedora 9 Linux 完全活用編   [本]
販売元:セブンアンドワイ ヤフー店
セブンアンドワイ ヤフー店で詳細を確認する

Fedora 9で作る最強の自宅サーバー (CD/DVD付) Fedora 9で作る最強の自宅サーバー (CD/DVD付)

著者:福田 和宏
販売元:ソーテック社
Amazon.co.jpで詳細を確認する

2008/04/23

”X ”でないMac OS よ永遠なれ

「OS Xは危うくOS 8そっくりになるところだった」(ジョブズ思考解剖の新刊より)

 ジョブズはMac OS 8、気に入らなかったんですかね?私は好きでした、いや、愛してました。シンプルかつ、思い通りに操れる分かりやすいインタフェースが懐かしい。よく落ちたけど...

 OS Xが来たときはそういった使い勝手の気安さは引き継がれるものと思っていたのですが、いざ立ち上げてみると、唖然としました。
 ”このウィンドにひっついてるツールバーは何?”、”コントロールパネルはどこ?”、”いとしのDA(小物のプログラム)たちはどうなった?”、”プログラム本体はどこ行った?”、”るうぅとぉ(root)?何それ、どうやってはいるのさ”etc...

 結局、悟りました。「こいつは純然たる”UNIXマシン”である」と。チュートリアルをちょっと読めば使えるという代物ではないのだと。そう、Mac OSは消滅したのだと。
 それ以来Macにさわることもなくなりました。ちょうどLinuxも使い始めた頃で、まあ、都合3台もマシンを抱えるってのも予算上難しかったこともあるけど、どうせ最初から勉強しなおさなきゃならないならということで、完全にLinuxへシフトしてしまったのでした。

 そういえば、初めて買ったMacintoshは”Macintosh LC”だった。これも好きだったのになあ、小さくてカラー使えて(Macにしては)安かったから。この低価格戦略機がなかったら、Macを使ってみたいとは思っても実際に買おうという気にはならなかっただろう。
 で、これも、Appleからジョブズが追い出されてた時代のマシンだった、ということから考えるに...

 結論:あたしゃ、ジョブズとは反りが合わない、らしい。

Macには、もう戻らないかも。でも、気にはなる。

2008/01/27

Tk::Entryで文字入力ができない

周波数特性測定器っぽい物を作る(4)でPerl/TkのソフトをWindows上のActivePerlからFedora8上の(Fedora project のyumパッケージからインストールした)Perlに移植したら、周波数設定値などで文字入力ができないことが判明。

試しに次のスクリプトをFedora8上で動作させてみてください。
#!/usr/bin/perl
use Tk;
$mw = MainWindow->new();
$mw->Entry(-width => 20,
     -textvariable=>\$t1,
     -background => 'white')
    ->pack;
$mw->Entry(-width => 20,
     -textvariable=>\$t2,
     -background => 'white')
    ->pack;
#
MainLoop;

このスクリプトは、ウインドの上下2つの入力項目を$t1,$t2に設定してくれるはずなのですが、Fedora8上で動作させると上($t1)の方に文字が入力できません(表示さえできない)。不思議なことに下($t2)の方には文字が入力できます。一番最後に定義したEntryだけ入力できるということらしい。
WindowsのActive Perlの方ではちゃんと動きます。
両方のPerl(5.8.8),Tk(804.027)とも、バージョンは同じなんですけどねぇ。

2008/01/24

周波数特性測定器っぽい物を作る(4)

ホストプログラムをWindows XP (Active Perl) からFedora8 (perl5.8.8)に移植した時のメモ

1.下準備
a).次のモジュールを導入する。
perl -MCPAN -e shell で...

>install Tk::PlotDataset
>install LineGraphDataset
>force install Device::SerialPort

b).シリアルデバイス(/dev/ttyS0 etc.)のパーミッションを設定しなおす。
(もしくはスーパーユーザーで実行する)

2.納得できる変更点
a).プログラムファイルをUTF-8で書き出す。
b).use encodig 'UTF-8'; に変更。
c).モジュール名をWin32::SerialPort->Device::SerialPortに変更。
d).シリアルデバイス名を変更。COM1...->/dev/ttyS0...
  my @port_no_table = qw(/dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3);
e).コピーコマンド名を変更 copy -> cp
 あわせて変更...
#$file =~ s|/|\\|g; #getSaveFileが返す値は\でなく/を使っているので変換する
     <-Linuxだからそのまま'/'でよいのではずす。
f).Device::SerialPortにはread_intervalがないらしいのではずす。
(こんなエラーが出た  Can't locate object method "read_interval" via package "Device::SerialPort" at serialport_conf.pl line 35.)

3.?な変更点
a).TkのウィジェットgetSaveFile、getOpenFileでは"-initialfile"を省略してしまうと、ファイル名の文字入力ができなくなる。(ActivePerlでは省略できた。仕様?バグ?)
 -initialfile => 'Untitles',等と設定する。
b).TkのウィジェットgetSaveFile、getOpenFileでは"-filetypes"を省略してしまうと、他のダイアログの状態を引き継いでしまう。(ActivePerlでは省略できた。これも仕様?バグ?)
-filetypes=>[['All Files','*']],等と設定する。

このプログラムでは使っていないけれど、
c).TkのウィジェットMenuでは"-tearoff => 0"を指定(Menu(-tearoff => 0))しないとメニューが表示できない。"-tearoff => 1"にする、または省略してしまうとメニューバーそのものが表示されない。(仕様?)

以下、linux用のアーカイブ
使用方法はWindows版とほぼ同じです。
「ddscntl.tar.gz」をダウンロード

アフィリエイト

リンク

リンク3

  • livecam

写真:生目

  • 10号墳

    宮崎市北西部に位置する生目古墳群の写真を集めました。 なおcocologでは1MB以上のファイルがダウンロードできませんので生データが必要な下記のリンクへどうぞ。
            ikime0704