ナイト3のオープンセッションで配布予定の基板

7/20のオープンセッションで『1000円で作るプリント基板』のテーマで実例を通して、プレゼンさせていただく予定です。

無事に基板が届いたので、実際に組み立ててみました。

色が3色(黄色・黒色・赤色)あります。

セッションに参加いただいた方に無料配布予定です。(各色10枚程度)

※基板のみで、実装はありません。(笑)

使える機能としては以下になります。

・IC2接続の小型LCD基板(320円)をコントロール可能

・タクトSW(1つ)、LED(1つ)、電源SW搭載

・単四電池+電池電圧測定可能

・全24Pinの拡張端子

※もちろん、GR-KURUMI用です。

使ってみたいと思っていただけた方は、参加いただければと思います。

尚、LCDを利用するために最低限必要な部品は以下になります。

多分、この3連休で秋葉原に行く方もいらっしゃると思いますので、そのときは部品を調達しておけば無駄がありません。(笑)

※ナイト3終了後は、お店しまっちゃうので。

上記以外にチップ品で以下が必要です。(3216、2012、1608程度)

コンデンサ:1uF x 2、0.1u x 1

抵抗:10K x 2、

2013/07/17画像追加

24Pinをうまく使えば、簡単な実験が楽に行えます。

ピンソケットを表面に取り付けてみたものです。シリアルフルカラーLEDを点灯させてみました。(当日も持参します。)

■2013/08/22 追加

液晶に変な力いれたら割れちゃったので、ご注意ください。

電池の取り外しとか注意しましょう。

■2013/08/23 追加

動作サンプルは、ここからダウンロードできますので、インポートしてお使いください。

