哈爸陪你問 - 如何成為 open hardware maker (LinkIt Smart 7688篇) - Q&A

活動大綱

時間:12/25 20:30 - 22:00

方式:臉書線上聊天討論

活動主旨:陪伴新手聊 - 如何成為 open hardware maker (LinkIt Smart 7688篇) 

發起人:哈爸

主答顧問:

顧問團:賴建宏, 曾吉弘, Yu-Hsian Sun, 陳柏儒, Vincent Hsu, Michael Huang, 黃傑, 郭長祐, Smallp Tsai, Powerbear Wang, Horng-Yih Lai, Polo Wu, Bang Min Shiue, 黃正全, Ozzy Chiu, 黃偉峻

活動內容:翻轉教育,沒有教學,陪你聊天,給你問

聊天 Agenda

聊天規則

進門請禮貌打招呼,離開也請打招呼再離開,線上活動,不介意大家隨時離開

請先報到,如果有正在做東西,可分享的,請跟大家分享

很多人一起聊天,容易混亂,聊完也無法有效收集成果。

所以嘗試用共筆的方式,看看能不能聊出點花樣。

所有地方都是開放大家隨意編輯,請大家多多貢獻與分享,相信來的能人很多,請大家一同幫助 Maker 的新手

覺得這樣聊天對您有幫助,立即邀請您線上好友參與。也可分享 hackpad 資訊,方便大家參與

共筆注意事項

請注意,此為公開的紀錄,可公開分享的才寫在這裡。其他在臉書閒聊就好

為減少可能的爭議,本共筆著作係採用 創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權。

文件生命週期

準備期:會前

線上共筆期:會中

會後整理期:會後一星期

結束封存期:會後一星期之後

顧問準備事項

在當天討論之前,本篇主要是給顧問團提前準備相關的 Q&A, 以及互相認識,聯絡感情之用,希望在當天之前,只有顧問才能看到內容(準備時期,保持點神秘感)。當討論開始,就會開啟權限給所有人可讀寫

顧問白板

此區讓大家認識這次的顧問團,請顧問們自行填寫。建議列上正在做的東西,推薦的臉書討論區等

[ 顧問在這裡分享 ]

哈爸

參與人員報到區

請報到,歡迎提供聯絡方式(臉書,Email),需要保持神秘感,可用綽號

[ 在這裡報到 ]

Maker1

Maker 的玩具

請參與者,有再做東西的,可以分享一下。比較容易找到同好,也容易得到別人的幫助

[ 分享在這裡 ]

參考

問與答

為方便追蹤與解答,發問時請直接在此文件中加入新的提問,之後,可將同一個問題發到聊天區,提醒大家已提問。

本問答為個人淺見,僅提供參考。由於是共筆型態,也歡迎大家持續補充與修正

常見的相關參考資料,發問前,請先參考 - FAQ 

 

Q2 : 那麼多種 Maker 可以做,為何要做 Open Hardware Maker?

A2 : 參考以前哈爸給你問

Q3 : 有那麼多 Open Hardware, LinkIt Smart 有什麼特色?

 我想特色主要在於這是一個介於單板電腦跟微控制器中間的segment,當然在這個區段也有很多開發版,而LinkIt Smart 7688的主要想法是讓Linux Wi-Fi開發版盡量以符合community的SW stack來使用,所以才會找OpenWrt的社群人士來幫忙,而不像一般的Wi-Fi開發版,大多會自己branch出自己一套SW Stack。

Q5 : 有沒有什麼人在教?

課程滿多的

Q7 : LinkIt Smart 7688 和 7688 Duo 有什麼差別?

Smart 7688上面有MT7688AN,從MT7688AN拉出USB/Ethernet,I2S(Audio),I2C,SPI(跟SPI Flash共用),不支持Analog Input。

而7688 Duo多加了一顆ATMega32U4,拉出I2C/SPI/Analog Input。USB/Ethernet同樣從MT7688AN拉出來。沒有拉出I2S介面。

所以,如果你習於使用Arduino來連接I2C/SPI/ADC,或是你需要一個可以完全獨佔的MCU,Smart 7688 Duo會是比較好的選擇。

如果你有透過I2S播放Audio的需求,或是你並不需要一個獨立的MCU,只想要用Linux做事情,Smart 7688會是比較好的選擇。

Q8: 有什麼配合的周邊?

MTK並沒有做什麼周邊,但Seeed Studio有出三張Breakout Board可以轉接Grove系列的周邊。

Q9: 有什麼特別的應用?

KitchBot打算拿來煮牛排,但還在開發中

LASS 正在上 7688, 請期待

Q13: 問目前有沒有已經完成的專案?

https://hackaday.io/project/8623-lightsaber-stand-for-hackers

Q14 : 因為之前一直強調 7688 有很完善的 node.js 執行環境。想請問是指你們提供比較大的 RAM/FLASH 空間 (相對於目前市面上的 Yun 等等)。使得 node.js 的服務可以在 7688 上有空間發揮。還是說其實你們有針對 node.js 做一些神秘的最佳化?

主要還是在於RAM/Flash空間,另外打通了Node.js一小部分我們覺得比較重要的package在OpenWrt上面的支持(並且讓它回到OpenWrt Trunk)。其餘並沒有什麼外星科技。

Nodejs 不太需要在 linux 上做什麼最佳化,就 follow Node.js 社群架構成長即可。

Q15:7688使用node.js,最小的延遲時間是多長?

請問這邊指的延遲時間是指?

Q15-1:Delay function

目前spec上面並沒有這樣的數字,需要測試才能夠知道。能否推薦一個test case呢?

ds18b20的需求延遲是us等級的,可以試看看

一般講 packet delay 都是 ms 等級的。hardware 的部分都是 local 處理的,跟 node.js 的 delay 沒有關係

了解,如果是說1-wire要使用的話,那麼跟node.js就比較沒有關係,主要是系統的schedule latency,但就經驗來看,Linux上面要穩定驅動1-wire是比較困難的 - 就算是Realtime scheduler也會有搶佔的問題

Q16:7688使用DS18B20溫度感測器,除用使用DUO外,直接上7688的可能性高嗎?

upm 有打算在 0.5 版本支援 (目前是 0.4.1),屆時我們可以看看

Q17:7688使用WS2812燈條,除用使用DUO外,直接上7688的可能性高嗎?

我想應該會跟Galileo初代一樣,會有thread被搶佔時間的問題。1-wire相關的應用還是透過獨佔MCU來做會比較保險些。

Q18:目前要將7688外接WIFI USB卡的話,有沒有推薦的?

可能還是要回到OpenWrt支援哪些Wi-Fi USB dongle來看,不過想請問需要在Wi-Fi開發版上面再插USB Wi-Fi dongle的目的是要用於哪種應用呢?

Q18-1:有沒有大神已經用過確定可以的呢?

基本上市面上 USB wifi adapter 大多都是 Ralink 5350 系列(特別是Edimax公司出的)確定一下就可以了,至於怎麼做可以參考這個 config: https://gist.github.com/iamblue/00f0c5cf6e987f1b7834

Q19:7688外接USB UART(FT232RL)來控制UART,目前可行嗎?還是待擴充?

1) 7688自己就有兩組UART可以使用了

2) USB-Serial device有kmod-usb-serial可以試試看,我沒有試過~

Q20:7688可否接USB BT4.0的裝置呢,目前可行嗎?還是待擴充?

OpenWrt本身有bluetooth的支持,不過就我知道會有一些問題要打通,待有心人士來補完

OpenWrt 可以使用 bluez package .

Q21:7688做為零件包的話,何時可以普及化?

不是很確定這問題要問的是什麼呢? 是說目前供貨的區域嗎?

Q21-1:是的,何時在台灣可以容易買到

iCShop 我昨天下單,已經寄出了

Q22:7688是LINKIT系統少數沒有電池支援的系統,是否有電池系統相關開發板可以擴充呢?

電池可以自己使用穩壓電路即可,不過7688本身是作為Gateway來設計的,功耗並不低,所以在使用時間上面應該會受限。

Q23:7688目前都沒提到的功率方面,如果做為一個感測器節點,是否有測量它的功耗了呢?

Wifi打開7688待機狀態大概200~300mA

wifi打訊號的瞬間(<幾microSeconds)大概500mA

其他scenario Developer’s Guide裡面有:

http://labs.mediatek.com/fileMedia/download/87c801b5-d1e6-4227-9a29-b5421f2955ac#page=13

另外我想補充的是,這測試是經過內部的LDO把5V降成3.3V,所以如果你用比較好一點的Switching power supply,耗電量會再降低

