昨晩、いろいろ試してるArduinoベースの心電計・筋電計用のパッドを、お風呂から上がって汗が引いたら貼り付けてから寝たわけだが。貼り付け位置を記録していないのを朝になって思い出して、ベッドに寝たまま裸の自撮り写真を撮ってた。1チャネル分の心電計として使えるが、どこに貼るべきなのかとか。
昨晩、いろいろ試してるArduinoベースの心電計・筋電計用のパッドを、お風呂から上がって汗が引いたら貼り付けてから寝たわけだが。貼り付け位置を記録していないのを朝になって思い出して、ベッドに寝たまま裸の自撮り写真を撮ってた。1チャネル分の心電計として使えるが、どこに貼るべきなのかとか。
惜しいなぁ。
(2022/12の記事)「しそうけいさつ」漢字に変わりました 外壁の平仮名表示、惜しむ声 | 毎日新聞
https://mainichi.jp/articles/20221201/k00/00m/100/162000c
今どきのマシンで52600bpsでシリアルポートをたたいて、取りこぼしなんて起きないよなあ。
6chのEEGの信号だと17バイトのパケットを送っていてパケットが壊れているエラー率が6.76%、2chに減らすと9バイトに減ってエラー率が2.46%。でも2chに減らすと互換性がなくなる。
パケットの先頭の2バイトが同期用の0xa5 0x5aで最後がなんだかわからないけど0x01なので、最後までちゃんとずれずに読めたら成功にした。
最後に0xa5が来るパターンを見つけたので頑張ってリカバリーするようにしたんだけど、そもそもチェックサムとかもないフォーマットだし、送信側の計算能力からしてCRCは無理だし。
This account is not set to public on notestock.
ジレンマだ。(この絵はNSFW設定されていました、みたいなマークが出ると良いんだろうか。)
NSFWの自撮り写真がありますが、仕事中に撮りました。
(Arduino用の筋電センサシールドのデータ受信用プログラムを書いてて、筋電だと何だかわからないから、正しいデータがわかってる心電で測定してて、胸にパッドを張ったりした様子をシャツをまくって自撮り)
今日は一日中、研究室でシャツをまくり上げて胸を出して心臓用の電極の接触状態を確認したり、パンツをめくって下腹部の基準電極の状態を確認していた。傍から見てやばいやつである。
なんか、シリアル通信がやたらと化けるArduino用のECG https://www.olimex.com/Products/Duino/Shields/SHIELD-EKG-EMG/open-source-hardware のデモ用のプログラムなんだけど。Omilexino-2560とあるなあ。AVRマイコンがArduino Mega相当だ。
ATMega328pだと化けるけど、ATMega2560だと化けないとかあるかもしれない。
あと、気になるのはvoid loop()の中で__asm__ __volatile__("sleep");して寝てることだなあ。起き上がってくるときに何か起きてて化けるとかはありそうではある。
Arduinoから送信するのが化けてるんだなあ。受信してるのはFreeBSDなPCで、/dev/ttyU0に見える。化けるはずがないのに化ける理由がわからん。
シリアル通信が化けるというより、正確にはバイトが丸ごとドロップしてるんだなあ。
ボードのメーカーのドキュメントを見るとOLIMEXINO-328とOLIMEXINO-32U4とOLIMEXINO-2560とOLIMEXINO-STM32なんだな。
OLIMEXINO-280はATMega328だからFT232RLを経由してUSBにつながってるのはArduino UNOと変わらない。OLIMEXINO-32U4はATMega32U4だからUSBは内蔵、OLIMEXINO-2560はCH340H経由だなあ。
This account is not set to public on notestock.
シリアルが化けるにしても、バイトが丸ごと落ちてるのが解せぬ。普通は1ビット化けとかそんなのだし。
sleep命令を取ってみるか、ATMega32u4なArduinoにしてみるか、いっそのことArduino M0にしてみるかかなあ。
FlexiTime2をつかって250HzでanalogRead()してシリアル送信してるだけだから、Unoの能力でも足りるはず。というかATmega32u4でもいけることになってるから、クロック的には全然余裕。