2016年2月29日月曜日

ラズベリーパイ4周年記念にRaspberry Pi3 Model B debut!

ラズベリーパイが4周年記念ということでRaspberryZero出て半年も立たずに次も出るのRaspberryPi3が出てきた。
今回の目玉は、、、

・Wifi 2.4GHz搭載
 →今まで占有してたUSBポートが1つ空きます。

・Bluetooth4.1搭載
 →Bluetooth対応キーボードやマウスがそのまま流用できそう

・CPUがCortex-A7からCortex-A53へアップグレード
 単純に言えば64Bit対応になった事が一番大きい。
 どの程度の性能かというと初期のAtomより少し高く肩を並べるくらい。

 変化点を見ていくと、、、
 →Cortex-A53とは、2012年にbig.LITTLEコアで省エネと高パフォーマンスを両立しようと
   打ち出された省エネ側のCPUコアである。
 →SIMD命令のNEONに対応などがされている。
 →64Bit命令セットを対応することで、64Bitバイナリを実行するときは、
  32Bit命令セットの負債を捨ててよりシンプルな構成になるので若干の速度アップがあるかも。
 →アーキテクチャ側の変更でインオーダー処理している部分が今までは同時2発行が
   限定的だったが、限定的でなくなるので処理性能がアップする。(若干)

・消費電力がアップ
 →推奨が5V2.5Aなので、タブレット以上の電源が必要になりそう。


性能も上がって無線機能も標準搭載して値段は据え置き。
また5000円代で買えるのが嬉しい。

販売はRSコンポーネントかPimoroniで行うのでZEROが入手出来ないけど
手元にあるRPiのバージョンアップという名目で1つどうでしょうか。


個人的には
RaspberryPi3 もしくは
RaspberryPi Zero + ESP6288(Wifi+GPIO) or ESP32(Wifi+BTLE) という
メインCPUにRPI 、UI側を担当 
サブCPUにESP5288で通信処理もお任せするような構成もいいかなと思う。

2016年2月26日金曜日

[Windows10]VAIO内臓のBluetoothが使えない

・BluetoothドライバがWindows10に対応していない。
 VAIOで使われているBluetoothのICは「qualcomm atheros AR3012」というもので
調べてみるとWindows8.1までしか対応していないようです。


・対応していなくても使いたい。
 ネットで調べてみると、BluetoothアダプタとBluetooth Suiteという2種類のものがあるようです。

最悪Bluetoothアダプタの方を対応しておけば最低限のBluetoothプロトコルは使えるようになります。
A2DPなどのプロトコルに対応するにはBluetooth Suiteが対応していなければならないようです。

調べてみると、ここで非公式で配布しているようです。

 http://alldrivers.ucoz.net/news/qualcomm_atheros_ar301x_ar9462_qca9565_bluetooth_suite_version_10_0_1_4/2015-11-01-786

※非対応のドライバを使うので十分確認してから、自己責任でお願いします。


まずは、「プログラムのアンインストールまたは変更」で既にインストール済みのQualComm Atheros Bluetooth Suiteを削除します。

次にダウンロードしてきたSuiteをインストールします。

これでおしまい。


これで一応ですが、使えるようになりました。


2016年2月15日月曜日

ロボットアームのXYZ座標の計算式


去年からやっているロボットアームの位置制御でX,Y,Z座標からモーターの角度を計算する式で一番シンプルなものができたのでメモ。



条件:水平方向に動くモータが1つ、垂直方向に動くモーターが2個あるロボットアームのとき

それぞれの部位の名称を

 ・付け根を肩(垂直軸Base、水平軸Shoulder)、
 ・中間を肘(Elbow)、
 ・先端を手首(Wrist)

かつ腕の長さが等分であると定義する。


上記条件において、手首WristのX、Y、Z座標を与えた時それぞれの角度を求める式。(決定版)

///
/// ShoulderとElbowの長さが一緒なら二等辺三角形で計算式を解く
///
///
///
///
public void Calc(double x, double y, double z)
{
var h = Math.Sqrt(x * x + y * y);
var k = Math.Sqrt(h * h + z * z);
var pa = Math.Atan(z / h);
var pb = Math.Acos(k / 2.0);

X = x;
Y = y;
Z = z;
ThetaBase = Math.Atan(y / x);
ThetaShoulder = pa + pb;
ThetaElbow = -2.0 * pb;
}

腕の関節の長さが一緒なら二等辺三角形になる。
そうすることで何が嬉しいかというと、2等辺三角形の公式が使えるので
辺の長さを無視する事が出来る。
つまり、XYZ座標から斜辺kを求めれば全ての角度が計算できる事を意味している。


ロボットをこれからやろうと思った人はぜひ、参考にしてください。

2016年2月11日木曜日

Android Stdioでアプリ開発(1)

AndroidStudioで本格的にアプリを作ろうと思い、
備忘録としてメモを残しておく。

今回、第1回は開発環境の使い方から画面の作り方までをまとめておく。


【ダウンロード&インストール】
 ここではダウンロードURLだけ紹介。

 ・AndroidStdio本体のダウンロードURL
  http://developer.android.com/intl/ja/sdk/index.html

 
 インストールして新規プロジェクトを作ったらまずやることは、
 左メニューにあるソリューションのコンボックスを「Project Files」にする。



【覚えておくべきフォルダー構成】

app
 java
  com.example.name.myapplication
    ココにソースファイル
  res
    drawable
      画像ファイルを置く
    layout
      画面レイアウトファイル


この3か所。
・ソースファイルと画面レイアウトは別フォルダになっている。
・画像データはdrawableフォルダに格納する。

この2点を覚えておく。


【覚えておくと楽なショートカット】
・CTRL+F9 ・・・ビルド
・SHIFT+F10 ・・・実行
・ALT+ENTER ・・・足りないimportやコンストラクタ処理を作成
・CTRL+O ・・・Overloadメソッドを作成

これだけ覚えておけばある程度エディタを使いこなせると思う。



【画面の作り方】
 スマホアプリは画面が小さいこともあってデスクトップアプリのように自由なレイアウトを行う事ができない。
 ページごとにテーマを決めて、画面遷移を作って、
 画面だけのモックアップアプリを作ることがスマホアプリの開発の流れになる。
 これが世間でいうUI/UXといわれる部分である。
 良いアプリでも似たアプリが沢山あるから、
 使いにくいアプリはユーザーに捨てられるという事なんでしょうね。

レイアウトにある要素は以下の7つ。
・Layouts
・Widgets
・Text Fields
・Containers
・Date&Time
・Expert
・Custom

レイアウトは、横一列、縦一列を広く設置するのに使う。
また、レイアウトの中に部品を設置できたり、
Viewクラス経由でオリジナルの画面を作ったりすることができる。
なのでレイアウトはとても重要なので覚えておくべき。


ざっくりとした画面の作り方。
1.レイアウトを設置する。
  プロパティ画面で使う項目は、
   layout:width
   layout:height
   gravity
   id

2.画面割りが決まったら「id」を付けていく。
  idを付けないとプログラムから操作できない。


【Viewクラスの作り方】
1.ソースコードを新規作成したら、

 import android.view.View;

を追加する。

2.クラスにViewを継承すること。

 public class exampleView extends View {
     ...
 }

3.コンストラクタはクラス名にカーソルを置いて、ALT+Kボタンを押すとコンストラクタを自動生成できる。


4.OnDrawなどを作りたいときはCTRL+Oボタンを押す。


【レイアウトに反映する方法】
 MainActivityクラスを開いて、コンストラクタ内にコードを書く。
手順は、作ったViewクラスを生成したらレイアウトに登録する。

 exampleView view = exampleView(this);
  LinearLayout layout = (LinearLayout)findViewById(R.id.exampleLayout);
  layout.addView(view);


コードはこんな感じ。
Viewを生成して張り付けるレイアウトを取ってきて、ビューを登録する。
やりたい事3つで3行。
これはおまじないみたいに覚えておこう。


余談。
「R」←これはリソースのRと思ってOK。
画面レイアウトのIDや画像ファイルなどを参照する場合に使うので
リソース使いたいなあーって思ったら「R」


第2回へ続く。

Androider