2012年11月17日 星期六

[DIY]音效卡示波器


學校電子電路實驗室裡,
一組實驗桌上有示波器、訊號產生器、電源供應器以及一台電腦,
隨便估算一下也要十幾萬,
實在不是適合拿來當玩具的工具。

前陣子在找有什麼方法可以簡單量測心博速率時,
發現了阿簡的生物筆記這個網誌,
看到這位maker生物老師介紹了音效卡示波器
怎麼可能不手癢呢?

於是我也有自己的示波器了。


-3.5對RCA接頭一條
用這種3.5對紅白接頭的音源線,
是為了方便同時有兩個channel的input時,
兩個訊號可以有各自的GND可以使用。

-小型探棒、小歐洲夾

小探棒是在電子材料行尋寶的時候發現的,
就跟一般示波器的探棒一樣,前端有個小鉤子

-USB音效卡
為了避免搞壞原本電腦上的音效卡,就用便宜的外接音效卡來當ADC

把3.5對RCA線的RCA端剪下去皮後,
裸露的銅線是地線,而紅線及白線就是兩個channel

放入熱縮套管,把探棒跟端子焊上

將做好的訊號線插到音效卡的麥克風輸入

來看看arduino所輸出的pwm波形吧
波形滿漂亮的阿!!

音效卡示波器測量的頻率最高約只能到20k Hz(就是人類的聽力範圍)
雖然跟真正的示波器差得遠了,但拿來當玩具的也堪用了。

要注意的是直接輸入的訊號不能超過兩伏,
因為音效卡無法承受那麼大的訊號,
要不就是要再修改音效卡的電路

軟體的部份
在Windows底下可以使用soundcard scope
而LINUX環境則可以用xoscope

但我還無法讓xoscope讀到usb音效卡的訊號,
只能使用電腦本身的音效卡,
怕死的我還是不甘願的打開Windows,使用usb音效卡當輸入了。

改天再來做訊號產生器吧。


材料
3.5 to RCA----------20  (元/個)
USB音效卡----------70  (元/個)
探棒-------------------5   (元/個)
小歐洲夾--------------5   (元/個)
熱縮套管
銲錫



2012年10月28日 星期日

[Embedded]當LPCXpresso遇見RTOS



剛比完系上舉辦的機器人避障比賽
比賽前一天完美的通過測試,
正式上場時車子忽然精神錯亂了,
分不清楚東西南北也看不清楚前面有沒有東西。
而arduino的程式碼就一個loop實再不知道到底是誰不乖。

研討會中,光是用LPC1114讓兩個LED各自揮灑出自己生命的光芒,
我就深深體會到讓每個硬體活出自己的生命是件多麼重要的事情。

下午UNO.NET的DEMO太精彩,衝著開啟網頁就是一個簡單的示波器,
就狠下心帶了一塊回家玩。

而簡單一點的,
透過網路跟板子say hello,
就非常足夠展現出當嵌入式系統開始上網之後能夠有多少太有趣的作法。

而後發現,就是機器人競賽的悲慘經驗,
給了我在研討會中能夠馬上有深深體會的契機。

真心感謝那些徹底失敗的經驗。






2012年9月19日 星期三

[Arduino]寫字機




寫字機的機構是參考在畫harmonograph(諧和圖形)的機器來構思的


目前使用兩個可變電阻個別控制一個伺服馬達



繪圖範圍是這個類似扇形的形狀




Arduino程式碼如下:
---------------------------------------------------------------------------
#include
Servo myservo; // create servo object to control a servo
Servo myservo1;
int potpin = 0,potpin1=1; // analog pin used to connect the potentiometer
int val,val1; // variable to read the value from the analog pin
void setup()
{
  myservo.attach(9); // attaches the servo on pin 9 to the servo object
  myservo1.attach(10);
}
void loop()
{
  val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 179, 0); // scale it to use it with the servo (value between 0 and 180)
  val1=analogRead(potpin1);
  val1=map(val1,0,1023,179,0);
  myservo.write(val); // sets the servo position according to the scaled value
 myservo1.write(val1);
 delay(15); // waits for the servo to get there
}

-----------------------------------------------------------





2012年8月9日 星期四

雜項

*Turing Machine 與 von Neumman Machine的差異
*GNU Debugger(gdb)
 * Arduino為八位元的mcu,為何可以辨識256byte以上的空間?
*udev
*Makefile
*.bashrc     (source ~/.bashrc)
*symbolic link  (ln -s ____)
*FTDI Serial Device    (/dev/ttyUSB0)
*Minicom
*UART USART

2012年8月8日 星期三

玩玩範例

#cd ~/...
#make clean
#make 
#make flash (#make burn)


建制開發環境


#mkdir stm32      //建立stm32目錄

#git clone git://github.com/texaue/stlink.hub    //取得stlink工具
#git clone https://github.com/texane/stlink.git

#sudo apt-get install automake     

#cd ~/stlink
#sudo cp 49-stlinkv2.rules /etc/udev/rules.d    //讓一般使用者可以用

#./autogen.sh
#./configure  ///configure stlink
#make   ///

下載
arm-2012.03-56-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
解壓縮到/home/user/arm-2012...
#export PATH=$PATH:/home/terry/stm32/arm-2012.03/bin
#export PATH=$PATH:/home/terry/stm32/stlink/