Hatena::ブログ(Diary)

INAの日記 このページをアンテナに追加 RSSフィード

本当の生活ログ(別ページ)

Error : RSSが取得できませんでした。 RSS

2016-07-25 スイッチサイエンスのMicro:bit互換機を使ってみた

スイッチサイエンスのMicro:bit互換機を使ってみた

11:26 |  スイッチサイエンスのMicro:bit互換機を使ってみたを含むブックマーク

BBCが小学生に無料で配っているらしいMicro:bit互換機を手に入れたので、一通り触ってみたレビューです

本家: https://www.microbit.co.uk/

BBC-micro-bit

flickr

互換機

Micro:bitはイギリスBBCが作ったもので、4cm×5cmの大きさのボードで、中身はCortexM0。 電池USBで動作するmbedな開発ボード。

Arduinombedを使ったことがある人なら、そういうものの一種だと思ってもらえると。

ただし、micro:bitにはデフォルトでたくさんの入出力がついている。

特徴的な下側のエッジコネクタには、ワニ口クリップがつけやすいように大きなコネクタが5つついている(3つがGPIO、3V,GND)。小さいコネクタもそれぞれれGPIOとつながっている。

f:id:inajob:20160725111045p:image

f:id:inajob:20160725111046p:image

本家Micro:bitはイギリス仕様のため、日本の技適は通っていない。

そこでこの互換機です。

http://mag.switch-science.com/tag/microbit/

あのスイッチサイエンスが作っているものです。

モニターを募集していたので、ダメもとで応募したらなんと当選した。 ということで、僕の手元にMicro:bitの互換機がやってきたということです。

どうやらこれは来たる8/6, 8/7のMakerFairTokyoにて販売されるらしいので、この記事を見てほしくなった人は、予定と財布の準備をしておくとよいと思います。

Getting Started

プログラミングから実行までの流れがとてもスムーズだったので、その感動をお届けしようと思います。(micto:bitを持っていなくてもシミュレーターで遊べるので、暇な人は手順を追ってみてください)

まずはこちらにアクセス

https://www.microbit.co.uk/app/


「Create Code」をクリックすると、何でプログラムを書くか選ぶことができます。

BlockEditorをクリックします。

それっぽい画面が出てきます。

あとは、ブロックを並べていきます。

試しにこんな感じ。

f:id:inajob:20160725111047p:image

run」をクリックすると、シミュレーションが動きます。


f:id:inajob:20160725111049p:image

(実際はアニメーションしています)


よさそうなら、いよいよ書き込み。

「complie」をクリック おもむろにファイルのダウンロードが始まります。


f:id:inajob:20160725111843j:image

(実際はアニメーションしています)


すごい簡単!


ざっと感想

LED、加速度センサー、地磁気センサー、ボタン、BLE、などが初めからついているArduinoという感じ。

BlockEditorも簡単。とにかく手軽に始められる電子工作環境だと思いました。

Arduinoでもツールを組み合わせれば近いことはできるけれども、それがデフォルトでいきなり使えるというところがMicro:bitの強みかなと思いました。( https://developer.mbed.org/platforms/Microbit/ )

また中身はmbedなので、普通にmbedIDEを使ってより複雑なプログラムを作ることもできるため、一通り遊んで、さらに踏み込んだことがやりたくなったときも、そのまま使い続けることができるというのも良いと思いました。

ともかく何もかも簡単なので、プロトタイピングはまずMicro:bitでやってみる、というのはありだと思いました。

トラックバック - http://d.hatena.ne.jp/inajob/20160725

2016-06-18 ESP-WROOM-02を使って、温度湿度をWifi経由で取得してみた

ESP-WROOM-02を使って、温度湿度をWifi経由で取得してみた

12:38 |  ESP-WROOM-02を使って、温度湿度をWifi経由で取得してみたを含むブックマーク

これはなに?

最近じめじめしてきたので、部屋の温度・湿度を記録してみたくなりました。

せっかくなのでセンサーとWifiボードを直結して、自動的に記録をするシステムにしてみました。

Wifi経由でサーバ送信し、サーバ側ではinfluxDBとgrafanaを用意し可視化しました。

f:id:inajob:20160615231530p:image

材料

最近はこういうものを作るのはすごく簡単になってます。

まずはWifiを簡単に扱えるマイコンボード

ESP-WROOM-02

http://cerevo.shop-pro.jp?pid=91592223

秋月やスイッチサイエンスでも買うことができます。

ブレイクアウトボード付きで1000円くらい。

今回はこのボードをArduinoとして利用します。

ちょうどこの前のIoT合宿で使い方を調べていたので、さくっと使い始めることができました。

http://d.hatena.ne.jp/inajob/20160606


それから温度センサ

AM2320

http://www.akizukidenshi.com/catalog/g/gM-08663/

こちらは秋月のちょっといいやつ600円

有名なものらしくArduinoライブラリが公開されていたので、細かいことを気にせずに利用できそう。

計画

まずはESP-WROOM-02の使い方を調べます。

https://tech-blog.cerevo.com/archives/859/

配線はこれでよさそう

ESP-WROOM-02ファームウェアを書き換えることでArduino的に扱えるようになるとのことなのでそれも調べてみる。

http://deviceplus.jp/hobby/entry034/

この辺が参考になりそう。

書き込みの設定もいくつかある模様

http://qiita.com/umi_kappa/items/ced90c258a14be165291

この辺りを参考にした。

Wifiは電気を食うのでDeepSleepモードというものについても調べてみた

http://qiita.com/azusa9/items/65a5c3772c41631b5ca1


温度センサーの使いかた発見

https://www.sglabs.jp/esp-wroom-02-sensor/

http://d.hatena.ne.jp/high-sai/20160409/1460245483

さて、材料はそろったかな

試しに使ってみる。

https://tech-blog.cerevo.com/archives/859/

ここに従って回路を組み立てて、ATコマンドでWeb上のコンテンツをとってくるというのを試した。

続いてArduinoとして使えるというのを試すためにArduinoIDEからLチカのプログラムを流し込む。

最後に組み合わせ技で、Web上のファイルを読み込み、その中身に応じてLEDの光をつけたり消したりする、というのを作りました。

ここまでは肩慣らし。

設計

紙の上でばばばっと

(図中でESP-WROOM-02となっているところはCEREVOのブレイクアウトボードです。 http://cerevo.shop-pro.jp?pid=91592223

f:id:inajob:20160615222558j:image

この温度センサは1本の線で制御できるらしいということで、こんな感じ。

プログラム


#include <Arduino.h>

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <ESP8266HTTPClient.h>

#include <DHT.h>

#define USE_SERIAL Serial

ESP8266WiFiMulti WiFiMulti;
DHT dht(4, DHT22);

void setup() {

    USE_SERIAL.begin(115200);
   // USE_SERIAL.setDebugOutput(true);

    USE_SERIAL.println();
    USE_SERIAL.println();
    USE_SERIAL.println();

    for(uint8_t t = 4; t > 0; t--) {
        USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
        USE_SERIAL.flush();
        delay(1000);
    }

    WiFiMulti.addAP("<SSID>", "<PASSWORD>");

}

String getDHTString(){
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if(isnan(h) || isnan(t)){
    USE_SERIAL.print("failed to read from dht sensor!");
    USE_SERIAL.flush();
    return "";
  }
  return "t=" + String(t) + "&h=" + String(h);
}

void loop() {
    // wait for WiFi connection
    if((WiFiMulti.run() == WL_CONNECTED)) {

        HTTPClient http;

        USE_SERIAL.print("[HTTP] begin...\n");
        // configure traged server and url
        http.begin("http://なんかエンドポイント?" + getDHTString()); //HTTP

        USE_SERIAL.print("[HTTP] GET...\n");
        // start connection and send HTTP header
        int httpCode = http.GET();

        // httpCode will be negative on error
        if(httpCode > 0) {
            // HTTP header has been send and Server response header has been handled
            USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);

            // file found at server
            if(httpCode == HTTP_CODE_OK) {
                String payload = http.getString();
                USE_SERIAL.println(payload);
            }
        } else {
            USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
        }

        http.end();
        ESP.deepSleep(30 * 1000 * 1000 , WAKE_RF_DEFAULT); // 30sec 
        delay(10000);
    }

    delay(10000);
}

こんな感じです。

組み立て

はんだ付けして、空いていたZiplocに入れてみる。


外見はこんなかんじ

f:id:inajob:20160612153728j:image

中はこんなの

f:id:inajob:20160615230505j:image

電源は単三電池4本

基板は秋月C基板に これまた秋月のアクリルパネルをねじで固定して背面がショートするのを防いでいます。

アクリルパネル: http://akizukidenshi.com/catalog/g/gP-09853/



サーバ

今回は自分でサーバ側も書きます。

手抜きでPHPでさっと作る。

たまたまサーバにはInfluxdbとGrafhanaがはいっていたのでそこに流し込みます。

<?php
error_log("get t=" . $_GET["t"] . " h=" . $_GET["h"]);

require_once __DIR__ . '/vendor/autoload.php';

define('INFLUXDB_HOST', 'INFLUXDBサーバ');
define('INFLUXDB_PORT', INFLUXDBポート);
define('INFLUXDB_NAME', 'DBの名前');
define('INFLUXDB_USER', 'ユーザ名');
define('INFLUXDB_PASS', 'パスワード');

$client = new InfluxDB\Client(INFLUXDB_HOST, INFLUXDB_PORT);
$db = $client->selectDB('INFLUXDB_NAME');
$points = array(
  new InfluxDB\Point(
    'temperature',
    (float)$_GET['t']
  ),
  new InfluxDB\Point(
    'humidity',
    (float)$_GET['h']
  ),
);
try {
  $result = $db->writePoints($points, InfluxDB\Database::PRECISION_SECONDS);
  #var_dump($result);
  error_log(var_export($result, true));
} catch (Exception $e) {
  error_log(var_export($e, true));
}
error_log("success");

?>

グラフだせた

いい感じ!

f:id:inajob:20160615223319p:image

電池が切れた

3日目にして電池が切れました。 30s間隔で動かしてこんなもん(起動などがあるので実質1分間隔くらい)

ということで30分間隔にすると30倍持つということかな? であれば90日持つか?

これから実験してみよう


いったんまとめ

2000円くらいでセンサ+Wifiのこういうガジェットが作れるというのは、なかなか面白いです。

次はにおいセンサーに挑戦したいな と思いつつ、しばらく運用してみます。

obiwan999obiwan999 2016/06/27 14:17 こんにちは
以前、こちらの3Dプリンタの記事を見つけていらい刺激を受け、自分でも3Dプリンターを作ってみました。
自分のホームページにリンクを貼らせていただきいのですが、よろしいでしょうか?

inajobinajob 2016/07/04 09:10 obiwan999さま
返事が遅くなってすみません。
ぜひぜひリンク宜しくお願いします。(後で良いのでホームページ教えてください)

のんびり記事を書いていくのでこれからも宜しくお願いします。

2016-06-06 IoT合宿に参加してきた

IoT合宿に参加してきた

19:18 | IoT合宿に参加してきたを含むブックマーク

未踏な皆様と電子工作合宿をしてきました。

僕は参加者の中ではそこそこ電子工作をしている人だったので、レクチャーを聞きながら自分の作業をしてました。

僕のやったことですが・・

アンプ回路の確認

結構昔から作っている電子楽器「RakuChord」のアンプをどうしようかなと、、

過去作ってきたRakuChordのアンプをどうやって作ったかもう忘れてしまったので、基板をみながら、回路図を書くという「逆アセンブル」みたいなことをしていました。

ちなみにアンプはLM386を使っています

http://akizukidenshi.com/catalog/g/gI-00022/

f:id:inajob:20160606190540j:image

RaspberryPiのGPIOを使って音を鳴らす

レクチャーでGPIOをやっていたので、勢い余って、高速にHigh/Lowを切り替えて音を鳴らしてみました。

出来るもんですね。

I2C液晶をRaspberryPiにつなげる

今回のレクチャーはI2Cの話だったので、僕も一緒にやってみた。

以前Arduinoにつないだことのあるaitendoの液晶をRaspberryPiから制御した。

f:id:inajob:20160606191108j:image

液晶はこれを使いました。: http://www.aitendo.com/product/13239

i2cdetectコマンドの返事がなんだかおかしいけど、一応動きました。

申し訳程度に為替インターネットから取得して表示するというのをやってみた。

555を使ってみる

マイコンを使わずに音を鳴らせてみたいということで、定番の555タイマーICを使って音を鳴らす回路を作ってみた。

その前にはLEDの点滅も作ってみた。

参考:http://pc.watch.impress.co.jp/docs/2008/1023/musashino015.htm

http://akizukidenshi.com/catalog/g/gI-08344/

キーボードを使ったおもちゃの整備

いま作成中のキーボードを使った電子工作ソフトウェア部分を改良して動作速度を向上させました。

ちゃんと出来上がったら適当にお披露目しようと思います。


ESP-WROOM-02に火を入れる

Arduinoとして使うというのをやってみた。

単純にWebサーバ上にあるファイルの中身を見てLEDをつける、消すを制御できるようなものを試作した。IoT!

f:id:inajob:20160606190748j:image

ゲーム機を見せびらかす

以前作ったゲーム機を見せびらかしました。

http://d.hatena.ne.jp/inajob/20160322

感想

スイッチサイエンスの置き部品( https://www.switch-science.com/info/aidstation/ )と、電子工作に詳しい人がいる環境での電子工作合宿は、とても快適でした。

ちょっと詰まったところで、誰かに聞きに行くと、誰かしらが教えてくれるというとても良い環境でした。

あと、会場の椅子がすこし良い感じの椅子で、会議室にありがちな尻が痛い現象にならずに終始快適に作業が出来ました。

参加者の中には、電子工作は全くの素人という人もいましたが、合宿が終わる頃にはそこそこ出来るようになっているようでした。

電子工作は基本の「キ」の部分の障壁が高いため、こういう機会がないとなかなか始めることが難しいと思います。

かく言う僕も大学の頃に一晩かけて先輩に教えてもらって、そこからコツコツといろいろ(変なものを)作ってきました。

また次回の予定もあるらしいので、電子工作に興味はあるけれどもやったことのない未踏関係者は要チェック!です!

2016-05-10 SpaceAppChallengeに参加してtracerouteを可視化した話 このエントリーを含むブックマーク

 先に作ったものの紹介

「RouteVisualized+」

f:id:inajob:20160510211550p:image


NASAは様々な地球に関するオープンデータを公開しています。

私達は、それに「インターネットの情報」を追加しようということに挑戦しました。

このWebアプリケーションを利用することで、インターネットの経路とNASAの公開するデータを重ねて見ることが出来ます。

こちらから見ることが出来ます→http://inajob.github.io/VisualizedEarth/view.html

エンジニア向けに書くと要はtracerouteの可視化です)

以下製作の記録です

最近Hackathon参加記録となりつつある、このブログですが、今回はSpaceAppChallengeに参加してきました。

NASA主催の世界で同時に開催されるというこのイベント、宇宙をテーマということで、いつもの”なんでもあり”のHackathonとは少し違った感じ。

今回のメンバーは

ばりーさんとNくんは良くHackathonに出ているらしく、今回はそれのチームに僕が誘われた感じ。

ばりーさんとは以前のHack Day 2016で一緒のチームに出場し、そのつながりです。

何を隠そう、このメンバー全員同じ会社です。(普段の業務ではほとんど関わりないですが・・)

Input Day

正直宇宙、なんたるか、全く知らない僕たちです。

まずは事前に行われるInput Dayに参加することにしました。

f:id:inajob:20160510211703p:image

平日の夜に開催されたのですが、NくんとKくんは都合が合わず、私とばりーさんで参加しました。

すごい宇宙の話を聞かされて置いてきぼりにされないかな?と心配でしたが、そんなことはなく、BluemixやAzure、IDCFなどの紹介がメインのイベントでした。

よく見るとSpaceAppChallengeはHack Day 2016の運営メンバーが多く、Hackathonの流れも勝手知ったるHack Dayと似た感じだったので一安心。

また、NASAからのテーマというものが与えられ、しかも運営の方々が丁寧に翻訳してくださったものがあり、それを参考にして進めていくことにしました。

調べるとJAXANASAはかなり大量のデータをオープンデータとして公開しており、それらを見るだけでも面白かったです。

打ち合わせの日々

と言ってもこのHackathon、参加は抽選方式で、開催の1週間前に参加の合否が分かるというスタイルでした。

そのため、参加が決まってからいよいよ何をやるか考えねば、という感じで打ち合わせを始めた我々にはあまり打ち合わせをする時間がありません・・

平日は仕事してるので、夜にちょっと集まっては、何を作ろうかと話していました。

SpaceAppChallenge当日

朝10時から会場に集まり、チームビルディングなどが行われ、実際の開発は12時から開始ということでした。

ということで、すでにチームが決まっている我々は、この時間を使って何を作るかを詰めることにしました。

SpaceAppChallengeTokyoは土曜日の12時から翌日の12時までの24時間が開発期間でした。

さて何を作るか・・・

そこでふと、”インターネットのデータもNASAのデータと重ねて見てみたい” と思いそのアイデアをみんなに話したところ、面白い ということで、それを作ることになりました。

可視化するのは、みんな大好きtracerouteです。

パソコンからWebページを見ている時にどのような経路でパケット相手サーバまで到達しているかを、地図上で見られるようなものをつくろうというものです。

そうと決まれば材料探しです。

IPから地図の緯度経度を対応づけるデータは、非商用で利用ができるGeoLite( http://dev.maxmind.com/ja/geolite2/ )を使うことにしました。

システムの見た目の部分はブラウザ上で動くWebアプリとして実装することにしました。

まず4人で役割分担です

  • 僕と、N君はフロントの見た目の部分
  • ばりーさんとK君はバックエンドのDBや実際にtracerouteを実行する部分

という分担にしました

地図の表示などはライブラリを使うのが良いだろうということで、はじめのうちしばらくは地図ライブラリを調べていました。

  • OpenLayers3

http://openlayers.org/

多機能そう・資料も多い

使ってみるとCanvasに描画しており非常に重い

  • DataMaps

http://datamaps.github.io/

d3.jsを使った地図情報表示ライブラリ

SVGベースで軽快に動くが、表現力が低い

  • leaflet.js

http://leafletjs.com/

SVGベースで動き、表現力も十分

ということで、色々とライブラリを変えながら、最終的にleaflet.jsを使うことにしました。

地図は初めはOpenStreetMapなどのラスター形式の地図を使っていたのですが、色などのカスタマイズがやりにくかったため、最終的にNaturalEarchが提供しているgeojson形式の国境線のデータを利用しました。( https://geojson-maps.kyd.com.au/ )

leafletはgeojsonの形式のファイルを読み込む機能があり難なく世界地図を表示することができました。

国境データはそのまま描画すると、イギリスが中心となった世界地図なのですが、日本でよく見る形の東アジアが中心になった地図の方がわかりやすいということで、ロード時に座標をずらして読み込むようにしました。

NASAのデータはWMSというタイルマップを返すAPI形式のものを利用することにしました。

これもleafletが対応していたため、URLレイヤー名を指定すると、NASAのデータを地図の上に表示することができました。

(たとえばここ、 かなり面白そうなデータがあります http://sedac.ciesin.columbia.edu/maps/services

f:id:inajob:20160511120650j:image

フロントエンドはこうやって僕がJavaScriptライブラリなどで、一応動くものを作り、N君が色やレイアウトを調整するという流れで作業しました。

作業はgitbucketのプライベートリポジトリを介して行いました。git便利

バックエンドはあまり関わっていないので詳しい流れはわからないのですが、ばりーさんがtracerouteをしたデータをDBに溜め込む部分を作り、K君がその結果とGeoLiteの緯度経度を紐付けて、APIで返す部分を作っていたようです。

GeoLiteのデータはIPのサブネットと緯度経度のペアの情報が大量にあるということで、IDCFのサーバ上で、これらのデータをSQLでjoinしまくるのが遅いというのが問題になっていたようです。

このHackathonは夜中もぶっ通しで開発してもいいよ、というものだったのですが、もう我々も歳だということで、一度は帰ることに・・

土曜日の夜の段階では、見た目はなんとなく動いていて、NASAのデータ、世界地図、ダミーの経路を表示できるようになっていました。バックエンドは、SQL上では返したいデータが取り出せるという状態でした。

僕は帰って4時間ほど寝て、ほぼ始発に乗って会場へ、、

日曜日は仕上げということで、クォリティを高めたり、プレゼン資料を作ったりしていました。

APIが完成すると、ちょっと気になるあのサイトの経路を調べて、遊ぶことができるようになりました。

Akamaiすごいなとか、ここは自社のデータセンター通ってるな とかを地図上で見れるのは思いの外面白かったです。

yahoo.comへの経路、シンガポールらしい(あと経由しているルーターは全部yahoo.comのものみたい)

f:id:inajob:20160510212257p:image

ニュージーランドのサイトを見てみる

f:id:inajob:20160510212847p:image

あのサイトはオランダから?

f:id:inajob:20160510212454p:image


またNASAのデータを重ねることで、人口が少ないこんなところをインターネットが通っている!とか、風の強いこんなところにデータセンターがあるっぽい ということを見ることができました。

f:id:inajob:20160510212952p:image

12時で開発は終了し、その後発表です。

ガチ技術のものから、斜め上の発想のものまで、様々な作品がありました。

僕たちの作品は見た目はかなりいいクォリティだったと自負しています。

が、宇宙との関わりの部分が弱かったため、賞はもらえず・・

しかし多くの方から

  • 完成度が高い
  • あのサイトの経路が見てみたい

などコメントをいただくことができました。

また、僕たちエンジニアはtracerouteなんて出来て当たり前と思っていましたが、見に来てくださった方の中には、こんな情報が公開情報なのか!と驚く方もいらっしゃって、エンジニアしか体験できていない、インターネットの中身の部分を、一般の方にも感じてもらえるきっかけになったかな? と思っています。 (宇宙関係無いけど・・)

雰囲気構成図

f:id:inajob:20160510223542p:image

まとめ

今回はかなりスムーズに進めることができ、完成度もまずまずで、堅実なものづくりができたかなと思っています。

ただ、今回のようなテーマのあるHackathonでは、もう少しテーマに寄り添った作品にしたほうがよかったなというのが少し心残りです。

また社会人4人で1週間でネタを考える、というのもそもそも集まるのも難しく、次回はもっと時間を確保するか、 またはオンラインでうまくネタ出しをする方法を考えていきたいなと思いました。


SpaceAppChallengeは有志の方が運営をしているようで、宇宙愛の強さを感じました。

IT業界で宇宙のこと大好きな人、結構多いと思っているので、我こそは!と思う方は是非次回にでも参加してみると良いと思います。

f:id:inajob:20160511120651j:image

トラックバック - http://d.hatena.ne.jp/inajob/20160510

2016-03-22

Gamebuinoつくってみた

09:24 | Gamebuinoつくってみたを含むブックマーク

Gamebuinoざっくり紹介

GamebuinoはArduinoを利用して作られたゲーム機とその環境です。

http://gamebuino.com/

(下記画像は公式ページのものです)

f:id:inajob:20160318230130p:image

Arduinoに加えて下記の機能が搭載されています

ハードウェアはまぁ書いてあるとおりの機能です。ソフトウェアがすばらしくてですね、、

ブートローダ

Arduinoブートローダーとほぼ同じなのですが

  • シリアル経由の書き込み(これはArduinoと同じ)
  • SDカード経由の書き込み
  • Cボタンが押された状態で起動した場合にLOADER.HEXを書き込む

という機能があります。

これにより、パソコンが無くても違うプログラムに書き換えることが出来ます。

ビルドしたバイナリSDカードに入れておくことで、事実上ほぼ無限のゲームを入れ替えながら遊ぶことができます。

まるでゲーム機みたい!

ゲーム開発用ライブラリ

ゲームづくりにおいて大切なのは良いライブラリです。

ゲームが作りたいのに、円を書くアルゴリズムや直線をひくアルゴリズムの作成に時間を割かれたくありません。

GamebuinoにはよくできたSDKが提供されており、様々な機能が簡単に呼び出せる関数にまとめられています。

一例を以下に列挙

  • 名前入力などに使える文字入力(keyboard)
  • ちょっとした情報をユーザに伝えるpopup(アニメーション付きで表示されます)
  • ちょっとした当たり判定(physics)
  • ボタン周りの処理(キーリピートなど)
  • 8bitサウンドのソフトウェア音源とトラックの管理
  • 各種図形の描画ルーチン
  • 数種類の大きさのアルファベットのフォント

とてもすばらしい

Gamebuinoつくってみた


f:id:inajob:20160318230402j:image


インベーダーも動きました!

f:id:inajob:20160318230832j:image


さてさて こういう構成で作れば良いのか

お値段はざっとこんな感じ

LCD500円 有機ELなら倍くらい
FT232RL秋月のモジュールが1000円くらい(これは使いまわせるので1つあればOK)
Atmega328250円
Speaker100円(なにかしらのおもちゃから取り出してもOK)
ボタン10個で100円くらい(良いボタンは1個100円くらいする)
レギュレーター1個30円くらい、周辺にコンデンサが必要、これは1個10円もしない
基板150円
SDカードスロット250円
その他もろもろ

2500円くらいかな

もし2個めを作るならFT232RLは共用できるので1500円くらいです

FT232RL

FT232RLからはシリアル通信線でAtmega328と接続します。

TX,RXという送りの線と受信の線です。それと書き込み時にリセットを書けるための線を接続します。

シリアル接続は予め転送レートを決めておいて、そのクロックでデータを送り合う方式です。

Button

ボタンは全部で7つあります。

それぞれをAtmega328と接続します。

プルアップはAtmega328の内部で行うので不要です。

LCD

LCDとAtmega328はSPIというインターフェースで接続します。

  • CS(chip select)
  • MOSI(master out, serial in)
  • MISO(moster in, serial out)
  • SCK(serial clock)

SPI

SPIはMasterとSlaveという役割を割り振ります。MasterはAtmega328などのCPUで、Slaveは液晶などの周辺機器であることが多いです。

MasterがSCKからクロック信号(HIGH,LOWを切り替え続ける)を送り、そのクロックに合わせてMOSIを通してMasterからSlaveに、MISOを通してSlaveからMasterにデータを送ります。

また複数のSlaveを接続する際にピンを消費しないように、MOSI,MISO,SCKのピンは他のSlaveと共有することが出来ます。CSがHIGHのものだけがその信号をやり取り出来るようになっています。

Speaker

スピーカーはトランジスタを介して接続します。

たぶん今回の場合は小さいスピーカなので無くても大丈夫だと思います。

SDCard

SDカードとはSPIで接続します。

これはLCDと線を共有します。

ただしCSだけは違う配線で接続します。SPICSを使ってどの接続が有効かどうかを切り替えるのです。

  • CS(chip select)
  • MOSI(master out, serial in)
  • MISO(moster in, serial out)
  • SCK(serial clock)
レギュレーター

今回使うLCDSDカードは3.3Vで動作します。

そのためには乾電池3本から得られる4.5Vを3.3Vにレギュレーターで降圧する必要があります。

普通のArduinoは5Vで動作しますが、Gamebuinoは3.3Vで動作します。

組み上げる

Gamebuinoのサイトを参考に結線します。

本当はブレッドボードにまず組んで、動作を確認してからユニバーサル基板を使うのが良いです。


ブートローダーの書き込み

ブートローダーの書き込みは少し面倒くさいです。

専用の書き込み器を使うか、既に作られてあるArduinoを利用するか、FT232RLを使う方法がありますが、どれも煩雑です。

ココに良い資料があるのでこの方法を使いました。

http://make.kosakalab.com/arduino/bootloader/


エンクロージャー

とりあえず配線の裏側を守るために木の板を用意してネジとナットで基板に固定します。

f:id:inajob:20160318231204j:image

遊ぼう!

SDカードにHEXファイルを入れておくことで、複数のゲームを切り替えて遊ぶことが出来ます。ただしSDカードSDHCではなく「SD」カードである必要があります。

これは2G以下のSDカードのことです。

今やあまり売っていないですが、なんとか調達しましょう。

http://gamebuino.com/wiki/index.php?title=Games

ゲームはここにたくさんあるので、ダウンロードしましょう。

液晶がGamebuinoとは別の場合は、液晶の命令セットが異なるためゲームを再度ビルドする必要があります。

まとめ

Gamebuinoは良いので、自分で作るか買ってみてください!

まずは公式ページにアクアセス! → http://gamebuino.com/

プロフィール

inajob

inajob

JavaScriptから電子工作まで何でもやります!

RSS(ぜひ登録を!)

RSS
Other Contents
カレンダー
<< 2016/08 >>
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
最近のコメント
この日記のはてなブックマーク数
ページビュー
381644