2016年3月21日月曜日

備長炭とかの「炭」について調べる

この前、テレビで備長炭の職人の年収が1000万円位だが、後継者がいないと言っていた。子供たちは、都市で仕事しているそう。なんだと!炭ってそんなに儲かるのか!?というところから少し調べてみます。

炭の需要はあるの?

備長炭等の高級な炭の需要は安定的にあるそうで、供給が足りていないそうです。特に高級な飲食店では、高品質な炭を利用しているそう。

茶道具を取り扱ってる石橋静友堂というサイトで次のような炭不足のお知らせが出てるくらい。
十年ほど前から 原木の不足・職人の減少 等々の理由により 「炭」が不足する状況が発生し、弊店でも (しばしばブログで取り上げ) かつ 安定供給に努めて参りましたが、東日本大震災 以降、状況は 悪化の一途をたどり、この度、現在の仕入先でも 安定的な入荷がかなわぬ 事態となってしまいました。
へぇ、そうなんだ。


年収は?

自分で釜持ってて、質のいい備長炭を安定して出荷できるなら1000万円は超えそう。
和歌山県南部川村特産備長炭最硬質というページにこんな記載がある。
このお二人は、まだ脱サラ2,3年目で、「3回できればいい方。」との事であった。聞いてみると、二つの窯を持ち、月4回このサイクルをこなせれば、ほぼ大企業の部長クラスの年収に匹敵しそうな炭の単価だった。
高知のトピックだと「2013.12.04 【室戸市】高知で働く。『土佐備長炭 窯元 炭玄』」にはこんな記述がある。
一回の窯だしで炭の出来によるけど、だいだい60万円くらいになる。室戸で十分暮らせる仕事になります!
十分暮らせる、っていうのはこの60万円を数人で割るのかもしれないが、個人でやってるなら結構の収入になりそう。


ただし、これは備長炭等の高級な炭を取り扱える場合!!中国産の安い炭と競合になる炭を生産する場合は、もっと安い給料になる。週間ポストの記事では月収20万円くらいは頑張れば行けると書いてある。
「炭焼き職人」は月額20万円程度の収入を得られる仕事

元記事は既に消えているけど、2chに残ってる新潟県魚沼の炭焼き体験募集のニュースには、
市によると、昨年は30人以上が参加したが、後継者候補は出てこなかった。市農林課は「生業とするには難しい点も多いが、体験を通して関心を持ってもらいたい」と呼びかけている。
と、生業にするには難しい位の収入にしかならないそう。この感じだと20万円切るかもしれない。


備長炭とは


本来木炭(白炭)の一種であり、ウバメガシのみを備長炭と呼ぶが、広義において樫全般、青樫等を使用した炭を指す場合もある。ただし、外国産のものを備長炭として販売する業者があるが、広義においてもそれらは外れるので注意が必要である。
 紀州備長炭、土佐備長炭、日向備長炭などが存在し、また偽物も存在する。
 白炭はなるべくなら製造所から直接購入し、短期間で使い切るのが好ましい。保管する場合は湿気が入らないよう厚手のビニール袋に密封し、場合によっては乾燥剤を添えるのが適切である。
ウバメガシというカシの木を使って、白炭にするのが王道の備長炭。湿気に弱い。っていうのを理解した。

最近は、紀州(和歌山)で生産された備長炭を「紀州備長炭(商標登録)」としてブランド化しているそう。

紀州備長炭とはのページに書いてある備長炭のメリットで、際立ったものは次のような感じ。

  • 赤外線の量が多い(ガスの火より多い)
  • 安定した火力
  • 長時間燃焼
  • 炎が少ない
  • 無煙
  • 臭気無し

デメリットは、

  • 高価
  • 着火しにくい

などがあげられると。あと、湿気に弱いを追加してもいいけど、それは他の炭も同じかな。


炭の種類

備長炭は白炭(はくたん)で黒炭(こくたん)とは違う、みたいな説明があったので、それぞれなんじゃいということで調べる。

wikiの白炭より。
白炭(はくたん、しろずみ、英: Hard charcoal)とは、木材を炭化させた木炭のなかから、高温で焼成し、窯の外へ掻き出して素灰を掛けて急冷させ消火して作るものを指す[1]。主に備長炭などが知られる。主成分は、ほぼ炭素であり、ごく少量アルカリ塩を含んでいる。
白炭は生成過程での高温処理の為に黒炭より炭素率が高い傾向にあり、その分、低温処理された黒炭よりは余分な燃焼ガスの放出も少ないことから炎や燻煙で食材に焦げ目や雑味が付くことも少なく、焼きもの調理に適していると言われていた。 しかし、近年に於いては1000度に達する高温で処理された黒炭も存在し、一概に白炭の炭素率だけが高いとは言い切れない様になりつつある。
煙や臭いが出にくくて良い炭は白炭にまとまりそうだなぁ。ここでちょろっと書いてある、高温で処理された黒炭の性能が分からん。

wikiの黒炭より。
黒炭(こくたん、くろずみ、英: Soft charcoal)とは、木材を土窯を使い炭化させた木炭である。主成分はほぼ炭素であり、ごく少量アルカリ塩を含んでいる。
黒炭は主にナラ、カシ、クヌギなどが専用の土窯で比較的低温で炭焼され、密閉鎮火して製造された木炭である。備長炭に代表される白炭との大きな違いは製法にあり、白炭は精錬時に内部温度が1000度ほどになるのに比べ、黒炭は400度から700度ほどとされている[1]。ただし、近年では白炭精錬時と同等の1000度に達する高温で精錬し、炭化率も白炭と同等のユーカリ材等を使用した高品位な黒炭も存在する。黒炭と白炭の大きな違いは消火方法であり、白炭は灼熱した状態で窯の外へ掻きだし、白色の消し粉を掛けて急冷鎮火させるが、黒炭は焚き口に蓋をしたうえで煙突にも蓋をし、酸欠下で消し壺のように時間をかけて鎮火させる点にある。黒炭は白炭に比べて柔らかく、白炭よりは比較的容易に着火剤やバーナーで着火することができ、燃焼温度や火勢自体は強く、着火しやすい。
白炭と黒炭は消火方法で色が変わるそう。白炭の方が高く売れるなら白炭にすればいいじゃんと思ったけど、良質な木材とブランドが無いと売れないから、バーベキュー向けの黒炭の方が良くなるのかなと思った。


木材の産地について

日本は山が多くて、どこでも木が手に入りそうだが、備長炭の場合はその材料の調達が大変で高価になっている部分があるそうだ。
備長炭の材料になる木は、ウバメガシの他、本ガシ、アラカシも利用するそう。(知られていない カシ、その他の原木の紀州備長炭)

ウバメガシは、丈夫なので街路樹などにも利用されるが、温暖な気候を好み神奈川県以南でないと自生していない。特に、四国や紀伊半島の温暖で乾燥しやすい地域に林を形成しているそう。

ウバメガシは手に入れるのが中々難しそう。じゃあ、カシはどうなの?ということで、wikiの他のカシについてのページを順に確認。

アカガシ・・・本州の宮城県・新潟県以西、四国、九州、朝鮮半島南部、中華人民共和国、台湾に分布する常緑高木。

イチイガシ・・・本州(関東以西の太平洋側)・四国・九州・済州島・台湾・中国に分布する。

アラカシ・・・中国、台湾、日本(本州東北以南、四国、九州)に分布する。

ハナガカシ・・・宮崎県以外では、鹿児島県、大分県、高知県、愛媛県に稀産する常緑高木。絶滅危惧種。

オキナワウラジロガシ・・・日本の固有種で、奄美大島、徳之島、沖縄島、久米島、石垣島、西表島の湿潤で肥沃な非石灰岩地に分布する。

シラカシ・・・福島県以西、朝鮮半島南部の山地に自生するが、主に関東地方の照葉樹林帯に多い。照葉樹林の構成種ではあるが、この森林帯の北限付近で多く見られる。本州南岸以南では数が少ない。

ツクバネガシ・・・宮城県・富山県以西の本州、四国、九州、台湾に分布する常緑高木。(なんで、東北は宮城県だけ生えてるんだろ?)

ウラジロガシ・・・日本では本州の宮城県・新潟県以南から四国、九州、琉球列島に分布する。日本国外では朝鮮半島南部と台湾に分布する。

ウバメガシ・・・日本での分布は本州の神奈川県以南、四国、九州、それに琉球列島に分布する。日本国外では中国中部、南部、西部とヒマラヤ方向へ分布が広がっている。また、沖縄県が分布の南限である。


関東より北はカシが必要になる備長炭作るの難しそう。でも、結構広い範囲で炭は作れそうだね。


epochを使って簡単にリアルタイムチャートを作る手順

