カテゴリー別アーカイブ: BeagleBone

BBBlack_replica1

気になっていた中国版BeagleBone Blackを調べてみた

過去の記事で気になっていた中国版BeagleBone Blackについて調べて見ました。

過去の記事ではベンダー2社あると書きました。よく調べてみると次のようになっています。

番号 ベンダ名 製品名 所在地
1 element14 element14 BeagleBone Black ??
2 Embest Technology Co., Ltd element14 BeagleBone Black Shenzhen
3 Waveshare Electronics BB Black Shenzhen

番号1と2はベンダが異なりますが、製品名は同一です。両社のHPを調べてみると、element14というのは英国の会社であるPremier Farnell が提供するサービスの名前のようです。

また、Embest社のHPを見るとこの会社はPremier Farnell Group (called element14 in APAC)です。つまり両社はPremier Farnell 関連ということになります。

一方、Waveshare Electronicsはというと所在地は2番のEmbestと同じシンセン(中国)です。製品は一見すると別物のようですが、製品紹介ページにあるこの写真を見ると、「Embest」という文字が基板に印刷されています。その下には「element14」という文字が読み取れます。どうやらこの3つの製品は出処は同じようです。

そうなると製造会社はEmbestかWaveShareのどちらかとなります。両社のHPを見る限りではEmbest社が製造会社、Waveshare社はセールス会社と見受けられます。つまり、中国版BeagleBone BlackというのはEmbest社製ということになります(あくまでも推測です)。

このEmbest社から提供されているBeagleBone Blackは現在Revision Cになっています。

スペックは以下の通りです。

Features

  • Processor: TI Sitara AM3358AZCZ100, 1GHz, 2000 MIPS
  • 4GB 8-bit eMMC on-board flash storage (rev. C)
  • SDRAM: 512MB DDR3L 800MHZ
  • 3D graphics accelerator
  • NEON floating-point accelerator
  • 2x PRU 32-bit microcontrollers
  • USB host, Ethernet, HDMI
  • SD/MMC Connector for microSD
  • 2x 46 pin headers
  • Software: Debian, Angstrom, Ubuntu, Android

以前の記事と比較すると、eMMCのサイズが2GBから4GBに変更になっています。CPUもAM3359からAM3358に変わっていますが、スペック的にはほとんど変わりがありません。オリジナルのスペックを見てみると、Revision CではeMMCは4GB、CPUはAM3358になっています。つまり、中国版もオリジナル版のRevision upに合わせたと考えられます。

Revision Cでようやく製品版になったとwikiにあります。その前にはいつかのRevisionが存在しているため、何度も改版されて来たことが分かります。

この中国製BeagleBone Blackはここに書いてありますが

*element14 BeagleBone Black is a BeagleBoard Compliant design available from element14.

オリジナルの互換品です。互換品ですので、オリジナル用のソフトも当然動作します。用意されているソフトはwikiによれば

と非常に豊富です。

中国版BeagleBone Black element14で遊んでみた 番外編(第11回)

これまで中国版BeagleBone Black element14(RevC)を使用し、色々なデバイスを接続してきました。

実はその前に、中国版BeableBone Black (PCB RevB3)で色々試していました。

  • パッケージです。

BBBlack_replica1

  • 基板です。見た感じはelement14と変わりありません。

BBBlack_replica2

  • 基板裏面に「PCB RevB3」とあります。

BBBlack_replica3

LCDモジュールを接続しようとしていたら、突然BeagleBone Blackが起動しなくなりました。症状としては、

ACアダプタを挿入すると「PWR」LEDが一瞬点滅します。電源をUSBに変えても同じ症状です。

シリアルコンソールには何も出力されません。

このときはSDカードをBeagleBone Blackに挿入していたので、それを抜いて電源を入れましたが、変化はありません。BeagleBone BlackはSDカードが挿入していない場合、基板に実装されているeMMCから起動する仕様です。

ですが、SDカードを挿入していなくても何も起動しない状態です。