http://goo.gl/ukQjz

  • やばい、100人とか集まったら研修センターが・・・

    しかしいいですね。これでセンサーを付けて観測したり、時計にしたり、データフラッシュでロギングしてちょっとした平均値や統計値を表示したり、遊べること満載ですね。

  • ありがとうございます。

    しかし、素人基板なので耐久性とかノイズとか弱いところがあるかもしれませんので、ご了承ください。

    追加情報ですが、私の環境でアルカリ電池で丸2日放置して動いていました。

    (ソフトを工夫すればもっと長持ちするかもしれません。)

  • チップ部品、ゲット済み。1袋に60個以上入っていたので、当日皆さんにお分けします。あつかましく、基板をもらうつもりのAoki。

  • 部品表まで掲載してくれるなんて、なんて親切なんでしょう。ありがとうございます。電池一本で2日間持つってすごい。この大きさなら腕時計できそう・・・

  • みなさんコメントありがとうございます。

    モチベーションがあがってきました。

    派生して応用作品が出てくると楽しいだろうな~。

    プレゼン資料をまとめなくっちゃ!(^_^;)

  • 24PINが引き出せるようになっているのは良いですね。開発に便利そう。

  • ありがとうございます。

    画像を追加しました。

    24pinにソケットを取り付けることで、簡単な実験が手軽に行えます。

  • 昨日はお疲れさまでした。

    そして、ご参加いただいた皆様ありがとうございました。楽しい時間を過ごすことができました。

    時間に追われて、尻切れなかんじになってしまい申し訳ありません。

    もし、組み立て方や使い方でわからない点あれば、ここにコメントしてください。

    このボードのメイン機能はLCDへの表示になります。

    その表示の仕方を全然紹介できていませんが、以下のような書き方が便利です。

    print文の書式でそのまま書けますので数値表示には便利だと思います。

    ※内部で、sprintfしているだけですけどね。

    //■ I2Cの小型LED表示クラス

    GR_I2C_Disp disp;

    ★関数の中

           // 以下のような感じ

           disp.print(0, 0, "LED No.%d", led_index);

    PS.Aokiさん チップ品のご提供ありがとうございました。あんな綺麗に梱包まで驚きました。

  • ナイト3でいただいた基板ですが、昨日組み立てさせていただきました。

    組み立てる前は経験のないチップ部品の半田付けに不安があったのですが、やってみるとそれほどでもありませんでした。逆に、液晶モジュールの1.5mmピッチの端子部分はなんとも思っていなかったのですが、表示をさせてみるまでは、隣のピンとのブリッジしているのではないかと不安でした。

    全体的には工作は楽チンでした。さっすが専用にデザインされた基板であるな、という印象です。

    取り合えず HelloWorld できたのでスケッチを貼っておきます(さって何作るかなあ)。

    gr_sketch.cpp:

    /*GR-KURUMI Sketch Template Version: V1.01*/

    #include <RLduino78.h>

    #include "aqm0802.h"

    aqm0802 lcd(&Wire, 0x7c);

    void setup()

    {

       Wire.begin();

       lcd.init();

       lcd.clear();

       lcd.setPos(0, 0);

       lcd.print("Hello");

       lcd.setPos(3, 1);

       lcd.print("World");

    }

    void loop()

    {

    }

    aqm0802.h:

    #ifndef __AQM0802_H__

    #define __AQM0802_H__

    #include <RLduino78.h>

    #include <Wire.h>

    class aqm0802

    {

       byte slaveAddress;

       TwoWire* pWire;

    private:

       void send(const byte* data, int size, int rs)

       {

           pWire->beginTransmission(slaveAddress >> 1);

           for (int i = 0; i < size; i++) {

               pWire->write(((i < (size - 1)) ? 0x80 : 0x00) | (rs ? 0x40 : 0x00));

               pWire->write(data[i]);

           }

           pWire->endTransmission();

       }

       void sendCommand(byte command)

       {

           send(&command, 1, 0);

       }

       void sendData(byte data)

       {

           send(&data, 1, 1);

       }

       void sendData(const byte* data, int size)

       {

           send(data, size, 1);

       }

    public:

       aqm0802(TwoWire* wire, byte address)

       {

           pWire = wire;

           slaveAddress = address;

       }

       void init();

       void clear();

       void setPos(int x, int y);

       void print(char c);

       void print(const char* s);

    };

    #endif/*__AQM0802_H__*/

    aqm0802.cpp:

    #include "aqm0802.h"

    #include <RLduino78.h>

    void aqm0802::init()

    {

       static const struct {

           byte command;

           unsigned long wait;

       } t[] = {

           {0x38, 27},

           {0x39, 27},

           {0x14, 27},

           {0x70, 27},

           {0x56, 27},

           {0x6c, 200 * 1000},

           {0x38, 27},

           {0x0C, 27},

           {0x01, 1.08 * 1000},

       };

       for (int i = 0; i < int(sizeof(t) / sizeof(*t)); i++) {

           sendCommand(t[i].command);

           delayMicroseconds(t[i].wait);

       }

    }

    void aqm0802::clear()

    {

       sendCommand(0x01);

       delayMicroseconds(1.08 * 1000);

    }

    void aqm0802::setPos(int x, int y)

    {

       sendCommand(0x80 | (y ? 0x40 : 0x00) | x);

       delayMicroseconds(27);

    }

    void aqm0802::print(char c)

    {

       sendData(c);

       delayMicroseconds(27);

    }

    void aqm0802::print(const char* s)

    {

       sendData((const byte*)s, strlen(s));

       delayMicroseconds(27);

    }

  • 組み立て報告ありがとうございます!

    無事に動いてよかったです。藤田さんには、サンプルプログラムなんて必要無かったようですね。(^◇^)

    一つだけ注意点があります。

    秋月さんの320円液晶は、薄いので変な力を入れると割れてしまいます。ご注意ください。(私が経験者です。)

  • サンプルプログラムですが、探してみたのですが、どこかに公開されてあるかも分からなかったので組んでみました。A月(敢えて名を秘す)の分かり難い説明書でなんとかなりました。

  • 液晶は、基板に取り付けてあればそうそう変な力が加わったりはしなさそうな感じですが、カバーでも付けたほうがいいのかな?

  • 追加情報、ありがとうございます!

  • >サンプルプログラムですが、探してみたのですが、どこかに公開されてあるかも分からなかった

    さきほど、本文中に、サンプルプログラムのリンクを張っておきました。

    >変な力が加わったりはしなさそうな感じ

    電池の取り外しで、私はやってしまいました。

    A月さんの電池ボックスで製品によっては電池が外しにくいものがあり、力を入れてぐりぐりやったときに割ってしまったようです。