リアルタイムチャートを作りたくて、ブログとか少し調べてました。
【Javascript】グラフ・チャート描画用のjsライブラリまとめ  に色々書いてあって比較しやすかったです。
簡単に使えて、キレイで無料で、商用にも使えるライセンス等のごくごく入門的な観点で選んでいたのですが、Epochというのが良さそうだったので今回はEpochを使います。

Epoch本家サイト を見ると次のように書いてあります。
A general purpose real-time charting library for building beautiful, smooth, and high performance visualizations.
「リアルタイムチャート作りたいなら黙ってEpoch使っとけ。」とのこと。はい、分かりました。

手順1. デモを動かす

Epochのリアルタイムチャートのドキュメントページ見ただけだと情弱の私には分からなかった。
それなので、デモを動かします。

次の様なリアルタイムチャートを描画したいと思います。


まず必須のライブラリを読み込みます。

  • <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  • <script src="//d3js.org/d3.v3.min.js"></script>
  • <script src="/javascripts/epoch.min.js"></script>

次に、データ取得部分がわからなかったので、ドキュメントページのHTMLを見るとたったこれだけの記述。

========================
<div id="real-time-line" class="epoch" style="height: 200px"></div>

<script>
$(function() {
    var data = new RealTimeData(2);

    var chart = $('#real-time-line').epoch({
        type: 'time.line',
        data: data.history(),
        axes: ['left', 'bottom', 'right']
    });

    setInterval(function() { chart.push(data.next()); }, 1000);
    chart.push(data.next());
});
</script>
========================

newしてるRealTimeDataってなんじゃい!と思ったら、html丈夫のdata.jsに書いてありました。このjsも持ってきて読み込みます。

はい、これで動きました。jsの読み込みとか間違って無ければ、短いhtml書くだけで大丈夫なはず。


手順2. 描画に必要な処理をザックリ理解する

デモを動かすところまでに出てきたメソッドの意味などを一応確認します。
  • 必須ライブラリ(jquery, d3, epoch)の読み込み
  • 描画に必要なデータフォーマット(ドキュメント参考)を作る処理の実装 ※デモではdata.jsの部分
  • divにidふって描画領域の確保
  • $().epochメソッドで初期化
  • pushメソッドでデータ追加
  • setIntervalで定期処理実施
このくらいですね。

手順3. nodejs+websocketに応用する

前回の記事「Xivelyみたいに投げられた値をリアルタイム描画してみたい」を目指していたので、投げられた値をそのまま描画したかったのです。websocketならnodejsの評判が良さそうなのでnodejsをテストしてました。

「D3.jsベースのEpochを使ってリアルタイムチャートを描いてみる」のページがまさにそれで、詳しく書いてあります。


以下、私がやったメモ。

・nodejsの実行環境用意

・expressのジェネレータ使ってパッケージ作成

・socket.io使う準備
ここ、このやり方で正しいのか分からんけど、www/binでserverオブジェクト作ってて、socket.ioのオブジェクト欲しくて、ただ、別のファイルでsocket.ioのオブジェクト使いたかったのでグローバルにした。グローバル変数あんまり使いたくないんだけど、本当はどうやるのがいいんだろ。誰か教えて。。
======
/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * websocketを使うために接続
 */
global.socketio = require("socket.io").listen(server);
======

・app.jsにfeedsっていうエンドポイント追加。
======
var feeds = require('./routes/feeds');
======

・そんで、feeds.jsってファイル作って、websocketで接続できるようにした。
=====
var express = require('express');
var router = express.Router();

/* GET feeds listing. */
router.get('/', function(req, res, next) {
  res.send('thanks!');

  value = req.query.value | 0;
  global.socketio.emit("paramData", {message: 'hello', value: value});
});

module.exports = router;
=====

サーバサイドここまで。

クライアントサイドのは、デモで作ったリアルタイムチャートのコードをベースにする。
変更部分は、ランダムでデータ出力していた部分をサーバから受け取った値を表示するようにすること。
currentValueというグローバル変数を用意して、この値を変更、描画するように改造する。

・websocketの部分はこんな感じ。
======
var socketio = io.connect(window.location.href);
socketio.on("paramData", function(d) {
  $('#messages').append(d.value);
  // グラフデータ受信
  currentValue = d.value;
});
======

・グラフ描画部分はこんな感じ。
======
$(function() {
    var data = new RealTimeData(2);

    var chart = $('#lineChart').epoch({
        type: 'time.line',
        data: data.history(),
        axes: ['left', 'bottom', 'right']
    });

    setInterval(function() { chart.push(data.next(currentValue)); }, 1000);
    chart.push(data.next(currentValue));
});
======