基板の品質が悪かったのか、それとも私の接続ミスなのか、今となっては原因不明です。

中国版BeagleBone Black element14で遊んでみた 第10回

記念すべき第10回はelement14にLCDタッチパネル接続してみます。

使用したタッチパネルはここにある4.3インチLCDタッチパネルと、タッチパネルI/Fを持ったDVK530 です。

4.3インチLCDタッチパネル

4.3LCD

裏面

4.3LCD_ura

DVK530

DVK530

LCDを接続するコネクタは2つあります。1つは7インチ用、もうひとつは4.3インチ用です。今回は4.3インチ用を使います。写真の「LCD4.3」と書いてなるコネクタです。

DVK530_IF

element14にDV530を合体させた状態です。elemet14の上にDV530が載っています。

element14_DV530

コンソール用のシリアルピンは「DEBUG」ピンにあります。「GND」「RX」「TX」ピンはelement14からそのまま直結されているので、それらにUSBシリアルアダプタを接続します。

DVK530_usbserial

element14 + DV530 4.3インチLCDを接続すると、こんな感じです。

element14+DV530+4.3LCD

接続が完了したら、次はイメージファイルをダウンロードします。

LCDを動作させるには、

http://www.wvshare.com/product/BB-Black-Package-A.htmからイメージファイルをダウンロードします。
このページを下にスクロールするとイメージファイルのリンクがあります。
 element14_lcd_download2
赤線をクリックし、イメージファイルをダウンロードします。
ダウンロードの転送速度が非常に遅いため(数+キロバイト/秒)、ダウンロードに時間がかかります。
  • ダウンロードしたイメージファイルは「IMG.zip」というファイル名です。
  • これを解凍すると「Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.05.24-waveshare.img.7z」というファイルが出来ます。
  • これをまた解凍して出来る「Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.05.24-waveshare.img」がSDカードに書き込むイメージです。
 次はイメージを書き込むSDカードをフォーマットします。

USBアダプタにセットしたマイクロSDカードをPCに差し込むと、HPUSBDisk.exeが認識するので、以下の手順でSDカードをフォーマットします。

element14_format_sd_1
SDカードをフォーマットしたら、先に解凍済みのイメージファイルを書き込みます。
  • その前に書き込みツール「Win32DiskImager-0.9.5-install.exe 」をダウンロードします。
  • ダウンロード先:http://sourceforge.jp/projects/sfnet_win32diskimager/releases/
  • Win32DiskImager-0.9.5-install.exe 」をクリックし、インストールします。
  • 「Win32DiskImager」を起動します。
 element14_write_image_2_sd
以上で、SDカードの準備は完了です。さっそくelement14のSDカードスロットに差し込みます。
  • BBBにイメージフィルを書き込んだSDカードをセットし、起動します。起動時にはBOOTボタンを押しながらACアダプタを挿入します。
  • 電源はACアダプタから供給して下さい。USB電源では起動しませんでした。
 DV530_BOOT_BUTTON
SDから起動すると、以下の画面になります。「Angstorm」というディストリビューションです。
element14_Angstrom1
  • ログインします。ログイン名は「root」です。パスワードはありません。
  • 「test_lcd4.3 」を実行します。
 element14_test_lcd4.3
コマンドの実行が完了したら、Rebootします。
ペンギンが出ました。
element14_4.3LCD1
しばらくすると

element14_4.3LCD2

デスクトップ画面が起動してきます。

element14_4.3LCD3

画面をタッチしてみますが、カーソルが表れません。

element14_4.3LCD4

よく見てみると、画面右にカーソルがあります。

element14_touch_invalid

このままではタッチパネルの座標がずれているので補正します。
シリアルコンソールからrootでログインします。

element14_Angstrom_login

  • ts_calibrateを実行し、タッチパネルの座標を補正します。
  • ただし、GUIが起動している状態でts_calibrateを実行してもうまく補正されないようです。GDM(Gnome Display Manager)プロセスをkill してからts_calibrateを実行します。

element14_kill_GDM

