備忘録

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Edisonボードの Arduinoスケッチ 備忘メモ3

引き続きEdisonボードにおける、Arduinoスケッチに関する話です。

①system()が利用可能
 Arduinoスケッチから、コマンドをコールできます。

- - - - - - - - - - - - - - - - - - - - - - - - - -
void setup() {
 // put your setup code here, to run once:

}

void loop() {
 // put your main code here, to run repeatedly:
 system("echo helloWorld > /dev/ttyMFD2");
 delay(2000);
}

- - - - - - - - - - - - - - - - - - - - - - - - - -

ttyMFD2は、USB直接接続でのシリアルコンソールです。
ちなみに、SSH接続でのシリアルコンソールは、ttyを打って確認したところ、
/dev/pts/1
でした。

上記スケッチを動作させると、2秒おきにUSBシリアルコンソールに
helloworld
と出力されます。

続きを読む
スポンサーサイト

テーマ:ハードウェア - ジャンル:コンピュータ

  1. 2014/11/13(木) 00:23:40|
  2. Intel Edison
  3. | トラックバック:0
  4. | コメント:1

Edisonボードの Arduinoスケッチ 備忘メモ


Edisonボード上で動作しているArduinoスケッチは、
純正のArduinoで動作しているものとは差異があります。

正直、情報が散在している感じで、
把握しきれてはいないのですが、
チェックできた点をメモしておきます。

①Arduinoスケッチと、Edison Yocto Linuxプロセスとの通信1
 フォーラムを見ると、これを見ろ的な感じで、下のURLへ誘導されます。
 https://software.intel.com/en-us/blogs/2014/09/22/efficient-communication-between-arduino-and-linux-native-processes#_ga=1.131696271.1267878252.1412838079 
 正直、今読み解いている段階です。
 
②Arduinoスケッチと、Edison Yocto Linuxプロセスとの通信2
 C言語が利用できるようです。このため、Arduinoスケッチから
 ログや計測結果などを、ファイルに落とすことが可能です。
 
 Arduino IDEのサンプルソースを改造して、
 温度センサの値をファイルへ出力するArduinoスケッチを作成しました。
 [ファイル]→[スケッチの例]→[01.Basics]→[AnalogReadSerial]

 ハードウェア構成は、温度センサとしてLM60DZを利用しました。
 LM60DZのVout → EdisonのArduino拡張ボードのA0へ接続
     Vss → EdisonのArduino拡張ボードの5Vへ接続
     GND → EdisonのArduino拡張ボードのGNDへ接続

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/*
AnalogReadSerial
Reads an analog input on pin 0, prints the result to the serial monitor.
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.
*/
#include <stdio.h>
#include <stdlib.h>

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
// int sensorValue = analogRead(A0);
float sensorValue = analogRead(A0);

float Temperature = ((5 * sensorValue) / 1024) * 100;
Serial.print("Temperature=");
Serial.println(Temperature);

FILE *fp;
if((fp=fopen("AnalogRead.log","a"))==NULL){
fprintf(stderr, "ファイルのオープンに失敗しました.\n");
//return -1;
}
else{
int count = fprintf(fp, "read_senser=%f\n",Temperature);
if ( count < 0 ) {
fprintf(stderr, "ファイルの書込みに失敗しました.\n");
fclose(fp);
}
fclose(fp);
}

//delay(1); // delay in between reads for stability
delay(1000); // delay in between reads for stability
}


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

サンプルスケッチからの主な変更点としては、以下の処理を追加・変更しました。
1. インクルードファイルを追加
  fopenなどのC標準関数を使うために、stdio.h、stdlib.hをインクルード

2. アナログ入力A0から読み込んだ値を、温度へ変換
  analogRead(A0)の戻り値は、A0ピンに入ってくる電圧を10bit(0~1023段階)中の
  いくつであるかを返してきます。(例. 10, 50, 1020など1024までの整数)
  これは、電圧0~5Vの値として対応させるとすると・・・
  analogRead(A0)の戻り値に、(5V/1024)*1000[mV]を掛け合わせると、A0にかかっている電圧[mV]が判ります。
 
  あとはセンサLM35DZのデータシートから、「OUTPUT 0mV+10mV/℃」とのことなので
  A0電圧値を10で割れば、温度(摂氏)へ変換できます。
  このため、式にすると
  (sensorValue * (5/1024) * 1000)/10;
  = ((5 * sensorValue) / 1024) * 100;
  となります

3. ファイル出力
  C言語のファイル出力処理です。
  どこにでもある処理ですので、解説は省きます。

このスケッチで、動作させてみると
Edisonのルート直下に、AnalogRead.logというファイルが作られ、
中身をみると、以下のような温度計測ログが確認できました。
Temperature=28.81
Temperature=28.81
Temperature=28.81
Temperature=29.30