・あとは、data.nextで受け取った値を描画するようにすればOK!


epoch君、これからよろしく。

2016年3月12日土曜日

Xivelyみたいに投げられた値をリアルタイム描画してみたい

xivelyというサービス使えば、postした値をブラウザ上ですぐに確認できる。

次の記事にはxivelyのグラフイメージも載ってる。
Xivelyでセンサデータなどのリアルタイムなチャートを作る

xively以外にも似たサービスあるみたい。
Xivelyの代替候補M2X

前からxivelyは知ってたし、別にそんなもんか程度で思ってたが、最近websocketという技術に興味を持って使ってみたくなった。(今更websocket www)

リアルタイムグラフを作る方法を簡単に調べてみたが余り情報無かった。
d3というjavascriptのグラフ描画ライブラリがとっても人気で、そのプラグインのCubism.jsを使うとリアルタイムグラフを出せることは分かった。

今度触ってみよう。

matplotlibでリアルタイム描画
Javascript 製のチャート描画ライブラリのメモ

2016年2月29日月曜日

PIC32MX120F032BでLEDチカチカさせてみた

PIC32MXを勉強すべく、まずはLEDをチカチカさせるプログラムから。
以前の記事、「【PIC入門】MPLABとXC8をインストール、PICKIT3を接続など簡単な回路を動かすまでのまとめ」の環境(MPLAB、PICKIT3)が揃ってる状態からスタート。

手順1. 32bit向けにコンパイルするXC32のインストール

今まで使ってたPICが8bitだったのでXC8を使っていたが、PIC32MXは32bitなのでコンパイラが違う。xc32は無料版も出てるようなのでそれをインストールした。

手順2. プログラム用意

XC32をインストールすると「C:\Program Files (x86)\Microchip\xc32\v1.40\examples\xc32_examples」にサンプルプログラムが見つかる。
led_message というのが今回やりたいことに近そうなのでこれのコンフィグを参考にした。
それで作ったプログラムがつぎのようなもの。

#include <xc.h>

#pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_8

#define SHORT_DELAY (50*8)
#define LONG_DELAY (400*8)

void wait(void){
    TMR1 =  0;
    while ( TMR1 < SHORT_DELAY){}
}

int main(void)
{
    // disable JTAG port
    DDPCONbits.JTAGEN = 0;

    // 3.1 variable declarations
    int i;           // i will serve as the index

    // 3.2 initialization
    TRISA = 0;      // all PORTA as output
    T1CON = 0x8030; // TMR1 on, prescale 1:256 PB

    // 3.3 the main loop
    while(1)
    {
        // 3.3.2 long pause, hand moving back to the left
        PORTA = 0;      // turn LEDs off
        wait();
        PORTA = 1;      // turn LEDs on
        wait();
    } // main loop

}


手順3. PICKIT3でICSPする回路用意

コメを噛めっていうサイトの「PIC32MX220F032B でLEDチカチカ」がものすごく参考になる。
なにより、PICKIT3の接続が分かりやすくてよかった。(次の図が引用です)

この通りブレッドボードで配置すればOK!


手順4. 実行



このPICを使いこなせるように頑張ろう。

2016年2月28日日曜日

PIC32MX120F032Bを使うことにしたら前作った汎用基板使えなくなった


http://www.microchip.com/stellent/images/mchpsiteimages/en537986.jpg

PICって色々種類あってどれ選んだらいいかよく分からんなーと思ってた。ただ、古いPICより新しいPICの方が性能もコストパフォーマンスも良くなってるだろって思って、新しいの使ったほうがいいなとは思った。あと、ハードウェアごとにデータシート変わるし、色々なデータシート見るのも面倒だから、1つのPICを長く使ったほうが学習コストも少なくなると思った。

それに加えて、今回やりたかった事がPIC使ってwebsocketやりたかったのである程度のRAMが必要そうだったんですよ。
例えば、このページ「Embedded Websockets」だと、最初PIC16F886を使ったがRAMが少なくて、4KB以上のRAMを持つPIC18F4620に変更したといってる。

そうかそうか、4KB以上のRAMの方がよいのか。

ということで、要件に合いそうなPICを秋月で選んだら「PIC32MX120F032B」になりました。
32bit CPUを使ってるハイスペックモデルのPIC32MXの一覧ページ見ると6種類あった。


よく違いがわからないのでmicrochipのHPで、「Microchip's 32-bit Microcontrollers」というページで比較表を見た。


