Category Archives: 物聯網

[教學文] 從Zero到Hero,給想實做動力小車的你——硬體篇

作者/攝影

動力大腳車製作者、資料、圖影片提供:游允赫

文字整理:CAVEDU 宗諭

文章分類教學文
時間

成本
難度
材料表

 

  幾週前,在淡江大學同舟廣場舉辦的「創意皂飛車競賽」,動力組的競爭可真是龍爭虎鬥。其中,我們CAVEDU教育團隊的好夥伴游允赫老師,以動力大腳車在動力組的激烈競爭中脫穎而出,在動力折返挑戰賽中獲得第二名的佳績!

圖1 游允赫老師(左)

 

  對於製作動力小車深有熱忱的允赫老師,便想藉由文字跟讀者們分享製作動力大腳車的過程及心得。因此,這篇文章將為大家簡單介紹,如何製作動力大腳車的硬體設施。

 

先讓我們看一下動力大腳車的測試影片:

 

  在開始製作動力大腳車的硬體設施前,我們先要取得一台Tamiya大腳車。有了大腳車後,我們把車子上的電池盒拆掉,只保留底盤、馬達及齒輪組。

 

  接下來,我們要幫大腳車裝上培林(Bearing)。為什麼要裝培林呢?主要是因大腳車的底盤把齒輪放在同一邊,所以要利用培林使車體置中。大腳車本身輪軸中間是外露的,可以直接使用那邊的空間製作結構,前後是可動結構,可隨坡度有微幅變化,足以確保感應器和軌道的距離不變,便不會因距離不同而產生誤判。

圖2 大腳車輪軸中間的空間外露

 

機械小知識——什麼是培林

  台灣人稱軸承(Bearing)為培林。而軸承這個機件在機械上的作用是,當其它機件在軸上彼此產生相對的運動時,用來保持軸的中心位置,並且控制該運動(參考自維基百科)。

圖3 動力大腳車使用的培林

 

圖4 大腳車安裝上培林

 

  因為我們已把大腳車的電池盒拆除了,所以要讓大腳車有適合的動力來源。在這裡我們使用的是LinkIt 7697開發板 + Robot Shield馬達驅動板。如何將它們固定在大腳車上?不複雜,就是把塑膠殼拆開,使板子可以固定即可,但要注意不要讓板子的重心太高。

圖5

 

  在進行前述流程時,幾兩個事項要注意:(1)需測量底盤軸距,以及裡面有多少空間可製做結構;(2)還有因齒輪箱在左邊,所以在畫3D時,需計算修正,好使車子放在軌道上時,不會偏向一邊。

 

  接下來便都是進行3D建模了。

 

  硬體部分大致介紹至此,若讀者有不了解的地方,歡迎詢問允赫老師,E-mail:yhyu@cavedu.com;下一篇,我們將介紹動力大腳車在軟體層面需有哪些部署。

 

相關文章

[LinkIt 7697] 物聯網應用情境下的LinkIt 7697

作者/攝影

熊大

文章分類介紹文
時間

成本
難度****(1~10)
材料表

 

  今日的物聯網應用多包含裝置(Device)、雲端(Cloud)及手機 (Mobile) 三部分,彼此互相連通,常用的有三種情境:

圖1

 

  情境一:手機和開發板透過藍芽對連,透過手機控制開發板。開發者可在 Arduino 中使用的 LRemote函式庫撰寫 UI的呈現和互動方式,手機上則需安裝 LinkIt Remote App。當手機透過藍芽連至 LinkIt 7697,會自動讀取 UI 的呈現方式,並可做交互操作。例如 OTTO97 這個二足機器人專案,就是使用此方法透過手機的藍芽操作機器人。除了使用 LRemote 函式庫(Arduino端)搭配 LinkIt Remote App(手機端)進行藍芽連線操作之外,也可使用 App Inventor製作手機端的應用與 LinkIt 7697 互相溝通。使用藍芽連線的好處之一,就是手機對外網路(Wi-Fi or 4G)還是連通的,依舊可上網。

 

資源連結:

LRemote: https://goo.gl/gx6uPY

OTTO97: https://goo.gl/qLK2Vq

 

圖2 OTTO97

 

  情境二:手機和開發板透過Wi-Fi 對連。使用此方法 LinkIt 7697 會需要切到AP模式,手機連到LinkIt 7697(Soft AP)並使用瀏覽器開啟網頁。此種方法的缺點就是,當手機連線到LinkIt 7697時,會失去上網功能,但手機基端不需安裝應用,只需要有瀏覽器則是其優點。(目前 LinkIt 7697 Soft AP模式 Arduino 函式庫已經開發,並且已經釋放出來給開發者使用。)

 

  情境三:透過MCS(MediaTek Cloud Sandbox)雲端服務,進行LinkIt 7697與多屏的溝通。MCS為聯發科技公司,免費提供給開發者進行概念驗證和學習物聯網應用的一個雲端平台,分成公有雲版本(MCS)和私有雲版本(MSCLite)。公有雲版本只要至 mcs.mediatek.com 註冊後便可直接使用;私有雲MCSLite需要安裝到自己的網路環境內,可在任何一台可執行Node.js的環境上運行(Windows、MacOS、Linux),所以可以裝在 PC、Notebook、NAS、AWS/Azure,甚至是 LinkIt Smart 7688 上。MCSLite 為一開源專案,且提供大量的彈性可供讓使用者客製化,方便使用者依自己的需求修改調整。

 

資源連結:

MCS : https://mcs.mediatek.com

MCSLite : https://mcslite.netlify.com/zh-TW

 

周邊配套

  LinkIt 7697 已與眾多通路上容易購買的常用周邊硬體進行過相容性測,並有提供可用的函式庫及教學文章,例如七段顯示器/矩陣顯示器(74HC595/MAX7219),OLED(SH1106/SSD1306⋯⋯等等),LCD模組(PCF8574A/PCF8574),溫度壓力感測器(BMP183),RGB LED(WS2812),超音波測距模組(HC-SR04),溫溼度感測器(AM2302/DHT22/DHT11⋯⋯等等),光感測器(LM358),LED Bar(MY9221),加速度感測器(MPU-9250)⋯⋯等等。

 

資源 :

相容周邊驅動和教學: https://goo.gl/sUQnCM

 

  開發者除可單獨入手這些常用的周邊模組外,若想要一次性入手常用周邊,也可考慮Grove Starter Kit for LinkIt 7697,作為上手學習的套件。

圖3 Grove Starter Kit for LinkIt 7697

 

  此外,台灣知名的機器人開發板廠商 MiniPlan,也有針對LinkIt 7697 開發相容的Robot Shield,提供好用的馬達控制功能及高效安全的內建可充電電池,非常適合開發初階機器人應用。

圖4 Robot Shield(左)

 

總結

  LinkIt 7697為學習和實作物聯網應用非常好用的平台,搭配聯發科技公司提供的免費物聯網雲服務MCS/MCSLite,以及手機應用LinkIt Remote,可以更容易製做出橫跨裝置 (Device)、雲端(Cloud)及手機(Mobile)的物聯網專案。也歡迎大家加入FB粉絲團 「LinkIt 開發者社群」,可及時獲得第一手資訊。

 

相關文章

[Micro:bit]Micro:bit Blockly PBL教材──主題1-5:小彼特電子賀卡

作者/攝影

Ted Lee(本文轉載自Ted Lee的部落格「泰布布」,圖文版權均屬於作者Ted Lee,特此致謝。)

文章分類教學
時間
成本
難度**(1~10)
材料表

任務

  想要用Micro:bit製作電子賀卡送給好朋友,於是參照Jingle Bells簡譜,用音樂積木抽屜裡的積木把它譜出來。

 

製作步驟解說

1.在白紙上畫出電子賀卡的設計圖。

