プログラミング
Show HN: 20ドルの4Gワイヤレスホットスポットをテキストメッセージデバイスに改造する
Show HN: Hacking a $20 4G wireless hotspot into a texting device (bkovac.github.io)
要約
この記事は、安価な4Gワイヤレスホットスポット(MF800)を、AdafruitのSHARPメモリディスプレイとClicks Keyboard for iPhoneを組み合わせて、テキストメッセージ専用デバイスに改造するプロジェクトを紹介しています。オープンソースプロジェクトであるOpenStickを活用し、LinuxをインストールしてカスタムPCBを作成することで、このユニークなガジェットが実現されました。
全文翻訳
動機。
私は物を整理するのが得意ではありません。試してはいますが、かなりの頻度で机の上にたくさんの物があります。様々なAliExpressの注文や私が取り組んでいるプロジェクトから、ギフト、そして片付ける時間がなかったものまで。まさにこのプロジェクトが生まれたのはそのためです。
ある時、私の机の上には以下のようなものがありました。
様々な、おそらくOpenStick互換のモデル - 特に:
MF800 - 最終的に私が使用したもの
UZ801 - サイズはOKだが、バッテリーがなく、十分なGPIOが見えない
USBドライブフォームファクタのもの - 他の問題のため破棄したもの
Clicks Keyboard for iPhone 16 Pro Max (いとこからのギフト - 残念ながら適切なiPhoneを持っていません 🥲)
Adafruit SHARP Memory Display board
そしてもちろん、私の原始的な脳がこれら3つを組み合わせました。まあ、正直に言うと、私はおそらく知っていたことに影響されていたのでしょう。
Beepy by sqfmi
Playdate
モデム。
需要と供給の神秘的な法則、そしてサプライチェーンの魔法のおかげで - WiFi、Bluetooth、ディスプレイ、完全なバッテリー駆動、そして完全にアンロックされた4Gモデムを、20ドル未満(送料込み)で入手できます。これはもちろん、私たちのプロジェクトの礎石です。ディスプレイ付きとディスプレイなしのバージョンがあります。ディスプレイなしのものは、ディスプレイをLEDに置き換えるだけですが、PCBは同じです。ディスプレイはGC9107搭載のものですが、見た目がひどいので私はそれを捨てました。素晴らしいOpenStickプロジェクトによって、Linuxは簡単にインストールできます。標準のデバイスはAndroidで動作しますが、ADBは最初からアクセス可能であり、ADBからEDLに直接移行してデバイスを再フラッシュできます。重要なパーティションはすべて保存しておくようにしてください。EDLに直接入るためにショートさせるPCB上のピンもあります。動作中のAndroidから実行中のデバイスツリーを抽出することは、情報の宝庫だったので、必ず実行してください。
OpenStickの真の苦労は、ドライバーとデバイスツリーに到達した後に始まりますが、それについては後で話します。
キーボード。
Clicks Keyboardについてはあまり言うことはありません。使うのはとても気持ち良いですが、唯一の問題はかなりの金額を支払う必要があることです - しかもそれをカットしなければならないので、さらに悪化します 😱。
プロトコルに関しては、MFiデバイスを扱った私の以前の経験と全く同じでした - 追加のApple独自のエンポイントを持つ通常のUSBキーボードであり、iPhoneはそれを承認してからキーボードを通過させることができます。したがって、私たちのデバイスにとっては、これは単なる通常のキーボードであることを意味します。ちなみに、設定/アップデート/その他のためのClicksモバイルアプリがあります。キーボード自体はCH32V203または類似のもので駆動されています。カスタムコードをフラッシュすることも可能ですが、現時点ではその必要性は感じていません。将来的には設定ユーティリティが欲しいです。
ディスプレイ。
私はSharpディスプレイが高コントラストで素晴らしく見えると思います(そして、メッセージング専用のダムデバイスという私のユースケースに合っています)。それ以外では、キーボードについてあまり言うことがなかったなら、ここではさらに何も言うことはありません。それはディスプレイです。コマンドを送ります。表示します。
アダプターPCB。
すぐに明らかになったことが一つあります - カスタムPCBを追加する必要があるということです。MF800がオンボードに何を持っているのか正確にはわかりませんでしたし、シールド缶を開けることもありませんでしたが、オンボードに5Vブースターがないと確信しています。物理的なサイズのため、後で詳しく説明しますが、USBコネクタは切り取られることになるので、それも処理する方法が必要です。
最終的なPCBは、USBホストモード電源、USBホスト/デバイスモード切り替え、ディスプレイ電源、およびディスプレイ信号レベル変換を処理しました。
コンポーネント側のPCB
私はPCBをアセンブリと一緒に注文しました。そして、両面アセンブリは高価なので、すべてのコンポーネントを片面に収めるためにいくつかの妥協をしました。非コンポーネント側は、PCB-to-PCB接続用のソルダリングポイントに使用されます。すべてのファイルはGitHubで見つけることができますが、要するにPCBは以下のコンポーネントで構成されています。
TUSB320 - USBモード切り替え用
SN74LVC8T245 - レベルシフト用
MCP1640 - 5Vブースター
TPS22917 (ハイ1つ、ロー1つ) - VBUS/VBAT切り替え用
USBコネクタとディスプレイ用FPCコネクタ
MF800にアダプターPCBを接続するためのテストパッド
エンクロージャー。
1. MF800は、バッテリーを含む必要があることと、そのルーズな性質のために、他のOpenStickよりもかなり大きいです。
ブートローダーピン用の(不要な)カットアウトがあり、バックカバーがないMF800。
Clicksケースに収めるには、垂直に配置して巨大な醜いものにするか、水平に収まるようにPCBをトリミングする必要があります。
上部、コネクタとパッドからSOCへのUSBデータラインを示す青い線。
下部、赤い線はカットを計画していた場所、青い円はUSBデータ用のビアを示しています。
私の右側のカット(下の写真)はバッテリー接続ラインを切断するので、後でパッチアップする必要があります。
カット。
PCBのカットは予想外にうまくいきました。デバイスはすぐに起動し、すべてが機能しているように見えました。実際、それらの領域を通過する重要なラインはなかったようです。
バッテリーを下に、パッチVBATワイヤーを上に置いた、テストエンクロージャー内のカットされたPCB。
私がテストしなかった唯一のことは、USB接続と4Gモデムでした。モデムについては、それらの領域の下に何かをルーティングする理由がないため、問題にならないと99%確信していました。しかし、USBに関しては、ビアを傷つけていないか心配でした。
カットラインに合わせてトリミングされ、測定された厚さに一致するように押し出されたPCBの2Dスキャン - iPhoneの幅にぴったり収まります。
配線。
1. 元のディスプレイのパッドを再利用することにしました。なぜかはもうよく覚えていません - おそらく、私の最初のアイデアはリジッドフレキシブルPCBを使用して、元のディスプレイと同じようにハンダ付けすることだったからです。(価格を見た瞬間に却下しました)。
今これらすべてを見ると、非常に愚かに思えます。マイクロSDコネクタの隣にあるラベル付きパッドを使うべきでした。ただし、これらがSIMカードと共有されているかどうかは一度も確認しませんでした。
デバイスを起動でき、オリジナルのAndroidデバイスツリーを持っていたので、ディスプレイSPIに使用されているピンを抽出しました。そして、それらが正しいことを確認するためにgpio setでテストしました。電源(デバイスツリーで無効にして再起動してテストしました)とグランドも同様です。
マルチメーターでピンをチェックしてマッピングする。
最初に配線してチェックしたのは電源、次にUSBでした。これは、独立したユニットとしてテストできたからです。また、私の側でかなりの回路が必要であり、あの怪しいビアも関わっていたため、より懐疑的でした。
USBと電源を配線する。
もちろん、最初はうまくいきませんでした。パッドの周りをプローブして、すべての電圧がOKであることを確認した後、ラップトップのdmesgで列挙を試みていることがわかりました。つまり、何かが起こっていました。また、「ハイスピード」と表示されていることにも気づきました。これは少し驚きました。ハイスピードUSBを使用するとは予想していませんでした。最初に考えたのは、ワイヤーが長すぎることでした。しかし、短くする前に、よりきつくねじるという簡単な修正を試しました。そして、それはうまくいきました 😲!
デバイスのUSBガジェットが列挙される。
この成功に続いて、反対方向の動作を試みました。これには時間がかかりました。一部のAliExpressアダプターはCCラインを正しく配線していないことが判明しました。キーボードはすぐに機能しましたが、何か間違って配線されているのではないかと恐れて、最初にテストするのをためらっていました。
キーボードからのイベント。
配線。
2. ディスプレイにSPIラインを配線する前に、デバイスツリーを正しく再設定したかどうかを確認したかったのです。以前のテストからパッドが正しいことはわかっていましたが、ここで間違える可能性はたくさんあります。
spi@78b9000 {
compatible = "qcom,spi-qup-v2.2.1";
r