RAMは4K以上がよいのは全て大丈夫みたい。32MX1系と32MX2系の違いはUSBホスト機能(?)の有無で変わるらしいけど、今のところUSB使う予定無いので1系でいいなってなった。秋月で売ってるの、pic32mx110f016bとpic32mx120f032bが10円の差しかなくて、RAMが倍になるなら120f032b買っとけばいいっしょ、ってなった。


はい、届きましたー。(4つ買ってみた)



これで、どんな重い処理も一瞬でやってくれるぜ!!


そして、残念なお知らせが。。
1ヶ月ちょっと前に買いた記事「PIC焼く汎用基板作った」で作ったものが利用できなそう。。
なんだよ、汎用基盤って!32-bitに対応出来てねーじゃねーか!!

アメブロの「PIC32MX220 (200円のMIPS CPU)を使う」にあった次の図見ると、pickitで接続するPINと必要な物が違っとるもん。。


ICSPでやるからもぉいいよーだ。
【ICSP】(In Circuit Serial Programming)
ICSP方式でPICのプログラミングを行えば、いちいちPICをソケットからはずしてプログラマのソケットに差し換える手間も無くなりますし、フラットパッケージのPICのように、基板にはんだ付けしてしまったPICのプログラム書き換えも、そのままの状態で可能になります。
引用元: http://www.picfun.com/pic18/pic18xx14.html


2016年2月21日日曜日

レイ・ダリオ氏が語る「30分で判る 経済の仕組み」とマルサスの「過少消費説」のメモ

ヘッジファンド運用会社ブリッジウォーター・アソシエーツ創業者のレイ・ダリオ氏がYouTubeにアップロードした経済を説明した動画が分かりやすい。アニメーションも楽しい。


動画は30分ほどあるので、自分が覚えておきたいと思ったところだけ箇条書きにしとく。

  • 経済は3つの要素からなる
  • 1. 生産力の成長
  • 2. 債務の短期的な周期
  • 3. 債務の長期的な周期
  • 経済は取引の積み重ね
  • 買い手が「お金とクレジット」、売り手が「物やサービス」を提供
  • クレジット≒信用。貸し手と借り手が同意した時に発生する
  • クレジット(借金)は貸し手に取って資産、借り手にとって債務
  • クレジットは貸し手、借り手を助ける
  • クレジットは最も大きく変動しやすい
  • あなたの支出は誰かの収入
  • 債務には小さい周期の5から8年と大きい周期の75年から100年がある
  • クレジットによる債務とは、未来の自分から借金をすること
  • クレジットが債務の波を起こす
  • お金とクレジットは違う
  • お金はものの精算に使うもの
  • 世の中の金額は殆どはクレジット(アメリカでは50兆ドルのクレジットと3兆ドルのお金が流通している)
  • クレジットの無い経済では生産力を上げないと経済が成長しない
  • クレジットは経済にレバレッジをきかせる
  • クレジットは何も無い所に発生する
  • 中央銀行は、お金とクレジットの総量をコントロールできる(利子制御、通貨発行できる)
  • クレジットが簡単に手に入る場合は経済が拡大し好景気になる
  • インフレになると中央銀行は利子を上げてお金を借りにくくする
  • クレジットが手に入りにくくなる(債務が増える)
  • 経済が悪化してデフレになる
  • 中央銀行が利子を下げてお金を借りやすくする
  • ※これを繰り返す
  • 債務の返済が収入より多くなると支出を押さえだす
  • クレジットが減る、支出減らす、収入が減る、資産が減る、クレジットが減る→悪循環
  • 利子を下げても回復しないので、これは不景気とは違う
  • 債務が大きくなりすぎている場合、利子を引き下げても回復が不可能
  • このようにレバレッジが消滅した場合の解決方法は4つ
  • 1. 人、ビジネス、政府が支出を減らす(緊縮策)
  • 2. 債務不履行にする
  • 3. 富裕層から再分配
  • 4. 新しい紙幣を印刷する
  • それぞれ、メリットデメリットあるので、4つの方法を使ってデフレ要素とインフレ要素を調整すべし
  • お金を印刷してもクレジットの消滅を相殺できるならインフレにならない
  • お金を印刷するのは簡単なことなのでハイパーインフレを起こさないように注意する
  • 債務周期を生産性成長カーブに重ねると将来を予測できる
  • 3つの結論
  • 1. 所得より先に債務を増えさせない(債務負担に耐え切れなくなる)
  • 2. 所得を生産性より先に増えさせない(競争力が弱くなる)
  • 3. 生産性を向上させる努力を惜しまない(長期的に一番重要)

