SPRESENSE用のXMODEMライブラリを作ってみました! GitHub のリポジトリを作りましたので、興味ある方はご覧ください。





YoshinoTaro/CecXModem128



Contribute to YoshinoTaro/CecXModem128 development by creating an account on GitHub.

github.com




SPRESENSEはUSBもあるしSDカードもあるし必要なの?と思う人は多いと思いますが、これがあるとすごく便利なんです。例えば、起動時に最新の学習済データを転送して、定期的にログに落とすということをメインボードのUSB-UARTだけで行なえます。

ラズパイなどと組み合わせることで、スケッチのパラメータを自動的に更新やログの吸い上げなど処理の自動化が行えます。それよりも何よりも内蔵フラッシュに直接アクセスできるので大きな拡張ボードは不要になります。(∩´∀`)∩ワーイ

使い方もすごく簡単です。例えば、Spresenseの内蔵フラッシュからPCにデータを送るのは次のスケッチで実現できます。


#include <CrcXModem128.h>
#include <Flash.h>

CrcXModem128 xmodem;

void setup() {
Serial.begin(115200);
Flash.begin();
xmodem.begin(&Serial);

Serial.println("ready to receive");

/* Spresense -> PC */
File sndFile = Flash.open("sndtxt.txt");
Serial.println("ready to send");

if (sndFile) {
Serial.println("XModem ready!");
xmodem.sendFile(sndFile);
} else {
Serial.println("sndtxt.txt doesnot exists");
}
sndFile.close();
}

void loop() { }




一方、PCからSpresenseの内蔵フラッシュにデータを送るのは次のスケッチで実現できます。


#include <CrcXModem128.h>
#include <Flash.h>

CrcXModem128 xmodem;

void setup() {
Serial.begin(115200);
Flash.begin();
xmodem.begin(&Serial);

Serial.println("ready to receive");

/* PC -> Spresense */
File rcvFile = Flash.open("rcvtxt.txt", FILE_WRITE);

if (rcvFile) {
Serial.println("XModem ready!");
xmodem.recvFile(rcvFile);
} else {
Serial.println("rcvtxt.txt cannot create");
}
rcvFile.close();
}

void loop() { }



Spresenseでしか動作確認していませんが、ライブラリそのものは特別なAPIを使っていないので、他の Arduino でも動くかもしれません。もし、チャレンジされた方がいたら一報いただけると助かります。
(^^)/~





SONY SPRESENSE メインボード CXD5602PWBMAIN1

  • 出版社/メーカー: スプレッセンス(Spresense)
  • メディア: Tools & Hardware



SONY SPRESENSE カメラモジュール CXD5602PWBCAM1

  • 出版社/メーカー: スプレッセンス(Spresense)
  • メディア: Tools & Hardware



SONY SPRESENSE LTE拡張ボード CXD5602PWBLM1J

  • 出版社/メーカー: スプレッセンス(Spresense)
  • メディア: