Amazonで3000円切りで中のセンサより安いねということで一部で話題に.
センサはこれらしい.データシートもある.
1 $ 64.4 5 $ 61.18 10 $ 56.34 25 $ 49.91 50 $ 48.3
dmesg
[ +20.031877] usb 1-3: new full-speed USB device number 88 using xhci_hcd [ +0.151847] usb 1-3: New USB device found, idVendor=04d8, idProduct=e95a, bcdDevice= 1.00 [ +0.000008] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ +0.000003] usb 1-3: Product: UD-CO2S [ +0.000002] usb 1-3: Manufacturer: IO DATA [ +0.659847] cdc_acm 1-3:1.0: ttyACM0: USB ACM device [ +0.000065] usbcore: registered new interface driver cdc_acm [ +0.000004] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
次のページに情報を入力すると,指定したメールアドレスにURLが送られてくる
アーカイブ内のファイル名は日本語なので注意
$ unzip -l ./UD-CO2S_protocol.zip Archive: ./UD-CO2S_protocol.zip Length Date Time Name --------- ---------- ----- ---- 182973 2022-01-20 10:46 UD-CO2S_VA-MvgR_2.pdf --------- ------- 182973 1 file $ unzip ./UD-CO2S_protocol.zip Archive: ./UD-CO2S_protocol.zip inflating: UD-CO2S_VA-MvgR_2.pdf $ xdg-open ./UD-CO2S_VA-MvgR_2.pdf gio: file:///home/matoken/Downloads/UD-CO2S_VA-MvgR_2.pdf: ファイル“/home/matoken/Downloads/UD-CO2S_VA-MvgR_2.pdf”の情報取得中にエラーが発生しました: そのようなファイルやディレクトリはありません $ ls -l ./UD-CO2S_VA-MvgR_2.pdf ls: './UD-CO2S_VA-MvgR_2.pdf' にアクセスできません: そのようなファイルやディレクトリはありません $ ls -l ./UD-CO2S_* -rw-r--r-- 1 matoken matoken 182973 1月 20 2022 './UD-CO2S_'$'\342''V'$'\342\350\342''A'$'\342\357\306''-'$'\311''M'$'\342''v'$'\342\354\342''g'$'\342''R'$'\342\357''_2.pdf' -rw-r--r-- 1 matoken matoken 175338 3月 17 17:46 ./UD-CO2S_protocol.zip $ unar ./UD-CO2S_protocol.zip ./UD-CO2S_protocol.zip: Zip UD-CO2S_シリアル通信プロトコル_2.pdf (182973 B)... OK. Successfully extracted to "./UD-CO2S_シリアル通信プロトコル_2.pdf". $ xdg-open ./UD-CO2S_シリアル通信プロトコル_2.pdf
$ pdftotext ./UD-CO2S_シリアル通信プロトコル_2.pdf - 【シリアル通信設定】 ボーレート :115,200 データビット :8 パリティ :なし ストップビット :1 フロー制御 :なし 【通信プロトコル】 ※ コマンドやリターンの後には、CRLF が付きます。 ※ n は数値、x は文字列 コマンド リターン ID? … ID を問合せします OK ID=UD-CO2S VER? … ファームバージョンを問合せします OK VER=1.1 STA … データ送信を開始します OK STA データフォーマット → CO2=n,HUM=n.n,TMP=n.n (HUM は湿度、TMP は温度) STP … データ送信を停止します OK STP FRC? …UD-CO2S のフォースキャリブレーション値を取得します FRC=nnnn … UD-CO2S の FRC 値 FRC=nnnn … UD-CO2S のフォースキャリブレーション値を設定します(nnnn:400?2000) OK FRC … 設定出来ました NG FRC >> … 設定出来ませんでした NG FRC … 設定値範囲外
$ convert -monochrome -density 150 ./UD-CO2S_シリアル通信プロトコル_2.pdf ./UD-CO2S_シリアル通信プロトコル_2.jpg
serial を叩いてみる
$ stty -F /dev/ttyACM0 -a speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc cu -l /dev/ttyACM0 -s 115200 Connected. OK ID=UD-CO2S OK VER=1.2 OK STA CO2=418,HUM=65.3,TMP=20.4 CO2=416,HUM=65.1,TMP=20.5 CO2=415,HUM=64.9,TMP=20.5 CO2=415,HUM=64.6,TMP=20.5 CO2=413,HUM=64.5,TMP=20.5 CO2=412,HUM=64.4,TMP=20.6 CO2=411,HUM=64.4,TMP=20.6 CO2=411,HUM=64.4,TMP=20.6 CO2=410,HUM=64.5,TMP=20.6 OK STP FRC=400 ~. Disconnected.
$ stty 115200 -F /dev/ttyACM0 $ echo 'STA' > /dev/ttyACM0 $ cat /dev/ttyACM0 CO2=411,HUM=54.8,TMP=23.3 CO2=411,HUM=54.9,TMP=23.3 CO2=411,HUM=54.9,TMP=23.3 CO2=411,HUM=55.0,TMP=23.3 CO2=411,HUM=55.0,TMP=23.3 ^C $ gpscat /dev/ttyACM0 CO2=429,HUM=63.3,TMP=20.8 CO2=429,HUM=63.3,TMP=20.8 CO2=429,HUM=63.3,TMP=20.8 CO2=429,HUM=63.3,TMP=20.8 ^C
\r\n で改行が多いのかな?と思ったけど\n\n になっている.
$ cat /dev/ttyACM0 | od -xc 0000000 4f43 3d32 3134 2c33 5548 3d4d 3435 342e C O 2 = 4 1 3 , H U M = 5 4 . 4 0000020 542c 504d 323d 2e33 0a33 430a 324f 343d , T M P = 2 3 . 3 \n \n C O 2 = 4 0000040 3431 482c 4d55 353d 2e34 2c35 4d54 3d50 1 4 , H U M = 5 4 . 5 , T M P = 0000060 3332 332e 0a0a 4f43 3d32 3134 2c34 5548 2 3 . 3 \n \n C O 2 = 4 1 4 , H U 0000100 3d4d 3435 362e 542c 504d 323d 2e33 0a33 M = 5 4 . 6 , T M P = 2 3 . 3 \n 0000120 430a 324f 343d 3431 482c 4d55 353d 2e34 \n C O 2 = 4 1 4 , H U M = 5 4 . 0000140 2c37 4d54 3d50 3332 332e 0a0a 4f43 3d32 7 , T M P = 2 3 . 3 \n \n C O 2 = 0000160 3134 2c34 5548 3d4d 3435 372e 542c 504d 4 1 4 , H U M = 5 4 . 7 , T M P ^C
消せない?
$ cat /dev/ttyACM0 | tr --squeeze-repeats \n CO2=414,HUM=54.8,TMP=23.3 CO2=415,HUM=54.9,TMP=23.3 CO2=415,HUM=54.8,TMP=23.3 CO2=415,HUM=54.9,TMP=23.3 CO2=414,HUM=55.0,TMP=23.3 CO2=415,HUM=55.0,TMP=23.3 ^C
$ cat /dev/ttyACM0 | tr --delete \r CO2=425,HUM=55.5,TMP=23.3 CO2=424,HUM=55.4,TMP=23.2 ^C $ cat /dev/ttyACM0 | tr --delete \n CO2=420,HUM=55.4,TMP=23.3 CO2=418,HUM=55.2,TMP=23.2 ^C
$ stdbuf -i 0 -o 0 cat /dev/ttyACM0 | stdbuf -i 0 -o 0 ts -m "%F %T" | stdbuf -i 0 -o 0 grep CO2 | tee -a co2.log 2023-03-18 06:34:08 CO2=435,HUM=63.0,TMP=20.9 2023-03-18 06:34:10 CO2=435,HUM=63.0,TMP=20.9 2023-03-18 06:34:14 CO2=435,HUM=62.9,TMP=20.9 2023-03-18 06:34:16 CO2=435,HUM=63.0,TMP=20.9 2023-03-18 06:34:18 CO2=434,HUM=63.0,TMP=20.9 2023-03-18 06:34:20 CO2=435,HUM=63.0,TMP=20.9 2023-03-18 06:34:22 CO2=435,HUM=63.0,TMP=20.9 2023-03-18 06:34:24 CO2=434,HUM=63.0,TMP=20.9 ^C
タイミングやしばらく動かしているとNGが帰ってくるようになる?一回Ctrl + c で止めてcat するととりあえず直る.
NG NG NG NG NG NG ^C
$ cat co2.+5m.bash #@/bin/bash #set -x TIME=`date +%T` echo 'STA' > /dev/ttyACM0 sleep 2 DATA=`head -1 /dev/ttyACM0` co2=`echo ${DATA} | cut -d ',' -f 1` hum=`echo ${DATA} | cut -d ',' -f 2` tmp=`echo ${DATA} | cut -d ',' -f 3` echo "${co2}" echo --- echo ${TIME} echo ${co2} echo ${hum} echo ${tmp} echo 'STP' > /dev/ttyACM0
コメント