Killするとデスクトップが消えました。

element14_4.3LCD5

次にts_calibrateを実行します。ts_calibrateは5点補正です。4隅+中央をクリックします。

 element14_4.3LCD7

element14_4.3LCD6

  • 5点補正したら、syncコマンドを実行します。これにより/etc/pointcalcがSDカードに書き込まれます。
  • Rebootします。
  • 起動したらタッチした位置にカーソルが来たら成功です。失敗したらts_calibrateからやり直してください。

補正成功の図

element14_4.3LCD8

今回はLCDタッチパネルを接続し、タッチパネルの座標補正まで行いました。皆さんの参考になれれば幸いです。

中国版BeagleBone Black element14で遊んでみた 第9回

前回はGPIOを用いスイッチでLEDを制御しました。今回はADCを使ってLEDを制御してみます。

ADCはAnalog to Digital Converterのことで、日本語で言うとアナログ信号をデジタル信号に変換することです。

今回はアナログ信号の生成元として可変抵抗を使用します。可変抵抗のアナログ信号をelement14に入力し、element14ではそれをデジタル信号に変換しそれをLEDに出力します。可変抵抗の値に連動し、LEDが明暗します。

接続は以下の通りです。

element14_ADC1

LEDは消灯しています。この状態から可変抵抗のつまみを回していきます。

element14_GPIO2

可変抵抗のつまみを回していくとLEDが徐々に明るくなります。

element14_ADC3

つまみを最大にすると、半分よりも明るくなりました。

element14_ADC4

pythonからADCを使用するには、Adafruit_BBIO.ADCクラスを使用します。

中国版BeagleBone Black element14で遊んでみた 第8回

今回は組み込みの世界ではお馴染みのGPIOポートを使用してみます。element14のGPIOポートにスイッチとLEDを接続します。そしてスイッチを押すとLEDが点灯し、離すと消灯するというものです。

接続は以下の通りです。

element14_GPIO1

element14のP9_12(GPIO/IN)をスイッチに接続し、スイッチのON/OFFを検出します。

P8_12(GPIO/OUT)はLEDの点灯/消灯を制御します。

つまり、P9_12(GPIO/IN)の信号がHighになったら、pythonプログラムはP8_12(GPIO/OUT)をHighにすれば良いのです。

pythonからGPIOを制御するにはAdafruite_BBIO.GPIOクラスを使用します。

ではさっそくプログラムを実行します。下記はスイッチを押していない状態です。LEDが消灯しています。

element14_GPIO2

スイッチを押すと、LEDが点灯します。

element14_GPIO3

element14 + pythonでこんなことも簡単に出来てしまいます。

中国版BeagleBone Black element14で遊んでみた 第7回

今回はelement14に「サーボモータ」を接続してみます。「サーボモータ」はラジコンでよく使われる部品です。例えば飛行機ならラダーやエレベータの制御に使用されています。

element14からこのサーボモータを制御するには、PWM信号を使用します。element14ではPWM信号を出力するピンが用意されています。今回はその中からP9_22(eHRPWM0A)を使用します。

サーボモータとelement14との接続は以下のようになります。サーボモータには4.8Vの外部電源を供給しています。

element14_setuzoku

pythonからPWM信号を制御するにはAdafruit_BBIO.PWMクラスを使用します。

このクラスを使用し、シリアルコンソールからモータの駆動角度を指定するプログラムを作成し、実行します。

まずは「0度」の場合です。

element14_0do

次に「5度」を指定します。モータが駆動します。

element14_5do

次に「10度」を指定すると、更に角度が増します。

element14_10do

今回は単純にサーボモータを動作させるだけですが、これは色々なところで応用できそうですね。

中国版BeagleBone Black element14で遊んでみた 第6回

今回はelement14のSPIに温度センサーを接続してみます。

element14のP9_1(GND)、P9_18(SPI0_MOSI)、P9_21(SPI0_MISO)、P9_22(SPI0_SCK)、P9_4(3.3V)を温度センサーに接続します。

