英語 | 中国語
このプロジェクトは、Espressif Systems の ESP32-pico-d4 チップをベースにしたワイヤレス モジュールで、複数の通信プロトコル インターフェイス (UART、SPI) を備えています。設計の本来の目的は、スマートカー競技会用のカメラアルゴリズムのデバッグを容易にし、上位コンピュータと連携することでデバッグの難易度を軽減することです。
esp32 ハードウェアは 5Mbps UART および 10Mbps SPI スレーブをサポートします
このモジュールの特徴の 1 つは、ZhuFei ワイヤレス シリアル ポート インターフェイスと互換性があり、ハードウェア フロー制御機能があり、ZhuFei ワイヤレス シリアル ポート ドライバーを直接使用して一方向通信を実現できるため、車の友人がテストする必要がないことです。このモジュール。再ボード作成の必要性、現在は上位コンピュータへの片方向送信のみサポート
このプロジェクトのソフトウェアとハードウェアは粗雑です。改善のためのコミュニケーションや提案を歓迎します。私の QQ: 1626632460
オープンソースのスマートカー画像送信上部コンピューターはZhiyong上部コンピューターを使用できます。このモジュールは主にこの上部コンピューターで使用され、ユーザーマニュアルとシングルチップマイクロコンピュータールーチンはこの上部コンピューター倉庫にあります。リンク: https://gitee.com /zhou-wenqi/ipc-for-car
Bilibiliビデオリンク: https://www.bilibili.com/video/BV1oZ4y1m7y2
PCBシミュレーションは次のとおりです
カテゴリ | UART+SPI |
---|---|
3Dシミュレーション | |
溶接効果 | |
JLC オープンソース リンク | https://oshwhub.com/Wander_er/891fe1d235694ef7afe684f5a2f05b73 |
名前 | 関数 |
---|---|
博士 | チップドキュメント |
ドライバ | ドライバーファイル |
ファームウェア | ファームウェア |
ハードウェア | ハードウェア |
画像 | 写真 |
ソフトウェア | 簡易画像送信上位コンピュータPythonスクリプト |
2つの通信モード
UARTボーレート最大 5Mbps、一度に最大 20000 バイト受信
シリアルポーリングを使用して、受信したデータをバッファから抽出します。パラメータは 2 つあり、受信バッファ サイズと最大待ち時間です。受信バイト数がバッファ サイズに達すると、すぐに受信が完了したとみなされます。送信は完了したが受信バッファ サイズに達していない場合、転送が完了したと見なす前に最大待機時間まで待機します。この待ち時間は 20ms に固定されています。
したがって、ファームウェアのuart_read_bytes
() 関数内のlength
パラメータを変更することで、2 つのモードがあるとみなすことができます。
トランスペアレント モード: 送信データに固定バイト制限がないことを指します。各通信ではさまざまなサイズのデータをより柔軟に送信できます。
トランスペアレント モードの使用間隔は、 serial port transmission time
+ 20ms
+ udp transmission time (rate calculated at 30Mbps)
より長くすることをお勧めします。
length
パラメータがバッファ サイズRX_BUF_SIZE -1
の場合、透過モードです。つまり、この長さに達するデータがないことを前提としています。
固定バイト モード: 送信データのバイト制限が固定されていることを指します。トランスペアレント モードよりも速度は速くなりますが、固定サイズのデータしか送信できません。
固定バイト モードを使用する場合は、 serial port transmission time
+ udp transmission time (rate calculated at 30Mbps)
よりも長い間隔にすることをお勧めします。
length
パラメータが送信する固定データのバイト数と等しい場合、固定バイト数となります。 例えば、60×90のグレースケール画像を送信する場合、5400となります。
もちろん、この長さより短いデータを送信することも透過モードと見なすことができます。
SPIボーレートは最大 10Mbps、一度に最大 25000 バイトを受信
SPI transmission time
+ udp transmission time (calculated at 30Mbps)
以上です。ファームウェアには、UART と SPI の 2 つの通信モードが統合されており、シリアル通信プロトコルによって設定して電力を失うことなくフラッシュに書き込むことができるため、ファームウェアを繰り返し変更する必要がなくなります。
下のコンピュータと接続するにはどうすればよいですか?
UART
ピクオリンク | 下部コンピュータ |
---|---|
RXD | テキサス州 |
テキサス州 | RXD |
RTS (多重MOSI) | CTS (使用できなくてもあまり問題ありませんが、下位コンピュータのシリアル送信機能でフロー制御検出を無効にする必要があります) |
SPI
ピクオリンク | 下部コンピュータ |
---|---|
CLK | CLK |
味噌 | 味噌 |
モシ | モシ |
CS | CS |
5V電源、アース線を接続する必要があります
完全な画像を送信するのにかかる時間を計算するにはどうすればよいですか?
サイズのグレースケール画像を UART 3Mbps で送信する場合を例に挙げます。まず画像内のビット数を計算します: 60 x 90 x 8 = 43200 ビット。次に、ビット数をボーレートで割ります: 43200 / 3000000 = 0.0144 s = 14.4 ms
構成モードに入って使用するにはどうすればよいですか?
コンピュータの USB to TTL シリアル アシスタントを使用してPic-o Link
接続し、 MOSI
とCS
ピンを短絡してリセットします。 rgb インジケーター ライトが黄色で表示されている場合は、設定モードに入ったことを示します。現時点では、シリアル ポート経由で Pic-o Link パラメータを設定できます。ボーレートは 115200 で、プロトコルは表に示されています。
|カテゴリー |備考 |フレームヘッダー |長さ | | :--------------------------: | :------------------------------: | :------: |- ----:| |通信プロトコル選択 |8ビット符号なし整数、0:UART、1:SPI| 0x41 (A) | 1バイト | | UART 通信モードのボーレート | 32 ビットの符号なし整数、<=5000000 | 0x42 (B) | 4バイト | | UART通信モード受信バッファバイト数| 16 ビットの符号なし整数、<=20000 | 0x43 (C) | 2バイト | | WiFi アカウント |文字列、最大 32 バイト | 0x44 (D) | 32バイト | | WiFiパスワード |文字列、最大 64 バイト | 0x45 (E) | 64バイト | | UDP サーバーの IP アドレス |文字列、最大 16 バイト| 0x46 (F) | 16バイト | | UDP サーバー ポート |16 ビットの符号なし整数、<=65535| 0x47 (G) | 2バイト | |モジュールパラメータの読み取り |単一命令 | 0x48 (高さ) |なし | |モジュール メモリ パラメータをフラッシュに書き込み|単一命令 | 0x49 (I) |なし |
具体的にどのIPアドレスを設定すればよいのでしょうか?
次の 2 つの状況は、Pic-o Link によって設定された IP アドレス パラメータを示しています。
ファームウェアプロジェクトを開くにはどうすればよいですか?
Pic-o Link
フォルダーを右クリックしてOpen with Code
を選択します。開いた後しばらく待ちます。プラグインは自動的に依存関係をインストールし、ツールチェーンをコンパイルします。 ダウンロードモードに入ってファームウェアをフラッシュするにはどうすればよいですか?
Pic-o Link
コンピュータに接続し、Pic-o Link のDOWNLOAD
ボタンを押したままにして、 RESET
ボタンを押してから、Platform IO の下部にあるダウンロード ボタンをクリックしてコンパイルしてダウンロードします。ワンクリック、ダウンロード後は忘れずにRESET
ボタンを押してくださいモジュールのホスト名を変更するにはどうすればよいですか?
sdkconfig.pico32
ファイル内のCONFIG_LWIP_LOCAL_HOSTNAME
項目を変更し、ファームウェアを再コンパイルしてフラッシュします。モジュールはどの WiFi 周波数をサポートしていますか?
インターフェイスと PCB 図面の要件は?
UART モードは TC264 を例にとります (ZhuFei ワイヤレス シリアル ポート インターフェイスの回路図を参照してください。直接コピーできます。一般的な UART インターフェイスと比較して追加のフロー制御ピンが必要であることに注意してください。ZhuFei ワイヤレス シリアル ポート送信ドライバーを模倣して GPIO を使用できます)。シミュレートする入力モード)
Zhiyong 上位コンピューターに似た、フレームヘッダーとフレーム末尾検出を備えた単純な Python 画像送信上位コンピューター表示スクリプト
実行に必要な Python ライブラリ:
Espressif ESP32 udp/tcp レートの公式テスト:
タイプ/スループット | エアインラボ | シールドボックス | テストツール | IDFバージョン(コミットID) |
---|---|---|---|---|
生の 802.11 パケット RX | 該当なし | 130メガビット/秒 | 内部ツール | NA |
生の 802.11 パケット送信 | 該当なし | 130メガビット/秒 | 内部ツール | NA |
UDP RX | 30MBit/秒 | 85MBit/秒 | iperf の例 | 15575346 |
UDP送信 | 30MBit/秒 | 75メガビット/秒 | iperf の例 | 15575346 |
TCP受信 | 20MBit/秒 | 65メガビット/秒 | iperf の例 | 15575346 |
TCP送信 | 20MBit/秒 | 75メガビット/秒 | iperf の例 | 1557534 |