使用Sony PlayStation 2控制器操控Arduino微電腦(5/2更新:3.3V直流電壓轉換電路)

Bill Porter寫了一個Sony PS2控制器的程式庫給Arduino控制板使用,可以讓Arduino讀取PS2控制器的類比搖桿和所有按鈕的數值與狀態。

PS2搖桿容易取得、按鈕多、價格也不貴(還有廉價的副廠牌可選)。如果你需要替你的Arduino機器人找一個控制器,PS2搖桿是個不錯的選擇。

改造Sony PS2控制器的USB轉接線連接Arduino

不過,PS2控制器採用特殊的介面接頭,沒辦法簡單地和Arduino控制板相連,除了將它的接頭剪斷之外,你可以找一個PS2控制器的轉接線來改造。像這一款Sony PS2手把轉USB的轉接線,有兩個PS2接頭,就很好用:

PS2控制器的USB轉接線

我將其中一個搖桿插座焊下來,再焊接到一個萬用PCB板(洞洞板)接Arduino,如此就不必剪斷PS2搖桿的連接線,而且Arduino還可以連接其他PS2相容的控制器(像吉他英雄的電吉他、太鼓達人打鼓機、跳舞墊、格鬥搖桿…),原本的USB轉接線仍可連接Windows或Mac電腦使用。

焊接PS2控制器的自製Arduino控制板

PlayStation 2控制器的接腳定義

Sony PS2控制器的接腳定義如下,圖說裡面的按鍵英文名稱是Arduino PS2控制器程式庫(按此連結下載)預設的常數名稱:

Sony PlayStation 2控制器的接腳定義

PS2控制器插座與Arduino控制板的連接示範圖(需搭配底下的程式碼):

PS2控制器插座與Arduino控制板的接線圖

3.3V直流電壓轉換電路(5/2更新)

上面自製Arduino控制板上方有兩個電解電容(10µF,耐電壓10V),它們都與電路板背後的AMS1117電壓調節元件相連(位於下圖中間下方),構成5V轉3.3V的電源迴路,提供電力給PS2搖桿。

包含AMS1117電壓調節元件的自製Arduino板

AMS1117是電壓調節IC,它有不同的型號,像AMS1117-3.3可將4.75V~12V的直流輸入,降轉成3.3V輸出(最大輸出電流1A),AMS1117-1.5則可轉換輸出1.5V ,詳細請參閱AMS1117的技術文件(PDF格式)。AMS1117元件的外觀,以及3.3V直流電壓轉換電路如下:

AMS1117元件的外觀,以及3.3V直流電壓轉換電路

Arduino的PS2控制器範例程式

底下的Arduino程式碼修改自PlayStation 2 Controller Arduino Library提供的範例程式,它將在Arduino程式開發工具(IDE)裡的「序列埠監控視窗」顯示PS2控制器的狀態。

延伸閱讀

21 thoughts on “使用Sony PlayStation 2控制器操控Arduino微電腦(5/2更新:3.3V直流電壓轉換電路)

  1. 您好我最近一直在研究用PS2搖桿連接UNO~但我目前都會發生No found 和Unknown~想問一下這種情況有哪些原因
    ,我的搖桿是Sony的有線搖桿,我紅線是插在UNO的5V

    1. hi 雷舞:

      讀了你的留言,發現上文的Arduino與PS2搖桿的連接示意圖有誤,PS2搖桿的電源是3.3V,內文已修正、更新。請重接看看是否能正常運作,謝謝!

      thanks,
      jeffrey

    2. 您好我最近一直在研究用PS2搖桿連接UNO~但我目前都會發生No found ~想問一下這種情況有哪些原因
      ,我的搖桿是無限遙感

  2. 您好,看了您這篇文章有題到電壓調節的IC
    所以想請問一下
    我現在有一顆input voltage 是3.3v的mcu
    想用鋰電池(工作電壓)3.7v來供電
    電池和mcu之間的電路要怎麼接比較合適呢
    (不知道可不可以在這裡問XD)

    1. hi spot:

      有些微控器,像Arduino Mini Pro的工作電壓也是3.3V,但我記得用3.7V也行。
      你可以嘗試串接一個二極體,將電壓降到3.1V左右,看能不能運作。
      如果都不行的話,那就要像上文一樣接一個電壓調節電路。

      have fun!
      jeffrey

  3. 依您的意思,是否直接使用ARDUINO UNO板和PS2連結,只要依上面算下來第四圖即可。因為UNO板有提供3.3V電源給PS2手把。
    而您用洞洞板焊的ARDUINO板要再加一個電壓調整IC才行,這樣說對嗎?謝謝

    1. hi tanj:

      沒錯!可直接連接UNO板子上的3.3V,自製的板子需要額外連接5V電源(我大多採用USB電源供應器)。

      thanks,
      jeffrey

    1. hi huan:

      我用的是Sony原廠的SCPH-10010型號的控制器,使用上沒問題,我也不清楚原因,拍謝~

      thanks,
      jeffrey

  4. 你好
    可以請你把arduino自制板的組件和電路也介紹一下嗎。其它零件我都買了,就那板子不會作,我知道網路上很多,但我不會電子,只會造著作。網路上的電路太清礎我真是看不懂。
    可以麻煩你寄mail給我嗎,想秀給小孩看
    謝謝

    1. hi eddie:

      如果您的目的是為了連接PS2控制把手,建議您參考上文的PS2控制器插座與Arduino控制板的連接示範圖,採用現成的Arduino控制板。

      因為除非您購買的ATmega328p晶片已事先燒錄好bootloader(開機啟動程式),或者知道如何燒錄bootloade,否則自製的Arduino控制板將無法運作。

      自製的Arduino控制板,核心電路很單純,請參閱「Arduino Yún Mini:改造TL-WR703N整合自製Arduino板」這篇文章,或者「用麵包板組裝Arduino微電腦實驗板」的電路,再加上一塊具備DTR接腳的「USB轉TTL序列訊號轉換板」即可。

      thanks,
      jeffrey

  5. 我比較好奇, 線路接法PS2 controller 電源是3.3v, 但Arduino 上電源是5V. 四條控制線是SPI介面, PS2 IO 只有3.3v(MISO)但Arduino IO是輸出5v(CS, MOSI & CLK), 這樣PS2 IC 會不會掛掉?

  6. Hi Jeffrey,

    Thanks.
    Arduino是最近買來玩玩, 看到你網站上有熟悉的應用就測試看看.
    我測試也是可以動作, 不過Arduino 板子上3.3v 電壓會被提升到3.9v(因該是Arduino IO 電壓 5v 倒灌回去的), 不過我用的PS2搖桿 & Arduino都不是原廠的. 我看網路上很多應用都是電源給3.3v IO 用5v, 這樣短期使用不會有問題, 但長期使用一定會壞掉.
    另外此範例有第一行要改成 #include 才正確.

    1. 我查閱到的相關文件,都提到PlayStation第一代和第二代控制器,「應該」都能容許5V訊號輸入——說「應該」是因為沒有官方的技術文件,像這一篇第一代PS把手的文件,也沒看到接5V訊號而故障的貼文,提供你參考。

      或者,你可以使用3.3V的Arduino控制板,就不用擔心這個問題了。

      thanks,
      jeffrey

  7. 請問一下 如果是用fpga版 我要輸入給psx 時脈幾hz 還有我不太懂ATT 和 ACK 能解釋一下嗎?
    我是剛入門的新手

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *