2016年7月13日 星期三

第一次洗板子... ADC Converter v0.1

先前因為工作需求,拿麵包板接了一個電路
用STC的mcu,搭配10K NTC電阻
用mcu作溫度觀測

FW的部份
ADC量測,換算成溫度,透過UART輸出量測結果
接著以PC teraterm作Data logger

同事看到覺得這個不錯,雖然公司沒有專門的溫度監測儀器,
但針對一些需要長時間監測的情況還是可以湊合著用

我心中的小宇宙又燃起了一把火
一直沒有完成的電路跟Layout
(每次畫到一半就放棄,Layout線拉不出來...)

趁著有需求,週末花個一天時間把線路跟Layout畫完
我對Layout很不熟,看是會看,畫倒是沒有任何經驗
想說反正低頻,也沒吃多大電流,管他媽媽嫁給誰
把幾條主線大概拉一拉
剩下就Autoroute給他跑下去XDDDDDD

畫電路跟Layout是用Eagle免費版本,有一些限制,但夠用
不過更好的是,Eagle有Linux版本~~~~

Firmware則是用Code::Blocks搭配SDCC,在Linux下編出Intel Hex格式的binary
燒錄原先是在公司用STC的Tool燒,STC的tool只支援Windows
回到家裡,則是在網路上找到的tool stcflash.py

綜合以上,整個開發都可以在Linux platform下完成

Layout在淘寶找了一個pcb洗板打樣的賣家
花了40塊人民幣(運費10塊~25塊另計)
最後成品回來,自己再人工上件

洗板的成品跟上件後的成品如下

幾個缺點紀錄一下

  • 當電源開關的Switch選錯Symbol=_______=
  • Crystal原本想Co-Lay,可以選用Dip件或是SMD件,結果放太近了,鐵殼會貼到Pad。
    在上件前先貼上透明膠帶充當絕緣XD
  • Crystal的負載電容其實轉45度就好放很多,當初不知道在糾結啥,硬放一個很奇怪的位置,不太對稱XDDDD
  • 應該再多一條Trace放LED,充當電源指示燈跟放電迴路,放電放的有點慢
  • VCC那條Net沒有特別改,只有10mil寬,應該要再加寬一些

2016年6月25日 星期六

reset USB device when resume/wakeup my desktop with linux mint 17 (ubuntu 14.04)

Cause I've replace my desktop before, from Homebuilt computer that old than 8-year
To brix mini computer, and I've solve the monitor VH226H HDMI source could not sleep issue by replace it to VGA source...

Now I have a computer that can sleep/hibernation and wakeup/resume
but following issue is, I've plug a DVB-T usb dongle on my Desktop, and I'm using Me-TV 1.4 as my TV player,
Me-TV 1.4 turn into server and client architecture, so server application will stay in background, keep open device

If computer sleep or hibernation, it wake up or resume quickly, but DVB-T dongle might be work abnormal, maybe the driver does not implement relative power management function? I don't know:~

I need replug my DVB-T dongle , kill Me-TV server manually to make it work
Hm.... Try to make it easier:)

put following code to /usr/lib/pm-utils/sleep.d, save as 99ZZ_my_script, and make it executable
it could kill me-tv both server and client when sleep,
and when you wake up, find the usb port number, force it reset

#!/bin/sh
# resume me-tv-client if exist

case "$1" in
 hibernate|suspend)
  #echo "7 blink" >/proc/acpi/ibm/led
  killall me-tv-server
  killall me-tv-client
  ;;
 thaw|resume)
                for X in /sys/bus/usb/devices/*; do
                    #if [ "$VID" == "$(cat $X/idVendor 2>/dev/null)" -a "$PID" == "$(cat $X/idProduct 2>/dev/null)" ]
                    if [ "MDTV Receiver" = "$(cat $X/product 2>/dev/null)" ]
                    then
                        Port_Number=`echo $X | awk -F / '{print $NF}'`
                        #echo "Found $Port_Number"
   echo $Port_Number > /sys/bus/usb/drivers/usb/unbind
   sleep 1
   echo $Port_Number > /sys/bus/usb/drivers/usb/bind
                        break
                    fi
                done
  ;;
 *) exit $NA
  ;;
esac

exit 0



refer:
  1.  Run Script on Wakeup?
  2.  POWER OFF AND ON USB DEVICE IN LINUX (UBUNTU)

2016年6月19日 星期日

換了新眼鏡...

換了新眼鏡,留個紀錄
這次配的度數比較高一些,
不過好市多的眼鏡部,驗光比一般的眼鏡行要來的仔細咧...