古い携帯電話からタイプライターを話す

こんにちは、Habr。 おそらく、すべての人が自宅に横たわっている古い携帯電話を持っているでしょう。 バッテリーが切れており、画面が傷ついているだけで疲れています。



場合によっては、そのような「古い」電話はかなり高度なデバイスです。

たとえば、前の娘SonyEricsson Z310i-java、bluetooth、カメラ、gprs。 昔の子供時代の夢であるカメラを搭載したラジコンマシンを実現するために使用してみませんか? そして、ここでいくつかの状況が一緒になりました:電話が横たわっていた、リモコンのない壊れた機械がどこかから来ていた、末の息子が育った、 記事がハブに現れサイトがインターネットで見つかった。



したがって、アルゴリズム:







ツールと材料



注文はいずれかのストアに送られ、しばらくしてSTM32L-DISCOVERYデバッグボード、ブレッドボード、L293Dエンジンドライバー、およびプラグアンドプレイの所有者になりました。

最初のステップとして、機械の壊れたサスペンションを密閉し、エンジンをチェックし、その消費量を測定しました。 ボード、プロセッサ、およびL293Dのドキュメントはインターネットで見つかりました。

IARがIDEとして選ばれました。



手のアクション



当然、プログラミングのすべての段階が完了しました-点滅、LCDに独自の何かを書く、バズ。 テスター、子供用の電子コンストラクター、古いオシロスコープが周辺機器のデバッグに大いに役立ちました。

画像

一般に、mkでコードを記述することは、主に標準的な例を粉砕して組み合わせることから成ります。

次のステップでは、ボードを準備し、モータードライバーをはんだ付けして、実際の制御を試みます。 マザーボードの端に沿って、そのほとんどすべての脚が、上下2.5 mmの標準ピッチのかなり長いピンに引き出されます。 重量での接続には、PBS-6コネクタが使用されました。 タイプライター自体の完成したデバイスは、同じコネクタを備えたブレッドボード、つまり自作のシールドボードです。 これでエンジンドライバーが接続され、デザイナーからグローランプが点滅します。 次に、電源をGNDおよびEXT_5Vレッグのコネクターにはんだ付けします。 電源と制御脚が対角線上にあることは非常に成功しています-ボードは2つのコネクタのみでしっかりと保持されます。 バッテリー、モーターへのワイヤーをはんだ付けします(混乱するのは面白いことです。ワイヤーをほどくよりもコントローラーを再プログラムする方が簡単です)。 小さなプログラム-そして今では盲目で耳が聞こえないマシンが行き来し、12ステップでUターンを実行します。



コマンド



オシロスコープを少しグーグルで思慮深く見て、最も簡単な決定が下されました-コマンドは異なる周波数の正弦波信号によってエンコードされます。 電話側では、8ビット、モノラル、8 kHzサンプリングのWAVストリームを再生することにより、周波数が形成されます。 コマンド周波数として、サンプリング分周器、つまり 160、200、250 ... 2000 Hz したがって、この段階では9つのチームがあり、そのうち7つが移動(前方、後方、前方左、後方右...停止)に使用されています。

MK側で周波数を測定するには、タイマー、割り込み、コンパレーターを使用します。 コンパレータの負入力は0.3 V(Vref / 4)の内部基準電圧に切り替えられ、コンパレータの出力はパルスの立ち上がりエッジを通過するときに割り込みを発生させるように構成されています。 16ビットタイマーは、8 MHzの周波数パルスをカウントします。 中断時に、タイマーカウンターの値が読み取られ、以前のカウントと比較されます。 5つのほぼ同一のパルスが連続して見つかった場合、コマンドは受け入れられたと見なされます。 受信エリアを離れた場合にマシンが停止するために、リモートコントロール電話はコマンド間でゼロバイトを定期的に送信します。 受信側の電話が約200ミリ秒以内にコマンドを受信しない場合、エンジンはオフになります。



そして、この幸せなメモで、問題が始まります。



選択した電話は、JavaからのBluetoothをサポートしていないことが判明しました。 別の半死の電話、SonyEricsson C702は、高周波数でオーバークロックされているため、コマンドが認識されません。 3番目の携帯電話(私のメインのSamsung B2100)には、Javaの信じられないほどのバグがあり、それを使用することはほとんど不可能です。 C702のカメラは、いくつかの信じられないほどのサイズの写真を作成することができます。写真は、Bluetoothを介して長く退屈な方法で送信されます。

これに加えて、サウンド再生スキームをデバッグするときに、オシロスコープのプローブをボードに挿入することに失敗しました。 明るい光と煙が少し聞こえたので、MKボードに別れを告げましたが、すべてがそれほど怖くはないことがわかりました。 プログラマーの電源回路とMK出力の1つでダイオードを焼きました。 ここで、プログラムのフラッシュとデバッグを行うには、USBだけでなくバッテリー電源も接続する必要があり、燃え尽きた出力を空いているピンに再はんだ付けする必要がありました。

画像



その結果、最初のアイデアが調整されました。音声経路の電圧が地面と比較され、カメラから撮影された写真は送信前にJPEG 100 * 160ピクセルに圧縮されます。



サウンドパス、リード、ヘッドライト



DACコントローラーとかなり大量のフラッシュメモリ(128kb)が搭載されていることから、マシンに話し方を教えることができます。 これを行うために、息子と私は2つのWAVファイルを記録し、それらをプログラムに追加しました。 Windows XPで妻のネットブックに音を録音する必要がありました。 7の標準的な手段でPCM 8ビット形式でWAVファイルを記録することは不可能です。 (ちなみに、オーディオファイルを変換するための簡単なプログラムを教えてください)。 サウンドを増幅するために、k174un24チップが使用され、サウンドは2つのスピーカー8ohm 1Wに出力されます。



SourceForgeプロジェクトページ



最後に、指の電池を6V 4.7Ah鉛電池に交換しました。 メインエンジンと並行して、白色LEDがヘッドライトとしてはんだ付けされました。 このマシンは、「パッツィアン」キセノン、質量、実際のジープの質量、ダイナミクス、サスペンションのドローダウン、エンジンのro音を取得しました。



そして、プロジェクトは完了しました。





マシンはコマンドで移動でき、非人間的な声で写真や動詞を撮影します。 このプロジェクトは、職人技のロボット工学の世界への私の最初の一歩であり、素晴らしい人々と一緒になって、再びはんだごてを保持するように教えてくれました。 ただし、最初のアイデア自体が正当化されなかったため、このプロジェクトは継続されません。



j2meプラットフォームは、その生まれつきの悲惨さをすべて実証しています。


一見統一された分岐APIのように見えますが、実装のバグや欠陥のvalence延により、すべての固有の機能を使用することはできません。 セキュリティシステムは、携帯電話のリソースへのアクセスを常に要求します。 コントロールパネルでは、これに耐えることができますが、タイプライターでは-ひどく干渉します。 小さな写真でも処理して転送するのに非常に時間がかかります。約5秒です。 ビデオや写真をリアルタイムで転送することについて話すのは意味がありません。





L293Dチップは非常に使いやすいですが、残念ながら、バイポーラトランジスタで作られており、5〜6Vの供給電圧で、バッテリーエネルギーの半分が世界の暖房に費やされています。 まあ、安価なスーパーマーケットの機械は良い機械的プラットフォームではありません。



これをすべて実現し、プロジェクトの開発を中止することにしました。最初のステップに続いて、Wi-Fi、カメラ、より高度な電子機器という2番目のステップが続きました。



All Articles