050_twilite - kotaproj/study_zenpan GitHub Wiki

monostickを確認

  • twilitedipに、標準アプリを書き込む
    • LED側が動作するモードで回路を組む
  • monostikにも標準アプリを書き込む
    • twilite stage起動
    • ビューアをみる

定期的にデータが上がっていることがわかる

monostickをラズパイで確認

  • ラズパイに接続する
    • /dev/ttyUSB0で認識する
  • メーカのスクリプト実施する

$ python tw_readwrite.py /dev/ttyUSB0 

参考:

actをつかってmonostickと連動する

twilitedip側

BRD_APPTWELITEアプリを書き込む。 MODEピンはノンケアとして、子機動作となるようにする

monostick側

Parent-MONOSTICKをベースに書き込む。 このとき、raw-dataがみえるように、 if(0) -> if(1)に変更する。

コマンドメモ

D1の状態めも

0  1  2  3  4  5  6  7  8  9  10 11 12 13 14[15]16 17 1819 2021 2223 2425 26
                                 B  A  T  1  D?
01 FE 81 0B 71 CE 00 00 00 00 00 42 41 54 31 0F 0C E0 03FF 03FF 03FF 03FF 2B
01 FE 81 0B 71 CE 00 00 00 00 00 42 41 54 31 0E 0C E3 03FF 03FF 03FF 03FF 29

スイッチが押されていない場合、
 ->0F
スイッチが押されている場合、
 ->0E

monostick - ラズパイのシリアルコードを確認

https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/python_twelite/index.html ->

Python による読み書きスクリプト (Python2.7/3.4 で確認)
標準入力からの入力をシリアルポートに送信します。
読み出し用にスレッドを定義しています。

をベースに行う

全般

  • pyserialのpipインストール
  • スレッドは、threadingを使っている
  • globalな値
    • ser : シリアルモジュール
    • bTerm : 終了フラグ

主処理

sys.argvで /dev/ttyUSB0でわたす -> Serial() ==>115200bpsで渡す ==>timeout 0.1秒

読み出しスレッド readThread()で、DaemonでStart

Daemonにする意味にって何???

メインループ : (while True:)

標準入力(stdin)より1行読み出し、入力を受け付ける

  • "q\r\n" : プログラム終了 ->DoTerminate()をコール
  • ":xxxxx\r\n" : シリアル通信で文字列を投げる(/dev/ttyUSB0になげる)
  • Ctrl+C : プログラム終了 ->DoTerminate()をコール
  • 例外時は、エラーメッセージを表示しプログラムを終了

受信スレッド - readThread

  • while文ループ
  • line = ser.readline().rstrip()
    • byte文字列としてストア
  • lineを解析してコマンド処理を行う

act情報

公式

通信路確認メモ

ptn dev1 dev2 dir txadrid result reason
ptn0 00h FEh 2->1 00h ok -
ptn1 00h FEh 2->1 FFh ok 全ブロード
ptn2 00h FEh 2->1 FEh ng 子機のみブロードのみ
ptn3 FEh FEh 2->1 FEh ok
ptn4 01h FEh 2->1 FEh ok
ptn5 01h FEh 2->1 01h ok
ptn6 01h FEh 2->1 02h ng アドレス異なるため

温度センサー確認メモ

GY-BM280を使用する https://www.amazon.co.jp/KeeYees-BME280%E6%90%AD%E8%BC%89-%E6%B0%97%E5%9C%A7%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-Arduino%E5%AF%BE%E5%BF%9C-Raspberry/dp/B07QXPJ8XP/ref=pd_sbs_60_3/355-9859658-0409365?_encoding=UTF8&pd_rd_i=B07QXPJ8XP&pd_rd_r=7b1758c1-d11c-4149-b406-19a34428a121&pd_rd_w=ZFsGM&pd_rd_wg=jkkdi&pf_rd_p=c295905f-82f9-4d73-8142-c393a4211258&pf_rd_r=PGKHNW5Z3Q65KD55KWJV&psc=1&refRID=PGKHNW5Z3Q65KD55KWJV

BM280 DIP(n) DIP(silk) DIP(signal)
VCC 28 VCC VCC
GND 1 GND GND
SCL 2 14 I2C Clk
SDA 19 15 I2C Sda
CSB NC - -
SDO NC - -

温度センサー確認メモ - 受信データ

device変えた

b'RAW PACKET -> :0101810B71CE000000000053425331000000000783100F03E10CF909A3DC'
b'00'
D1 :  LOW

0101810B71CE0000000000 53425331 0000 0000 0783 100F 03E1 0CF909A3DC'
                      |S B S 1 |temp humi|temp humi pres|vcc  a1  |
                      |fourchar|sht3x    |bme280        |peri     | 

0x0783
=1923(0x783)(0b011110000011)


0x100F
=4111(0x100F)(0b0001000000001111)


0x03E1
=993(0x3E1)(0b001111100001)


---
けっこうさわった


b'RAW PACKET -> :0101810B71CE00000000005342533100000000094A1BB503E20CF909A361'
b'RAW PACKET -> :0101810B71CE000000000053425331000000000938159D03E20CF909A391'
b'RAW PACKET -> :0101810B71CE00000000005342533100000000092811AE03E20CF909A394'
b'RAW PACKET -> :0101810B71CE00000000005342533100000000091C102803E20CF909A327'


0101810B71CE0000000000 53425331 0000 0000 094A 1BB5 03E2 0CF9 09A3 61'
                      |S B S 1 |temp humi|temp humi pres|vcc  a1  |
                      |fourchar|sht3x    |bme280        |peri     | 
0x094A / 100
= 23.780000
0x1BB5 / 100
= 70.930000
0x03E2
=994(0x3E2)(0b001111100010)

→ちゃんととれている