あぁ、これ理解したから金持ちになれるは。

あと、これが日本の経済にピッタリあっててびっくりした。
日本の不況は、マルサスの「過少消費説」で説明できる



200年前から言われてるのに対策できないとは。。

2016年2月16日火曜日

マイコン(PIC)のシリアル通信確認するときにArduinoあると簡単だった

PIC16F88でシリアル通信する処理を焼いてみたのだが、実際に出力できているのか確認したかった。
この前、PICの工作キットでRS-232CでPCとシリアル通信するの上手く動かなかったしどうしよう。
っていうときに、Arduino使うと驚くほど簡単にシリアルをPCで確認できたのでメモ。
あぁ、Arduino持ってて良かった。

PIC16F88のコード

#include <xc.h>
#include <stdio.h>
 
#define _XTAL_FREQ 8000000      // 8MHz

//#include "uart.h"

// 16F88
// CONFIG1
#pragma config FOSC = INTOSCIO // 内部発振使用
#pragma config WDTE = OFF   // ウォッチドッグタイマ
#pragma config PWRTE = ON   // パワーアップタイマー
#pragma config MCLRE = OFF  // マスタークリアー機能
#pragma config BOREN = OFF   // ブラウンアウトリセット
#pragma config LVP = OFF    // 低電圧プログラム書き込み
#pragma config CPD = OFF    // データーコードプロテクション
#pragma config WRT = OFF    // フラッシュ書き込み
#pragma config CCPMX = RB3  // CCPのパルス出力ピン
#pragma config CP = OFF     // プログラムコードプロテクションOFF

// CONFIG2
#pragma config FCMEN = OFF  // Fail-Safe Clock Monitor
#pragma config IESO = OFF   // Two-Speed Start-up

// uart
#define BAUDRATE 9600       // 9.6kbps
#define TX9_RX9_BIT 0       // 0: 8bit, 1: 9bit
#define BRGH_BIT 1          // 0: 低速サンプル指定, 1: 高速サンプル指定

void init_pic(void);
void init_uart(void);
void strOutUSART(char *);

void main(void) {
    init_pic();
    init_uart();
    
    char *cmd = "$WP http://request-watcher.herokuapp.com/ testbody=hello\n";
    while(1){
        __delay_ms(5000);
        strOutUSART(cmd);
    }
}

void init_pic(){
 OSCCON = 0x72;  // INTOSC 8MHz
 ANSEL  = 0x00;  // AN未使用
    
 PORTA = 0x0;
 PORTB = 0x0;
    
 TRISA = 0x0;  // RA0-7:out
    
    // SPIシリアル通信する
    // RC2/RX をinput
    // RC5/TX をoutput
 TRISB = 0b00000100;
    
    return;
}

void init_uart(){
    SPBRG = 51;     // 8MHzの時の9600Hz
    RCSTA   = 0b10010000;  // UART送受信を有効
    TXSTA   = 0b00100100;  // 8Bit非同期送受信

    RCIF = 0;    // reset USART interruption flag
    RCIE = 1;    // enable USART interruption
    PEIE = 1;    // enable peripheral interruntion
}

void strOutUSART(char *str){
    while(*str){                 //文字列の終わり(00)まで継続
        while (!TXIF);  //送信終了待ち
        TXREG = *str++;          //文字出力しポインタ+1
    }
}



Arduinoのコード

const unsigned long baudrate = 9600;
void setup() {
  Serial.begin(baudrate);
  Serial.println("Ready.");
}

void loop() {
  if (Serial.available() > 0) {
    char c = Serial.read();
    Serial.print(c); // Echo back
  }
}


なんとこれだけ!

実行

ちゃちゃっとつなげればOK。今回のPICは11番がシリアル送信になる。
そして、Arduinoの0番はそのままシリアル受信できる!



DCジャックついてるけど使ってません。プラスとマイナスはそれぞれ繋いであります。


コード。

シリアルモニタ。

シリアル送信できてる!

PICやったあとだとArduinoの便利さがすごい分かる。
コンフィグとか設定しないでもやりたいことできるもの。

以上、便利だったので記録しました。

2016年1月31日日曜日

アイデアメモ。センサネットワーククラウド接続サービス

こんなもの考えてみたのでアイデアメモ。

提供したモジュール(ハードウェア)を利用してもらえば、あとはAPIでデータの取得が出来る等のサービスがあったら便利ではないかなと思った。