element14_spi1

pythonプログラムからSPIを使用するには、「Adafruit_BBIO.SPI」クラスを使用します。

このクラスを使って、温度センサーを読み取るプログラムを作成し、実行します。

温度センサーに触れていない状態です。

element14_spi3  element14_spi_notouch

温度センサーに触れると、画面上の数値が上昇します。SPI経由で温度センサーから温度情報を取得していることが分かります。

element14_spi2   element14_spi_touch

「Adafruit_BBIO.SPI」クラスを使用すると、わずか15行でSPIを制御することが出来ます。素晴らしいですね。

中国版BeagleBone Black element14で遊んでみた 第5回

第5回からはelement14にある各種IOポートを使い、色々なハードを制御してみます。

参考書はもちろん、『「BeagleBone Black」で制御するロボットの作り方』(工学社)です。

本書籍によれば、pythonプログラムでelement14のIOポートを経由し、各種ハードウェアを制御できるとのこと。これまではハードウェア制御と言えば、プログラミング言語はC言語でした。それが今ではpythonという超高級なスクリプト言語で書けるとは驚きです。

ではさっそく実験してみます。今回はI2CポートにLCDモジュールを接続します。そしてpythonプログラムからこのLCDモジュールに文字列を表示させてみます。

 

element14のP9_4(3.3V)、P9_1(GND)、P9_20(I2C2_SDA)、P9_19(I2C2_SCL)をLCDモジュールへ接続します。実際の接続は以下になります。

 

element14_lcd1

pythonプログラムからI2Cを使用するには「Adafruit_I2C」クラスを使用します。

詳しくは『「BeagleBone Black」で制御するロボットの作り方』(工学社)をご覧ください!

そしてpythonプラグラムからLCDモジュールにお決まりの「Hello World!」を表示させた結果が↓です。

element14_lcd2

pythonを利用すると、わずか30行程度のプログラムでLCDモジュールの制御ができます、素晴らしいですね。

中国版BeagleBone Black element14で遊んでみた 第4回

中国版BeagleBone Black element14には有線LANコネクタが1つあります。 今回はこの有線LANを使ってみます。

と書きましたが、私のネットワーク環境は無線LANオンリーです。いつも使用しているノートPCは無線LAN接続です。有線LANコネクタはありますが、通常使いません。この有線LANと無線LANをブリッジさせ、ノートPCとelement14を有線LANで接続してみました。

ノートPCとの接続はこんな感じです。

element14_wiredlan

element14から出ている黒色、青色、黄色のケーブルは第2回で使用したUSBシリアル変換アダプタに接続しています。

element14の電源を入れます。element14が起動したらシリアルコンソールからloginし、ifconfigコマンドを実行します。 element14_ifconfig

element4にIPアドレス 192.168.3.6が割り当てられています。 つまり、 DHCPサーバ→無線LANアクセスポイント→ノートPC(無線)→ノートPC有線→element14 の流れでDHCPサーバからIPアドレスが割り当てられました。 psコマンドでDHCPクライアントが動作している確認します。

psxa_grep dhcp

「udhcpd」というDHCPクライアントが動作していることが分かります。 つまり、有線LAN I/Fである「eth0」はDHCPで動作していることになります。

次に、ノートPCからelemet14へ有線LAN経由でSSH接続します。 TeraTermで「新しい接続」を選択し、SSHを選択します。ホスト名には接続先であるelement14のIPアドレスを指定します。サービスはSSHを、その他の設定はデフォルトのままで、「OK」を押します。

element14_ssh

ログイン認証画面が表示されます。シリアルコンソールでlogin した時と同じユーザ名とパスワードを入力します。

element14_ssh_login

ログイン完了するとプロンプトが表示されます。

element14_ssh_login_ok

「w」コマンドでログイン状況を確認します。

elemetn14_w

「debian」という2つのユーザがログインしています。

上のユーザはtty00つまりシリアルコンソールからのログインです。

下のユーザはFROMに192.168.3.3つまりTeraTermを実行しているWindows PCからのログインです。

