釋放心靈的力量(一):透過 Raspberry Pi 讀取腦波數據

    相信不少的朋友對於腦波很有興趣,也想透過腦波做一些有趣的應用,下面我將介紹如何在 Raspberry PI 上讀取神念科技的 Mindwave Mobile 腦波儀上的腦波數據。我也不是個善於文字表達的人,話就不多說了,接下來,我們就準備開幹啦~~~

    一、事前準備

    • Raspberry Pi 的開發板:Raspberry Pi 須具備藍牙連線功能,若是使用 Pi2 Pi zero. 請自行準備藍牙的 USB dongle. 這次我用的是 Raspberry Pi 3 Raspberry Pi zero w
    • 神念科技 Mindwave Mobile 頭戴式藍牙腦波儀。

    新增腦波儀到 Pi

    首先我們在 RaspBian 的右上角按下藍牙的圖示它會 Pop up 一個菜單出來,我們點選 Add Device系統即進入到搜尋藍牙裝置的畫面

    圖片 1

    再來就要把神念科技的腦波儀開機撥動開關到中間即開機此時會看到腦波儀的藍燈閃爍(每秒閃一次)此時為一般狀態非藍牙配對模式喔我們再把開關往上()持續約3~5腦波儀的藍燈變成快閃(每秒閃二次)此時才是藍牙配對模式,Raspbian 才會偵測到腦波儀

    圖片 2

    若有偵測到設備就會如上圖所示我們就點選 MindWave Mobile 後按 Pair 進行配對配對完成後系統會跳出一個對話盒,告知你配對已完成,但設備並沒有任何服務可供 Pi 使用直接按 OK 關閉設備當然沒有提供任何服務呀~~要提供什麼服務不就是我們要做的嗎接下來,我們就做點服務給 Pi 用吧~

    圖片 3

    安裝 Neurosky Python

    MindWave Mobile 是透過藍牙的 SPP (Serial-Port-Profile)傳輸的若要用 Serial Port 讀取可以將 serial port 的參數設成 57600,8,N,1讀對應的 Serial Port即可看到腦波的資料資料格式我們在 Neurosky Think Gear Serial 資料格式探究()Neurosky Think Gear Serial 資料格式探究() 中有詳細的說明,有興趣的朋友可以參研參研

    網路上有一些已實作完成的 Python 的函式庫可供我們使用這兒我們使用的是 Robintibor 實作的 mindwavemobile 我們就到 github 下載

     圖片 5

    開啟一個 terminal home 目錄下先建一個 Project 目錄然後輸入git clone https://github.com/robintibor/python-mindwave-mobile

    github 複製一份到本地端後就進入python-mindwave-mobile 的目錄將庫安裝到 python repository 中。

     圖片 6

    輸入以下指令sudo python setup.py install

    它會將 mindwavemobile 安裝到 /usr/local/lib/python2.7/dist-packages 的目錄下以後我們就可以直接引用啦

    Coding !!

    用你最習慣的編輯器創建一個 python 這兒我用 notepad++ 創建一個 read_eeg.py

    7

    >>>>>>

    # _*_ coding:utf8 _*_
    # coding:utf8
    import bluetooth
    from mindwavemobile.MindwaveDataPoints import RawDataPoint
    from mindwavemobile.MindwaveDataPointReader import MindwaveDataPointReader

    if __name__ == '__main__':
        mindwaveDataPointReader = MindwaveDataPointReader(address='20:68:9D:70:BD:71')
        mindwaveDataPointReader.start()
        if (mindwaveDataPointReader.isConnected()):
            while(True):
                dataPoint = mindwaveDataPointReader.readNextDataPoint()
                if (not dataPoint.__class__ is RawDataPoint):
                    print(dataPoint)
                else:
                    pass
        else:
            print("Exiting because the program could not connect to the TGAM device.")

    <<<<<<

    程式說明:

    import bluetooth

    我們用藍牙與腦波儀連線所以引用 Bluetooth

    from mindwavemobile.MindwaveDataPoints import RawDataPoint

    from mindwavemobile.MindwaveDataPointReader import MindwaveDataPointReader

    下面程式有用到 RawDataPoint MindwaveDataPointReader 類別

          mindwaveDataPointReader = MindwaveDataPointReader(address='20:68:9D:70:BD:71')

    宣告 mindwaveDataPointReader注意到後面 address 要輸入你的腦波儀的 address Robin 的庫的寫法理論是可以不用輸入它會自己 discover 後建連接的我實驗結果並不會如此,所以這就需要自己將 address 填入了,不知 address沒關係點選raspbian 右上角的藍牙圖示在菜單中選 remove device 選項系統就會跳出目前已配對完成的設備將鼠標移到 MindWave Mobile 選項上,即會顯示你的腦波儀的address如下圖dev_ 後方的字串即為你的腦波儀的 address ’20:68:9D:70:BD:71’ 改成你的 address 即可

          mindwaveDataPointReader.start()

    開始連接腦波儀囉

          if (mindwaveDataPointReader.isConnected()):

                 while(True):

                       dataPoint = mindwaveDataPointReader.readNextDataPoint()

                       if (not dataPoint.__class__ is RawDataPoint):

                              print(dataPoint)

                       else:

                              pass

          else:

                 print("Exiting because the program could not connect to the TGAM device.")

    若連接成功,輸出除了 RawDataPoint 外的所有資訊

    上傳執行

    read_eeg.py 上傳到 Pi 中,執行 python read_eeg.py

    2017 04 24 112742 1824x984 scrot

    2017 04 24 112754 1824x984 scrot

    若連線品質(Poor Signal)沒問題的話5秒後開始輸出 Meditation Attention 的資料

    這樣就完成我們的第一個腦波程序了,是不是很簡單呢趕快一起來動手做吧!

    天火資訊工作室

    地址:新北市中和區泰和街38巷30號

    電話:(02)2242-6409