テーマ:ハードウェア - ジャンル:コンピュータ

  1. 2014/11/12(水) 11:27:50|
  2. Intel Edison
  3. | トラックバック:0
  4. | コメント:0

Edisonボード Arduino制御

1. 環境構築

 基本的には、以下からArduino開発環境をダウンロードして、展開するだけです。
 https://communities.intel.com/docs/DOC-23242
 
 ※ 解凍時にエラーがでる時は、7zipやwinrarなどを使うほうが楽です。
 
 圧縮ファイルを展開したら、中の"arduino.exe"を起動させます。
 
 起動したら、[ツール]→[マイコンボード]からIntel Edisonが選択されていること
 [ツール]→[シリアルポート]から、Edisonの仮想COMポートが指定されていることを
 確認したほうが良いです。
 
20141111_01.jpg
20141111_00.jpg


2. 動作確認

 動作確認なので、何を書いても良いのですが、
 Arduino開発環境の
 [ファイル]→[スケッチの例]→[01.Basic]→[Blink]
 あたりを選択するのが楽です。
 
 LEDのアノード(足の長いほう)をArduino拡張ボードのD13に、
 カソード(足の短いほう)を、GNDに接続するだけで確認できます。
 # 本当なら抵抗を挟むべきです。
 
 あとは、、、
 [スケッチ]→[検証・コンパイル]や、ツールバーの[検証]アイコン
 ↓
 コンパイルが正常に完了したことを確認
 ↓
 [マイコンボードに書き込む]
 ↓
 Transfer Complete と表示されるのを確認
 
 正しく動作した場合は、LEDが1秒ごとに点灯と消灯を繰り返します。
 
 ※ Windows7で開発している場合は、[マイコンボードに書き込む]で
   どうしても失敗することがあるようです。
   その時はPCの再起動をするようにと、あった気がします。
   (何かのドキュメントのFAQだったと思うのですが、思い出せません)
   まぁ非常にごく稀らしいので、あんまり気にしていません。
 
3. Arduinoの動作
 Arduinoは、edisonのYocto Linuxの中で、複数のプロセスに渡って動作しているようです。
 このため、Arduino関連の動作をどうやって停止させれば良いか悩みました。
 
 /opt/edison/の中にlauncher.sh、sketch_reset.shでざっくりと制御できるようです。
 
 # Arduinoスケッチの一時停止(再起動すると、また動きます)
  killall -HUP clloader
 
 # Arduinoスケッチの再起動
  /opt/edison/sketch_reset.sh

テーマ:ハードウェア - ジャンル:コンピュータ

  1. 2014/11/11(火) 20:25:35|
  2. Intel Edison
  3. | トラックバック:0
  4. | コメント:0

Edison javascript / Node.js 開発環境セットアップ

前回は、C/C++を利用する場合の開発環境でした。
次は、javascript / Node.jsを利用する場合の開発環境をセットアップします。

基本的には、以下となります。
https://software.intel.com/en-us/installation-for-javascript-intel-xdk-galileo-and-edison

edisonボードの基本的なセットアップは省きます。
Wifi接続が可能になるところまで、やってください。

①開発環境(Intel XDK IoT Edison)のダウンロード

以下のところを開きますと、"Download Go!"がありますので、
ダウンロードします。
https://software.intel.com/en-us/html5/xdk-iot

②XDKインストール
実行ファイル"iot_web_win_master-iot_0075.exe"が
ダウンロードされます。
こちら、XDKのインストーラのようです。

実行しまして、途中保存パスなどを尋ねられますが、
基本的にNext連打で問題ないです。

ちなみに、このインストーラを動かすと
アンチウイルスソフトが動き出す場合があります。
リアルタイムスキャンを一時的に停止させてから、
インストーラを実行させたほうが良いかもしれません。

③XDK起動-アカウントの作成
スタートメニューなりから、XDKを起動させます。
ここからが以外に面倒です。

1.PCにBonjourがインストールされていない場合は、
 まず、下図のようにBonjourのインストールを薦められます。
 私の場合は、インストールしたくなかったので、
 このまま「Dismiss」を押しました。

20141106_00.jpg


2.ログイン
 次に、下のような画面でログインを求められます。
 この時点では、アカウントがないので
 「Need to sign up for an account?」をクリックします。

20141106_01.jpg


3.アカウントの作成
 またまた下のような画面がでてきます。
 任意に入力していきます。

20141106_02.jpg

 
 パスワードは記号を必ず1文字は、
 入れないといけないので面倒です
 
 下部のチェックボックスは、以下の意味です。
  ・使用許諾に同意するか?
  ・ニュースメールを望むか?
  ・Intel Developer Zoneのコミュニティへの参加

4.ログイン
 2.の画面へ戻ります。
 3.で作成したuser nameと、パスワードを入力します。
  (ユーザーネームとかいうくせに、メールアドレスです)

