本帖最后由 Loclc 于 2013-7-12 01:16 编辑
因為想要嘗試做三軸,所以先做了一個遙控器{:soso_e112:}
第一次畫電路洗板子搞了好久,做出來蠻高興的分享一下
先介紹一下材料:
1. 28P窄IC座 * 1
2. WII雞腿 * 1
3. 22pF陶瓷電容 * 2
4. 16MHz石英震盪器(晶震) * 1
(ps.這邊是用ATMEGA328P-PU做的最小系統用其他的要換一下,具體論壇查一下,蠻多帖子的)
5.ATMEGA328P-PU * 1
6.USB公頭(A型) * 1
7.xBee * 1
(ps.無線模組,能自己替換其他無線模組)
8.2mm 10p排針母座 * 2
(ps.xBee的針腳是2mm間距的,一般用的是2.54mm間距)
9.100uF電解質電容 * 1
第一次洗板子失敗了好幾塊,感光乾膜曝光時間抓不準,顯影出來一直有毛邊,哈
洗失敗的三塊廢版:
最後完成的最小系統:
零件圖:
放進雞腿裏:
蓋上蓋子後:
代碼: - #include <EasyTransfer.h>
- #include <Wiichuck.h>
- #include <Wire.h>
- //********使用腳位********//
- //PWM pin 3 = 3.3v(xbee)
- //Analog pin 2 = GND
- //Analog pin 3 = PWR(Wii)
- //Analog pin 4 = SDA
- //Analog pin 5 = SCL
- //********使用腳位********//
- //********參數設定********//
- int loop_cut=0;
- Wiichuck wii;
- EasyTransfer ET;
- struct SEND_DATA_STRUCTURE{
- int joyx,joyy,accx,accy,accz,butc,butz;
- };
- SEND_DATA_STRUCTURE WiiData;
- void setup() {
- Serial.begin(57600);
- ET.begin(details(WiiData), &Serial);
- wii.init();
- wii.calibrate(); // calibration
- pinMode(3, OUTPUT);
- int VCC=map(3.3, 0, 5, 0, 255);
- analogWrite(3, VCC);
- }
- void loop() {
- if(loop_cut > 100) {
- loop_cut=0;
-
- if (wii.poll()) {
-
- WiiData.joyx=wii.joyX();
- WiiData.joyy=wii.joyY();
- WiiData.accx=wii.accelX();
- WiiData.accy=wii.accelY();
- WiiData.accz=wii.accelZ();
- WiiData.butc=wii.buttonC();
- WiiData.butz=wii.buttonZ();
-
- ET.sendData();
- }
- }
- loop_cut++;
- delay(1);
- }
复制代码
製作注意的地方:
洗PCB的方法就不多說了,我是用覆銅板+感光乾膜做的,做完後塗一層綠油防鏽
WII雞腿需要加工一下,右側缺口量一下IC座大小用電磨切一個大概然後銼刀修邊
內部也要修一下不然東西塞不進去
下方USB口需要再銼深一點不然A型公頭放不下,也可以用小型的頭,做電源用,USB頭要注意+-極,接錯電源會爆衝
中間線不夠長有用軟的電線絞一絞焊起來然後電火布捲起來怕短路到
Layout是用Sprint-Layout50做的,電路圖附在下面,要用的話記得印的時候左右要反過來
ARDUINO函式庫用了EasyTransfer、Wiichuck、Wire三個
xBee用的時候另外用3號腳輸出pwm訊號輸出3.3v並且並聯一個電容穩壓,試過直接接5v電源會超級熱...
然後他只需要接VCC(3.3V)、DOUT(到RX)、DIN(到TX)、GND就可以了
以上,有興趣的可以做一根來玩玩,文件就包一包丟在下面了,裡面有xBee和atmega328的接腳圖,arduino發送與接收和Sprint-Layout的電路圖和雞腿的接線
|