# AIoT Sensor(智聯感測)全國聯賽 X Rabboni ## Version ==(如果載了python和rabboni還是不能執行程式,很有可能是版本的問題)== * **IDE** : [vscode](https://code.visualstudio.com/) (記得要將vscode加入**path**) * **python** : 3.7.5 * **numpy** : 1.19.2 * **rabboni** : 1.73 建議使用**虛擬環境**做版本管理 這邊是用[pipenv](https://github.com/pypa/pipenv)來操作 可以**開一個資料夾**再點選"**以code(vscode)開啟**" ### **pipenv 基本指令:** * **pip install pipenv** : 透過pip安裝pipenv * **pipenv --python 3.7.5** : 產生 3.7.5 的虛擬環境 * **pipenv install numpy==1.19.2** : 在虛擬環境安裝特定版本的套件 * **pipenv install rabboni==1.73** : 在虛擬環境安裝rabboni套件 與此同時,如果資料夾下沒有pipfile,pipenv會**自動生成一個pipfile和pipfile.lock** 如下 **pipfile** : ```p [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] numpy = "==1.19.2" rabboni = "==1.73" [dev-packages] pylint = "*" [requires] python_version = "3.7" ``` 都設定好後就可以進入虛擬環境了 * **pipenv shell** : 進入虛擬環境 * **pipenv run filename.py** : 執行此資料夾下的檔案 * **exit** : 離開虛擬環境 ### **Example :** ```python= #test.py (測試版本是否正確) from rabboni import * print("test") ``` **Termianl :** ``` PS C:\Users\user\pipenv shell \example code\code\Python_練習> Launching subshell in virtual environment... Windows PowerShell Copyright (C) Microsoft Corporation. 著作權所有,並保留一切權利。 (進入虛擬環境) Launching subshell in virtual environment... Windows PowerShell Copyright (C) Microsoft Corporation. 著作權所有,並保留一切權利。 請嘗試新的跨平台 PowerShell https://aka.ms/pscore6 PS C:\Users\user\Desktop\rabboin test\example code\code\Python_練習> pipenv run test.py test (執行成功) PS C:\Users\user\Desktop\rabboin test\example code\code\Python_練習> exit (退出虛擬環境) PS C:\Users\user\Desktop\rabboin test\example code\code\Python_練習> python test.py Traceback (most recent call last): File "test.py", line 1, in <module> from rabboni import * ModuleNotFoundError: No module named 'rabboni' (報錯) ``` ## Rabboni Reference ### **Term:** accx accy accz : **三軸的加速度** gyrx gyry gyrz : **三軸的角速度** ### **Function For Setup** #### **USB** ```c rabo = Rabboni(mode = "USB") #先宣告一個物件(這邊宣告它叫rabo) rabo.connect() #透過USB連接裝置,若抓不到會報錯 (void) rabo.disconnect() #斷開聯絡(關掉USB) rabo.stop() #斷開聯絡 ``` #### **Bluetooth** ```c rabo=Rabboni(mode = “BLE”) #宣告一個物件(這邊宣告它叫rabo) rabo.scan() #掃描附近的藍芽裝置 (void) rabo.print_device() #列出所有附近的藍芽裝置 (void) rabo.connect(MAC) #填入MAC,連接裝ˋ #什麼是MAC? 每一個網卡獨一無二的編號,就是MAC address (在Rabboni的後面有)# rabo.disconnect() #斷開聯絡 rabo.stop() #關掉dongle(建議都要關掉,以免下次發生錯誤) #dongle:在這邊當作藍芽適配器# ``` ### **Function Return Parmerter:** ==(以下的rabo皆為宣告出來的物件)== ```p rabo.Status #是否連上(bool;true:接上 ,false:還沒) #以下若要Y或Z軸方向資料,就將x改為y或z# rabo.Accx #當下X軸加速度(float) rabboni.Gyrx #當下X軸角速度(float) rabo.Accx_list #紀錄連接到結束的x軸加速度(list) rabo.Gyrx_lsit #紀錄連接到結束的X軸角速度(list) ``` ### Function For Collect or Process Data ```c rabo.read_data() #讀取感測器資料必須先跑此行,才能讀取所以參數(void) rabo.print_data() #列出read_data()的資料,格式如下 #Acc_x,y,z #Gyr_x,y,z #Count rabo.rst_count(mode) #重置裝置紀錄的count #mode:“Both”,”Store_cnt”,”Cur_Cnt” Rabboni.set_sensor_scale(acc_scale,gyr_scale) #設定感測器取值的範圍 #acc_scale:必填,2,4,8,16 #gyr_scale:必填,250,500,100,2000 #附註:請將設定與錄製分開進行,設定完後離線再進行錄製。 ``` ## Reference * website : [AIoT senor](https://12u10.nctu.edu.tw/winwinarea/winwinaiot/) * example : [code](https://drive.google.com/drive/folders/1DtzOUfXLrEJPAXPGa9SsGPM0ap_6Lu8B) * senser : [ICM-20689](https://product.tdk.com/info/en/documents/catalog_datasheet/imu/ICM-20689-v2.2-002.pdf)