2.依照簡譜拉完Jingle Bells的積木。

 

Step1:使用Basic積木抽屜中的積木,設計出賀卡的跑馬燈圖案,例如:Merry X’mas

圖1

 

Step2:使用Music抽屜中第一塊單音積木tone,以及第三塊休止符積木rest譜出曲目。

圖2

 

譜出的曲目如下圖:

圖3

 

完成的作品可以與這個範本進行對照。

 

Step3:將Micro:bit裝到製作好的PP板上。例如:

圖4

與108課綱對照

  • 學習表現:資t-IV-4 能應用運算思維解析問題。

  • 學習內容:

    • 資P-IV-2 結構化程式設計。

    • 資A-IV-1 演算法基本概念。

 

教學活動設計

Share and Tell:請每位同學帶著自己的作品上台,用五分鐘時間介紹一下自己的作品──題目、風格、功能、製作過程、遭遇困難及解決方法⋯⋯等等。

 

延伸挑戰

  • 挑戰1:讓Micro:bit也能演奏二部合唱。

  • 進學1:選用Led積木抽屜中more裡頭第一塊(個別LED亮度調整),以及第三塊(全體LED亮度調整)的亮度調整積木(brightness),讓作品更有氣氛。請參考下圖:

圖5

 

相關文章

[Micro:bit] 使用BOSON電子積木控制燈條閃爍

「燈光」,是人類生活重要的一部份,不僅幫我們照亮了黑夜,也替生活增添不一樣的變化。在BOSON套件裡,除了LED模組可以發光之外,另一個可以發光的「彩色LED燈條模組」,就是我們今天的主角喔,一起來玩玩看吧!

 

作者/攝影

撰寫:郭皇甫

攝影:郭皇甫

文章分類教學技術文
時間30mins
成本
難度*(1~10)
材料表
  • Micro:bit (如欲購買,請洽機器人王國商城
  • Micro:bit BOSON擴充板
  • BOSON紅色無段按鈕(Red Push Button)
  • BOSON彩色LED燈條模組(Multicolor LED String Lights)(以上選購請點我

 

  在先前的文章中,有介紹到「彩色LED燈條模組」應用在「皇冠」的作品上,那麼,若是使用Micro:bit的話,我們要如何進一步控制它呢?當然,BOSON是無法直接與Micro:bit連接,在這裡,必須要透過一塊Micro:bit BOSON擴充板,二者才能互相溝通。請先將Micro:bit以圖1的方向,往下嵌入至擴充板,並將「彩色LED燈條模組」用連接線接上擴充板的P1引腳。至此,硬體的連接就算完成囉!

圖1  硬體連接

  接下來,讓我們先寫一個簡單的閃爍(Blink)程式吧!程式的概念很簡易:「讓燈條每隔一秒鐘亮滅」,瞭解後請跟著以下步驟進行編寫:

 

Step1:設定引腳初始狀態。在擴充板上有著各式引腳,瞭解這些引腳的狀態,您就能進一步控制連接的感測器。由於我們僅要燈條呈現「亮、滅」的狀態(也就是開跟關),所以在這裡,我們需要「數位信號」方塊。請在【進階】→【引腳】裡,找到「數位信號寫入」的方塊,將「引腳」設定為P1;「數字」設定為0(0代表關;1代表開),並放在「當啟動時」的方塊內。那麼,在程式一開始執行時,燈條會是關閉的狀態。

 

圖2  設定P1引腳初始狀態

 

Step2:間隔一秒亮滅。接下來,我們要重複執行每隔一秒鐘讓P1引腳開、關的動作,因此,程式的順序會變成暫停一秒、P1開、暫停一秒、P1關。在這裡,我們會需要暫停方塊。請在【基本】裡,找到「暫停(ms)」方塊,ms在這裡指的是毫秒,並將數字改為1000(1000ms = 1秒鐘),放在「重複無限次」的方塊內,接著再放入「數位信號寫入」方塊;再放一個「暫停(ms)」方塊、「數位信號寫入」方塊,設定如圖3所示。

圖3  重複執行燈條閃爍

 

完整程式碼如下:

Blink程式碼

圖4  Blink程式碼

 

  請將程式碼下載到Micro:bit板子上執行,觀察燈條是不是順利閃爍了呢?

 

  接下來我們要使用BOSON的「紅色無段按鈕」,控制燈條閃爍。請將「紅色無段按鈕」接在擴充板的P0引腳,如圖5所示。再來我們要準備編寫程式,您可以先使用圖6的程式碼,觀察BOSON的按鈕模組,在按下與放開時的數值變化會是「0、1」。利用這二個數值,我們就可以進一步控制燈條閃爍。

圖5  P0接上紅色無段按鈕

 

圖6  顯示P0引腳數值

 

  程式的概念為,按住按鈕模組、燈條閃爍、放開按鈕模組、燈條關閉,請按以下步驟進行程式編寫:

 

Step1:初始狀態設定。請開啟上一個範例程式「Blink」,並從【引腳】裡,找到「數位信號寫入」方塊,「引腳」設定為P0、「數字」設定為0,放入「當啟動時」方塊內。

圖7  設定P0引腳初始狀態

 

Step2:設定重複執行條件。在這裡,我們要讓程式偵測到P0數值為「1」時,燈條閃爍;P0數值為「0」時,燈條關閉。請在【邏輯】裡,分別找到「如果…那麼…否則」與「=」 方塊,並放進「重複無限次」方塊內,將「=」方塊接在「如果」的後方(如圖8所示)。接著在【引腳】裡找到「數位信號讀取」方塊,放入「=」的前方空格內,並將後方空格的「0」改為「1」(如圖9所示)。最後,我們將之前寫的燈條閃爍放進「那麼」裡,接著在「否則」裡放入「數位信號寫入」,並將「引腳」改為「P1」、「數字」改為「0」(如圖10所示)。您也可以自行設定「暫停」的秒數,效果會很不一樣喔!

圖8  如果符合「=」條件

 

圖9  設定條件P0 = 1

 

圖10  設定否則執行程式

Button_Blink完整程式碼

圖11  Button_Blink程式碼

 

  以上為基本的燈條閃爍控制,您也可以在閃爍的地方,加入執行次數的限制,這樣一來,您就不用一直按住按鈕,只需按一下,就能看到閃爍的效果。今天介紹到這邊,請期待下次還有其它好玩的BOSON與Micro:bit應用喔!下次見!

 

相關文章

[教學文]MIT App Inventor Codi Bot 設計發想

作者/攝影曾吉弘
文章分類教學
時間
成本
難度
材料表

 

  對於會寫程式的人來說,不同程式語言有著極大不同,但對於不會的人來說:

 

都一樣啊!哪有什麼不同,看起來都像咒語⋯⋯

 

  因此需要一個符號或吉祥物來與這種語言產生連結,例如Linux的小企鵝、Arduino的無限符號,或Scratch的小貓⋯⋯等等,在各式場合都能看到代表各自的logo。App Inventor 以往的logo太像Android,為搭配即將推出的App Inventor iOS版,MIT App Inventor小組推出了新的logo,CAVEDU也很高興能設計 MIT App Inventor Codi bot(選購連結)

圖1

 

  之前已經寫過一篇介紹Codi Bot的各類功能教學文件也都出來了:

  • 單機執行:直接執行 (影片)

  • LED:使用按鈕、滑桿來控制翅膀與底座的LED (影片)

  • 翅膀:使用按鈕、滑桿來控制翅膀(伺服機) (影片)

  • 聲音:控制蜂鳴器發出各種音符或自訂義頻率與時間長度 (影片)

  • 完整app:整合上述功能 (影片)

 

  本篇要與大家分享 Codi Bot的設計發想,分成核心、外觀及燈光⋯⋯等等(感謝設計師:游允赫大大):

 

一、核心:

 

  MIT App Inventor在阿吉老師去MIT擔任訪問學者前,藍牙BLE支援的板子只有Arduino 101,但大家知道的⋯⋯Arduino 101已停產,所以自然要有一款平價好用的控制板補上,那便是LinkIt 7697。為方便腳位和電源管理,我們再搭配 Robot Shield for LinkIt 7697 V2.0 好放進Codi bot的肚子裡。

 

  Robot Shield 背面有兩個電容,並且是專門為機器人應用所設計,所以把許多腳位都用 3 pin 的方式接出來,也有兩個直流馬達的螺絲接口。兩者只要疊在一起就好了,並且可用 Robot Shield 來為 7697供電。另一個很棒的地方是 Robot Shield上就有一個蜂鳴器,可讓機器人發出簡易音效。

圖2

 

圖3

 

  把超音波感測器、LED、servo接上後,Robot shield的腳位都快用完了呢⋯⋯,再以螺絲固定即可。

圖4

 

所有內部的線路走法大致如此,要準備組合了。

圖5

 

是不是塞得很滿呢?

圖6

 

二、外觀

超音波感測器裝在Codi bot頭部,線路走脖子接到擴充板上。

圖7

 

就是眼睛啦,很可愛吧!深度是有測試過的,不會影響距離偵測的效果。

圖8

 

我們設計了一個背包,驅動翅膀的兩顆servo 就放在裡面。

圖9

 

Codi bot 底部,很容易就能撥動開關來開機。

圖10

 

組合身體前後兩片零件的螺絲會被條紋(牛皮)遮起來。

圖11

三、燈光

  為了順利呈現MIT App Inventor logo 兩個翅膀的紫色與綠色,又要有互動效果,我們選用LED燈條,從servo的背包孔位拉出線來。

圖12

 

把LED燈條放入翅膀零件的溝槽,這一步難度比較高,小心不要壓到線。

圖13

 

  Codi Bot背包上有一個孔,可以讓壓克力支撐架扣入以固定。底部的RGB LED 則是安裝在壓克力底座的孔,伸進去一點有很不錯的燈光效果喔!

圖14

 

圖15

 

相關文章

[LinkIt 7697] 認識LinkIt 7697,你會需要這一篇!

作者/攝影

熊大

文章分類介紹文
時間

成本
難度* *  (1~10)
材料表

  隨著物聯網蓬勃發展,各家廠商皆推出物聯網開發平台,使開發者更容易發揮創意,做出各種物聯網應用。而國內科技大廠聯發科技於這幾年開始,相繼推出幾塊物聯網開發板,包含全功能聯網 (GSM/GPRS/Wi-Fi/Bluetooth/GNSS) 的 LinkIt ONE;可使用 OpenWrt (Linux) 開發較高端應用的 LinkIt Smart 7688/7688 Duo;於2017年6月又偕同Seeed Studio 推出了最新的物聯網開發板 LinkIt 7697。

 

  LinkIt 7697使用 MT7697 作為主控制器,該晶片核心為主流的 ARM Cortex-M4(含浮點運算器),運行時脈為192MHz,同時提供 Wi-Fi 和 BLE(低功耗藍芽)兩種通訊最主要的通訊功能。軟體部分採用最為廣泛地FreeRTOS為作業系統,同時也提供 Arduino 開發環境,為目前學習開發物聯網應用的最佳開發平台之一。

圖1 LinkIt 7697

 

LinkIt 系列開發板比較

  LinkIt ONE 於 2014 年推出,為市面上少見具備 GSM/GPRS/Wi-Fi/BT/GNSS 多功能通訊的 Arduino 相容開發板,但隨著台灣電信商2G系統的關台,缺少了GSM/GPRS 的支持,LinkIt ONE 就缺少最主要的特點了。

 

  目前LinkIt系列開發板針對物聯網應用,主要是提供兩個系列開發板:LinkIt Smart 7688/7688 Duo 用於較高階IoT節點或Gateway使用,可使用高階語言(Python/JS)與眾多Linux套件進行開發。而LinkIt 7697 則定位成較輕量的結點。

LinkIt Smart 7688
LinkIt Smart 7688 Duo
LinkIt 7697
定位較高端 IoT 節點
Gateway
較輕量 IoT 節點
微控制器MT7688 (MIPS)MT7697 (ARM Cortex-M4F)
主頻580Mhz196Mhz
RAM128MB352KB
Flash32MB4MB
開發環境OpenWrt (一種Linux)
Arduino (Duo only)
FreeRTOS + Arduino
開發語言C/C++/Python/JSC/C++/Blockly
Wi-Fi802.11 b/g/n802.11 b/g/n
BluetoothBLE 4.2
Ethernet10/100 PHY
USBHost
SD CardMicroSD

表一

 

LinkIt 7697 的優點

  對一位想學習物聯網者的開發者而言,如果需要一個Arduino相容開發板,而且又有連網需求,那麼LinkIt 7697可說是相當好的選擇,因為LinkIt 7697包含以下幾項優點:

  • 使用Arduino開發環境

  • 內建 Wi-Fi / BLE,並包裝成好用的函式庫,能輕鬆連結雲端和手機。

  • 足夠的內存(352K RAM /4MB Flash),可運行更複雜的應用。

  • 官網內容相當豐富,聯發科技的工程師也會在粉絲頁提供技術問題解答。

 

外觀功能介紹

  LinkIt 7697的大小,特別設計成能置入於麵包板上,並留有排針腳位可插杜邦線。開發板包含TX/RX LED,會於燒錄軟體或是透過序列埠有在傳送資料時閃爍,PWR LED會於有外部供電時點亮,USR LED則接至PIN 6可透過軟體控制。RST按鈕會重新開機,USR 按鈕可供使用者當作基本的輸入使用。LinkIt 7697開出了18 根可用腳位,可設置成GPIO (18),UART(2),I2C(1),SPI(1),PWM(18),EINT(4),ADC(4),IrDA(1)和I2S(1),除了ADC是 0至2.5V外,其他功能的工作電壓皆為3.3V。板子上有一個 MicroUSB 接頭,用於連接PC以燒錄軟體和供電(5V)。

圖2 麵包版上留有兩排排針腳位可插

 

多樣的開發環境

  LinkIt 7697針對不同族群的開發者,提供了三種開發環境:

  1. GCC/KEIL/IAR : 提供給專業物聯網產品開發者的開發除錯環境,直接使用SDK進行開發,擁有最佳開發彈性且能優化出最佳效能。

  2. Arduino IDE:提供給Maker/教育教學者的開發環境,完全相容於Arduino的程式語法,並包含LinkIt 7697獨家功能,例如LWIFI、LBLE、MCS(MediaTek Cloud Sandbox)、LFlash、LRTC及LRemote 等好用函式庫,大幅降低各種物聯網應用的開發門檻。

  3. BlocklyDuino : 提供物聯網入門開發者的視覺化積木開發環境,透過簡單的積木拖拉就可組合出各種邏輯應用。BlocklyDuino 會將積木轉換成 Arduino 程式,也可作為從視覺化積木轉換至Arduino程式語言的學習工具。

 

GCC/KEIL/IAR

Arduino

BlocklyDuino

C/C++Wiring(C/C++)Blockly(視覺化方塊)
專業開發者Maker/教育工作者教育工作者
最高彈性
最高效能
開發複雜度較高
豐富的軟硬周邊資源

封裝過好用的函式庫

簡易使用

 

表二

 

相關文章

 

[Micro:bit]小彼特的創意應用──投籃動作提醒器

作者/攝影

原作、設計者:楊喻丞(感謝作者的授權)

指導老師:楊昌珣、李俊德

文字整理:CAVEDU宗諭

文章分類教學文
時間

1.5小時內

成本
難度* *  (1~10)
材料表

挑戰

  不少喜歡打籃球的國小學童的偶像,都是美國職籃NBA金州勇士隊的三分神射手柯瑞(Stephen Curry),盼望自己的投籃能像他一樣準,然而,往往因臂力不足而採用雙手投籃。讀國中之後想練習用單手投籃,但練習投籃時手臂經常歪了而不自知。究竟該怎麼辦呢?

圖1

解決妙方

  所以,作者楊喻丞便想製作一個投籃提醒器,提醒自己在投籃出手前,手保持垂直。而他運用了Micro:bit中的加速度感測器(Gyro sensor或Accelerometer),以確認投籃姿勢正不正確。當投籃出手的手臂沒有保持垂直時,Micro:bit上的5×5 LED點矩陣就會亮起,形成一個X的形狀;當投籃出手的手臂保持垂直時,Micro:bit上的5×5 LED點矩陣就會熄滅。

 

程式設計說明

Step1:拉出邏輯積木抽屜中的積木:1.「如果⋯⋯否則」、2.「且」、3.「大於小於」。

圖2

 

Step2:拉出輸入積木抽屜的「加速度感測值」積木。

圖3

 

Step3:現在,讓我們把積木組合起來!先將「加速度感測值」積木與「大於小於」積木組合起來,然後把組合起來的積木改成「<10」。

圖4

 

Step4:在剛剛組合好的積木上按滑鼠右鍵(請記得是在外面那個積木,不是裡面的「加速度感測值」積木),點選「複製」,就會產生一個一模一樣的積木,然後把積木內容改成「>-10」。

圖5

 

Step5:接下來,把兩個組合好的積木與「且」積木組合起來。

圖6

 

Step6:將剛剛組合好的積木,與「如果⋯⋯否則」積木「如果」的部分組合起來。

圖7

 

Step7:剛剛我們製作的是水平X軸的程式積木,現在要製作垂直Y軸。首先,我們先複製兩個剛剛製作好的積木,然後把X軸改成Y軸。

圖8

 

Step8:先把剛剛兩塊積木當中的值,改成<-170和>170。然後,拉出邏輯積木抽屜中的「或」積木,把剛剛改過值的兩塊積木組裝上去。

圖9

 

Step9:接下來,從邏輯積木抽屜再拉一個「且」積木。先拉著「且」跟「如果」組合起來,然後把X軸和Y軸的積木,組合進「且」積木。這樣,我們就把投籃動作提醒器的感測值設定完成。

圖10

 

Step10:接著,從基本積木抽屜拉出兩個「顯示LEDs」積木,然後分別組合至「那麼」和「否則」,然後,將接在「否則」上的「顯示LEDs」積木,用滑鼠在積木上畫出一個X。這樣投籃動作提醒器的程式就完成了。

圖11

 

程式說明:

  不斷重複執行:如果X軸小於10且大於-10,而且Y軸大於170或小於-170,那麼就熄燈,否則LED燈就顯示X。

 

Step11:按下左下角按鈕,將程式儲存至Micro:bit磁碟機(disk drive)上,進行實機測試。

 

示範操作影片:

 

想一想

  還有什麼運動,可以透過Micro:bit的幫助,讓運動的技術更進步呢?

 

相關文章

[ 密技 ] 如何製做出可挑戰「創意皂飛車競賽」動力組的作品

2018年6月9日在淡江大學要舉辦全台第一場,可能也是亞洲第一場,使用無動力小車(Nerdy Derby)軌道的動力攀登競賽。在比賽之前,分享一些製作心得,以及創作時的注意事項。

作者/攝影

腦波弱老闆包辦大部分,感謝允赫、琮琮提供作品,還有紅聲數位的阿凱幫忙畫圖。

文章分類教學文
時間

10分鐘起跳

成本O元起
難度中等
材料表
  • 田宮大腳車*1

  • Linkit 7697 + RoboShield (選購連結),或是 LEGO EV3。

 

  2018年6月9日在淡江大學要舉辦全台第一場,可能也是亞洲第一場,使用無動力小車(Nerdy Derby)軌道的動力攀登競賽。這個比賽還是由科技部指導,南科AI_ROBOT自造基地贊助的喔!

 

  整個活動包括了上午的無動力組工作坊,將由「Maker一哥」鄭鴻旗主持。下午就都是比賽時間了,分成無動力組和動力組,動力組又分成競速攀登組與動力折返挑戰組。比賽詳情可以看這裡:創意皂飛車競賽

 

報名不但不用錢,還有獎金可以領喔!

不過,這篇文章的重點是,如何打造一台可以完成挑戰的車子

 

  首先分析一下軌道,軌道是由四片木板組合而成,中間兩片較高,寬約34mm,高低落差約為6mm,軌道全寬約68mm。

圖1

 

  由此可知,車體設計時,輪胎接地點至車底高度需大於6mm,輪胎內距需大於34mm。

 

  重點在於車體的「重心」位置,四個輪子的接地點所圍起來的區域為支撐區,當坡度改變,不論是上坡或下坡,只要車體重心不要落在支撐區外,就不會翻車了。

 

  重心位置愈低愈好,所以車體零件中比較重的零件,如電池、馬達、EV3主機皆盡量裝在較低的位置。而支撐區愈大愈好,而輪胎的左右距離受限於軌道寬度,只能從增長前後輪距著手,但車體太長,可能會卡在軌道坡度變換的區域,請謹慎選擇。

 

軌道側視全圖:

圖2 (修改自Nerdy Derby所提供的設計圖)

 

  不過,這次車子是沿著軌道跑,軌道除了上下起伏之外,沒有左右轉彎的需求。所以,輪子的轉向、差速機構皆可以不用準備,只要注意車體左右配重,以及左右輪胎受力狀況一致就可以。

 

  由設計圖得知,坡道斜約30度,除了夠力的馬達,你還需要抓地力夠強的輪胎。輪胎斷面較寬、較高的會比較適合。

 

圖3

 

  我們情商了創作者,先把他們的作品分享給大家參考。這是使用LEGO EV3:

圖4

 

競速攀登影片:

 

動力折返影片:

 

  或許你會發現,上述許多條件都是互斥的,例如重心要低但輪胎又要大,然而,創作的樂趣就是在諸多限制中,找到最佳平衡點。

  比賽規則與比賽道具,還是要以主辦單位公告與現場陳列的為準喔。

 

相關文章

[Micro:bit]Micro:bit Blockly PBL教材──主題1-2:小綠人好客動畫

 

作者/攝影

Ted Lee(本文轉載自Ted Lee的部落格「泰布布」,圖文版權均屬於作者Ted Lee,特此致謝。)

文章分類教學
時間
成本
難度**(1~10)
材料表

 

任務

  巷口小綠人紅綠燈被颱風吹倒成人綠小了,而且快掉下來了。身為Maker發明王的您,快拿出口袋的Micro:bit,設計一款專屬的小紅人,協助指揮行人過馬路吧!

 

大家來找碴(問題庫)

  請大家觀察下面兩部影片,推測一下要多大的尺寸,才能讓Micro:bit畫出完整的小綠人?

影片1

 

影片2

 

解說

  因為Micro:bit的版面太小,我們以自訂內容的方式解說小綠人好客動畫的製作過程。

 

Step1:在草稿紙上先畫出動畫的分鏡表(慢動作、分解動作),至少4動。

 

Step2:使用Basic積木抽屜(block drawer)中的積木。

圖1

 

請記得還有「More」喔!

圖2

 

Step3:一起來完成您的設計稿,例如下圖:

圖3

 

Step4:請在Make Code頁面左手邊的線上同步模擬器(simulator),觀看一下播放動畫的結果。

圖4

 

Step5:如果閃動太快的話,也可以在適當地方加入暫停積木

圖5 暫停積木

 

Step6:按下左下角按鈕,將程式儲存至Micro:bit磁碟機(disk drive)上,進行實機測試

圖6

 

與108課綱對照

  • 學習表現:資a-III-1 能了解資訊科技於日常生活之重要性。

  • 學習內容:資P-III-2 能使用資訊科技與他人建立良好的互動關係。

 

教學活動設計

  建議大家使用Google表單(Google Forms)的「檔案上傳」功能,收集學員的作品。以下是一些在教學上,可以應用、延伸的活動:

  • 活動1:動畫線上習作

    以線上動畫製作軟體「Flip Anim」畫出小綠人過馬路動畫片。

  • 活動2:好客接力過馬路

    Micro:bit A播完動畫後傳給Micro:bit B,Micro:bit B播完後傳給Micro:bit C⋯⋯。

  • 活動3:秀秀說(Show and Tell)

每位學員拍攝一分鐘的作品介紹短片,並上傳至YouTube公開分享。

  • 活動4:生活中的LED看板

    拍攝日常生活中常見到的LED點矩陣(Dot Matrix)看板三種。註明拍攝地點、日期,並將照片排版後繳交。可將之整理至網路平台上(例如:IG、FB⋯⋯等等),並設定公開後繳交連結網址。

延伸挑戰

  • 挑戰1:大LED點矩陣

    Micro:bit的5×5點矩陣太小,容不下彼特小綠人,有沒有辦法外接一個8×8大小以上的板板來玩呢?

  • 挑戰2:流星雨

    請參考這版The Matrix Rain,來下一場屬於您自己的天空流星雨吧。

  • 挑戰3:求婚小紅人

    小綠人的變化存乎一心,這樣可以試著設計求婚小紅人喔!

 

相關文章

 

[Micro:bit]Micro:bit Blockly PBL教材──主題2-1:健康計步器(Pedometer)

作者/攝影

Ted Lee(本文轉載自Ted Lee的部落格「泰布布」,圖文版權均屬於作者Ted Lee,特此致謝。)

文章分類教學
時間
成本
難度***(1~10)
材料表

 

從蔣勲的萬步復健醫囑談起

  美學大師蔣勲在2010年因心肌梗塞緊急送醫手術後,從鬼門關前撿回一條命。從此,他便遵從醫囑,不管刮風下雨、風吹雨打,為了有健康的生活,每日就必需走一萬步復健。

 

  親愛的朋友們,請幫幫蔣先生設計一個可以讓他身體更健康的計步器,以提醒他每日要完成的萬步功課吧!

 

與生活經驗結合

  Micro:bit最迷人的硬體之一,就是板載用來偵測空間運動量變化的3軸(3 axles)加速度感測器(Gyro sensor或Accelerometer)!三軸加速度感測器於日常生活中有許多方面的應用,茲舉數例如下:

 

實例1:App

  現今的智慧型手機內其實暗藏著不少感測器(sensors),您可以藉由Sensors Test app測看看。所以,大家應該猜到了,一定也有app版的健康計步器吧?
沒錯,有一卡車那麼多哩!

 

實例2:手機直/橫向顯示

  它傻瓜,也聰明,就是知道您把手轉一下就把手機畫面打橫,這樣追劇才過癮吧!智慧型手機就是利用一顆加速度感測晶片,以感知螢幕是要直顯還是橫顯的喔!

 

實例3:念佛器

  阮阿嬤生前是佛教徒,所以每天要做的功課就是要念一萬聲佛號。但您也了解年紀大了記性不好,老是記不住念過了五千遍是八千遍,這時要是有念佛神器,那就真的是太帥了!(注意觀察此器的使用:念一遍佛號,按一下,數字+1⋯⋯。這不就是和一般計數器的功能一模一樣嗎?)

 

實例4:人頭計數器

  有去過動物園或遊樂場校外教學的經驗吧?帶隊老師買完團體票後,同學們一個接著一個陸續入場。在入口處,您一定見過會有一個工作人員拿著一個計數器在數人頭。

 

實例5:叫號機

  我們到診所看病時,會先至櫃檯掛號,取得一個號碼後在一旁等候叫號機顯示看診序號後,進入診間就診。

 

任務

  當蔣勲先生換好運動服裝,拿起此小彼特計步器並按下「啟動鈕(Start Button)」,開始在他淡水河畔的八里住處散步。當他達到設定好的萬步目標後,這個小機器會嗶嗶嗶地提醒他,今日功課完成了喔。

 

解說

  不管您能否了解題意,玩一下這個Micro:bit版的東東,先建立直覺(intuition)再說。好玩嗎?來,自己做一個更有fu喔!

  整個問題的核心(core),在用一個變數(variable)「steps」來記錄目前走了幾步。變數,就是指會改變之數,每走一步就累進一。So,只要能精緻處理計數變數(counting variable)的變化,我們就能控制計步的過程。其中,在程式語言(programming languages)裡,變數的使用方式有以下三個步驟:

 

1.宣告(declaration):指定變數名稱(variable name)型別(type)。所謂型別是指該變數屬於哪一類(catalog),例如:整數(integers)、實數(real numbers)⋯⋯等等。

 

2.賦予初始值(initial value):指定變數的起始內容。例如:設定steps從0起跳。

圖1 設定steps從0起跳

 

3.使用(use):變數的累計或計算。例如:走一步觸發(trigger)一次加速度感測器的shake(搖動)事件,並將steps的計數值加1。

圖2

 

  最後,再讓Micro:bit不斷顯示(只要steps之值沒有變化,雖然Micro:bit的5×5 LED點矩陣(dot matrix)反覆刷新,但視覺上並未看到計數值顯示有改變。您也可以把圖3的積木塊移到事件積木(event block)中試試!)steps的值就大功告成了。

圖3

 

圖4 計步器的完整程式碼

 

  1. let steps = 0
  2. onGesture(Gesture.Shake, () => {
  3.   steps += 1
  4. playTone(659, music.beat(BeatFraction.Whole))
  5. })
  6. steps = 0
  7. forever(() => {
  8. showNumber(steps)
  9. })

 

與108課綱的對照

  • 學習表現:

    1. 資t-III-2 能使用資訊科技解決生活中簡單的問題。

    2. 生c-IV-2 能在實作活動中展現創新思考的能力。

  • 學習內容:

    1. 資A-III-1 程序性的問題解決方法簡介。

    2. 生P-IV-2 設計圖的繪製。

 

延伸挑戰:

也可試著改成用加速度感測器的Y軸,改變Y軸的量來玩喔!

 

相關文章

[Micro:bit] Micro:bit Blockly PBL教材──主題1-1:左右手慢動作

作者/攝影

Ted Lee(本文轉載自Ted Lee的部落格「泰布布」,圖文版權均屬於作者Ted Lee,特此致謝。)

文章分類教學
時間
成本
難度** (1~10)
材料表

 

任務

  千呼萬喚始出來,男孩團體TFBOYS終於要來台灣開演唱會了!

 

  各位忠實的粉絲們,請使用「Basic積木抽屜」中的7塊積木,來設計要在會場盡情吶喊的燈光秀吧!

圖1

 

我們先來介紹Basic積木抽屜中的7塊積木:

1.show number:顯示數字,例如:5487、9487。

2.show leds:自繪圖案,例:大、火。

3.show icon:圖庫區(按右上角的倒三角形展開)。

圖2 show icon積木

 

4.show string:顯示字串(英文文字、數字串一串)。

5.pause:暫停。

 

還有更多:

圖3 更多Basic程式積木

 

1.clear screen:清除畫面。

2.show arrow:顯示東、西、南、北、東南、西南、東北、西北的八方位箭頭。

 

解說

1.使用Google Chrome或Firefox瀏覽器(不要使用Microsoft Internet Explorer(IE)),在網址列上輸入關鍵字「lets code」後,按下鍵盤上的Enter鍵。然後用滑鼠點按搜尋排名第一名的連結。

圖4 在網址列上輸入關鍵字「lets code」

 

圖5 用滑鼠點按搜尋排名第一名的連結

 

2.連入Micro:bit官網。

圖6 Micro:bit官網

 

3.再用滑鼠點擊按鈕,進入由微軟公司所維護的視覺化積木式線上開發程式網站「Make Code」。(為了教學與學習方便記憶,請大家記住關鍵字let’s code的台語發音:拉死狗(let’s code念快一點,而且要拉二次))。

圖7 點擊「Let’s Code」按鈕

圖8 Make Code網站

 

4.運用前面所提示的7塊積木,並配合TFBOYS的成名曲《青春修煉手冊》來設計您的彼特看板燈光秀。

 

延伸挑戰

1.與美術整合:製作您專屬的妖怪手錶,並設計錶上顯示您精心設計的燈光圖案。

2.與音樂整合:如同第1題,除了燈光外,嘗試使用Music積木抽屜裡的積木(例如:單音Tone⋯⋯等等),讓您的手錶能自己唱歌。

 

相關文章

[新品介紹]MIT App Inventor Codi Bot物聯網教學互動機器人

作者/攝影曾吉弘
文章分類產品介紹
時間
成本
難度*  (1~10)
材料表

對於會寫程式的人來說,Python/C/Java是完全不同的程式語言。但對於沒接觸過的人來說,通通都是一樣的:很可怕。因此程式語言需要一個圖騰來代表,例如,Scratch的那隻小貓、 Linux的企鵝、Java的咖啡,以及Android的小機器人⋯⋯等等,在相關場合中,我們都可以看見這樣的代表符號。

    MIT App Inventor去年發起了一項募資計畫,目標是加速App Inventor 的 iOS版本。贊助$1500美金以上者可以收到一套實體的物聯網教育套件,但這時大家對於內容還不是很清楚應該如何規劃。Hal Abelson教授就問是否可以幫忙?

當然可以啦,不就是為了幫忙才去MIT的嗎?

輪型或多足型機器人設計相關課程算是CAVEDU教育團體的專長,但MIT App Inventor小組盼望能結合它們的新logo,因為之前的logo太Android了,所以他們於去年推出了新的小蜜蜂logo,與Android 3.0 honeycomb 相當神似。

經過一番努力之後,MIT App Inventor Codi Bot 誕生了!

圖1

MIT App Inventor Codi Bot在設計上有幾項重點:

可愛、易用、教育、可擴充

特色:

為了讓使用者更易入手,我們開發了 LinkIt 7697 的 App Inventor extension,(個人覺得比Arduino 101的好用多了)。LinkIt 7697端只要上傳一次程式就可以順利與App Inventor溝通,也就是使用者只要專心寫App Inventor程式即可。如果在辦短期營隊或是體驗活動的時候,可以先把LinkIt 7697準備好,這樣可以省去現場上傳程式的各種麻煩事。

核心使用 LinkIt 7697Robot Shield V2.0,這樣使得整理電線變得很輕鬆,國內也有許多團隊使用兩者開發出許多有趣的專題。

當然,Codi Bot能做的不只是如此,7697 可以結合 MediaTek Cloud Sandbox等雲端服務結合LINE、IFTTT等通訊軟體

 

教學文件:

  • 單機執行:直接執行 (影片)
  • LED:使用按鈕、滑桿來控制翅膀與底座的LED (影片)
  • 翅膀:使用按鈕、滑桿來控制翅膀(伺服機) (影片)
  • 聲音:控制蜂鳴器發出各種音符或自訂義頻率與時間長度 (影片)
  • 完整app:整合上述功能 (影片)

來看實體照片吧,LED亮起的時候真的很漂亮,影片中可以看到翅膀拍動以及發出聲音的效果。

 

圖2

 

圖3 背面

 

圖4側面

    開發過程中,非常感謝聯發科技實驗室MiniPlan,CAVEDU同仁的超強後勤。

7697 extension感謝林祥瑞袁佑緣兩位小超人,以及MIT App Inventor Codi Bot的設計者:游允赫老師。

比較一下 MIT App Inventor的logo 與 Android 3.0 honeycomb:

圖5 App Inventor的logo

 

圖6 Android3.0 honeycomb

 

相關文章:

[Raspberry Pi] 如何使用遠端桌面

作者

袁佑緣

時間

三小時

難度

***

材料表

  1. 電腦
  2. Raspberry Pi  (2018 Pi3+測試中)
  3. 網路線
  4. USB轉RJ45接頭(如果電腦需要額外的網路孔的話))

[Raspberry Pi] 完全不接螢幕鍵盤滑鼠,電腦一開始就用網路線遠端連線Pi 中, 我們有介紹過如何指透過網路線就可以連進去Raspberry Pi中, 但是有時候我們還是需要一個圖形化的界面來操作, 或者是要顯示圖像或影片, 所以本篇文章要來介紹一下如何使用遠端桌面來解決類似的問題。

以下是兩種常用的方法,VNC以及Xrdp。

使用VNC遠端桌面

首先請先將電腦與Raspberry Pi做連線, 並用SSH登入到Raspberry Pi中, 關於這部份有問題的話, 可以直接參考這篇文章的教學 [Raspberry Pi] 完全不接螢幕鍵盤滑鼠,電腦一開始就用網路線遠端連線Pi

登入之後, 請打上以下的指令來安裝tight vnc server, 好用來在Raspberry Pi上跑一個VNC遠端桌面的服務。

sudo apt-get install tightvncserver -y

安裝完成後, 可以在終端機中輸入以下的指令來開啟這個server,

vncserver

第一次啟動的話, 程式會提示使用者設定一組密碼, 長度為八個英文字母或數字, 另外, 讀者也可以設定一組只能觀看螢幕畫面的密碼, 在本範例是略過這一步, 所以輸入n,跳過這個選項, 設定完成後, 就會在家目錄底下的.vnc資料夾生成一些設定檔,如下圖。

在Raspbian中, 管理圖形話界面的xserver會有一個DISPLAY的環境參數可以去設定, 也就是說可以透過這個參數, 來設定你要輸出的畫面到那一個顯示上, 好比說我們現在開啟的vnc server是開在:1號上,

你可以輸入以下的指令來確認現在的vnc server是開在那一個DISPLAY上。

ps a | grep vnc

所以說vnc server可能會有好幾個DISPLAY正在活動, 例如:1, :2, :3, …​好幾個桌面這樣, 每一個桌面都可以讓各別的使用者進行不同的操作, 但如果說我想要關掉特定的DISPLAY的話, 可以透過以下的指令來關掉特定的桌面, 如以下範例中的:1 號DISPLAY。

vncserver -kill :1

順帶一提, 如果我想要開一個Full HD的桌面, 而且指定為DISPLAY :2號的話, 可以透過下面的指令來完成。

vncserver -geometry 1920x1080 :2

到這邊我們已經把server端的部份搞定了, 接下來就剩下我們的電腦要安裝vnc viewer, 來遠端連線到Raspberry Pi上的桌面系統了。

讀者可以下載Chrome瀏覽器, 並安裝 VNC Viewer for Google Chrome 這個插件。

安裝完成後可以在網址列那邊輸入 chrome://apps 就可以切換到Google Chrome瀏覽器裡的App清單中, 請點擊清單中的VNC Viewer,如下圖中的左上角。

打開VNC Viewer後, 我們就可以透過連到<Raspberry Pi的ip>:<vncserver的port>, 來開啟指定port下的遠端桌面。

理論上我們要透過ssh連線到Raspberry Pi時, 就會需要用到Raspberry Pi的IP位址, 但是如果我們忘記了想要再重新查詢一遍的話, 可以在終端機中打上以下的指令查詢, 如下圖中的10.42.0.135

ip a

至於在連線時, 我們會有指定一個<vncserver的port>, 意思是5900加上DISPLAY的編號, 好比說我要連到DISPLAY :1這個桌面, 就打上5901, :2 就5902, 依此類推。

如以下的範例, 連到10.42.0.135下的:1號桌面。

連線時, 同意非加密的連線。

並打上前面設定過的vncserver的密碼。

成功登入後如下圖。

使用瀏覽器的插件來連到vnc viewer的好處是跨平台, 但是如果讀者想使用其他方法, 例如下載自己作業系統上的vnc viewer程式的話, 以下推薦一個比較常用的 RealVNC Viewer 請根據您電腦的作業系統來下載安裝。

指定SSH中的圖形畫面要在哪一個桌面上輸出

如果說讀者是從ssh登入之後, 直接在終端機上呼叫一個需要跑圖形界面的程式, 例如呼叫xterm

xterm

那麼讀者應該會看到系統回傳一個錯誤, 表示無法開啟顯示, 因為在SSH中, 預設是沒有DISPLAY的設定的。

但是如果我們把DISPLAY設定成:1, 也就是指定到我們vnc server上的:1號桌面, 並再重新跑一次xterm

export DISPLAY=:1
xterm

如此一來就可以在vnc viewer的port 5901上的這個桌面, 看到xterm成功被啟動了,如下圖。

另外, 如果說你想要查一下這個vnc viewer連到的桌面, 現在DISPLAY是設定多少的話, 可以點擊桌面上方的終端機圖示,

打開終端機後,

輸入以下的指令來顯示DISPLAY這個環境變數,

echo $DISPLAY

可以看到, 在這個桌面下,確實是DISPLAY :1呢!

使用Xrdp遠端桌面

另外一個常用的方法是使用Xrdp, 這是一套由windows發展出來的protocal, 因為它一套專門用來做遠端桌面溝通的協定, 所以在功能上會比vnc來的多,而且處理效能會較好一些。

在Raspberry Pi上要使用Xrdp的話, 只要輸入以下指令下載安裝, 系統就會自動執行了。

sudo apt-get install xrdp -y

至於連到Xrdp的工具可以從以下的網址來下載

安裝完成後, 基本上跟vnc viewer的操作上是很類似的, 不過在這邊是指定Raspberry Pi的IP後, 把使用者的帳密打上去, 如下圖所示。

成功登入後就會看到熟悉的桌面系統囉!

[Raspberry Pi] 不再備份整張SD卡,縮小RaspberryPi備份容量

作者

袁佑緣

時間

三小時

難度

***

材料表

  1. Raspberry Pi  (2018 Pi3+測試中)
  2. PC
  3. SD Card

在使用Raspberry Pi時, 我們常希望如果能夠將辛辛苦苦安裝完的系統備份起來, 以後只要將這個備份出來的映像檔燒錄到新的SD Card上, 就可以還原之前的系統了。

好比說在這篇文章中 [AI人工智慧應用] 在Raspberry Pi上安裝NCSDK , 光是安裝NCSDK以及編譯OpenCV函式庫就要花上快半天的的時間, 要是能夠直接備份系統的話, 以後就不用再花時間一直重新安裝了。

所以本篇將介紹如何備份Raspberry Pi的系統, 並把它做成映像檔存起來, 另外,一般來說備份出來的映像檔都會相當大, 好比說原本的記憶卡是16GB大小的, 備份出來的映像檔就會有16GB這麼大, 保存或傳輸檔案都非常不方便, 所以文章的後半段會探討怎麼縮減備份映像檔, 希望盡量壓縮到方便傳輸的大小, 例如本範中將原本16GB的映像檔縮減並壓縮到3.8GB大小的壓縮檔。

 

Windows系統下備份映像檔

在Windows作業系統下備份映像檔我們需要額外下載額外的工具, 請到以下的網址下載win32diskimager。

下載完成後, 請打開win32diskimager程式, 如下圖, 並點擊Device旁邊的資料夾圖示, 選擇映像檔要存檔的位置。

如下圖,選好存檔位置後,打上要存檔的檔名。

完成後,請將要備份的Raspberry Pi SD Card插到電腦上, 並在Device那邊選擇磁區, 如下圖的F槽, 選完按下下方的Read按鈕就會開始備份囉!

Linux系統下備份映像檔

在Linux系統下進行備份的話, 除了可以使用指令直接進行備份外, 還可以對備份出來的映像檔進行縮減大小的加工。

如果讀者的電腦不是Linux的作業系統的話, 建議可以參考此篇的教學[AI 人工智慧應用] MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(上),使用虛擬機安裝一個Ubuntu linux的作業系統。

接下來我們進到正題, 首先請打開終端機, 輸入以下的指令

sudo dd bs=4M if=/dev/mmcblok0 | zip NCS-raspbian.zip -

讓我們一步步拆解這行指令的內容, /dev/mmcblok0是Raspberry Pi的SD Card插到電腦上後, 電腦辨識出的磁區位置(不同的電腦可能會辨識出不同的位置), 接著我們用dd指令將整個SD Card上的資料以4M的block size進行備份, 備份的過程中我們把這個備份出來的映像檔, 經過pipe(|)傳到zip指令中, 即時的使用zip指令將這個映像檔做壓縮, 最後存成一個壓縮檔叫做NCS-raspbian.zip, 至於前面加了sudo是因為要取用/dev/mmcblk0的話, 會需要用到超級使用者的權限。

順代一提, 使用dd這個備份工具的話, 預設是沒有明顯的備份過程顯示, 所以常常不知道現在的進度到那裡了, 所以筆者建議可以在dd指令中多加一個參數, 將dd的狀態(status)用progress這隻小程式顯示出來。

sudo dd bs=4M if=/dev/mmcblok0 status=progress | zip NCS-raspbian.zip -

備份過程如下圖。

另外如果說讀者的電腦上沒有progress這隻小程式的話, 可以透過系統的套件管理員來安裝, 如下圖(以Ubuntu系統為例)。

sudo apt-get install progress

縮減備份映像檔的大小

實際上, 備份出來的映像檔雖然經過zip壓縮後, 看起來會比較小, 但是在燒錄到新的SD Card時, 還是會解壓縮成原始的大小, 也就是原本的SD Card大小如果是16GB(即便是Raspberry Pi的系統實際上只用了6GB左右), 所以在這一小節, 我們要來探討一下怎麼縮減掉映像檔中不必要的部份。

首先我們把剛剛備份出來的壓縮映像檔解壓縮。 請輸入以下指令來解壓縮, 並存成映像檔NCS-raspbian.img。

unzip NCS-raspbian.zip NCS-raspbian.img

接著我們使用fdisk看一下這個映檔的內容以及大小, 如下圖, 應該會看到兩個部份, 一個其實就是Raspbian的boot的部份, 另外一個則是存放root系統的磁區。

我們記下第二個部份的Start位置, 如上圖的94208, 接下來將這個sector數值乘上512, 轉成標記第二個磁區的offset(單位是bytes) 並用losetup掛載到Linux系統上的loop device(/dev/loop0)

sudo losetup /dev/loop0 NCS-raspbian.img -o $((512*94208))

完成後, 先確認所使用的系統中有沒有gparted這隻程式, 如果沒有的話, 請使用套件管理員將它安裝完成, 以Ubuntu為例,

sudo apt-get install gparted

接著輸入以下的指令來對/dev/loop0這個裝置進行進一步的操作,

sudo gparted /dev/loop0

成功執行的話, 應該可以看到如下的視窗跳出。

請點選/dev/loop0這個裝置, 並按下右鍵選擇Resize, 最後拉動上方的磁區大小滑桿, 拉到想要縮減到的大小(建議在Minimum size外再留一些空間會比較好喔), 如下圖。

Resize設定完成後, 回到主畫面, 並按下上方的Apply按鈕, 開始進行重新劃分大小。

劃分過如下圖。

Resize完成後, 先別急著關掉, 請在Details那邊找到shrink file system底下的resize2fs -p ‘/dev/loop0’ 8388608K (詳細的數字可能有所不同), 這個數字是待會要進行縮減映像檔大小時會用到的數字。

 

怕忘記的話, 建議讀者可以按下Save Details把資料存起來。

最後我們不需要這個loop裝置了, 請輸入以下指令將它消掉。

sudo losetup --detach-all

最後我在重新使用losetup將整個映像檔掛到loop裝置上, 並使用fdisk工具來對它做重新切割磁區。

sudo losetup /dev/loop0 NCS-raspbian.img
sudo fdisk /dev/loop0

接下來, 在fdisk中輸入 d(刪除磁區), 2(指定刪除磁區2), n(新增一個磁區), p(選擇主要磁區), 2(選擇為磁區2), 94208(使用前面記下的起始sector), +8388608K(使用剛剛gpated中記下的縮減後的大小)

實際操作如下圖。

最後輸入w(寫入新的磁區分割), 過程中如果出現以下的提示, 請輸入N, 以保留ext4的檔案格式。

重新切割完磁區後可以輸入

sudo losetup --detach-all

來退出loop裝置。

改完磁區大小後, 我們要把映像檔中的多餘的部份去掉, 請先輸入

fdisk -l NCS-raspbian.img

並記下End Sector的位置, 如圖中的16871423。

最後使用truncate指令來去掉End Sector以後不要的部份。

truncate -s $((512*(16871423+1))) NCS-raspbian.img

讀者可以輸入以下的指令來查看裁剪過的映像檔明顯變小了(14.7GB → 8.1GB)

ls -lh NCS-raspbian.img

(補充) 使用pishrink來縮減映像檔大小

這邊補充網路上有人分享的專門用來縮減Raspberry Pi映像檔的工具, 叫做pishrink, 詳細的介紹可以去參考這個

請輸入以下的指令下載pishrink腳本。

wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh

將pishrink檔案屬性改為執行檔, 並用超級使用者的權限去執行縮減映像檔大小, 如以下的範例中, 用pishrink來縮減backup.img這份備份的映像檔。

chmod +x pishrink.sh
sudo ./pishrink.sh backup.img

燒錄映像檔到新的SD Card上

以上的映像檔縮減操作完成後, 建議可以重新做個壓縮檔, 讓檔案在更小一點方便傳輸。

zip NCS-raspbian.zip NCS-raspbian.img

現在如果說我們要將這個備份的映像檔壓縮檔燒錄到新的SD Card上時, 我們可以透過https://etcher.io/[Etcher]燒錄軟體,

指定映像檔的壓縮檔位置

插入SD Card後選擇裝置的位置,按下Flash燒錄即可。

 相關文章:

[Raspberry Pi] 完全不接螢幕鍵盤滑鼠,電腦一開始就用網路線遠端連線Pi

 

作者

袁佑緣

時間

三小時

難度

***

材料表

  1. 電腦
  2. Raspberry Pi  (2018 Pi3+測試中)
  3. 網路線
  4. USB轉RJ45接頭(如果電腦需要額外的網路孔的話))

我們在使用Raspberry Pi時,常會需要額外的設備例如準備螢幕、鍵盤、滑鼠才可以操作, 使用上非常的不方便,而本文就是我們將介紹如何只透過一條網路線就能操作Raspberry Pi, 並且還可以透過筆電或桌電分享網路給Raspberry Pi,不用再辛苦地去接無線網路。

在PC中設定網路分享

以下的內容將會以Windows的作業系統為主(本範例用的是Win10), 使用macOS的朋友請直接參考另外一篇教學文 Raspberry Pi 教學-使用網路線讓電腦與樹莓派進行連線(For Mac OS X)

首先請先打開控制台(control panel),並打開網路設定。

接下來進到網路共用中心(Network and Sharing Center)。

應該會看到電腦上可以用的網路裝置,以筆者的電腦為例, 筆者有兩個乙太網路裝置,一個是讓電腦可以連到外網的裝置(“乙太網路”), 另外一個則是USB轉乙太網路卡(“乙太網路 2”),我們希望可以將這個連到外網的網路, 透過這個USB轉乙太網路卡分享網路給Raspberry Pi。

如果讀者現在打開左邊的網路介面卡設定(Change adapter settings)的話, 應該可以看另外一個網路裝置是打叉的, 因為我們在這上面還沒有設定網路, 如果直接接到Raspberry Pi上是不會有任何反應的。

所以為了要讓這個要分享給Raspberry Pi能有網路, 我們必須要從另外一個有接到外網的裝置, 分享網路給另外一個裝置。

點選功能(properties), 接下來選擇分享(Sharing)的選項, 並將分享的功能勾選如下圖, 並指定裝置為欲分享網路的裝置, 例如本範例中的”乙太網路 2″。

完成後可以點選欲分享網路的裝置中的詳細資料(Details), 如下圖,讀者可以看到右邊的IPv4 Address是192.168.137.1, 這是所分享的網路中的電腦IP位址, 但實際上Raspberry Pi的IP位址還不知道。

掃描Raspberry Pi的IP

所以我們還需要額外的工具來掃描Raspberry Pi的IP位址, 例如本篇範例中用到的Advaned IP Scanner, 這是一款免費的IP掃描工具, 讀者可以從以下的網址來下載。

接下來請安裝IP Scaner。

安裝完成後,執行IP Scanner, 如下圖,按下Scan之後就可以掃描電腦網域附近的可能裝置, 另外為了要節省少描的時間, 建議讀者可以把欲掃描的IP範圍給定, 例如本範例中的192.168.137.1-254。

最後我們記下掃到的Raspberry Pi IP位址, 例如本範例的(192.168.137.173)。

接下來我們只剩下最後一步, 就是要如何透過網路連線到Raspberry Pi, 一般來說我們會用SSH來去連這個IP, 進而登入Raspberry Pi的系統當中。

SSH連線到Raspberry Pi

為此我們必須準備好SSH的工具, 筆者建議可以透過 Chrome瀏覽器的插件Secure Shell 來進行SSH連線,因為瀏覽器是跨平台的,所以就算在macOS的系統上也可以適用。

安裝完成後,讀者可以直接在瀏覽器的網址列直接打上”ssh”, 接下來再按下Tab鍵就會自動進入ssh插件模式, 然後就可以打上”Raspberry Pi使用者@Raspberry Pi IP位址”, 例如本範例的”pi@192.168.137.173″。

初次登入的話,一開始會先建立金鑰的認證, 請輸入”yes”來同意認證。

成功登入後就會如下圖, 會進到一個Raspberry Pi中的shell中。

補充

如果讀者是在Raspberry Pi上安裝官方推薦的Raspbian系統的話, 一般來說,為了安全考量,預設都是會關閉SSH的功能, 所以說如果Raspberry Pi可以拿到電腦分享網路的IP, 但是卻SSH卻登不進去的話,可以按照下面的步驟來強制開啟SSH的功能,

首先請先將Raspberry Pi的燒錄過系統的SD卡插到電腦上面, 並打開裡面的”boot”磁區,如本範例中的F槽。

接著再右鍵新增一個空白文件,命名為ssh。

 

當Raspbian開機時,如果說boot磁區中有一個檔案檔名叫做ssh的話, 就會強制開啟ssh的功能,如下圖。

相關文章: