發表文章

Python-PyQt版面配置與嵌入即時動態圖

圖片
控制板讀到的訊號需要即時顯示,因此我用PyQT寫了個GUI範例,並且能即時更新圖表,畫圖的部分採用matplotlib。 上面圖表就是程式碼會顯示的即時圖,右邊是即時產生sin與cos值,左邊是cos、sin分別在x,y軸產生出來的圖形。 import sys import PyQt5 import time import numpy as np from matplotlib.backends.qt_compat import QtCore, QtWidgets, is_pyqt5 if is_pyqt5(): from matplotlib.backends.backend_qt5agg import ( FigureCanvas, NavigationToolbar2QT as NavigationToolbar) else: from matplotlib.backends.backend_qt4agg import ( FigureCanvas, NavigationToolbar2QT as NavigationToolbar) from matplotlib.figure import Figure class ApplicationWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() self._main = QtWidgets.QWidget() self.setCentralWidget(self._main) layout = QtWidgets.QGridLayout(self._main) #新增圖表 dynamic_canvas_total = FigureCanvas(Figure(figsize=(5, 3))) dynamic_canvas_x = FigureCanvas(Figure(figsize=(5, 3))) dynamic_canvas_y = FigureCanvas(Figure(figsize=(5, 3))) ...

Python-使用pyserial與控制板溝通

最近在研究個專案,從sensor即時讀取資料透過USB傳到電腦進訓練好的分類模型進行損壞類別判斷並用GUI呈現,而板子與電腦傳輸使用到python的pyserial實作。 一開始先到裝置管理員確認COM PORT若讀不到記得刪除然後更新驅動,並確認板子的傳輸速率。 這邊我採用一發一收,我發個訊號給板子,板子才會把讀到的電壓值給我。 這範例他一次發送就是18筆bytes,扣除頭尾作為一次發送的判斷,其餘每兩筆可轉換成一組電壓值。 因此我兩組資料要一起做個計算還原電壓值,公式可參考註解(高位元加上低位元*3.3伏特/4095 2的16次方位元) 每個人板子寫的邏輯跟資料都不一樣,所以可單純參考對板子發送資料與接收資料。 import serial import time COM_PORT = 'COM15' # 指定通訊埠名稱 BAUD_RATES = 19200 # 設定傳輸速率 ser = serial.Serial(COM_PORT, BAUD_RATES) # 初始化序列通訊埠 try: while True: values = bytearray([3]) #板子收到3會對電腦傳一組資料 ser.write(values) #發送資料跟FPGA要值 i = 0 high = 0.0 total = 0.0 while ser.in_waiting: # 若收到序列資料… data_raw = ser.read(1) # 讀取一筆 共18筆扣掉1跟18 每兩筆可轉換成一組電壓值 data = int.from_bytes(data_raw, "big") # byte to int print('接收到的資料:', data) i = i + 1 print(str(i)) if(i == 1): #去頭 continue if(i == 1...

Altera DE0 - Nano開發 ADC應用

圖片
前言:      最近因為做實驗的關係,作者接觸了Altera DE0-nano開發版,發現這個板子雖然小小一塊但功能卻很齊全的,包含了加速計、8個led燈示、四段指撥開關、兩個復歸按鈕、8通道12bitADC以及多達80個GPIO(裡面涵蓋Vcc及Gnd)可以去使用,而本文章是使用其ADC讀取感測器數值的應用本文章是使用其ADC讀取感測器數值的應用     下圖為板子的正反面照片,ADC位置在背面(圖b)                                        圖a. 正面照                                   圖b. 背面照 圖c. Pin腳圖     DE0-Nano使用的ADC晶片為 ADC128S022 ,其通訊使用的是SPI進行資料交換如下圖所示 圖d. ADC128S022 Serial Timing Diagram     依據圖d的通訊圖可以看出當CS Low時,其SCLK以16個為一組DATA的資料,為了配合撰寫程式,本文章以0至15來取代1至16,其中資料的第0個與第1個不列入參考,而第2~4為選擇ADC Channel的Address(由Din腳為提供),最後第4~15為晶片所量測到的電壓數位訊號(由Dout送出),其訊號範圍為0~3.3伏特(數位訊號為0~4095)。 實作:     SCLK: library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Divide...

[投資]布林通道原理與應用

圖片
布林通道(Bollinger Bands)是一種股票技術分析的概念,這篇會介紹其原理與應用。 介紹之前還是要強調對小散戶來講: 基本面是求穩,了解公司過去營運狀況、獲利情形、公司治理等等(歷史表現) 籌碼面是去猜未來,猜測主力買、法人買可能有利多等等。 技術面則運用統計、數值分析等方法來猜測走勢。 綜合三面向來選股分析盡量健全越好。 回來討論布林通道,其實就是平均值與標準差的概念而再股票的概念是這樣稱呼的: 上線:移動平均線+2標準差 中線:移動平均線(時間可以為10、20、月等等,其實就是X日平均值的概念) 下線:移動平均線+2標準差 以統計常態分布來看正負2標準差大概可包括95.4%的資料,因此可認為未來走勢在這區間內走動機率很高,因此 布林通道 是以 X日移動平均線為中心  上下各 2 個標準差  為範圍的一個軌道操作方式 布林通道開口與縮口 開口表示布林通道的區間變大,反之縮口則是變小。 開口 概念就是資料離散程度變大,離散程度變大表示X日內的 股價有大幅上升、大幅下降或有巨幅震盪 。 縮口 概念則相反即資料離散程度變小,變小則表示X日內的股價相對平穩,可解釋為 正在盤整 。 以下圖為例,可以看到股價一路往上爬時,即開口;後來逐漸收穩進入盤整格局,布林通道就縮口了。 買賣訊號 1.股價碰到上線,賣出訊號 當你買進股票或做多股價碰到上軌道,要再漲的機會就很小這樣我們可以選擇賣出 2.股價碰到下線,買進訊號 當股價碰到下軌道要再跌的機會就不是那麼大那就給我們買進的理由 結論: 實際操作買進訊號,若基本面與籌碼(依作者的觀點這兩面都比技術面重要,因為單用統計的概念來操作就等於用後照鏡來開車一樣,只是看歷史資料)都不錯,且股價向上突破下線或中線以下應該都是個不錯的進場點。 Reference:HiStock嗨投資理財社群、cmoney投資小學堂、wikipedia

Python turtle畫雪花

圖片
Python turtle是python內建的繪圖套件,在資料分析的領域較少使用。無意間得知這套工具,冬天來畫片雪花練習一下。 一開始宣告套件 設定背景顏色 定義branch()方法,裡面用雙層迴圈來畫分支 forward就是向前方移動 p 個像素距離,backward向後方移動 p 個像素距離,right與left為順逆時鐘轉的度數,分支畫完後轉45度直到畫完一片雪花。 畫完長這樣 from turtle import* turtle.bgcolor("#FFF0F5") speed(0) colormode(255) def branch(): for i in range(3): for i in range(3): forward(10) backward(10) right(45) left(90) backward(15) left(45) right(90) forward(45) for b in range(7): for c in range(6): x=-400+c*250 y=350-b*120 penup() #提筆 setposition(x,y) #確認座標 pendown() #下筆 begin_fill() if b%2==0: color(88,76,208) elif b%3==0: color(83,217,255) else: color(168,216,255) for i in range(8): branch() left(45) end_fill() hideturtle() done()

[投資]慧洋-KY(2637)台灣散裝航運龍頭

圖片
台股萬二,台積帶頭領盤,總會有遺漏的股票沒被注意到,這篇要來分享台灣散裝航運龍頭,慧洋這間公司,龍頭股、配息穩定或許是存股的另一種選擇。 公司基本資料 1.沿革與背景  慧洋-KY(2637)公司創立於1999年,登記為開曼群島商,為台灣最具規模的散裝船隊船東之一,董事長藍俊昇為台灣散裝-四維航(5608)藍俊德的胞弟。 公司維持船隊的輕齡化,船型包含了海岬型、巴拿馬極限型、超級極限型、輕便極限型、輕便型、多功能型、駛上駛下型、原木船、木屑專用船、貨櫃船、雜貨船等多種船型 ,並和日本如今治、常石、大島、名村、村上秀等一流船廠的長期合作。  2.營業項目與產品結構  公司擁有的船隊中包括散裝輪、原木船、雙層甲板船、多功能船、roro船及貨櫃輪,屬中小型船舶商,船隊平均年齡約5.6年。公司一方面積極擴充船隊,一方面淘汰耗油船隻,以提高整體船隊的競爭力。 2017年,租賃占營收比重93%,運費收入占4%。 由於集團船隊之不同船型分散於各航線經營,以減少因經濟景氣循環變動所產生之影響。在散裝船之市場中,以貨物選擇多樣化、航線靈活的輕便型(handy size)、輕便極限型(handymax)為主力,而貨櫃船(container)所佔比重約在全體船隊中10%以下。其中3萬噸以下的輕便型仍缺船,故運價穩定。 產業面 散裝航運以運載民生大宗物資與工業基本原料,如鐵礦砂、煤炭棉花及穀物、肥料等。一般而言,散裝航運業的 傳統旺季為每年11月至次年4月 ,夏天則是淡季。影響散裝航運景氣的重要因素,除了天災,貿易傾銷法令、外交政策與油價都是影響散裝航運景氣的重要因子,散裝船運價指數為影響業者獲利的重要指標,依船型的不同,散裝航運指數可分為波羅的海海岬型航運指數(BCI)、波羅的海巴拿馬型航運指數(BPI)與波羅的海輕便航運指(BHI),波羅的海運價指數(BDI)是以上三種指數的平均,亦為整體散裝航運獲利的重要觀察指標。 影響散裝航運運費與船商東利潤的最大因素為散貨市場需求與全球大宗物資貿易量 ,過去因景氣不佳,全球大宗物資原物料價格積弱不振,連帶使得散裝航運價格一蹶不振,在市場供給過剩以及船商削價競爭,致使船商大幅虧損,許多小型船東、船廠倒閉,船舶閒置無用武之地,致使拆船量大增;表示供過於求的現象正逐漸改善。且就船噸來看...

[食記]台東-熱帶低氣壓 Low Pressure Restaurant & Guesthouse

圖片
在台東東河晚上真的沒有什麼吃的選擇,可能很多旅人都是去7-11果腹。 今天介紹這間由愛衝浪的日本人開的民宿與餐館,晚上滿滿的異國客喝著啤酒吹海風吃飯聊天,同時也看到一桌想重振地方的在地人,討論著如何透過地方創生來吸引更多觀光客。 餐點有一些輕食炸物、熱炒、炒飯、水餃、簡餐等等,還有一些調酒與非酒精性飲料,店員也很酷有著外國人的臉孔但中文超好XD 店內一隅 店內一隅 炸鬼頭刀漢堡 浪人泡麵 純樸的小村莊 與之反差的異國風 商家FB: 熱帶低氣壓餐廳民宿LowPressure restaurant & surf guesthouse 電話:0937 579 522 官網: 熱帶低氣壓餐廳民宿LowPressure restaurant & surf guesthouse