但200~300這個等級,真的只能做gateway,一直插著電

Q24: 有睡眠模式嗎?

就我所知沒有特別的low power / power domain的設計,Chipset本身會在idle的時候降頻,不過不像手持裝置會特別切割出可以獨立關閉的domain,或是由SW命令HW降壓的機制。

Q25: bootloader 有釋放源碼嗎? 是否有保護,可否修改?

Here.

https://github.com/MediaTek-Labs/linkit-smart-7688-uboot

Q26:7688當SERVER的娮,如何做到用192.168的IP或用手機架的網路,然後外網可以連到的方法呢?

這跟7688就比較沒關,而是7688所屬網路的gateway本身如何做到port forwarding或是proxy的功能 - 能否再詳述一下你的網路環境的配置呢?

我有個想法,就是7688架一個SERVER,走到那帶到那,手機開AP模式給他連,然後其他人可以連進來看資料,或是修改資料,像是:有個LED燈牆,大家可以送字串一來顯示之類的

Q27:其實我想自已做一個底板,用I2C接,ARDUINO,然後ARDUINO用原本的IDE來寫,這樣MCU反應可以比較即時,有必要這樣做嗎?因為我聽BLUE說,用7688去接ATMega32U4時,其實沒很即時性,還是DUO的ATMega32U4也可以用ARDUINO環境開發呢?

Duo可以使用Arduino IDE寫程式。

Duo的ATMega32U4上面預載是Arduino bootloader沒錯,可以使用Arduino IDE去program。MT7688AN跟ATMega32U4中間通道是UART,還有幾隻GPIO接著。可以參照Developer’s Guide http://labs.mediatek.com/fileMedia/download/87c801b5-d1e6-4227-9a29-b5421f2955ac#page=68

用I2C就已經是不即時的Protocal了,而且Atmega32U4就是Arduino Leonardo所使用的MCU

我所謂的即時是,ATMega32U4在內部自已處理IO,判斷和決定,而不是所有的資料要通過UART回到7688再決定,就慢了。

你當然可以讓Atmega32U4自己做處裡,就像是有個Leonaodo在板子上一樣,而不用經過7688

只是說中間兩個的通訊要自己來而已

I2C是很慢的.....400khz和1UART的1 mbps比起來真的慢很多,更不˙用說一堆Overhead在那

Atmega32U4的UART可以上1MBPS,不是只有115200喔!

請參閱Atmega32U4的Datasheet,其中Crystal找8Mhz的表格

謝謝,剛剛K完了DATASHEET,我發現走SPI最高可以是High Speed Operation (fXCKmax = fCK/2)

所以SPI可能才是最快的選擇,哈,不過DUO可以用ARDUINO開發,其實沒必要麻煩了

走UART就好,這速度也不慢,如果真的要用到那麼快的速度,那會很吃throughput,而且即時反應應該是MCU端就要處裡那些Data,而不是往後送給7688處裡再丟回去,而且有那麼大量的資料要回傳的話,我會建議直接接上7688

by the way,即時不等於throughput.我是認為先用UART,真的沒有辦法了再換

另外還有占用SPI對Flash的問題..基本上這張板子的接線方式是SPI Slave接到MCU,所以MCU要回傳資料...用SPI會有點麻煩

另外要提醒一下,Linux端做處理,如果是寫在user space都會受到scheduler的影響,就算throughput足夠,latency也可能不合乎即時的需求。建議還是做在MCU端,或是就要直接去寫Linux kernel driver來佔用ISR(但這樣比較容易搞爛系統...)

Q28: 7688的USB Host若要接一個以上的device,是否大部分要接有外接電源hub? 市面上有看到一接三的OTA線能用嗎?

建議要外接電源,我有看過OTG一接三,然後有留一個孔可以從外面灌電源進去的。畢竟7688本身peak就會到接近500mA了

Q29: 7688 同時 AP / Station Mode有時程表嗎? 

應該是不支持此功能,請問大概在什麼樣的場景下面使用呢?(不然就是再插一個wi-fi dongle....)

Q30: 如果7688想要像小米MiniAP那樣,透過Wifi連上別的AP,然後自己再當AP分享出來,要怎麼做呢?

目前看到的做法是自已連別的AP,然後再裝一張USB網卡,分享出去。

外差 usb 做法可參考上面的:https://gist.github.com/iamblue/00f0c5cf6e987f1b7834