たまごっちプラスの液晶偏向フィルム交換

液晶のメカニズムの専門家ではないのですが、たまごっちプラスの液晶で赤く変色しているものを最近診ることが多くなりました。

液晶のガラス面には偏向フィルターというフィルムが張り付いており液晶のメカニズム上重要なフィルムになります。

このフィルムが、恐らく紫外線によって劣化したのだと思いますが、画像のように赤く変色します。

そうすると、ドットが見づらくなります。

先日、修理をしたエンたまのアカインしるばーも同じように偏向フィルターが赤化して見づらくなっていました。

この偏向フィルターを交換した経験がなかったのですが、手持ちのフィルムで部品取り用の同じく偏向フィルターが赤化した液晶で交換テストをしました。

遊べるようにはなりましたが、そもそも専用のフィルムではないので、多少見づらい点は我慢しないとです。

実は、レンズも曇ったレンズを研磨して磨き上げたレンズなので、その点で見づらいくなっている可能性もあります。

今後、赤化してたまごっちの依頼があった場合は、この参考例を元にフィルムの貼り直しをするかどうかで対応をしようと思います。

因みに、赤化していない液晶の画面はこちらです。


液漏れ修理方法(AI回答)

電池ボックスの液漏れ修理についてAIの回答を見つけました。

専門的な知識と技術を持つ人に任せよとのことです。

実は、この回答の前に、おもちゃ病院に修理をお願いしてみてはどうでしょう。という回答が既にあったのですが、その回答に被せるようにAIが回答をしていました。

おもちゃドクターにはお願いせず、専門的な知識と技術を持つ人にお願いせよということなのでしょうか。。

安全第一なはずなのに…

以前、外来で勤務していたおもちゃ病院の先輩から教わった一番重要なことがあります。

安全に遊べる修理であること。

是が非で修理しても安全でないのなら、修理してはイケません。

アルカリ乾電池を充電して、依頼者のおもちゃに入れて提供しようとしておられる病院の記事を拝見しました。

私、一人がこんなこと言っても聞く耳を持たないと思います。

では、こちらの記事を読んでみてください。

充電時に運よく破裂せずに容量が増えた乾電池かもしれません。実は破裂寸前まで弁がギリギリもったかもしれない乾電池かもしれず、それを依頼者に渡すのってどうなのでしょうか。。。

HP Probook 470 G5 起動故障修理とNVMe PCIe4.0 M.2 SSD換装

おもちゃ修理以外にもパソコン関係の復旧作業も得意です。

2017年製のHP Probook 470 G5というノートパソコンでの修理内容を紹介します。

ある日、突然起動しなくなりました。

ACアダプターを繋いでもバッテリーからの給電でもうんともすんともです。

前兆としてバッテリーの急に空になるという事態があったそうです。

残念ながらこの機種は、バッテリーが内蔵式で簡単に取り外せません。

後で判明するのですが、バッテリーの容量管理ソフトのバグなどで起動できなく症状はいろいろネットでも報告されており、この機種も一旦本体を分解しバッテリーを付けなおすことで起動するようになりました。

メデタシ、メデタシ\(^o^)/

とはいきません。ー_-;

持ち主が、バッテリーに問題があるのだろうと、相談をされる前に自分で本体底面の蓋を開け中にあった部品を外してしまいました。

そうなのです。

バッテリーと思って外した部品は、ハードディスクでした。

後で判明しますが、この時にハードディスクのデータ(具体的には、MBRのデータぽい)を破損しまい起動できなくなってしまいました。

( ̄▽ ̄;

お仕事ですぐ使いたいということで、代替えのパソコンを用意しましたが、肝心のデータも欲しいそうで、ハードディスクにアクセスし必要なデータのみをレスキューしてお渡ししました。

この時点では、まだハードディスクは活きていると思い込んでおり、ゆっくり直そうとしておりました。

無事、代替えのパソコンで業務を再開できたので、故障したパソコンは、どのように復旧するか相談しました。

  • 起動が遅いHDDではなく、SSDに換装したい。
  • Windows10は、来年の2025年秋には保守が切れるので、Windows11にアップグレードもしたい。
  • 必要なデータ類は、もうレスキュー済みなので、保存データはなくなっても大丈夫。

もう、最近は機種でHDDを使っている機種はなくなり、SSDが基本になっていますよね。このProbook 470 G5には、SATAスロット以外に、PCIeスロットがあります。

このスロットにNVMe M.2 SSDを刺してWindwos11は、M.2 SSDから起動しましょう。劇的に起動速度が改善します。

また、本機種は、Windows11 readyなので、是非この機にWindows11にアップグレードもしてしまいます。

ただ、この時点で判明しますが、ブートできなくなっているので、回復オプションも使えません。

また、最近の機種は、事前に自身でUSBメモリに回復デバイスを用意しておかなければなりません。もちろんですが、そのようなデバイスも準備されておりませんので、あらたに作成することもできません。

と、途方に暮れるのでなく、方策を調べます。

調べてみると、HPでは、製品IDやシリアルナンバーでリカバリーデバイスを作成することができます。

早速、ここを参照しリカバリーメディアを作成します。

が!ここでもトラップにはまります。

該当ページの『HP Cloud Recovery Toolを利用してリカバリ メディアの作成方法』では、製品IDが一致しませんとなります。

なんだとー!

と、一難さってまた一難状態です。

くじけそうです。

でも諦めません。

さらに調べます。すると、同じことで困っている方の解決法が見つかります。

ここです。

なんてことだ・・・なんてことだ・・・

実は、問題の機種は法人向け機種であったので、製品IDが一致しないという事態でした。

法人向けのパソコンは、HP Cloud Recoveryを利用せよとのことです。

こちらから該当の製品を検索しリカバリソフトウエアをダウンロードします。

で、起動すると今度はシリアルナンバーを入力せよとなり、やっと、やっと、やっとリカバリメディアを作成することができました。

回復用のUSBメディアができたので、リカバリをします。

ブートできないHDDは、一旦本体から外してSSDを取り付けます。

今回取り付けたSSDはこちらです。

付属のネジ頭の径が小さくM2のワッシャを噛ませました。

F11にてUSBからブートさせ、まずはもともとのWindows10にリカバリーします。

その後、Windows11にアップグレードさせて完了となりますが、途中で今回の作用で勉強になったことを紹介します。

SATA同士である場合、例えばSATA HDD → SATA SSDのようなクローンを以前は、コピー機を使用して行っていたのですが、今回のようなSATA HDD → NVMe M.2 SSDは、クローン不可能です。

市販のクローン機でクローンしても、起動できないそうです。

であるならば、クローンソフトを使ってWindows10にてクローンを実施しようと思ったのですが、そもそもクローンソフトは有料で、事前の勉強不足で、SATA HDD 1TB → NVMe M.2 SSD 500GBのような 容量大 → 容量小へのクローンも不可能でした。

同じ事態の解決記事

また、クルーシャルの記事も参考になります。

ソフトでもクローン機でもクローンが不可能なので、仕方なくリカバリーメディアから直接NVMe M.2 SSDにリカバリーしました。

また、その時にもSSDの領域を一度削除し、新規にプライマリー領域を作成してリカバリーしました。

クローン後のSSDを対処して起動できるようにするよりは、クリーンインストールの方が安心でした。

いろいろありましたが、無事にNVMe M.2 SSDにWindows10をリカバリーでき、Windows11にもアップグレードもできました。┌|◎o◎|┘

参考記事

CH32V003 OLED SSD1306 ライブラリ

またまたCH32V003ネタです。

I2CインターフェースのOLEDのディスプレイをArduino UNO R3用のDFPlayer miniシールドに以前実装した過去の経験があったのですが、今回は、CH32V003で使用するためライブラリの解析をしたので共有します。

恐らくCH32V003でOLED SSD1306を使い方で、私と同じくライブラリを探している方には朗報です。

Arduinoで使用する場合は、ネットで検索するとすぐいろいろヒットします。

前述のArduino UNO R3用のシールでは、Adafuruitのライブラリを使っています。

まぁ、販売用なのでIDEからインストールできるライブラリである必要もあったので、公開されているライブラリで実装しました。

さて、今回はCH32V003ですが、やはり開発環境が整いつつあるとはいえ、Arduino IDEでは、ポン付けでは使えません。

ネットでいろいろなライブラリを使ってみたという記事を拝見します。例えばこちら

そのまま使えるかどうかという点までしか記事になっていないのですが、紹介されているライブラリであってもArduino IDE環境では使えなったりします。

今回は、ACROBOTIC_SSD1306ライブラリを解析しCH32V003でも使えるようにしたので、紹介します。

ACROBOTIC_SSD1306は、Arduino IDEのライブラリのインストーラーから検索しインストールできます。前述の記事では、1.0.0では動いたが、1.0.1では動かないと紹介されている。

自分もそうでした。

うんともすんともです。

調べてみると、3か所の修正でArduino IDEを使用したCH32V003でも無事動きました。

ACROBOTIC_SSD1306.cpp

putCharというアスキーコードをsendDataする関数ですが、boolで宣言されています。

フォントが格納されているm_font配列が存在しない場合は、0を返すようにエラー処理がされていますが、bool宣言されてしまっています。本関数の戻り値は、このreturn 0;のみなのですが、bool宣言されているので、正常に動きません。Arduino IDE 1.8.10でなコンパイルではエラーにはならず、ワーニングにもなりません。※ここが開発途中なのでしょうね。

じゃぁ、int宣言にしてもみたのですが、これの何故か正常に動きません。もちろんですが、コンパイルは通ります。※ここの開発途中なのでしょうね。

このフォント配列のエラー処理の戻り値も実際は使用もされていないので、void関数にしてしまいます。

著者の方も検証も完全に行って公開しているようではなさそうです。

突っ込みどころが他にも多いのですが、ACROBOTIC_SSD1306.cppは、この2点の修正で動きます。

ACROBOTIC_SSD1306.h

関数を変更したので、ヘッダーファイルも修正します。

これにて、サンプルプログラムも動くようになります。

解析ついでに改善点も多く見つけたのでいっそのこと新規にライブラリを作成してしまえという感じでもあったのですが、暇なときにでもやってみようと思います。

本ライブラリは、8×8のフォントも実装しており、Flashに配列で格納するため、Flashがかなりひっ迫します。

開発するファームで必要な最小限のフォントのみに限定すればFlashのひっ迫は改善できると思います。

余談ですが、OLEDは、0.96インチなので、8×8のフォントでも小っちゃくてたいへんです。

ドット表示の具合は拡大鏡が必要だったりします。^^;

独自のフォントの描画もできますが、ビットマップ画像の描画も128 x 64以内で可能です。

が!

Flashが、16kBしかないので、そのまま128 x 64フルでのマップデータは描画はFlashがオーバーフローします。

マップデータの形式を工夫すれば、Flashの節約できそうです。

縦が、8Line * 8bit = 64bitで、横が8bit * 16桁 = 128 bitです。

フルで描画するには、8192bit = 1024byteととなりますが、Flashの容量的には、850byteほどでコンパイルエラーとなります。

因みに、Flashがオーバーフローすると、オーバフローのエラーではなく、以下のようになります。当初は、原因は分からずに困っていました。

当医院のロゴでも描画しましたが、CH32V003の容量では足りないので、I2C 256bitのメモリを外付けして表示させてみました。

※縁が湾曲しているのは、マクロレンズで撮影したせいです。

最近のプログラミングの意味するところ

コンピュータ用のプログラムは、ChatGPTに書いてもらう昨今、今回は、最近ふと感じたことについての記事となります。

ご覧の皆さんは、『プログラミング = Programing』という言葉を聞いて何を想像されますか?

もしかして、プログラミング言語と呼ばれる人工言語でコンピュータ用のプログラムを記述することと思われているかもしれません。

たぶんですが、プログラミング = コーディングなら、間違いではないんでしょうけど、それってプログラミングの極一部の領域のことではないでしょうかね。

まぁ、いろいろ定義や歴史を知っている知らないと自己中な判断で、どぉーでもいいことを言う人も多く、このようなネタは炎上しがちですが、最近知育系の玩具で見た衝撃的光景を紹介します。

知育パッドのメニューに『プログラミング』という項目がありました。

おおお!どんなことできるの?

とワクワクしながら選択してみると、パズルのような迷路にキャラクターが居て、スタート地点からゴールまでの順路を正確に進めるように、↑↓→←の進む、右回り、左回りetc…を指示して、キャラクターがその指示通りに進んでゴールまでたどり着けるかという内容だった。

( ̄▽ ̄;ガーン

そうですか、、。これをプログラミングと称し知育パッドに入れているんですね。

何かとても複雑な気持ちになりました。

そーいえば、ムカデのような生き物形態のおもちゃで同じようなものがありましたね。

昔、よくやったファミコンのパズルゲームか迷路に小さな金属球を転がしスタートからゴールまで転がす様まんまです。

そういえば、コロナ前に地元自治体で夏休みプログラミング教室というの広報で見かけました。

ドローンをプログラムしてスタート地点から飛び上がりゴール地点まで着地できるかという内容でした。マウスで何かピコピコやっていそうです。

フローベースのGUIのようでした。

特に児童期にプログラミングを教える場合は、大変重要な点に、難しいことを難しく教えて嫌いになることがないようにすべきでしょうかね。

皆さんもご経験があるかもしれません。

そこら辺のプログラミング教室に大金支払って通い出し、数日で辞めてしまった苦い経験だったりしますよね。こんな記事もあります。

さて、知育パッドのパズルゲームは楽しいのですが、これはパズルゲームと呼ぶことにしましょう。

児童期のプログラミングを教えるのなら、もう少しなんぞやという内容も含めないと、『マウスでテキトーに動かす』というようなイメージに終始しそうです。まぁ、楽しいのでOK牧場です。

パソコンの画面でいろいろピコピコやって、実機で動かしてみたりすると、楽しいのですが、心配な点も多いです。

  • 手で動かすプログラミング以前に設計は、ちゃんとできていますか?
  • 何をするのか?もしくはしたいのか?
  • どのような手段でするのか?
  • どのような制約はあるのか?
  • どうやって動作確認するのですか?
  • どう動くことを確認できたら問題なしとしていいのですか?

でないと、え!パソコンで何か打ち込むのがプログラミングなんでしょ?というおかしなことになります。

設計段階の仕様書を準備しろってことです。

仕様書を基にコードを吐いてもいいです。等価検証が完全であればですが、、、。

この仕様策定という段階をすっとばし言語やGUIでモニターをみながら操作するようなことになっちゃうと、トライ&エラーの繰り返しで、プログラミングの重要な考える思考作業がおろそかになります。

エンジニアに仕様書を書かせるのが管理のお仕事になっていて、外資系会社新卒の時に本社アメリカのお偉いさんのコメントで、エンジニアに仕様書を書かせるぐらい大変なことはないって言っていました。仕様書を書かずにいきなりコーディングを始めちゃう新人さんが居て困るというのです。分かります。。。

お仕事の8割は、仕様策定で、ここで致命的な問題などを振るい落とします。

プログラミングは、仕様書に沿ってコーディングするのだから、得意な人にやってもらえればいいのです。

容量式 タッチスクリーンの交換部品について

1.5才からタッチでカンタン!アンパンマン知育パッドで実装されているタッチスクリーンが割れたしまったという修理相談があります。

この割れた部品名ですが、調べてみるとタッチスクリーンというのが多いです。

一方、タッチパネルという使われ方もあります。

厳密な言い分けのルールはなさそうなので、ここは勝手に以下のように呼び分けをします。

タッチパネル・・・抵抗式

タッチスクリーン・・・容量式

従いまして、本記事は容量式なので、タッチスクリーンと呼ぶことにします。

何か物をぶつけたか、落としたかで画像のように割れます。

容量式のタッチスクリーンが液晶の上面に張り付いており一体化しています。

液晶の描画に問題なければ、当医院の4.3インチタッチパネルの修理のように上層のタッチパネルのみを剥がし交換できます。

この容量式のタッチスクリーンも同じ手法で修理できないか考察した記事になります。

結論から申し上げますと同じドライバーIC品でないと無理です。

仕様確認

まず、商品に実装されているタッチスクリーンの仕様を確認します。

液晶モジュールについているFPCケーブルが3か所あります。

左側から、バックライト、液晶、タッチスクリーンのケーブルになります。

タッチスクリーンのケーブルは、ドライバーICがケーブル上に実装されております。

ドライバーICは、FT5436というFocalTech Sustem社のICです。

10ピンのFPCケーブルが基板のコネクタに接続されています。

基板側を確認します。

10ピン用のコネクタで接続されます。

さてさて、ここでこのタッチスクリーンは、一般的な市場で入手できる代物なのかざっくりみます。

市販品

秋葉系のジャンク屋さんやAliexpressなども物色してみると、5インチ用のタッチスクリーンは見つかります。

ですが、ドライバーICがGT911というGoodix社のICです。

ネットで見つかるタッチスクリーンは、6ピン FPCケーブルの商品です。

おやおや、┐( ̄へ ̄)┌

既にここでポン付けできるような代物でないことが判明しました。

FPCケーブルの接続面も裏表逆です。

もう既に半分あきらめモードです。

次いでなので、このタッチスクリーンなる仕組みを仕様書で確認します。

インターフェース

既に市販商品を検索した際に見つけたのですが、6ピンの内訳は、以下のように共通のようです。

  1. Reset
  2. Vcc
  3. GND
  4. INT
  5. SDA
  6. SCL

I2Cインターフェースで取得した座標をホスト側に割り込みで通信しています。

I2Cならば無理ですね。だってスレーブのアドレスが違うもん。

GT911の仕様書を確認すると。


GT911 的I2C 从设备地址有两组,分别为0xBA/0xBB 和0x28/0x29。主控在上电初始
化时控制Reset 和INT 口状态进行设定,设定方法及时序图如下:

GT911 の I2C スレーブ アドレスは 0xBA/0xBB と 0x28/0x29 の 2 セットあります。メインコントロールは最初は電源が入っています 変更時に設定するリセットおよびINTポートの状態を制御します。設定方法とシーケンス図は以下のとおりです。

~GT911仕様書より~

であればと、FT5436の仕様書で確認しましたが、スレーブアドレスの記載がないので、恐らく組み込みの場合は、I2Cアドレスのスキャナなどで読み出しするしかないでしょう。

さて、FT5436のタッチスクリーンは、ラズパイで利用している方も多く、そのような記事を拝見すると、


I see on my I2C bus that the chip do respond at 0x38 address, so at least that part looks ok.

手持ちのFT5436のI2Cバス上の通信を確認するとスレーブアドレスが0x38で応答していたのが分かった。恐らく少なくともこれで大丈夫でしょう。

~FT5436 touchscreen interrupt記事より~

とありますの、ドライバーICの違いから互換性なしですね。

またFT5436の仕様書からもINT信号のポラリティが逆だったりしますね。レジスタ関係の仕様も異なりそうです。

ここまで調べたらアンパンマン知育パッドの10ピンが気になります。もう少し調べます。

アンパンマンの知育パッドのICとFPC端子の結線を調べると、10ピンのうち9ピンしか使われておらず、そのうち2ピンがGNDになっています。

なるほど、基本6ピンのインターフェースで共通なのですね。

さらに突っ込んだ仕様面での違いや実際の投資コストなども考えると投資に見合う修理になりそうもないという見解に至りました。

メーカー様でも修理の受け付けはしていないとお聞きしておりますが、液晶のタッチスクリーンが割れた場合は、もう修理は難しいという結論になります。

【備忘録】CH32V003J4M6 PA2 AD変換できない対処について

備忘録的な記事になります。

CH32V003の8ピンパッケージのJ4M6品をいろいろなところで使っています。

ピン数に限りがあるのでいろいろ苦労する部分は多いのですが、最近3番ピンのPA2/OSCO/A0…ピンで起きた問題に対処しましたので、情報共有的に備忘録に残しておきます。

事の次第は、ADCの0chであるA0でAD変換をしたかったのですが、0chで変換できないという事態でした。他の汎用ピンと共用もされているA7/A5/A2などは、無事変換確認できたのですが、A0が何故か変換できません。

というか、Analog input設定しているにもかかわらず、パルス波形が該当ピンから出力されます。もちろんですが、以下の設定は繰り返し確認しています。

  • GPIO設定
  • GPIOクロック設定
  • PLL設定
  • ADCチャンネル設定

同じ設定でもA0で変換できません。

ADC関係の記事ではありませんが、同じような不具合に遭遇した記事をインターネットで見つけました。※助かりました。

当該記事は、汎用IOとして使えないという記事でしたが、同じような問題そうだったので読んでみると、原因は同じでした。

リンクの記事は、内部発振モードで使用しているにも外部発振の設定がなされてしまいPA1/PA2が汎用ピンとして使えないということです。

強制的に外部発振の設定にされているという事態でした。

問題設定は、AFIO_PCFR1レジスタにあります。

各ペリフェラルモジュールのピンと汎用ピンの共用ピンの機能の切替設定になっています。

15ビット目にPA12_RMの設定ビットがあります。

デフォルト設定では、汎用IOと共有機能側の0になっています。

因みに、1は、外部発振モード用のピンなので、OSCO設定になります。

確認のため、PA12_RMを読みだしてみると、見事に1になっています。

内部発振しか設定しているにもかかわらず、なぜこの設定が1になっているかです。

設定していないのになぜか1になっています。

前述の記事を参照すると、system_ch32v00x.c内での設定に問題があるそうです。

前述のリンク記事と同じ内容になってしまうのですが、、、。

詳しくは、前述のリンク記事にありますが、system_ch32v00x.c内では外部クロックモード設定になっていますが、外部発振回路を実装していないので、発振ロックせず処理がタイムアウトし外部クロックの設定が残ったまま設定が進行してしまうという顛末でした。

おやおや(´・_・`)

自分は、Arduino IDE環境で開発をしており、前述の記事は問題にならないと記述されておりますが、ツールはArduino IDEを使用はしておりますが、コードは非Arduinoで実装していますのでこの問題が生じました。WCHのMounRiver Studioの自動生成された初期化コードと同じ問題が生じると思います。

“#define SYSCLK_FREQ_48MHZ_HSI 48000000”を有効にしてあげれば解決できます。

季節の俳句


五月雨の晴れ間に出でて眺むれば青田涼しく風渡るなり

~良寛~

梅雨時期に思い出す、好きな俳句があります。

良寛の詠んだ梅雨時期の俳句です。

旧暦の五月なので、ちょうど梅雨時期の俳句ですね。

横浜に住んでいたころですが、この梅雨時期がとても嫌で嫌で、まったくうっとうしい毎日でした。

自分は、湿気が大の苦手なので、関東圏の梅雨時期は、除湿機をフル回転で乗り切っていました。

この梅雨時期の晴れの合間に、外に出てみたのでしょう。ちょうど田植えの終えた青田に清々しい少し冷たい風がそよいでいるという光景が広がりますね。

青森の梅雨は、関東圏の梅雨に比べれば梅雨では全くない快適な毎日です。

そもそも移動が車なので、電車やバス移動のための移動がないため、直接雨に打たれるということがないのもありますね。

湿度が80%を超えるような毎日に冷房がガンガン効いている電車に乗ると、窓が結露で曇ってしまい、電車が満員だったりすると最悪です。

メールフォーム更新

長年の懸念でして、メールフォームのTLS/SSL化のため、メールフォームにformzuを適用しました。

ご存じの通り、当医院のサーバーでは、TLS/SSL対応できておりません。

まぁ、いろいろあるんですよね。

常時SSL化は、やはりさらなる投資が必要で、無料プランもあるにはあるんですが、契約をしなおしたり、サーバーのデータの引っ越しなど、いわゆる面倒な作業が多いのです。

そのため、ホームページ内のメールフォームなどの送信データが暗号化されていなかったので通信データのスニッフィングの脅威がありました。

お問い合わせフォームをformzu様に委託することで、送信データが暗号化されます。今後は安心してメールをフォームをご利用いただけます。