Hatena::ブログ(Diary)

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

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

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

2016-09-24 GamebuinoとArduboy このエントリーを含むブックマーク

GamebuinoをOLEDで作ってみた

ずいぶん前に作っていたのだけれど、ブログに書いていなかったので。

巷ではArduboyが盛り上がっていますが、Gamebuinoもなかなかイケてます。

項目ArduboyGamebuino
ディスプレイOLED 128*64FSTN 84*48
SDカードなしあり
携帯性抜群そこそこ

ディスプレイはArduboyが優れており、SDカードからのゲームロードという点でGamebuinoが優れています。

そこで、、

「Gamebuinoの回路で、ディスプレイをOLED128*64にしたもの」

を作ってみることにしました。

要はGamebuinoとArduboyの良いところを真似たゲーム機です。

ディスプレイはこれを使います http://www.aitendo.com/product/7273 SPIなので、ほかの液晶と同様に接続すればOK

あとは以前記事を書いた ここ http://d.hatena.ne.jp/inajob/20160322 と同じです。

また、今回は前回より小型化を目指しており、そのために単4電池1本で動くようにしました。昇圧回路が思ったより場所をとったので、単四電池2本でも大して変わらなかったかも・・

まぁそんなこんなで、完成品です。

Arduboyよりも一回り小さいディスプレイですが、反応速度やコントラストはさすがOLEDといったところです。

f:id:inajob:20160924102110j:image

f:id:inajob:20160924102111j:image

GamebuinoからArduboyへの移植用のライブラリを作ってみた

こうして作ったハードウェアはGamebuinoとよく似ていますが、ディスプレイが違うため、ソースコードに手を入れる必要があります。

その手を加えたものがこちら。

https://github.com/inajob/Gamebuino/blob/master/for-arduboy.md

このライブラリを使ってGamebuinoのゲームをコンパイルすることで、このハードウェア用のバイナリを作ることができます。

またおまけとして、純正Arduboy用のバイナリを作る機能も付けました。

Arduboyはついにスイッチサイエンスでも販売されるようで、これからますます流行ってくるのではないかと思います。

https://www.switch-science.com/catalog/2880/

f:id:inajob:20160914221353j:image

このライブラリを使ってGamebuinoのゲームをArduboy用にコンパイルして遊んでもらえればと思います。

また、腕に覚えのある方は、秋葉原を回って、僕みたいにGamebuinoとArduboyの良いとこどりゲーム機を作ってみてはいかがでしょうか?

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

2016-09-15 未踏IoT合宿(2回目)に参加してきた このエントリーを含むブックマーク

未踏IoT合宿(2回目)に参加してきた

