概要

espress_streamRaspberry Pi Pico W(以降Pico W)上への移植を行いました。 linux用とは以下のような違いがあります。

  • シングルタスク、スレッド未使用。
  • リソース固定、ヒープ未使用。
  • 排他制御、同期機構関連部のダミー実装による無効化もしくは疑似動作化。
  • lwIPによるデータグラム通信部。
  • SDKのライブラリーによるティック生成部。
  • ティックを利用した動作確認用の乱数生成部。

その他、小リソース向けに設定値を変更しています。

なお、開発環境にはRaspberry Pi Pico C/C++ SDKを用いました。 OSは未使用(ベア環境)です。

パッケージ

本ソフトウェアはソースパッケージにて提供しています。以下をダウンロードしてください。

変更履歴
espress_stream_for_pico_w.20250201.tar.gz (1.8-1)
  • espress_streamのバージョンアップに対応した。
espress_stream_for_pico_w.20241224.tar.gz (1.7-1)
  • espress_streamのバージョンアップに対応した。
espress_stream_for_pico_w.20241214.tar.gz (1.6-1)
  • espress_streamのバージョンアップに対応した。
espress_stream_for_pico_w.20240826.tar.gz (1.5-1)
  • 乱数生成にpico_randを使用するようにした。
espress_stream_for_pico_w.20240825.tar.gz (1.5-1)
  • ドキュメントの修正。
  • espress_stream_dgram.cを修正。
espress_stream_for_pico_w.20240803.tar.gz (1.4-1)
  • espress_streamのバージョンアップに対応した。
espress_stream_for_pico_w.20240704.tar.gz (1.3-0)
  • espress_streamのバージョンアップに対応した。
espress_stream_for_pico_w.20240117.tar.gz (1.2-0)
  • espress_streamのバージョンアップに対応した。
espress_stream_for_pico_w.20240115.tar.gz (1.1-0)
  • espress_streamのコードドキュメント変更を反映。
espress_stream_for_pico_w.20240112.tar.gz (1.1-0)
  • espress_streamのバージョンアップに対応した。
espress_stream_for_pico_w.20240110.tar.gz (1.0-0)
  • espress_streamのバージョンアップに対応した。
espress_stream_for_pico_w.20240108.tar.gz (0.9-0)
  • ドキュメントの修正。
espress_stream_for_pico_w.20240101.tar.gz (0.9-0)
  • 設定値の一部が実験用の値のままになっていたので元の値に修正。
  • ドキュメントの修正。
espress_stream_for_pico_w.20231231.tar.gz (0.9-0)
  • 初版。

導入

準備

本ソフトウェアはRaspberry Pi Pico C/C++ SDKを用いてソースコードから作成します。 SDKの導入、ソフトウェア作成方法、SDKを用いて作成したソフトウェアのPico Wへの導入等の方法はSDKのドキュメントを参照してください。

SDKを導入されているディレクトリpico-sdkが存在するディレクトリでパッケージの解凍を行っておきます。

$ tar zxvf espress_stream_for_pico_w.########.tar.gz

パッケージには移植されたespress_streamとサンプルアプリケーションが含まれています。 サンプルアプリケーションはlinux用のes_ftxを移植したものです。 es_ftxはクライアントアプリケーションで、サーバーアプリケーションes_frxに対してファイルを送信する機能を持ちます。 移植されたes_ftxtest.datというファイル名で1MBのダミーデータを送信するように作られています。

以下ではSDKの導入が完了していることを前提に、サンプルアプリケーションを動作させるためのバイナリーを作成するまでの手順を示します。

バイナリーの作成

$ cd espress_stream_for_pico_w
$ vi wifi_config.h
$ vi app_main.c
$ mkdir build
$ cd build
$ PICO_SDK_PATH=../../pico-sdk PICO_BOARD=pico_w cmake ..
$ make espress_stream_app_lwip_background

wifi_config.hではwifiアクセスポイントの設定を行っています。

#define WIFI_SSID "MY_WIFI_SSID"
#define WIFI_PASSWORD "my_wifi_password"

以上のような内容で作成してください。

app_main.cではサーバーのアドレス、ポート、公開鍵およびユーザーID、パスワードを設定していますので、この部分を編集します。

#define ADDRESS "192.168.1.2"
#define PORT "12345"
#define PUBLIC_KEY { \
    0x73, 0x35, 0xe6, 0x3a, 0x76, 0x21, 0x23, 0xa9, 0x41, 0xa2, 0x5e, 0x5e, 0x53, 0x8d, 0xd4, 0xd2, \
    0xe4, 0x7d, 0x86, 0x92, 0x80, 0xf8, 0x3a, 0xf7, 0x81, 0x0e, 0x0b, 0x3d, 0xae, 0x80, 0x69, 0xc9 \
}
#define USER_ID "foo"
#define USER_PASSWORD "tpfBTht8"

公開鍵、ユーザーID、パスワードはes_frxの設定に合わせる必要があります。詳細は「linux用のes_ftxes_frx」を参照してください。

以上の手順でbuildディレクトリにespress_stream_app_lwip_background.uf2が作成されます。 これをPico Wに導入してください。

メイク時のワーニングについて

現在のところ、メイク時ワーニングが出ます。 同じコードはlinux用でもメイクされますが、ワーニングは出ておらず、問題ないと判断しています。

使用方法

サンプルアプリケーション

linuxにてサーバーアプリケーションes_frxを起動、ファイル受信の準備をしておいてください。 ソフトウェア導入済みのPico Wを起動すればファイルの転送を開始します。 このとき、USB経由でシリアルコンソールを接続しておくと、ファイル転送プログレス等の情報が表示されます。

espress_stream使用アプリケーション作成

espress_streamディレクトリ以下をディレクトリごとRaspberry Pi Pico C/C++ SDKを用いたアプリケーション作成環境にコピーしてください。

CMakeLists.txtに設定を追加します。

include_directories
espress_stream/includeespress_stream/api/includeをインクルードパスに追加。
add_executable
espress_stream/src/*.cespress_stream/api/src/*.cをソースに追加。
target_link_libraries
pico_stdlibpico_cyw43_arch_lwip_threadsafe_backgroundをライブラリーに追加。
target_compile_definitions
ESPRESS_STREAM_MAJOR_VERSION=#ESPRESS_STREAM_MINOR_VERSION=#ESPRESS_STREAM_PROTOCOL_VERSION=#を定義に追加。 “#”の部分は実際には数字です。 パッケージのCMakeLists.txtにある同設定のものに合わせてください。

UDPを使うため、pico_cyw43_arch_lwip_threadsafe_backgroundをライブラリーに追加し、lwIPを導入しています。lwIPはオプションをlwipopts.hに設定します。これを作成し、いずれかのインクルードパスにおいてください。詳細はpico-examplesのpico_w/wifi/lwipopts_examples_common.hを参照してください。

アプリケーションからespress_streamを利用するためのAPIはlinux用ライブラリーと同じです。 詳細は「linux用のライブラリー使用方法」を参照してください。

ライセンス

MITライセンスに基づいてリリースされています。

Copyright 2023 akinoyonika

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


INDEX