RoBoard魔人的機器人日誌

2017/1/5

[紙盒系列] 小型機台 EduCake boy

聽說有看板娘讚數會比較多?


在兩年前,本魔還在玩RoBoard時都是使用Windows XP來作開發,
當時原本想做個螢幕架所以用紙盒做了一個RoBoard假筆電。

材料表:盒子,RoBoard,小螢幕,電池,線材,萬能的膠帶

而最近因為用86Duino做了Zaibo
所以想說來延續這個傳(ㄕㄡˇ)統(ㄘㄢˊ)的手工藝,
把86Duino改造成一個小型紙盒機台EduCake boy。



我們來看看影片!
材料表:不知何時出現在桌上的紙盒,EduCake,USB Display,行動電源,拿來當比例尺的初音
沒錯,比起 RoBoard 假筆電這次似乎更偷工減料了XD,
客官且慢,別只看外表,要看她的內在阿!

沒錯,在裡面安裝的可是 Linux 呢!
咦?你說 RoBoard 假筆電也有展示 Linux ?
是沒錯...,但在 EduCake boy 上可是搭載了 USB Display 呢!
咦?你說這個 Zaibo 就看過了?

那上面的搖桿按鍵總該沒看過了吧!
這是本魔利用 mraa 搭配 python-evdev 來將外部訊號轉換為鍵盤訊號,
沒錯,不管你要拉哪個IO都可以,因為是利用內部程式來轉換為鍵盤訊號的!
所以你想用gyro或各種Sensor來當輸入源都是沒問題的!(哪天本魔有閒再搞這個來玩XD)
而且所有按鍵都支援了,所以在Linux上能run的模擬器基本上都可以用這個方式來玩喔!

那我就來簡單的教大家如何架設這個環境吧!
首先到86Duino官網按照教學安裝L86duntu系統
使用USB Display的方法上次也講過了所以這裡也不做太多說明,
若是不想執行後進入桌面程式只需將 run_usbdisp.sh 內的 lightdm 指令註解掉即可。

接著我們先來安裝python-evdev,這是用來模擬外部輸入訊號用的,
其實只需要依照官方教學安裝即可!

$ apt-get install python-dev python-pip gcc
$ apt-get install linux-headers-$(uname -r)

安裝後就可以來Run Run看我的測試程式可不可以使用囉!

import mraa
import time

from evdev import UInput, ecodes as e

ui = UInput()
io0 = mraa.Gpio(13)
io0.dir(mraa.DIR_IN)
io1 = mraa.Gpio(12)
io1.dir(mraa.DIR_IN)
io2 = mraa.Gpio(11)
io2.dir(mraa.DIR_IN)
io3 = mraa.Gpio(10)
io3.dir(mraa.DIR_IN)
while True:
 x = mraa.Aio(5)
 y = mraa.Aio(4)
 if (x.read() < 100):
  ui.write(e.EV_KEY, e.KEY_UP, 1)
 if (x.read() > 900):
  ui.write(e.EV_KEY, e.KEY_LEFT, 1)
 if (y.read() < 100):
  ui.write(e.EV_KEY, e.KEY_RIGHT, 1)
 if (y.read() > 900):
  ui.write(e.EV_KEY, e.KEY_DOWN, 1)
 
 if (x.read() > 100 and x.read() < 900):
  ui.write(e.EV_KEY, e.KEY_UP, 0)
  ui.write(e.EV_KEY, e.KEY_LEFT, 0)
 if (y.read() > 100 and y.read() < 900):
  ui.write(e.EV_KEY, e.KEY_DOWN, 0)
  ui.write(e.EV_KEY, e.KEY_RIGHT, 0)
  
 if (io0.read()):
  ui.write(e.EV_KEY, e.KEY_Z, 1)
 else:
  ui.write(e.EV_KEY, e.KEY_Z, 0)
 
 if (io1.read()):
  ui.write(e.EV_KEY, e.KEY_X, 1)
 else:
  ui.write(e.EV_KEY, e.KEY_X, 0)
  
 if (io2.read()):
  ui.write(e.EV_KEY, e.KEY_ESC, 1)
 else:
  ui.write(e.EV_KEY, e.KEY_ESC, 0)
  
 if (io3.read()):
  ui.write(e.EV_KEY, e.KEY_ENTER, 1)
 else:
  ui.write(e.EV_KEY, e.KEY_ENTER, 0)
 time.sleep(.1)
 ui.syn()
ui.close()



對了!
記得在使用前將 MRAA package 所安裝的路徑加入 PYTHONPATH 之中:

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages


完成後將按鈕與搖桿接到對應腳位就可以做出和我影片中相同的效果了!
然而你可以寫一個autorun的shell script在開機後自動啟動這些程式喔!
至於模擬器與遊戲的rom檔嘛...,
相信這點東西難不倒大家的XDDD。

最後附上github表示本魔滿滿的大平(ㄔㄥˊ)台(一ˋ)
https://github.com/RoBoardGod/EduCake_boy
Share:
技術提供:Blogger.

追蹤者