前回( http://d.hatena.ne.jp/inajob/20160606 )に引き続き、IoT合宿に参加してきました。

未踏経験者Onlyで、かつ初心者歓迎というこの合宿。

しかもとても電子工作に詳しい未踏の先輩が教えてくれる会!

僕はちょっとは電子工作できるということで、何かあればお手伝いだったりをやりつつ、日ごろ気になっていたことを周りの人たちに聞いたりしてました。


やったこと

マイクテスト

f:id:inajob:20160914220748j:image

この合宿では、スイッチサイエンスのエイドステーション( https://www.switch-science.com/info/aidstation/ )を導入していて、面白そうな部品はその場で買うことができます。

ということで、マイクを使って電子楽器の演奏に幅を持たせられないかという実験を、、

と思ったけど、少しやってたらどうもマイクを壊してしまったみたい・・ つらい・・

でもオペアンプを使ったピークホールド回路のイメージはついたので、いつかリベンジしたい。

ゲーム機の修復

f:id:inajob:20160914220128j:image

以前作ったゲーム機の配線が断線してしまったので、修復。

この合宿では温度調整付きのはんだごてが利用できたので、使ってみました。 (やはり僕が中学生のころ作ったはんだごてとは違う)

WifiでWebと連動するスイッチ。

f:id:inajob:20160914221352p:image

冷蔵庫の納豆がなくなったら、スイッチを押してLEDを点灯させ、 そのLEDの状態がWebからも見られる

という仕組みをESP8266で作ってみました。

WebからもLEDを操作でき、その結果を本物のLEDに同期するように作ったため、実際に運用すると結構な勢いで電池を消費しそうだけれども、まぁ動いたのでよし。

Arduboyでシーケンサ

f:id:inajob:20160914221353j:image

Maker Fair Tokyo 2016で本物のArduboyを購入したのですが、まったく触れていませんでした。

ということでまずはシーケンサを作ってみようということで作ってみました。

ドット絵エディタのような仕組みで、ドットを置くと音が鳴る という単純な仕組みです。

これだけでもいろいろ音楽っぽいものが作れて楽しい。


Arduboyでシーケンサその2

Arduboyのライブラリにある音を鳴らす仕組みでは(おそらく)単音のメロディしか鳴らすことができません。

そこで、RakuChordで培ったAVRのタイマーの知識を使って、Arduboyで和音を鳴らせるようにしてみました。

そんでもって、↑で作ったシーケンサ和音もならせるバージョンを作りました。

かなり音量が小さくなってしまいましたが、まぁ一応和音が出るようになりました。

まとめ

IoT合宿といいつつ、後半はArduboyのソフトを書いていたので、あまり電子工作という感じではありませんでしたが、まぁこういうのもよいかと。

初心者向けの講座としてはRaspberryPIからI2Cで温度センサーの値を読み取る というのが行われていました。

電子工作に触れてみたい未踏関係者の方はぜひ次回もあるそうなので参加してみてください。

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

2016-08-28 Maker Fair Tokyo 2016に参加した

Maker Fair Tokyo 2016に参加した

14:40 |  Maker Fair Tokyo 2016に参加したを含むブックマーク

風邪をひいてダウンしてたので少し前のことになりますが・・

8/6,8/7に開催されたMaker Fair Tokyo 2016に出展者として参加してきました。

http://makezine.jp/event/mft2016/

f:id:inajob:20160828004300p:image

Maker Fair Tokyoオライリーが主催する電子工作の発表会です。

僕は以前からちょいちょい参加していてまして、 まぁ大人文化祭みたいなもんだと思ってます。

今回僕は「コネクト・ミー」http://makezine.jp/event/makers2016/connect-me/ の一員として参加しました。

コネクト・ミーとしての参加記録はこちらをご覧ください。

http://connect-me-net.tumblr.com/post/148922762373/maker-faire-tokyo-2016%E3%81%AB%E5%87%BA%E5%B1%95%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F

コネクト・ミーには仕事の仲間つながりで混ぜてもらいました。

「にゃんぼっと」という植物の様子を教えてくれるいわゆるIoT的なアシスタント的なアレアレを作りました。

にゃんぼっとの中身はESP-WROOM-02です。僕は中身の処理の大雑把な実装と、電子回路のダブルチェック係(メンバーの中では電子工作歴が少しだけ長いので)をしてました。

以前 http://d.hatena.ne.jp/inajob/20160618 こんなことをやっていたので、少しだけ役に立ちました。なんでも触っておくもんですね

で、せっかくなのでブースの端のほうを少し開けてもらって、自作ゲーム機と、自作楽器を展示していました。

f:id:inajob:20160828004301p:image


僕のブース(正確にはコネクト・ミーのブースの端っこ)

自作楽器はhttp://d.hatena.ne.jp/inajob/20160312 で紹介した、発注した基板を使ったものです。

ソフトウェアを改造して、「デチューン」の効果を入れてみたところ、会場のざわざわノイズに若干強くなったかなと。

見に来てくれた方にはおおむね好評でした。操作方法を説明すると、さらっと一曲引いてくださる方もいて、個人的に感動しました。

せっかく基板も作ったことだし、興味のある人に配ってみたいな なんてちらっと思ってみたり・・

f:id:inajob:20160828004302j:image

自作ゲーム機http://d.hatena.ne.jp/inajob/20160322 で紹介したものです。

このゲーム機はGamebuinoをベースとしたもので、今回の展示ではArduboyのライブラリを移植し、Arduboyのゲームを動かせるようにしていました。

f:id:inajob:20160828004303j:image

Arduboy本家との遭遇

と、なんの偶然かFabxFabのブース(http://makezine.jp/event/makers2016/fabxfab/ )にArduboyのポスターが掲げてあるではありませんか!

f:id:inajob:20160828004304j:image

Arduboyの掲示板でちらっと「出展するよ」みたいなことが書いてあったのに、ブースがないなぁ と思ってたのですが、どうやら代理店(?)を通しての展示・販売ということだったようです。

そして、なんとそのブースでArduboy作者のKevinに会うことができました。


片言の英語ですが、事前にArduboyのフォーラムで紹介していたりしたので、 「ああ、これがあの!」「そうです!、これです、触ってみてください」的なことを話すことができました。

オープンソースゲーム機を真似して実装してたら、ひょんなことから海の向こうの作者さんと会えた! ということで割と感動しました。

ロボット芸人さんをArduboy売り場までご案内イベント

また、僕のtwitterフォロワーさんもちらちら遊びに来てくれて、「あ、あなたがあのアイコンの人ですね!」みたいなオフ会的なコミュニケーションをしていました。

面白かったところでいうと

ロボット芸人の「高橋ちゃん(https://twitter.com/pokipoki121 )」さんが、思っていた以上にちゃんとした芸人さんで(失礼しました;)、ロボットと一緒に僕のブースに来てくれました。

ゲーム機にすごく興味があるということだったので、Arduboyのブースまで案内して購入を見守るというRPGのお使いクエストみたいなのを実施ました。

GamebuinoやArduboyをインターネットで見つけて、実装していたら思った以上にいろんな人と関わることができているなぁと実感できるイベントでした。

その他、気になったものたち

https://twitter.com/qx5k_iskw さんの、小さいペンプロッタ!これは僕も作ってみたい!

f:id:inajob:20160828004257j:image

SDカードの中に加速度センサーを入れて、後処理でキャリブレーションを行うことができる「VirtualGimbal」 (写真が雑だった・・)

f:id:inajob:20160828004258j:image

ESP8266で作ったゲーム機 WifiBoy http://makezine.jp/event/makers2016/wifiboy/

f:id:inajob:20160828004259j:image

感想

趣味で電子工作をやってきましたが、会社の仲間からも「電子工作ができるヤツ」ということで、今回のようなイベントに誘ってもらえるようになりました。

また、Arduboyも成果をこのブログやフォーラムに書いていたことがきっかけで、本家の方とも挨拶することができました。

このブログTwitterなどにこまめにアウトプットしていたことがここにきて実ったのかなと思っています。

社会人になってなかなか、学生の時ほど自由な時間が取れないですが、限られた時間で興味があることをいっぱいやって、その成果を発信していくことで、こういった楽しいイベントなどに参加できるということを改めて実感しました。

まぁ今後もゆるりとこのブログTwitterにやっていることを書き出していきたいなと思っています。

これからもどうぞよろしくお願いします。

といったところででMaker Fair Tokyo 2016の参加レポートでした。

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

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さま
返事が遅くなってすみません。
ぜひぜひリンク宜しくお願いします。(後で良いのでホームページ教えてください)

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

プロフィール

inajob

inajob

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

RSS(ぜひ登録を!)

RSS
Other Contents
カレンダー
<< 2016/09 >>
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
最近のコメント
この日記のはてなブックマーク数
ページビュー
386113