やることは大きく2つ。
・クラウドに自動で接続されるセンサネットワークを簡単に作れるモジュールの提供
・クラウドからAPIの提供

絵にするとこんなイメージ
1.ローカルネットワーク


2. クラウド


それぞれが分かれてるサービスなら既にあるんだろうけど、統合されてるサービスってあまりないんじゃないかな?(調べてないけど)

これを著しく簡単に利用できるサービスって作れるのか興味湧いたので調査してみよう。

思いついた課題一覧
・デバイス間の通信モジュールは?
・デバイス間の通信プロトコルは?
・パレント、チャイルドの認証は?
・ツリー構造取れる?
・パレント、クラウド間の通信プロトコルは?
・ユーザ自身でデバイスをクラウドに登録させる手順は?
・クラウドからデバイスにデータ送る方法は?
・デバイスのデータはどこに保存?
・ユーザがデバイスのデータにアクセスする方法は?
・サービスの料金体系は?


自分用のアイデアメモでした。


2016/2/12追記:

さくらのIoT Platformというサービスでほぼこれと同じもののサービスが始まりました!びっくり!

Tech crunchの記事:

さくらインターネットのslideshareページでみたんだけど、モジュール毎の料金、月々数十円程度ってまじかよ。。。3G通信モジュールだけでも2万しそうなんだけど。私がモジュール作って売るなら3万円位は最低かかるから、5年償却としても1月当たり500円なんだよな。料金はまだオープンになってないので楽しみに待ってよう。



2016/2/22追記:

一通り調査してみた感じ、作れそう。感想をまとめる。

さくらのIoTとはやっぱコンセプトちょっと違うなと思った。
もともと、私が考えてたものは、インターネットの接点をより少なくするシステム。
それぞれのデバイスがインターネットに接続するとコストかかると思ってるから。(3G使うと特に。)
インターネットへの接続は、有線でもwifiでも3Gでも良くて、親機に集約されていたらあとはなんとでもなるかなってイメージしてる。

モジュールとサーバで利用するのにMQTTというプロトコルも考えたが、Websocketにしようと思う。
この、親機だけがインターネットに接続するという形式だと、MQTT使うメリットが無くなってしまうことが分かった。pub/subだったり、willだったり。
そしたら、技術的に枯れてるwebsocketの方がいいかなと思っただけ。実際に使ってみて不便だったらまた変えればいいや。

以前の疑問に一応、回答。
・デバイス間の通信モジュールは? → xbee使う。APIモードなら動的にIP振れる。
・デバイス間の通信プロトコルは? → しらん。xbeeがセキュリティにも配慮してくれてるらしい。
・パレント、チャイルドの認証は? → ★今後の課題
・ツリー構造取れる? → ★作れそうだが、xbeeは動的にそういった構造とれるとこまで出来るかは分からん。要調査。
・パレント、クラウド間の通信プロトコルは? → SSL+websocket
・ユーザ自身でデバイスをクラウドに登録させる手順は? → ★検討
・クラウドからデバイスにデータ送る方法は? → SSL+websocket
・デバイスのデータはどこに保存? → ★調査する
・ユーザがデバイスのデータにアクセスする方法は? → WebAPIを提供
・サービスの料金体系は? → デバイスは原価以上。基本クラウドで利益だしたいところ。


次のものを作れば大体システムになるかな?
・Webコンソール(rails)
・WebAPI(rails)
・デバイス通信サーバ(nodejsがwebsocket強いの?railsとnodejs比較しよう)
・親機デバイス(xbeeとpicでなんとかする)
・子機デバイス(xbeeとpicでなんとかする)

うむ。


2016/3/5 追記:

ハードウェアモジュールとクラウドをセットで提供してるサービス既にあった。
「Digi Device Cloud」ってやつで、画面部分が「Digi Remote Manager」っていうパッケージになってる。(?)
Digiが提供している、Digi TransPort(4G LTE M2Mルータ)を使うと、そのデータをweb上に保存して管理画面で状態を確認できる。APIを使えばデータも取れそう。
remote managerは1device当たり2.5$/Monthが基本料金らしいが、見積もりボタンがあるので開始するためにいくらかかるのかもしれない。あと、このルーターの値段が分からん。

十分便利そうじゃん(笑)

2016年1月25日月曜日

組み込みで使える無線の種類と特長まとめ

「wifiやbluetoothなどは用途に合わせて選ぶ必要があります」みたいな説明ばっかで分かんねーよってことで、まとめる。

