pc watchによると、6月27日にGalileo2が提供開始されるらしい。発熱と入出力が改善していれば欲しい。
「Intel Galileo」タグアーカイブ
IntelGalileoのシリアル出力でフリーズ
IntelGalileoでシリアルモニタを開かないでシリアル出力し続けるとフリーズする。
ソース:
int led = 13; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); for(int i=0;i<100;i++){ Serial.println("test"); } }
結果:
IntelGalileo→約30秒間LED点滅してフリーズ
ArduinoUNO R3→フリーズしない
Intel Galileo地震計
Intel Galileo — ADコンバータを接続する
Intel GalileoではI2C液晶モジュールACM1602NIはどうやっても動かなかった。前回の液晶を採用して16bitADコンバータADS1115を接続してみた。CPUの温度が50℃を超えた辺りから動作が怪しくなり遂に書き込みできなくなった。三端子レギュレータに使うヒートシンクとファンを設置すると安定した。温度計とヒートシンクは割り箸で固定した。
サンプリングレートはデフォルトのままで加速度センサーの測定値を液晶に表示した。ノイズは十分低いので計測震度の計算に利用できると思う。次はFFT処理をする。
スケッチ
// I2Cdev : https://github.com/jrowberg/i2cdevlib // LiquidCrystal_I2C : // http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/ #include <Wire.h> #include "ADS1115.h" #include <LiquidCrystal_I2C.h> ADS1115 adc0(ADS1115_DEFAULT_ADDRESS); //ADDR:GND LiquidCrystal_I2C lcd(0x20,8,2);//I2Cアドレス、8行x2 void setup() { Wire.begin(); // I2C開始 adc0.initialize(); // ADS1115 初期化 lcd.init(); // 液晶初期化 adc0.setMode(ADS1115_MODE_SINGLESHOT);//シングルショット・モード adc0.setGain(ADS1115_PGA_4P096);//フルスケール±4.096V } void loop() { adc0.setMultiplexer(ADS1115_MUX_P3_NG);//マルチプレクサ設定 lcd.setCursor(0,0); lcd.print("X:"); lcd.print(adc0.getConversion());//変換 adc0.setMultiplexer(ADS1115_MUX_P2_NG); lcd.print(" "); lcd.setCursor(8,0); lcd.print("Y:"); lcd.print(adc0.getConversion()); adc0.setMultiplexer(ADS1115_MUX_P1_NG); lcd.print(" "); lcd.setCursor(0,1); lcd.print("Z:"); lcd.print(adc0.getConversion()); lcd.print(" "); delay(10); //待ち }
//I2Cdev.cpp //min関数が無いと言われるので加える int min(int a,int b){ if(a<b){return a;}else{return b;} }
Intel Galileo — I/Oエキスパンダで液晶
前回Intel GalileoのGPIOは遅い事が分かった。I/Oが遅いと何かと不便なのでI/Oエクスパンダを利用して高速化してみる。
aitendoのGPIOエキスパンダ(I2C)に載ってるPCF8574はArduinoのライブラリにもあるので良さそう。ライブラリのインストールはLiquidCrystal_I2C.zipを展開して
arduinoのディレクトリ→libraries
の中に配置すればよい。
スケッチ
#include <Wire.h> //I2C用 #include <LiquidCrystal_I2C.h> //I2C液晶用 LiquidCrystal_I2C lcd(0x20,8,2); // アドレス0x20 8x2行 void setup() { lcd.init(); // 液晶初期化 lcd.backlight(); // P7にLEDのon/offが出力できるらしい } void loop() { while(true){ lcd.clear(); //画面消去 lcd.print("Hello,"); //表示 lcd.setCursor(2,1); //位置 lcd.print("world."); //表示 for (int i=0; i<5; i++){ //点滅 lcd.noDisplay(); //隠す delay(200); //遅らせる lcd.display(); //現す delay(200); } } }
十分な速さになった。
Intel Galileo — 液晶表示
Intel Galileoに秋月で売ってる液晶モジュールを接続した。
液晶のサンプルスケッチはIntel Galileoでは動かない。lcd.initで初期化する必要があるらしい。lcd.initの引数の意味は不明。
#include <LiquidCrystal.h>//LCDライブラリ LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//rs,enable,d4.d5,d6,d7 void setup() { lcd.init(1,2,255,3,4,5,6,7,0,0,0,0);//??,rs,??,enable,d4.d5,d6,d7... lcd.begin(8, 2);//画面サイズ } void loop() { while(true){ lcd.clear();//画面消去 lcd.print("Hello,");//表示 lcd.setCursor(2,1);//位置 lcd.print("world.");//表示 for (int i=0; i<5; i++){//点滅 lcd.noDisplay();//隠す delay(10);//遅らせる lcd.display();//現す delay(10); } } }
噂通り表示が遅い。
Intel Galileo — UARTで接続2
USBシリアル変換を負論理にすれば接続できる事を確認する実験。
千石などで売っているUSBシリアル変換アダプターと74HC04で接続できた。Galileoに載ってるMAX3232は3.3V動作でFT232RLも3.3V動作可能なので電圧調整は省いた。
Intel Galileo — UARTで接続
Intel GalileoにUARTで接続したい。
調べるとUARTコネクタに接続するには
PCのシリアルポート→ミニジャック
USBポート→USB-RS232C変換モジュール→ミニジャック
というパターンが多い。UARTならUSB-UART変換モジュールが使えるなー、と思って試したが動かなかった。RS232Cは負論理だった。
PCにはRS232C端子は無いし変換モジュールも無いが、マザーボードにはシリアルポートコネクタがあるので直接引き出す事にした。
オーディオケーブルとピンヘッダを適度な大きさに切る。
先端をRX(PCへIN)、次をTX(PCからOUT)、外側をGNDにハンダ付けする。
ちなみにUSBシリアル変換と74HC04を組み合わせるとRS232Cもどきの通信ができるらしい。
Intel Galileo — LED点滅まで
LED点滅までの手順をメモ。
付属のACアダプタを接続する。DC5V2A必須らしい。
ソフトウェアをダウンロードする。
intelのサイト→Intel Galileo Arduino SW 1.5.3 on Windows→ダウンロード
C:¥などに展開する。ドキュメントフォルダ等に何気なく展開するとにエラーが出る。
エラーが出たらキャンセルして展開途中のファイルを削除してC:¥など出来るだけ短い名前のディレクトリに展開する。Program Filesに展開するとコンパイル時にエラーとなる。コンパイラがスペース文字を含んだファイル名に対応していないらしい。(このエラーが出た場合はファイル→終了で閉じてarduino-1.5.3フォルダごとスペース文字を含まない別の場所に移動する。)
ボードのUSB CLIENTと書かれたmicroB USBコネクタをPCに接続する。
デバイスドライバをインストールする。
デバイスマネージャ→ほかのデバイス→Gadget Serial v2.4→
プロパティ→ドライバ→ドライバの更新→
コンピューターを参照してドライバーソフトウェアを検索します→
次の場所でドライバーソフトウェアを検索します→
C:¥arduino-1.5.3¥hardware¥arduino¥x86¥tools→次へ→
このデバイスソフトウェアをインストールしますか?→
インストール→閉じる
arduinoを起動する
C:¥arduino-1.5.3¥arduino.exe→開く
ファームウェアを更新
ヘルプ→Firmware Update→はい
サンプルスケッチを書き込んで実行する
ファイル→スケッチの例→01.Basic→Blink→ファイル→マイコンボードに書き込む
ボード上のledが点滅する。
Intel Galileoで地震計を作りたい
Intel Galileoで地震計を作りたい。
Arduinoで地震計を作ろうと思い調べたところ、Arduinoは加速度センサの値をPCに送る用途には使えそうだけどメモリ容量が不足していて震度を計算するのは困難に思えた。一方intel galileoはArduino互換でパワフルらしいので地震計を作れると思う。
intel galileoはUSBホストの機能があるようだが、周辺機器はUSBで接続するよりI2CやSPIで接続する方がArduinoっぽいような気がする。ADコンバータAD7298も載ってるのだけど、用途が違う感じ。ADS1115はI2C接続でArduino用のスケッチもあるのでこれを使いたい。
intel galileoの配線図を見てレギュレーターの様子を観察してみる。3.3V端子はDC/DCコンバータTPS652510の出力が来ていて他のデバイスと共用でノイズが凄そう。5V端子はACアダプタ直通だけどADP150を通して3.3Vをセンサーに供給すれば良いと思う。
ADS1115のI2Cが接続できれば加速度のサンプリングは問題ないだろう。震度計算は手頃なfftライブラリが見つからないけど移植してなんとかしよう。
結果の出力は液晶表示が無難かも。前回の巨大7セグ表示が思ったほどインパクトが無かったので何か刺激が欲しい。どうしよう。