2014年6月23日 星期一

PCM5122 with Raspberry Pi

 自從上次弄完Pcm5102 DAC之後,總是有點遺憾

因為他的輸出只有line out只能使用軟體控制音量


所以腦筋動到了他的近親-PCM5122,這基本上是Pcm5102加了mini DSP進去

然後還可以控制音量,控制方式也有三種,HW,I2C,SPI


不過我做完之後卡在要怎麼讓Raspberry Pi控制他

結果我發現已經有人做過了XDDD

那就是iqaudio出的RPI DAC
於是就直接用他的Driver驅動就可以了


然後進到設定頁面後點iqaudio

最後修改etc/mpd.conf 就可以用Pcm5122的音量控制
宇宙無敵精簡版 精簡到連LPF都先拿掉了

 基本上PCM5122用i2C控制,整體線路圖如下,想DIY的直接搭棚上吧~
 然後i2C,i2S接上RPI,SCK接地

接下來可以Layout一個Pcm5122 DAC給Rpi用了
最近又預購了一個"有機肥",想說拿來做一個Airplay的小喇叭XDDD


然後題外話,我好希望Smartconfig的功能可以出現在RPI上....
省的還得要先接有線網路才能設定
然後還有Volumio 1.4版改好大,變得更好用了

2014年5月31日 星期六

WS2812b 立方體LED

 把之前的立方體和Arduino mini pro焊接在一張洞洞板上,這樣看起來就比較像是個成品
我原本想要用露天找到的Attiny85迷你開發版控制的,但是想到attiny85的code size只能有6K
還是把Arduino mini pro 放上去,可能之後加幾個按鈕或是電容觸控之類的吧,不然只用了一個pin腳有點大材小用的感覺.

Arduino mini pro 焊接在背面,另外就是把一個1000uf的電容和供電並連
還有用一個470歐姆的SMD電阻串聯在Data pin上面,
  
另外就是這個mini pro 是我在Sparkfun的Arduino Day買回來的XD
五張Arduino平均下來一張120元,根本掏寶價,不買可惜阿,我現在後悔沒再買一個原廠的UNO

喔還有一點.....這Arduino mini pro 的PCB本來就那麼薄嗎...........

喔喔還有第二點,如果仔細看的話會發現有一個jumpper,那是新增的功能,可以把板子上的LDO disable掉,免得不用的時候Sleep mode會增加耗電,

喔喔喔還有第三點,Arduino pro 的headder不是UNO R3版的,所以比起來少了幾個pin角,我原本是想要用來替換IV-18 clock的UNO,但是RTC用到SDA SCL(不是接在A4 A5)所以現在還在想要不要接跳線過去(這樣有點醜...),但也因為少了幾個pin,螺絲可以直接鎖上去沒問題,看起來超棒的

最後一點就是,大陸製和美國製的差異最大的地方是那個焊點.......真的有差欸


=====Update=====
我最後在電路加上了一個VR然後用來控制LED的亮度,還有一個Li-ion的充電IC,以及一個USB mini充電孔
整個電路板

充電IC區塊

USB mini 充電孔,我第一次焊接的時候只有接兩個焊點結果一拔就裂了...
最後是乾脆把整殼周圍通通焊接起來

Serial BLE 低功耗螢幕 prototype

 總之是把之前的零件直接焊接在一起,體積可以小一點"看起來"比較像個成品XDDD

不過只有正面像,背面就.....
阿對了,這個鋰電池是1000mah的,拿來測試電池使用時間,我有貼標籤在上面
下一版應該會把Arduino FUSE的BOD改成off,這樣就可以改用CR2032了

2014年5月16日 星期五

Bluetooth Low Energy on Raspberry Pi using Python

之前做的Arduino BLE X Sharp Memory LCD的Display原先溝通是靠主模組去做BLE的連接,我再用一個UART連上主模組丟資料給他
做完是做完了,但是手上唯一一個UART轉USB模組我還需要用阿...總不能一直接在上面,同時無線氣象站Ver 3.0已經把Raspberry pi上面唯一一個UART佔用掉了.
想起來以前曾經買過Blutooth 4.0的USB接收器,剛好發現它可以接收BLE的資料(不是每個4.0都可以收BLE的),所以決定想辦法靠這個把RPI和BLE接起來

於是本文開始~
基本上用的程式語言是Python,用的是http://www.elinux.org/RPi_Bluetooth_LE,BLEPY的library
我需要模組的UART TX的功能
從Datasheet上面可以看到
UART TX的Service UUID為:0000ffe5-0000-1000-8000-00805f9b34fb
 Characteristic UUID為:0000ffe9-0000-1000-8000-00805f9b34fb
基本上設定流程如下:
先用sudo hcitool lescan找BLE裝置

在來就是程式中
p = Peripheral("C4:ED:BA:63:63:53")
先連接上BLE裝置
SERVER = UUID("%08X-0000-1000-8000-00805f9b34fb" % (0x0000ffe5))
CAR = UUID("%08X-0000-1000-8000-00805f9b34fb" % (0x0000ffe9))
再來預先把UUID準備好

p.getServices()
把Service清單拿到
service = p.getServiceByUUID(SERVER)
用UUID開Service
p.getCharacteristics()
拿 Characteristic的清單
ctrl = service.getCharacteristics(CAR) [0]
用UUID開Characteristic

最後用ctrl.write(data)送出資料

顆顆顆,我的模組一次送20byte,更新一個畫面大概40個byte剛剛好

然後有點悲劇的是我已經去露天買了UART轉USB了....
往好處想,我原本的UART轉USB沒有3.3V輸出可以用,這樣可以一個5V一個3.3V了