第4回は以上です。

次回からは書籍:「BeagleBone Black」で制御するロボットの作り方」をもとに、色々なIOを接続してみたいと思います。

中国版BeagleBone Black element14で遊んでみた 第3回

今回はシリアルコンソールからいくつかコマンドを実行してみます。

element14を起動し、シリアルコンソールにloginプロンプトが表示されます。

element14_login

eMMCに入っているLinux Distributionは「Debian GNU/Linux 7 beaglebone」です。

ログインします。

element14_login2

kernelのバージョンを確認します。「uname -a」と入力します。

内蔵eMMCのkernelバージョンは「3.8.13」です。なかなか新しいバージョンです。

element14_uname

element14には有線LAN I/Fがあります。有線LAN などのネットワークI/Fの状態を確認するコマンドがifconfigです。

「ifconfig」と入力します。

element14_ifconfig

1番最初のI/Fである「eth0」が有線LANです。

2番目のloは「ローカルループバック」と呼ばれる仮想ネットワークI/Fです。これには通常127.0.0.1が割り当てられます。

3番目にある「usb0」というのは、USB-Etherアダプタ用のI/F1でしょうか。192.168.7.2というIPアドレスが割り当てられています。

試しにこのIPアドレスにpingしてみます。

element14_ping_usb0

応答が返ってきます。実在するI/Fなのでしょうか?

再度ifconfigを実行してみます。

element14_ifconfig2

ping しても受信(RX)も送信(TX)も0のままです。もしかすると仮想I/Fかもしれません。

今度は実行しているプロセスを確認します。「ps xa」と入力します。

