レビューメディア「ジグソー」


Galileo開発ボード

Galileo開発ボード

Galileo 雑談

Galileoに関してのノウハウや、ハマっている事、気になってる事、みんなで話しましょう。
  • 2014/02/18
  • しばさん
    お騒がせして申し訳ありません。
    PCを何回か再起動してUSBポートを3.0ではなく、2.0の方のポートにGalileoを繋ぐと無事解決しました。
    途中にバスパワーのハブを噛ませても問題なく動きました。

    2014/03/01

  • kilifさん
    リアルタイムクロックを使おうと思ったのですが、検索してもArduino側からアクセスする方法が見つかりません。下記リンクなどではLinuxコマンドを使っていますが、これしかないんでしょうか。
    https://communities.intel.com/message/209423#209423
    イヤホンジャックのRS232CもArduinoのSerialやSerial1で使う方法が見つからないので、機能が多いように見えてもArduinoでは使いにくい感じがします。

    2014/03/02

  • はにゃさん
    kilif さん

    Arduino IDEでコンパイルしているアプリというものが、只の linux用のx86 32bit ELFコードであり、linux ライブラリを使えるということを認識しておけば、いろいろできることがわかります。

    というわけで回答は大きくわけて2つあります。

    方法A 時刻関数群による時刻取得
    方法B RTCアクセス (/dev/rtc への ioctl)による時刻取得

    方法Aは ntpdなりで動作したときにOSの持っている時刻としてちゃんと認識しますが、
    方法Bは CMOS read による実装で、dateコマンドなどで時刻設定しても反映されません。

    お勧めはAです。

    [方法A]
    #include <sys/time.h>

    void setup() {
    char *cmd = "/bin/date 0302034214";
    char buf[64];

    FILE *ptr;
    if ((ptr = popen(cmd, "r")) != NULL)
    {
    while (fgets(buf, 64, ptr) != NULL)
    {
    Serial.print(buf);
    }
    }
    (void) pclose(ptr);

    }

    void loop() {
    char buf[64];
    time_t now;
    struct tm t1;

    now = time(NULL);
    gmtime_r(&now, &t1);
    sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d\r\n",
    t1.tm_year+1900, t1.tm_mon+1, t1.tm_mday,
    t1.tm_hour, t1.tm_min, t1.tm_sec
    );
    Serial.print(buf);
    delay(1000);
    }

    [方法B]
    #define RTC_DEVICE_FILE "/dev/rtc"
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/ioctl.h>
    #include <unistd.h>
    #include <linux/rtc.h>

    void setup()
    {
    // put your setup code here, to run once:
    Serial.begin(9600);
    }

    void loop()
    {
    // put your main code here, to run repeatedly:
    char buf[64];
    int fd;
    struct rtc_time t1 ;

    if( (fd = open( RTC_DEVICE_FILE, O_RDONLY ))< 0 ) {
    Serial.print("OPEN ERROR");
    delay(1000);
    return;
    }
    if( ioctl( fd, RTC_RD_TIME, &t1 ) < 0 ){
    Serial.print("IOCTL ERROR");
    delay(1000);
    return;
    }
    sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d\r\n",
    t1.tm_year+1900, t1.tm_mon+1, t1.tm_mday,
    t1.tm_hour, t1.tm_min, t1.tm_sec
    );
    Serial.print(buf);
    close(fd);

    delay(1000);
    }

    2014/03/02

  • kilifさん
    >はにゃさん
    ありがとうございます。やはりGalileoではLinuxのライブラリを使うのが簡単なんですね。
    AとBの比較でRTCをシステムの時刻と混同していた節があることもわかりました。

    Aの方法ではSetupの最初で時刻を手動で与えているようですが、仰る通りntpdateなどで時刻合わせをしてから使うというのがネットワークが使える環境ではスムーズという理解です。

    ひとまずAのシステム時刻取得で書いていきたいと思います。ありがとうございましたm(__)m

    2014/03/02

  • つきさん
    今回は、雑談レベルの素朴な疑問です。

    ソフトばかりいじっていたので、ハードも手を付けないといけないと思い、
    SainSmart グラフィック液晶 LCD4884 シールドを開けたのですが、
    液晶部分がぽろっと取れました。

    壊したか?加工不良か?と非常に焦りました。

    でも、嵌めこんでUnoに付けるとちゃんと動くんです。
    なぜだかご存知の方いらっしゃいますか?
    液晶の上側にある小さい四角いのが接続しているのでしょうか?

    Galileoではやはりそのままではコンパイルも通りませんでした。

    試したサンプルソース
    https://s3-ap-northeast-1.amazonaws.com/sain-amzn/20/20-0...

    2014/03/03

  • ちばとどさん
    > つき さん
    なぜだかわたしにもわかりませんが、ちゃんと連絡が維持できているから表示できるのでしょうね。
    きれいな表示器ですね。バックライトが液晶部と離れていて、基板ととれてしまっても大丈夫(?)なフレキシブルケーブルレスの仕様がすてきです。ジョグSWもカッコいい。
    SPIですね。わたしもSPIを多用することになるのですが(未着手)、むずかしいですか?
    ハマりそうになったら、相談に乗ってくださいね。

    2014/03/03

  • ヒロ妨さん
    私のボードも、MicroSDカードからの起動ができません。
    SSは、MicroSDカードのファイルです。

    つきさんと同じく、色々SDカードで試してみましたが、起動しません。

    PCと接続して、スケッチの書き込みは出来ますが、電源切るとスケッチが保存されていないので、SDカード廻りだけのトラブルでしょうか?

    ファームのアップデートも実施してあります。

    2014/03/03

  • しばさん
    >>ヒロ妨さん
    この4つのファイル群はSDのルート直下に置かなきゃ起動できないですよ。

    2014/03/03

  • つきさん
    ちばとど さん
    GalileoでLCD4884のサンプルコードを動かすのはあきらめました。
    ヘッダファイルのincludeのネストが深すぎて追えませんでした。
    ジョイスティックはA0で読めるので、作成中です。
    グラフィックLCD部分も自作することにしました。(T^T)
    表示速度がとても心配です。

    2014/03/03

  • ヒロ妨さん
    >>しばさん、すいません
    起動しました、ありがとうございます。

    皆さんお騒がせしました。

    2014/03/03


ZIGSOW にログイン

ZIGSOW会員登録(無料)はこちらから