No Code AI(肉寇)AI自動化兩日精通|實體6小時+線上6小時
|

【Tutorial】當macOS遇上LinkIt 7697的開發小問題

   

作者:Ches拔(Sco Lin

先前Simple Care長照開源工作坊的時候都是以Windows開發,因為firmware會與Windows相依,所以開發firmware用Windows比較不會撞牆。由於手上的Mac是使用boot camp跑Windows,發現在一連串的操作後,Windows開始愈來愈肥大,128G的SSD也快爆了,工作坊結束後,重新整理電腦,決定換回macOS開發。

照著MTK的說明,在preference 輸入:http://download.labs.mediatek.com/package_mtk_linkit_7697_index.json

(請參閱MTK網站上的說明

開始進入Mac安裝7697的板子的時候,出現以下問題:

居然 Error downloading!!這真的是非常奇特,通常這會是網路出了問題,但換了2個網路都不行。重灌Mac後,結果顯示正常。接著下載LinkIt 7697,在download firmware時發現以下圖片的問題。

因為我已經裝了CP2102N的silicon lab官方Driver,實在想不通哪裡出問題。後來發現Java沒有安裝,找了jdk 8.x的版本安裝後,程式還是不會動;又試了一下Python的新版,安裝了3.x版還是沒用。後來,想到在工作坊也有朋友出現這個問題,當時他是抓了某一個非官方下載的driver才可以驅動LinkIt 7697。於是,我先刪除silicon lab的driver,再安裝上面提到的driver,LinkIt 7697再度出現,而且可以download firmware了。

選一個LWiFi的「AccessPoint」Example燒進去後,又發現serial monitor無法print任何東西。

後來,看了網上的討論後,灌入FTDICH340的driver。因為這兩個ESP8266、Arduino與USB to TTL都能用,就姑且先安裝吧~但記得要重開機!最後,總算可以在mac上正常開發LinkIt 7697,真是關關難過但關關不說啊!

在工作坊時,有朋友的Mac也是照著上面做但卻也不能啟動LinkIt 7697,是因為灌了最新的macOS。目前最新的macOS還有許多問題無法解決,只能用VMWare去跑Windows,或是用boot camp分割一個Windows出來開發,亦或是像小弟一樣將舊的macOS安裝在SSD上,Windows安裝在USB3.0的128G隨身碟上,這樣兩種系統開發都很順利,只是Windows會稍稍慢一點點。

但記住在macOS要把Mac的driver製作好,在Windows系統下裝,這樣Windows才有辨法正常使用。

小弟手上Mac系統是10.10.5,希望此文章未來可以幫助到Mac開發Arduino IDE的高手們!

再來是Simple Care的資料庫是以MySQL導入,如果你像我一樣直接將Github的code clone,然後在Terminal輸入以下command:

python /Users/Apple/Documents/GitHub/Simple-Care/pythonMQTT/python27/simple_care_py27.py

輸入後會發現出現錯誤,主要是因為沒有安裝paho,所以要在Terminal輸入:

sudo pip install paho-mqtt

然後再輸入一次:

python /Users/Apple/Documents/GitHub/Simple-Care/pythonMQTT/python27/simple_care_py27.py

又發現錯誤,但這次應該是ImportError: No module named MySQLdb(意思是說MYSQL沒灌,這個就很麻煩啦,也許你會像我一樣直接在Terminal輸入以下command,結果失敗。)

需要先到這裡下載DMG檔安裝,過程中記得左下角要選擇自定。

然後取消勾選最後一個。

再來於Terminal輸入:sudo pip install mysql-python,結果會跳出這個來(太恭喜啦! 離成功愈來愈近了!)

 

安裝完之後重新開機,應該就ok了,如果還不行,就再key一次:

sudo easy_install mysql-python 與 sudo pip install mysql-python

手動安裝

如果還是不行,就手動安裝吧!

首先,要安裝brew:

“/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

接下來:

  1. 先brew install mysql-connector-c
  2. 下載https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip#md5=654f75b302db6ed8dc5a898c625e030c
  3. cd MySQL-python-1.2.5 修改site.cfg
    將#mysql_config = /usr/local/bin/mysql_config 改成 mysql_config = /usr/local/mysql/bin/mysql_config
  4. python ./setup.py build 與 sudo python ./setup.py install
  5. 安裝XAMPP

測試Github的MySQL與Python相連

import MySQLdb

db = MySQLdb.connect(host=”localhost”,

user=”root”, passwd=””, db=”simple_care”)

cursor = db.cursor()

cursor.execute(“SELECT * FROM log_peripheralwithcentral”)

results = cursor.fetchall()

for record in results:

col1 = record[0]

col2 = record[1]

print “%s, %s” % (col1, col2)

db.close()

最後存成test.py,在Terminal輸入 python test.py

過程中,如果碰到libmysqlclient.18.dylib找不到,可以在Finder找找看在哪裡,像我是在XAMPP中找到的,就在Terminal輸入:

sudo ln -s /Applications/XAMPP/xamppfiles/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

再次輸入python test.py,應該就可以取出資料庫的值了!接下來brew install mosquitto,發現我的Mac版本只有10.10.5,它居然說brew和apple不支援!

只能說我認了,OS升級到最新版再brew install mosquitto一次。

完成後輸入python simple_care_py27.py,出現[Errno 61] Connection refused,這時候可以:

  1. 重開機按下command+r,在Terminal輸入csrutil disable
  2. 開機後在Terminal下輸入brew services start mosquitto

Mac開發Firmware、MySQL與MQTT實在太厚工了!But!如鄉民所說!用Mac就算是只拿來打報告,潮能代表一切!!!或許又碰到坑的時候,是真的要考慮用舊版或裝個VMWare用Windows開發,是時候找時間玩Mbed了!

(本文同步發表於作者部落格 — 物聯網學習筆記文章連結;責任編輯:廖庭儀。)

Ches拔(Sco Lin)

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: Ches拔(Sco Lin)

兩個男孩的爸爸、下班變身孩子王、衝浪閱讀與coding、PM擔當RD魂。

Share This Post On
468 ad

3 Comments

  1. 可惜的是 我的依照上述方法還是沒辦法抓到7697
    扒了一下文 看到一個外國老兄跟我們一樣的狀況,用了十八條線?才測試到一條可以正確連上,所以~也有可能是線材的問題…

    但是我拿去插LINKIT ONE又是可以抓的到的(線材是one送的那條 抓的到好像蠻合理的…)

    拿著同一片7697+ONE送的線去win7上安裝又是正常可以讀取與燒錄的…
    搞不懂到底怎麼了Orz

    Post a Reply
  2. “Mac就算是只拿來打報告”對於這句話不是很認同,我在業界遇到的外國客戶全都是在mac上開發FW、database、測試的程式,所以我覺得這個看法太過狹隘,裝潮是台灣人比較會不代表mac只有這個功能。

    Post a Reply
    • 謝謝您的回應,期望有機會您也可以一起與我們分享使用Mac進行開發的專案,讓更多人可以有不一樣的開發工具:)

      Post a Reply

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *