發表文章

安裝一個精簡的Ubuntu + Xfce4

最早以前開始接觸Linux的時候還是Ubuntu 12.04的時代。一直很不喜歡Ubuntu安裝時塞一堆用不到的垃圾在裡面,尤其是Software updater簡直就比Windows還要糟糕,還有難用的Unity或Gnome。就在去年我切換到了Debian,我很喜歡Debian安裝的介面,清楚明瞭,而且一份安裝的CD image可以自己選要裝什麼桌面環境,而且不太會塞垃圾。 用了一年多的Debian,他的更新速度實在太慢,目前的穩定版本(11)的kernel已經不支援新的硬體,於是又用回Ubuntu。桌面以前我都用Mate,自從用了Debian以後我很喜歡用Xfce,他很簡潔,而且一切的功能都非常直覺、實用。可惜的是Xubuntu雖然也是基於Xfce的發行版,不過是經過修改的Xfce,失去了精簡、直覺、實用的價值,因此利用這個週末研究怎麼手動安裝原生的Xfce4。 sudo apt install xfce4? 結果他根據推薦和建議的套件還是裝了一堆用不到的垃圾,而且明明是要裝xfce推薦清單裡面竟然有gnome,還有就是Ubuntu的lightdm、gdm3真的是醜到不行,說實在從cli登入,然後用startx進入桌面就好了。 我們可以在apt加上--no-install-recommends讓他不要去裝其他東西,改由手動輸入指定我們要裝哪些東西。當然,相依套件還是會自動安裝的。 試了一下,一個精簡的桌面環境就是要裝這些東西。 sudo apt install xserver-xorg xserver-xorg-core xserver-xorg-video-all xfonts-base xinit x11-xserver-utils xfce4 tango-icon-theme xfce4-terminal thunar-volman gvfs --no-install-recommends xserver相關的都是要執行桌面視窗系統最基本的套件,thunar-volman和gvfs則是讓插入隨身碟、光碟可以自動mount的套件。

免錫膏、鋼網,自己焊雙面SMT零件

圖片
在科技、製造技術的進步下,許多新出的電子零件越做越小,甚至以無引腳(QFN, BGA等)的方式進行封裝,已經無法再用烙鐵進行焊接。本篇將介紹一套我自己在用的方法和材料,這麼一來在製作新的電路就不用妥協選擇較舊、體積較大的元件了。 網路上應該找得到滿多教學是用錫膏、鋼網來達成,礙於錫膏有效期限不長,放太久會硬掉,往往買來一條用不到一半就放到硬掉,所以我自己是先在焊點上已一般烙鐵加上焊錫,然後塗上一點點助焊劑,放上零件後加熱,就可以把零件焊好了。 這次示範的板子雙面都有零件,原則上我們先挑一面焊,然後上熱固性樹脂讓元件不會再掉落,再完成另一面。所以我們先挑比較好固定的一面上焊錫。在這邊一個零件焊點上的焊錫量要盡量一致,避免融化以後零件因液態焊錫的表面張力不同而拉向一邊,或因為浮力造成錫量少的焊點沒與接腳接觸到。 上完焊錫以後再點一點助焊劑在焊點上,助焊劑除了助焊以外,本身的黏性也可以暫時固定元件。助焊劑要挑正規的不要亂用,尤其不要用一般電料行買到的焊油,不然殘留的酸性物質是會腐蝕電路板的銅箔和零件的。我用的是MG Chemicals 9341免洗助焊劑。 上完助焊劑以後長這樣,真的只要塗一點點就好了,買一條真的可以用很久。 再來排上零件,稍微擺整齊就好,不用對得非常準,待會加熱焊錫融化以後,會因為液態焊錫本身的表面張力自己拉正。 再來就可以加熱把零件焊好了。我是用探照燈安裝一支500W的鹵素燈管,外加一個調光器調整功率,在玻璃上以鋁片割出一個適當大小的窗口放電路板,這麼一來可以讓熱源集中,同時也可以避免刺眼。初次使用這個方法,可以搭配溫度計測量一下溫度熟悉一下,由於我們是整張板子一起加熱,溫度相對穩定,因此溫度不用像烙鐵一樣那麼高,一般來說180度-200度焊錫就能融化了。 焊錫融化且接腳也吃上錫了,如果發現有零件沒正,也可以在這時候用鑷子微調。加熱到高溫的時間不宜太長,最好能在三分鐘內完成。 確定零件都焊好後就可以將鹵素燈關閉,待焊錫冷卻凝固以後將電路板拿下來降溫。恢復到室溫後用棉花棒沾取去漬油清潔殘留的助焊劑(雖然說是免洗助焊劑,但是清一清也比較好看)。 在我們重複以上步驟要焊另一面的零件之前,要先用熱固性樹脂把已經焊好的那一面給固定好,以免重複加熱時零件掉落。我用的是MG Chemicals 9310,這款加熱到100度保持30分鐘,或120度保持10分鐘就會固化

Raspberry Pi Wi-Fi - ethernet bridge設定

利用樹莓派架設Wi-Fi Router或AP的實例很容易找到,但這次我要在工作桌上將儀器們連上家用網路,這麼一來可以坐在電腦前面用Keysight BenchVue做實驗。這個功能剛好與網路上找到的範例相反。 我們可以先看一下Raspberry Pi documentation提供的兩種模式,Routed Wireless Access Point和Bridged Wireless Access Point。Routed AP會在樹梅派上提供DHCP的服務,並分配IP給其他連上去的裝置;Bridge AP則是將上游的服務pass到連上的裝置,所以DHCP、gateway會是上游的router提供。在這邊我要用Bridge (橋接)的方式,這麼一來儀器才能在同個區域網路中被找到。 Raspberry Pi Documentation - Configuration 如果要反過來變成收Wi-Fi轉成Ethernet,是不是將設定的方式反過來就好了? 答案是否定的,由於無線網卡不見得能透過硬體或韌體實現橋接,因此只能從layer 3著手。我們可以參考Debian這篇文獻。 BridgeNetworkConnectionsProxyArp - Debian Wiki 在這邊使用了幾項套件,可以看一下細節的說明 parprouted(8) — parprouted — Debian buster — Debian Manpages dhcp-helper(8) — dhcp-helper — Debian buster — Debian Manpages avahi-daemon.conf(5) — avahi-daemon — Debian buster — Debian Manpages 不過照做以後卻無法順利接到DHCP的服務,但在客戶端手動設定IP是能正常連出去的。折騰了半天,最後發現在安裝完dhcp-helper後,systemctl預設是不會啟用該服務的,手動註冊一下dhcp-helper重開機就正常工作了。 sudo systemctl enable dhcp-helper 如果要手動設定橋接,並監測ARP table的狀態,可以免去BridgeNetworkConnectionsProxyArp中編輯/etc/network/interface的步驟,輸入以下

新唐火神板開箱實作(五):CAN通訊測試

圖片
一、前言     本篇要用Python寫程式,從個人電腦連接的Kvaser Leaf Light v2透過CAN傳送資料至NuMaker-Volcano接收,並從serial port觀測資料。 二、CAN bus的結構     如下圖,如果我們要使用CAN介面,需要有CAN Controller以及CAN Transceiver。CAN Controller負責的是CAN的通訊協定, CAN Controller會依序傳輸或接收資料,並且內建CRC、ACK、中斷等邏輯電路,CPU只需要存取他的暫存器即可進行收發。這一步當然可以用軟體刻出時序,不過有獨立硬體會讓CPU輕鬆一點。現在我們在做新的專案通常會直接挑有內建CAN Controller的MCU,像是新唐的M0A23、NUC131、M482、M453都有內建。NUC131目前已經有AEC-Q101的版本了,M0A23未來應該也會有。      CAN Controller輸出的都還只是共模信號,必須透過CAN Transceiver轉換電氣特性為差動信號。新一點的CAN Transceiver除了轉換電氣特性以外,還會有超時保護、突波及ESD防護,其中超時保護是為了避免該節點的軟體或硬體出現問題,使TXD長時間保持在LOW的時候,CAN Transceiver會把輸出級的電晶體給釋放掉,避免該節點長時間保持在顯性信號占用並阻斷其他節點的通訊。     此外為了因應 很多新出的MCU工作電壓都是3.3V,再新一點的CAN Transceiver也會將bus端的5V (VCC)與CAN TX/RX端的電源(VIO)區隔開來。幾個推薦的系列: NXP TJA1051T、TI TCAN1042、Microchip MCP2551。TJA1051T和TCAN1042有分不同版本(速度、VIO、EN等等),記得要去讀一下datasheet,看一下尾數的涵義。MCP2551就很經典很便宜,不過他就沒有VIO。     現在帶VIO的1051、1042市場都缺料,交期都排到好幾個月。好在新唐的M0A23工作電壓可以到5V,做東西用MCP2551就可以了~ 三、行前準備 1. NuMaker-Volcano要焊上排針,以利我們用杜邦線連接到CAN Transceiver 2. 準備CAN Transceiver模組,兩年前還很好

新唐火神板開箱實作(四):Kvaser USB/CAN adapter於Linux環境下的使用筆記

圖片
    電腦要接上CAN bus勢必要一個介面卡了,這回我們選用Kvaser Leaf Light v2這張USB to CAN的介面卡,於Ubuntu 18.04作業系統中使用python3開發通訊。     這邊我們就會用到第一篇所提到的 Kvaser Python module和Kvaser Linux Drivers and SDK,在Kvaser的網站可以下載。 https://www.kvaser.com/download/      下載後分別會是這兩個壓縮檔,pycanlib.zip和linuxcan.tar.gz,我都先將這兩個壓縮檔解壓縮。點開pycanlib/docs/index.html,裡面有完整的安裝步驟和範例。其中Installation告訴我們pip install canlib-x.y.z-py2.py3-none-any.whl可以自動安裝python的函式庫,其中x, y, z是版本號碼,可以在pycablib目錄下確認一下完整檔名。      不過安裝檔有使用到f-string,要用python3才能正常執行。因此在這之前要安裝一下python3與pip3。 sudo apt install python3 sudo apt install python3-pip     安裝完畢後用pip3來安裝。沒意外應該是能直接安裝成功。 pip3 install canlib-1.17.748-py2.py3-none-any.whl     再來就是驅動程式的部分,可以開啟 linuxcan/README參考。     實際上做這幾步就可以了。 sudo apt install build-essential make sudo make install      最後建立一份文字檔取名為listdev.py,然後將這段程式複製進去。要注意tab的部分。 from canlib import canlib num_channels = canlib.getNumberOfChannels() print("Found %d channels" % num_channels) for ch in range(0, num_channels): chdata = canlib.ChannelData(ch)

新唐火神板開箱實作(三):BSP範例程式與周邊函式庫

圖片
一、前言     在第一篇建立好的專案只是個簡單的Hello World功能。我們可以將新唐範例程式直接複製並取代原本的main.c。新的專案只會引入一些Hello World必要的函式庫,如sys.c、clk.c、uart.c等等,因此如果要新增其他周邊功能,就需要額外手動從BSP (board support package)複製周邊的函式庫(StdDriver)進專案Library的目錄下。 二、NuEclipse的專案目錄結構     下圖看到的Binaries, Includes只是透過Eclipse build setting分類出來的項目,並不是真的存在檔案系統的目錄。下列四項才是真的存在檔案系統裡面的項目。     1. CMSIS: 不是真的ARM的Cortex Microcontroller Software Interface Standard。裡面是Startup file。     2. Debug或Release: 編譯出來的Binary和執行檔     3. Library          /CMSIS:這才真的是CMSIS          /Device:最裡面放的是暫存器的header          /StdDriver:StdDriver的header          /:StdDriver的source file,要手動複製的周邊函式庫就是複製到這裡     4. User:使用者的程式碼,如main.c,也可以放一些自己建立的Library,大一點的Library建議再分一個資料夾出來。 三、範例程式 (SampleCode)     範例程式放在BSP中SampleCode這個目錄中,裡面會再按照不同方向分門別類。           其中SampleCode/StdDriver是各硬體周邊的範例程式,前綴就是那一個周邊功能,使用範例程式有下面兩種方法。     1. Import Existing Project          直接照NuEclipse使用手冊第3.3章節的步驟,將專案目錄指向範例程式中GCC這一個資料夾,直接將範例程式匯入。          - 優點: 快、速成,該有的library和header路徑都設定好了。          - 缺點: 目錄太多層,自己不好管理,複製專案時幾乎要整

Asetek一體水冷水泵維修

圖片
     先前一名好友說他的一體水冷的水泵插到主機板上RGB LED的連接器,開機後水泵就冒煙燒掉了,問問看能不能修理。我原先以為裡面會是什麼很特殊的晶片沒辦法買到,不抱持太大的希望。結果拆開看用的零件都還滿簡單明瞭的,也是頭一次看到水泵馬達的構造。             本日主角,Asetek 338,原先是用在HP的機器上,HP的料號為714256-001。     水冷頭的部分有好幾顆螺絲,如果只要拆開看到水泵電路的部分,實際上只需要鬆開這兩顆螺絲。     螺絲鬆開以後取下塑膠上蓋,就能看見無刷馬達的線圈以及控制電路。電路上最主要有兩個IC,一個是單相全橋馬達驅動器;另一個是霍爾IC緊靠在轉子旁邊,用來檢測轉子的位置回授給馬達驅動器變相。兩個IC須互相搭配才能運作。     近看後發現,馬達驅動器已經燒出一個洞了,所幸印字"B1962"還看得見。經查應為 ON Semi的LB1962MC,Mouser上訂得到 。只訂兩顆,結果送三顆來。     解焊小顆的SOP封裝其實不用特殊的工具,烙鐵多加一點焊錫將一排焊點同時加熱,兩排交錯個幾次就可以把壞的IC給拆下來。     用吸錫線將舊的焊錫吸乾淨,再焊上新的LB1962MC就好了。     最後上電測試確定水泵正常運轉,完修~

新唐火神板開箱實作(二):NuEclipse IDE基本設定筆記

圖片
      安裝完NuEclipse以後,我們可以做下列幾項設定。雖然這些項目並非必要,但是設定完會讓接下來的工作更加順手。請注意,這些設定是存在workspace目錄下的metadata,如果再新開一個workspace,要記得重新設定一次。 1. Font size     Windows > Preferences > General > Colors and Fonts     在選單裡面找到C/C++ > Editor,然後按右方的Edit就可以選擇適合自己的字型與字型大小。 2. Save automatically before build     Windows > Preferences > General >Workspace     將Save automatically before build勾選起來,這麼一來每當我們修改程式後,按下槌子就會自動儲存然後編譯。如果更動編輯器內的程式但是未儲存,還是會照上次儲存的程式編譯。 3. Launch the previously launched application     Windows > Preferences > Run/Debug > Launching     勾選下方的Always launch the previously launched application。之後如果有直接使用Eclipse的Run或Debug功能,就只需要設定一次,下一次會自動跑上回的設定值。

新唐火神板開箱實作(一):NuMaker-Volcano與NuEclipse IDE入門篇

圖片
一、前言      其實早在約兩年前(2018年)新唐科技就推出自家基於Eclipse的IDE,名為NuEclipse。它支援新唐Cortex-M系列微控制器,並包含OpenOCD可以直接在IDE內進行燒錄與debug,支援Windows與Linux作業系統,功能與業界常用的Keil MDK非常相似且可以免費使用。      最近新唐新推出一顆有CAN的便宜MCU,M0A23已經被我搶先拿到開發板了,也剛好有在做車用相關的專案。許多人都有問過我怎麼使用NuEclipse,這回我們就以CAN通訊為實驗主題,分個三到四篇寫一系列的NuEclipse的入門文章。我們拿到的NuMaker-Volcano上面是新唐M0A23EC1AC,是一顆Cortex-M0、32KB Flash、4KB SRAM的微控制器。內建48MHz的振盪器,在多數情況下無須外加石英晶體,讓TSSOP28的封裝擁有26個I/O。      順帶一提,新唐目前有和ARM簽約,只要是使用新唐Cortex-M0和M23的微控制器,也能免費、無限制的使用Keil MDK。細節可以參考新唐與MDK的網站。 https://www.nuvoton.com/tool-and-software/ide-and-compiler/ https://www2.keil.com/nuvoton/M0-M23 二、準備工作 下面這些東西會在接下來的幾篇文章中用到。      1. 硬體          1. 新唐NuMaker-Volcano開發板           2. CAN Transceiver (我是用 TI TCAN1042V-Q1 ,他的CAN bus 5V與數位信號的VIO是分開的)           3. Kvaser Leaf Light HS V2 (USB to CAN adapter,也可以用另一塊開發板收發CAN資料)      2. 軟體           1. Windows 10或Ubuntu 18.04 LTS的電腦,其他作業系統還沒試過           2. NuEclipse_V1.01.017          3. NuMicro_ICP_Programming_Tool_V3.05.7174r          4. NuMicro_ISP_Programmin