2015年12月31日 星期四

秋葉原的電子零件商店-1


大概去年(2015)第一次去去東京,主要是去看Tokyo Maker faire的時候,排了兩天逛秋葉原XD
然後這篇會是一些在秋葉原的電子零件商店簡介,全部的商店地圖在這
主要的資料來源是Tokyo Hackerspace對秋葉原的店家介紹(每家店的地點/影片集)
另外就是圖片太多,所以分成幾篇這樣

IV-18 Arduino Clock


這應該算是第二版了,這個版本改成控制板+顯示板,先來列一下特色
  1. 自動亮度控制
  2. Wifi 設定(校時,時區,鬧鐘,顯示風格,手動亮度控制)
  3. 蜂鳴器鬧鐘
  4. Build with Arduino Leonardo(Atmega32U4)
控制板主要有
  1. Atmega32U4 as MCU
  2. Linkit connect module to connect to Internet
  3. RTC (DS1307 or PCF8563) with CR1215 battery backup
  4. Buzzer 
  5. Four tact switch
  6. Photocell

顯示板主要有
  1. HV5812 VFD controller
  2. Attiny24 I2C VFD scanner
  3. build in Step-up
這次版本最重要的就是把我想很就的Wifi功能加了進去,主要就是為了NTP校正時鐘
所以先從這邊講起,
一般來說,時間校正(先不管計時機制),有下列這幾種
  1. 網路
  2. 無線電校時(大人的科學有電波鐘套件,就那種Type)
  3. GPS
  4. GSM(基地台會幫你校時)
以前Wifi模組還很貴的時候基本上都是用2或3,但是無線電台灣沒有開發射站了,所以只能收日本的,訊號很差,甚至還要用音源線+OOXXZZZ做簡易的發射源,太麻煩
GPS的問題也不是說訊號太弱,但是不是每個人都會把時鐘放在窗邊,至於GSM就無視吧
所以這三個在我以前做時鐘的時候都沒用
之前為了時鐘的準確度(懶得校時)所以就用了比較高級的RTC(DS3231),真的覺得不錯,一年下來差不到幾秒.

然後最近幾年,Wifi模組的價錢可以說是直接殺了下來,以前在櫥窗的那些Microchip貴桑桑的無線網路模組,現在只要台幣幾百塊錢,所以是時候把時鐘也連上網了.(我還可以宣稱是科技潮流的 I-O-T 喔喔喔喔喔)

這次用的Wifi模組是聯發科的MT7681模組
就一個標準的3.3V,UART無線網路模組.有Arduino 的範例也有接線圖https://github.com/will127534/7681-ATcmd
範例就是NTP time sync

好了,那已經有網路校時了,這Wifi模組還可以發揮甚麼功能?
顯示股票大跌,不準的公車預估到達時間,永遠掛0~9的新郵件數目
這些當然都很好,只是說Code不夠用......

所以就先把設定值搬到網路上

===========期末考完再來補...===============







2015年11月30日 星期一

High Altitude Ballooning with LoRa



好久沒有寫廢話了,Blog的草稿越疊越高,過陣子應該就有空補完,
不過這東西真的令人興奮,所以趕快貼上來

As title,這次是關於高空氣球.
左邊接收器,右邊要探空的
上圖是同一種電路板但是設定成不同功能,一個是探空儀,另一個是地面接收站
規格如下:

  • Atmega328 (就是用Arduino UNO)
  • RFM98    (LoRa模組)
  • Neo 6m    (GPS)
  • MPU9250 (姿態)
  • BMP180 ,但是之後換成MS5607 (氣壓計)
  • HDC1000
首先來講一下重點的無線模組,這次用的是LoRa,比傳統的FM那種來說,首先是Link Budget可以很高,而且可以藉由下調速度來換取更高的Link Budget,而換取更遠的距離

這次的速度設定有兩個,第一是GPS Channel,有鑑於這是最重要的一筆資料(與天線指向有關)
所以設定的速度很低,只有183.11bps, 參數是:SP:12,Band:125Khz,CR:4/8
而這個Link budget達到154dB
第二個則是Payload Channel,這次是裝了九軸計算出來的姿態,速度是21875bps
參數是SP:7,Band:500khz,CR:4/5,Link budget只有134dB

而這兩個的理論最低接收訊號強度為 -137和-117dBm

至於九軸這次選MPU9250主要的原因是因為體積,比起9150來說,周邊電路的零件減少一些
另外就是氣壓計,其實BMP180並不適合,因為最低氣壓只有300hPa,換算高度大概只有七公里
所以在第二次升空的時候改用MS5607,最低可以達到10hPa.

至於GPS模組就是單純找個能用的然後便宜,不過這有個Trick,還有個大魔王,下面會提到

我原先的發射流程是希望探空儀用GPS計時,之後就每分鐘切到GPS Channel後送一筆GPS位置和高度,其他時候每秒鐘送一次姿態+其他資料回來
然後地面站同步時間切頻道收資料,一種TDMA的概念

試了一下覺得沒問題就跑去升空



然後就出問題了,由於問題太多,所以決定用條列式的
  1. GPS高度資料是錯的
  2. Yagi天線也是錯的頻率
  3. 地面站的時鐘和GPS時間有誤差
  4. Python的Thread Handle也有問題
  5. 被大樓擋住
GPS高度錯誤這件事情真的讓我嚇到了,氣球上去之後看著他升空遠去,然後轉頭看著電腦的20m高.....然後就GG了,高度資料出問題的時候,天線指向的仰角會出問題,理論上這時候應該要切成壓高公式去計算(把靜力平衡和氣體方程式帶進去然後隨高度積分),但是一來,我沒有環境的溫濕度計,沒有辦法計算需要的平均虛溫,而且我也沒有寫這個副程式

於是只能用N小時前的探空資料去算大概的高度,免強追到25Km遠

這一切是因為我沒有設定成飛航模式,也就是讓GPS知道說我不在地面上.u-blox需要先由u-blox center設定後,才有高度可以用,而且還要加電池不然設定會消失.再來就是Yagi天線的問題,原先的設計是給400Mhz的Vaisala用的,然後我以為433應該也可以,計算證明根本.....至於地面時鐘,這大概無解,只能讓地面站也有GPS會比較好一點



可以看到的是RSSI基本上剛開始有點悲劇,後來用探空資料回推高度有好一些,但是之後還是GG了,而能夠慶幸的是電池電壓與內部溫度都沒有變低多少,不過高度只有404hPa

接下來是第二次測試,改進的點就是
  1. GPS模組補回備份電池,同時設定成Airborne <1g
  2. 接收機變成兩組,兩隻新的433Mhz Yagi天線,同時接收兩個Channel
  3. 地面接收站改版加了GUI
  4. GPS資料改成每10秒送一筆,而且多送外部溫度,氣壓資料

然後剛開始前先用一個小氣球和繩子測試GPS的高度資料正常,由於高度很低,所以用防靜電袋裝著就好

可以看到線的重量已經開始影響升力了

然後測試正常之後就換大顆的氣球來

雙接收器

地面接收站軟體,要注意的是外部溫度沒有接上

由於這次風向正確,所以沒被任何東西擋住,算是滿成功的接收到67Km遠,13km高的程度
可以看到的是,RSSI維持在-90附近,差不多是這次實測的極限
內部溫度則是達到了-6度,但是電池電壓依舊是沒啥太大的變化,

至於為啥最後會失效,從GPS和Payload同時掛掉來看應該不是因為訊號的問題
I2C lock 住也應該不是問題,因為我已經把TWI.c改過了一下,把所有的while loop都加了Timeout
電池電壓也明顯不是,這溫度應該還不到直接掛掉,Feq shift也不過150hz,理論上不成問題

所以目前打算的解法就是用Watchdog先撐著.....

這篇應該還會再補就是了,應該啦

=====Update=====
我後來想起來一個很好笑的事情,我用的LDO是LM1117-3.3v
用Li-poly很明顯得Vdrop太大,電壓應該下降了不少
所以我覺得很有可能是因為溫度下降之後,電池過LDO電壓掛掉
這次的電池電壓測量方法是用VCC當3.3v,也不是用內建的Bandgap
所以測出來穩定的4.2V其實很有問題






2015年8月15日 星期六

Attiny x5/x4 mix program shield

 簡單來說就是...兩種系列(Attiny24/44/84 Attiny25/45/85)都能用的燒錄座
電路並不是簡單的開關就好了,由於x4和x5的部分接角重疊,需要比較複雜一點的電路
然後就做成下面這種鬼模樣了...
就直接用了一顆有兩個Analog Switch的IC然後結束這回合

另外就是這有放LED燈XD