日本で利用しているモデルの場合、どの位の距離と通信速度が出るのかなど。
「組込み用無線モジュールにおける無線規格の選び方」というページを最初に参考にした。

現状で組み込みに利用する無線通信規格は次の6種類が代表的っぽい。

  • モバイルネットワーク(2G/3G/LTE)
  • wifi
  • Bluetooth
  • ZigBee
  • IrDA(赤外線)
  • NFC

今、個人的にIoTに興味あるので、それらの危機に利用できそうな、モバイルネットワーク、wifi、ZigBeeを比較する。


No. 種類 モジュール価格 通信速度 通信距離 消費電力
1 モバイルネットワーク
FOMA
1~3万円?
ググった感じ高そう
下り14Mbps、上り2Mbps docomo回線の距離 多い
2 wifi
11nで調査
500~1000円
安い
600Mbps 250m
※直線で障害物無し
多い
3 Bluetooth
class2について
1000~3000円
class1は2万円
24Mbps 10m
class1だと100m
※直線で障害物無し
少ない
4 ZigBee 1500~2500円 250kbps 100~300m
※直線で障害物無し
少ない


さらに長距離を飛ばしたい場合は、こういった規格に合わない独自通信モジュールを使う場合もあるっぽい。

あと参考にしたページ「BluetoothとZigBeeの違い」

なるほどねぇ。色々だねぇ。

世界展開考えるなら、一般化してる規格で製品作ったほうがよさそう。

2016/1/28 追記:
IP500っていう新規格が省エネでパフォーマンスいいらしいよ。
http://prtimes.jp/main/html/rd/p/000000001.000012835.html

日本の技適通ってるCNX100Jっていう製品があるらしいけど、メールか電話で問い合わせろってHPに書いてあった。日本のショップにならぶまでもう少し時間かかりそう。

2016/1/31 追記:
PCとモジュール3つセット2000ユーロだって。高ぇよ。PC除いても1000ユーロ。
もう少し待つべきだな。
http://www.corenetix.com/devkit.html

2016年1月24日日曜日

IoTサービス調べた事メモ(AWS IoT、AkaneとSango、SORAKOM)

2015年10月から、AWSのサービスに「IoT」なる項目が追加されてたらしい。最近知った。
AWS IoTで何が出来るか調べてて一緒に知ったサービスもメモ。
※この記事は表面的な事しかまとめないので、具体的に調べたい人はもう一度Google検索!

AWS IoTについて

公式の説明見た感じ次のことを主な目的に使えばいいのかな。(xivelyでできることはやれそう。)
  • プロジェクトとデバイスの登録
  • デバイスからのデータ受信
  • デバイスへのデータ送信
AWS IoTを利用するメリットとしては次のものがありそう。
  • AWSサービスとの連携のし易さ
  • ハードウェア向け、アプリ向けSDKの提供
  • 暗号化通信の提供
  • モニタリング機能提供
  • シャドウというデバイス復旧機能提供
  • ルールというメッセージ変換機能
AWSのSDKを使えば開発が簡単になりそうだね。

AkaneとSangoについて

AWS IoTの説明に「MQTT」なる単語が出てきて、なんぞやと調べて知ったサービス。
MQTTとは通信仕様の1つでHTTPとは仕様が異なる。
MQTTはパブリッシャーサブスクリプションモデルで、ブロードキャストを容易にする仕様があり、IoTに向いてる部分があるらしい。IoTの通信方法を選定する時に選択肢の1つになるそう。

このMQTTは仲介するブローカ(サーバ)を必要とするのだが、このブローカサービスを提供しているのがAkane。Akaneをブラウザから利用できるサービスを提供するのが姉妹サービスのSango。ちょっと、よく分かってないから間違ってるかも(笑)

このサービスの運営の時雨堂っていう会社、説明見たらすごかった。
一日6時間労働。役員、社員全員同一賃金。利益を人数で分配するだけ。等、衝撃(笑)

SORAKOMについて

SORAKOMプラットフォームは「格安SIM」「クラウドの接続セット」を提供している。
クラウドで操作できるSIMは新しいしSIM料金がスゴく安くて驚いた。
IoTプラットフォームを目に見える形で身近に ─元AWS玉川憲氏が率いる企業ソラコムが始動

AWSの人と思ってた玉川憲さんが代表で2015年に設立された会社。AWSで一緒だった何名かで立ち上げたっぽい。それにも驚いた。



まだまだ調べないといけないことが沢山だな。