PID TTY STAT TIME COMMAND
1 ? Ss 0:01 /lib/systemd/systemd
2 ? S 0:00 [kthreadd]
3 ? S 0:00 [ksoftirqd/0]
5 ? S< 0:00 [kworker/0:0H]
7 ? S< 0:00 [kworker/u:0H]
8 ? S 0:00 [migration/0]
9 ? S 0:00 [rcu_bh]
10 ? S 0:01 [rcu_sched]
11 ? S 0:00 [watchdog/0]
12 ? S< 0:00 [khelper]
13 ? S 0:00 [kdevtmpfs]
14 ? S< 0:00 [netns]
16 ? S 0:00 [bdi-default]
17 ? S< 0:00 [kintegrityd]
18 ? S< 0:00 [kblockd]
19 ? S 0:00 [khubd]
20 ? S 0:00 [irq/70-44e0b000]
21 ? S 0:00 [kworker/u:1]
24 ? S 0:00 [irq/7-tps65217]
27 ? S 0:00 [irq/30-4819c000]
36 ? S< 0:00 [rpciod]
38 ? S 0:00 [khungtaskd]
39 ? S 0:00 [kswapd0]
40 ? S 0:00 [fsnotify_mark]
41 ? S< 0:00 [nfsiod]
42 ? S< 0:00 [crypto]
45 ? S< 0:00 [pencrypt]
46 ? S< 0:00 [pdecrypt]
53 ? S< 0:00 [OMAP UART0]
57 ? S< 0:00 [kpsmoused]
58 ? S 0:00 [irq/134-mmc0]
70 ? S< 0:00 [binder]
71 ? S 0:00 [kworker/u:2]
74 ? S 0:00 [mmcqd/1]
75 ? S 0:00 [mmcqd/1boot0]
76 ? S 0:00 [mmcqd/1boot1]
77 ? S< 0:00 [deferwq]
127 ? S< 0:00 [kworker/0:1H]
177 ? S 0:00 [jbd2/mmcblk0p2-]
178 ? S< 0:00 [ext4-dio-unwrit]
205 ? Ss 0:00 /lib/systemd/systemd-journald
226 ? Ss 0:00 /sbin/udevd
313 ? S 0:00 /sbin/udevd
501 ? S 0:00 [flush-179:0]
675 ? Ss 0:00 avahi-daemon: running [beaglebone.local]
688 ? Ss 0:06 /usr/bin/dbus-daemon –system –address=systemd: –no
691 ? Ss 0:00 /usr/sbin/acpid
694 ? Ssl 0:01 /usr/bin/node autorun.js
695 ? Ss 0:00 /sbin/wpa_supplicant -u -s -O /var/run/wpa_supplicant
696 ? Ss 0:00 /lib/systemd/systemd-logind
698 ? Ssl 0:00 /usr/lib/upower/upowerd
699 ? Ssl 0:00 /usr/sbin/console-kit-daemon –no-daemon
700 ? Ssl 0:00 /usr/sbin/rsyslogd -n -c5
728 tty1 Ss+ 0:00 /sbin/agetty tty1 38400
753 ? S 0:00 avahi-daemon: chroot helper
801 ? Sl 0:00 /usr/sbin/lightdm
912 ? S 0:00 /usr/sbin/xrdp
917 ? Ssl 0:00 /usr/lib/policykit-1/polkitd –no-debug
930 tty7 Ss+ 0:02 /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -noliste
932 ? S 0:00 /usr/sbin/xrdp-sesman
941 ? Ss 0:00 /usr/sbin/cron
943 ? Ss 0:00 /usr/sbin/sshd
960 ? Ss 0:00 /usr/sbin/apache2 -k start
967 ? S 0:00 /usr/sbin/apache2 -k start
977 ? Sl 0:00 /usr/sbin/apache2 -k start
980 ? Sl 0:00 /usr/sbin/apache2 -k start
1066 ? S 0:00 [file-storage]
1068 ? Ss 0:00 (agetty)
1071 ? S 0:00 /sbin/udevd
1130 ? Sl 0:00 lightdm –session-child 12 15
1142 ? Ssl 0:00 /usr/bin/lxsession -s LXDE -e LXDE
1162 ? Ss 0:00 /usr/sbin/udhcpd -S /etc/udhcpd.conf
1173 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch –exit-with-s
1176 ? S 0:00 /usr/bin/dbus-launch –exit-with-session x-session-ma
1180 ? Ss 0:00 /usr/bin/dbus-daemon –fork –print-pid 5 –print-add
1188 ? S 0:00 openbox –config-file /home/debian/.config/openbox/lx
1190 ? S 0:04 lxpanel –profile LXDE
1193 ? S 0:01 pcmanfm –desktop –profile LXDE
1198 ? S 0:01 /usr/bin/python -O /usr/share/wicd/gtk/wicd-client.py
1202 ? S 0:11 /usr/bin/python -O /usr/share/wicd/daemon/wicd-daemon
1204 ? Sl 0:00 /usr/lib/notification-daemon/notification-daemon
1227 ? S 0:00 /usr/lib/gvfs/gvfsd
1232 ? S 0:00 /usr/lib/arm-linux-gnueabihf/libmenu-cache1/libexec/m
1235 ? S 0:06 /usr/bin/python -O /usr/share/wicd/daemon/monitor.py
1244 ? S 0:00 /usr/lib/gvfs/gvfs-gdu-volume-monitor
1245 ? Ssl 0:00 /usr/lib/udisks/udisks-daemon –no-debug
1246 ? S 0:00 udisks-daemon: not polling any devices
1249 ? S 0:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
1251 ? Sl 0:00 /usr/lib/gvfs/gvfs-afc-volume-monitor
1427 ? S 0:01 [kworker/0:1]
1430 ttyO0 Ss 0:00 /bin/login —
1513 ttyO0 S 0:00 -bash
1654 ? S 0:00 [kworker/0:0]
1727 ? S 0:00 [kworker/0:2]
1743 ttyO0 R+ 0:00 ps xa

非常に多くのプロセスが実行しています。

今度は「df」コマンドでディスクの使用状況を確認します。

element14_df

内蔵eMMCのサイズは4GBですので、rootfsに割り当てられている3553816KBが内蔵eMMCでしょう。

次回第4回は有線LANでコンソール接続してみます。