④IoTデバイスの登録
 ログインした後に、やっと開発環境に触れます。
 左ウインドウのstart with a sample Template を選択してみます。

 20141106_06.jpg

20141106_05.jpg

 いくつかサンプルプロジェクトが用意されているようです。
 この中でobboard LED blinkを選択しました。

 プロジェクトが開きますが、
 下のところにIoT Deviceを選択する箇所があります。

 恐らくBonjourをインストールしていれば、
 "Rescan for Devices"で、検出できるのだと思いますが、
 インストールしていないので、手動で登録する必要があります。
 
20141106_10.jpg

 "Add Manual Connection"を選択しました。
 EdisonのIPアドレスとポートの指定を求められます。
 ポートの指定は、とりあえず58888で良いです。
 
 登録しようとすると接続できない旨のエラーが出て、
 Edisonの設定を求められます。 
 表示に従い、Edisonに、開発PCを登録します。
 
 edisonのコンソールから、次の設定を行い
 開発用PCを登録します。
 # xdk-whitelist --add <開発PCのIPアドレス>

20141106_12.jpg


 あとは、開発環境下部の(Build)→Upload→Runとすれば良いらしいです。
 (まだここまで確認できてません)

テーマ:ハードウェア - ジャンル:コンピュータ

  1. 2014/11/07(金) 10:27:59|
  2. Intel Edison
  3. | トラックバック:0
  4. | コメント:0

Edison C/C++開発環境のセットアップ

edisonの開発環境のSetupを行います。

基本的な情報は、以下ですが。。。
https://software.intel.com/en-us/getting-started-for-c-c-plus-plus-eclipse-galileo-and-edison
Edisonボードのセットアップが一通り完了しているのであれば、以下からです。
https://software.intel.com/en-us/node/519930

①開発環境(Eclipse)のダウンロード
以下から、自分のOSにあった開発環境をダウンロードします。
http://iotdk.intel.com/sdk/1.1/
Linuxなら、
iotdk-ide-linux.tar.bz2

Macなら
iotdk-ide-mac.tar.bz2

Windowsなら
iotdk-ide-win.7z

ダウンロードしたら、どこか適当なところへ解凍します。
「7zip、winrarなら拡張パスに対応してますよ。」なんて注釈がありますが、
解凍できれば、何でも良いと思います。

Arduinoの開発環境をダウンロードした時もありましたが、
解凍後のパスが長すぎるのか、エラーが出るときがあります。
パスが長くなってしまうような、解凍場所は良くないかもしれません。

20141105_00.jpg


ちなみに、Explzipなど、圧縮ファイルを一時的にテンポラリに解凍するアプリでも
発生する場合があります。(下の図のArcext.dll フォルダを作成できません。エラー)

この場合は、テンポラリ解凍をせずに、
直接解凍を行うようにすれば、回避できます。


②開発環境の起動

圧縮ファイルを解凍すると、以下のようなフォルダとバッチファイルが解凍されます。
devkit-launcher.batを動かすことで、開発環境(Eclipse)が起動します。

20141105_01.jpg


トラブルシューティングのところに記載がありますが、
Ecliseの起動に、Javaランタイムもエラーが出現する場合がありました。
ランタイムライブラリの64ビット版、32ビット版の不一致によるものが原因らしいですが、
エラーが出たら、JREをインストールしなおしましょう。
https://java.com/ja/download/

③設定
 1.Eclipseのパースペクティブで、Remote System Explorerを開きます。
  右上にまんまの名前のボタンが見えるので、それを押すだけですが、
  ツールバーWindow→open Perspective→Remote System Explorerでも開くことが可能です。
 2.Edisonボードの指定
  Remote Sytemsウインドウが、左上にあるので、そこのgalileoを選択します。
  右下のPropatiesウインドウでHost nameに、edisonボードのIPアドレスを指定します。

④動作確認
 1.パースペクティブで、C/C++を開きます。
 2.4_cpp_onboard_LED_blinkのプロジェクトをビルドして、Runします。
  パスワードの入力を求められるダイアログ出現しますので、入力します。
  秘密鍵の確認も求められます。
 3.以上で、プログラムが動き出し、
  (私の場合は)Arduino拡張ボードの下図の部分が光ります。

20141105_03.jpg
20141105_02.jpg



⑤その他
 edisonのターミナルから、psをすると、
 以下のように"/tmp/4_cpp_onboardLED_blink"にて
 動作していることが判ります。
 
 これをkillしてあげれば停止します。
 
 ちなみにDebugで動作させてあげれば、自動的にgdbから
 プログラムを起動させて、gdbデバッグとなるようです。
 ・・・・が、しょっちゅうエラーにて、デバッグが阻まれます。
 何か抜けているところがあるのだろうか?

テーマ:ハードウェア - ジャンル:コンピュータ

  1. 2014/11/06(木) 11:58:15|
  2. Intel Edison
  3. | トラックバック:1
  4. | コメント:0
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。