dsj541kgh が 2025年09月23日23時20分21秒 に編集
初版
タイトルの変更
【SPRESENSE】Serial2受信バッファ容量の変更方法について【Arduino】
タグの変更
SPRESENSE
記事種類の変更
セットアップや使用方法
ライセンスの変更
(MIT) The MIT License
本文の変更
# はじめに Serial2で受信した容量の大きいデータを継続してSDカードに保存する際、SD.flush中に受信バッファ以上のデータを受信するとはみ出た分が欠損します。Spresenseの送受信バッファはデフォルトで256byte(Arduino環境)となっていますが、これを拡張することで解決することもあります。 大まかな流れとしては、公式ページの[Spresense Arduino board package ローカルパッケージの作成](https://developer.sony.com/spresense/development-guides/arduino_set_up_ja#_spresense_arduino_board_package_%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%9C%E6%88%90)に示された通りではありますが、すぐ忘れそうなので手順をメモしておきます。 # 環境 OS:Windows 11 Home Arduino 2.3.6 Spresense SDK 3.4.4 # 作業手順 まずはターミナル(管理者)を開きます。windowsボタンを右クリックでターミナル(管理者)が選択できます。 何も考えずに以下の通りUbuntu-20.04をインストールします。インストール最後にユーザ名とパスの設定を要求されるので設定します。 ``` bash wsl --install -d Ubuntu-20.04 ``` インストール終わったら以下の通り起動して、パッケージのアップグレードをします。 ``` bash wsl -d Ubuntu-20.04 ``` 終わったら、installツールをダウンロードして展開します。 ``` bash sudo apt update sudo apt upgrade wget https://raw.githubusercontent.com/sonydevworld/spresense/master/install-tools.sh bash install-tools.sh source ~/spresenseenv/setup ``` 適当なエディタで.bashrcファイルの末尾に「source ~/spresenseenv/setup」を追記すると次使うときに助かることがあるかもしれないです。 ``` bash sudo nano .bashrc 末尾に source ~/spresenseenv/setup 追記 ``` そのあとSpresense SDK リポジトリからソースコードをダウンロードします。結構時間かかります。 ``` bash git clone --recursive https://github.com/sonydevworld/spresense.git git clone https://github.com/sonydevworld/spresense-arduino-compatible.git ``` 終わったら、カレントディレクトリをspresense-arduino-compatibleに移動してメインコアのmenuconfigを開きます。 ``` bash cd spresense-arduino-compatible ./tools/prepare_arduino.sh -S ~/spresense -c spresense -d disable -M SDK -p ``` 開くと以下のようなの画面が出てきて、 Device Drivers→Serial Drivers Support→UART2 Configuration→(256)Receive buffer size の流れで選択すると、256byteから任意の容量に変更できます。  その後、saveして、menuconfigからExitします。 サブコアも開いて同様に変更します。 ``` bash ./tools/prepare_arduino.sh -S ~/spresense -c spresense_sub -d disable -M SDK -p ``` 終わったら、以下の通りmakeします。 ``` bash make ``` すると以下の4ファイルがspresense-arduino-compatibleディレクトリの中にできます。 ./out/package_spresense_local_index.json ./out/staging/packages/spresense-v*.*.*_local.tar.gz ./out/staging/packages/spresense-tools-v*.*.*_local.tar.gz ./out/staging/packages/spresense-sdk-v*.*.*_local.tar.gz さて、これをwindowsのエクスプローラーから触りたいです。 以下の通りのアドレスをエクスプローラーに打ち込みます。 ``` bash \\wsl.localhost\Ubuntu-20.04\home\[自分が設定したユーザ名]\spresense-arduino-compatible ``` すると、上記4ファイルが確認できるので、まずは.jsonファイルのみコピーして、以下の領域に貼り付けます。Arduino15直下にoutフォルダがなければ作ってください。 ``` bash C:\Users\[windows環境のユーザ名]\AppData\Local\Arduino15\out ``` 残り3つの.tar.gzファイルは以下のフォルダにコピペします。 ``` bash C:\Users\[windows環境のユーザ名]\AppData\Local\Arduino15\staging\packages ``` Arduino IDEを起動して、ファイル→基本設定→追加のボードマネージャーのURLに以下を追加します。 ``` bash file:///C:/Users/[windows環境のユーザ名]/AppData/Local/Arduino15/out/package_spresense_local_index.json ``` OKした後、いったんArduino IDEを終了してまた開き直して、ボードマネージャーの検索窓に「Spresense」と入力すると「Spresense local Board」が一覧に表示されインストールできるようになってます。 これをいつも通りインストールすると、ツール→ボードの選択画面から「Spresense local」が選択でき、受信バッファマシマシの設定で開発ができるような気がします。