SeeedStudio ReComputer Odyssey X86J4105 を使ってみた
基本的に User Manual に記載の通りに組めば良い。
注:Arduino互換マイコンを利用するなら、ここでまずファームの書換をしておいた方がいいかも
SeeedStudio ReComputer Odyssey X86J4105 を使ってみた
必要なツール等をインストール。以下、備忘メモ。
ssh |
---|
sudo apt install net-tools sudo apt install ssh sudo vi /etc/ssh/sshd_config sudo service restart ssh |
ntp |
---|
sudo apt install ntp sudo vi /etc/ntp.conf sudo service restart ntp ntpq -p |
rsyslog |
---|
# syslog server にするので sudo apt install rsyslog sudo vi /etc/rsyslog.conf sudo service rsyslog restart sudo vi /etc/logrotate.d/rsyslog sudo service logrotate restart |
rc.local |
---|
# 古い人なので起動スクリプトに rc.local を登録 sudo touch /etc/rc.local sudo chmod 755 /etc/rc.local sudo vi /etc/systemd/system/rc-local.service sudo systemctl enable rc-local |
SeeedStudio ReComputer Odyssey X86J4105 を使ってみた
サンハヤトの実験用電源で 12V を供給、その表示電流を確認。 Desktop稼働、特にアプリなど起動していない状態で、 だいたい 0.24A、ときどき 0.36A 程度 ⇒ 3〜5W 程度。
SeeedStudio ReComputer Odyssey X86J4105 を使ってみた
Odyssey を常時稼働させて軽量サーバを全て任せたいので、 Xilinx license server を立てる。
lmgrd |
---|
sudo apt install lsb-core # ← コレにたどりつけなくてハマった # ライセンスマネージャ用の仮想ユーザを作成 LMUSER=flexlm sudo adduser --system --group --no-create-home $LMUSER # /usr/tmp が無かったら /var/tmp か /tmp にシンボリックリンク if [ ! -e /usr/tmp ] ; then sudo ln -s /var/tmp /usr/tmp ; fi # ログファイルの準備 LMLOGDIR=/var/log/flexlm sudo mkdir $LMLOGDIR sudo chown $LMUSER $LMLOGDIR sudo chgrp $LMUSER $LMLOGDIR sudo chmod g+w $LMLOGDIR vi /etc/logrotate.d/flexlm # FLOATING LISENCEを取得 sudo cp 〔ライセンスファイル〕 /opt/Xilinx # lin_flxlm_V11.14.1.0.zip をダウンロードしてくる cd /opt/Xilinx sudo unzip lin_flxlm_V11.14.1.0.zip sudo chown -R $LMUSER linux_flexlm_v11.14.1.0 sudo chgrp -R $LMUSER linux_flexlm_v11.14.1.0 cd /opt/Xilinx/linux_flexlm_v11.14.1.0/lnx64.o sudo chmod +x lmgrd lmgrd.sh lmutil xilinxd # readme.txt と lmgrd.sh を参考に起動スクリプトを作成 # → 例 start_flexlm.sh # 起動スクリプトを起動時実行にする vi /etc/rc.local |
SeeedStudio ReComputer Odyssey X86J4105 を使ってみた
Odyssey と外部機器の Bluetooth Serial 通信のテスト。 相手はテキトーな Bluetooth Serial デバイスということで、 Microchip RN42-I/RM を搭載した いずみ研的魔改造ミニ四駆 を使った。 魔改造ミニ四駆からタイマー値や入力ポート値などを定期的にSerialで送付し、 それを Odyssey 側で表示する。
これができたので、ArduinoでもFPGAでもテキトーな何かにRN42をつけて UART でやりとりして制御できるやね。
YouTube | YouTube |
Bluetooth Serial 通信の例 |
---|
BTADR=01:23:45:67:89:AB # example ... address of target device sudo apt update sudo apt install bluetooth sudo apt install bluez sudo apt install screen sudo hciconfig sudo hciconfig hci0 down sudo service bluetooth restart sleep 10 sudo hciconfig hci0 up sudo hcitool scan sudo l2ping -c 4 $BTADR sudo hcitool info $BTADR bluetoothctl list bluetoothctl show bluetoothctl --timeout 10 scan on bluetoothctl info $BTADR sodo sdptool browse sudo sdptool records $BTADR sudo sdptool search SP N=1 # rfcomm port number sudo rfcomm bind $N $BTADR sudo rfcomm -a # sudo stty -F /dev/rfcomm$N 115200 cs8 # sudo cat /dev/rfcomm$N sudo screen /dev/rfcomm$N 115200 C-a k sudo rfcomm release $N |
SeeedStudio ReComputer Odyssey X86J4105 を使ってみた
Odyssey を常時稼働の軽量サーバとしておくのはいいとして、 計算マシンは普段は電源を切っておいて必要な時だけ起動したい。 「物理的にスイッチを押す」デバイスにつないでこれを制御すれば リモートで電源オンができる! そこで、SwitchBotという デバイスを接続して制御してみる。
(2021.9 更新) hcitool lescan が効かない。もしかして Ubuntu kernel の問題かも。 bluetoothctl で確認することにする。
(2021.9 更新) OpenWonderLabs さんの switchbot.py を 使うのに当初 Python2 でハマったが、ようやく Python3 に移植した。 結局 gatttool を起動して 'char-write-cmd 0x0016 570100' 等のコマンドを送ってるだけなので、 アドレスとコマンドさえわかればどうにでもなる。 …と思って本家の git 見たら py3 版コード出てるやん… ここの switchbot_py2topy3.py でいけるわ。 ということで python3 switchbot_py2topy3.py で書き直し。
(2022.9 追加) RoButtonのAPIを使うとパスワードをかけられるらしい。(thanks to Osana-sensei)
YouTube | YouTube |
SwitchBot 制御の例 |
---|
SWBT=01:23:45:67:89:AB # example ... SwitchBot bluetooth address sudo apt update sudo apt install bluez sudo apt install python3-pip sudo apt install libbluetooth-dev sudo apt install libboost-python-dev sudo apt install libboost-thread-dev sudo apt install pkg-config python3-dev sudo apt install libglib2.0-dev # other packages which might be required # sudo apt install libusb-dev # sudo apt install libdbus-1-dev # sudo apt install libudev-dev # sudo apt install libbluetooth3-dev # sudo apt install libboost-all-dev # sudo apt install libreadline-dev # sudo apt install libical-dev # sudo apt install python-pexpect # sudo apt install python-dev sudo python3 -m pip install bluepy sudo python3 -m pip install pybluez sudo python3 -m pip install gattlib # dirty care for trouble in installing pybluez/gattlib #? cd /usr/lib/*-linux-gnu* #? sudo ln -s libboost_python37.a libboost_python-py34.a #? sudo ln -s libboost_python37.so libboost_python-py34.so #? sudo apt list --upgradable # check the status of bluetooth I/F hciconfig sudo hciconfig hci0 down sudo service bluetooth restart # sudo service dbus restart # for raspberry pi sleep 10 sudo hciconfig hci0 up # sudo hcitool lescan # depends on Ubuntu kernel? bluetoothctl list bluetoothctl show bluetoothctl --timeout 10 scan on bluetoothctl info $BTADR echo 'do pairing with the devices in desktop GUI menu' # gatt gatttool -b $BTADR -t random --primary gatttool -b $BTADR -t random --characteristics gatttool -b $BTADR -t random --char-desc # SwitchBot sudo apt install git git clone https://github.com/OpenWonderLabs/python-host.git cd python-host sudo python3 ./switchbot_py2topy3.py sudo python3 ./switchbot_py2topy3.py $SWBT Bot Press |
スマホから (Bluetooth 直接ではなく) 公衆回線経由の VPN, SSH 経由で研究室の計算マシンの電源オン⇒起動ができた!
YouTube |
SeeedStudio ReComputer Odyssey X86J4105 を使ってみた
GPIOに何かをつないで入出力したくなるやん。まずはLチカする。 テキトーに部品集めてブレッドボードに LED点灯回路を組む。 テキトーな LEDモジュール を買ってきてもいいし。
何の問題もなくサクッとできた。 取りあえず、低速なインターフェースならなんでもつなげられそうである。
YouTube |
ラズパイ風GPIOの動作確認の例 |
---|
# LED回路と 5V, GND, GPIO341 を接続 cd /sys/class/gpio echo 341 | sudo tee export cd gpio341 echo out | sudo tee direction echo 1 | sudo tee value echo 0 | sudo tee value |
SeeedStudio ReComputer Odyssey X86J4105 を使ってみた
ボード上に Arduino Zero互換マイコン(SAMD21)が載ってるらしい。 ちょっとした制御・入出力にArduinoを多用する人にはありがたい、 単にGPIOとしてだけではなく、計測・処理・制御のループをまるっと任せられるし。
しかし、使ってみようとしたらドハマりした。 マイコン側のファームと Arduino IDE のボードライブラリのバージョンの相性が悪いと、 マイコン側のファームがトラブって /dev/ttyACM0 が見えなくなるらしい。 なんじゃそりゃ。 そうなってしまったら、マイコン(SAMD21)のファームの書換をしなければならない。後述。
YouTube |
helloLED.ino |
---|
void setup() { pinMode(13,OUTPUT); Serial.begin(115200); } void loop() { digitalWrite(13,HIGH); Serial.print("Hello, "); delay(500); digitalWrite(13,LOW); Serial.println("world!"); delay(500); } |
SAMD21_Flash_Documents.pdf
の内容を確認する。
これは、OdysseyにWindowsがインストールされそこで実行する場合と思われる。
ここでは別マシンで書き換えるので、
書き換え 01SAMD21_Bootloader.bat
のみで、
チェック 02SAMD21_Firmware.bat
は不要(できない)と思われる。
最初のPythonのインストールもたぶん要らない。