支払いにMDBプロトコルを使用するスナック自動販売機を実行するプロジェクトが割り当てられ、Pi Zero(オレンジ)を使用してプロジェクトを完了しました。
9ビットのハードウェアシリアルライブラリとソフトウェアシリアルライブラリを試しましたが、Pi Zeroでタイミングの問題がありました。MDBの9ビットシリアル通信が問題になりました。MDBプロトコルでは、ペリフェラルはシリアル通信のタイミングに対して%5の許容範囲を持つ必要があると述べていますが、ペリフェラルベンダーが異なると許容範囲も異なり、MDBプロトコルに準拠しません。シリアル通信は完了しているが、別のベンダーの支払い周辺機器を試してみると、うまくいきません。したがって、MDBプロトコルデータシートに依存しないでください。バギーベンダー向けのMDBコントローラーの実装にうんざりしました。また、一部の周辺機器は、内部ブートプロセス中にUARTピンから大量の電流を排出し、シリアル通信層を損傷する可能性があります。したがって、抽象化を使用する方がよいでしょう。オプトカプラーは大丈夫ですが、それでも私はしません t Pi Zeroを使用してMDBシリアル通信を処理することをお勧めします。より良い方法は、AVRを使用する中間層アプローチを使用することです。
MDB通信にPi ZeroのUartを使用する代わりに、MDBの処理、ポーリングなどにAtmega328 AVRを使用しました。Atmega328は、ソフトウェアシリアルライブラリを使用してMDB周辺機器を制御し、人間が読めるデータをハードウェアシリアルのPi Zeroに送信します。すべての電子スキーム、ソース、およびPi Zero Armbianイメージ、自動販売オペレーション用のPythonコードは、こちらから入手できます。
http://eliverse.com/content/vendiverse/
モーター、製品配送センサー、クーラー、キャラクターLCDディスプレイの制御に関する詳細については、wikiページを確認できます。これは完全な自動販売機コントローラープロジェクトであり、自動販売機のいくつかのプロデューサーによって使用されています。