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で一緒だった何名かで立ち上げたっぽい。それにも驚いた。



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

2016年1月10日日曜日

レジスタとかコンフィグとかPICのプログラムが分からなすぎて調べた

まず、PICの入門に古い本はやめたほうがいい。
私は回路や部品が秋月でセット販売されているという理由で「プリント基板で作るPIC応用装置」(amazonリンク)という本を入門用に買ったのですが、プログラムが古くて動かせない!

本が出版されたの2009年10月、現在は2016年1月。
この間に開発環境も変わって、ヘッダファイルも変わって、コンフィグの書き方とかも変わったようだ。
以前の記事「【PIC入門】MPLABとXC8をインストール、PICKIT3を接続など簡単な回路を動かすまでのまとめ」で書いた開発環境だと、本のサポートページからダウンロードできるソースコードがエラー出て動かんのですよ。。

PICプログラムと開発環境の基礎が解ってる人は、なんとか出来るんでしょうけど初心者には厳しい!一応、最後まで目は通してパーツは組み立てるけど苦労するぜ。。

それで、ネットでとりあえず最近の開発環境で動く単純なプログラムを調べてみることにした。
本のプログラムでエラー出たタイミングですぐやれよって今更思った(笑)

今回理解するための目標プログラム

ちょうど手元にあった PIC16F88 のプログラムを”xc8”でコンパイルするプログラムをグーグルで検索。このコンパイラ名を指定して検索するのがポイント!そうしないと、古いプログラムとかアセンブラとか沢山混ざってくる。

「16F88 XC8開発例 - LEDを蛍のように点灯させる(CCPモジュールのPWM機能)」うむ、簡単そうだし、丁寧に説明してあるので、このページのプログラムを目標に設定。

順番に読んでいく。その前に、コンフィグについて寄り道。

PICプログラムの一般的な設定

PICはチップによってピン数や機能が違うので一様には説明できないが、基本的な考え方がある。
まずはこのページ「コンフィグレーション・ワードについて」を読んだ。

次のように説明がある。
プログラム領域・・・実行するプログラムを格納しておく領域
EEPROM領域・・・電源供給がなくてもデータを記憶しておく領域
コンフィグ領域・・・動作設定を格納

これ読んだら「なんでプログラムのmainで実行する設定の他に、プリプロセッサで指定する設定があるんだろ?」と思ってた疑問が解けた。
(自分的推測)
そもそも、プリプロセッサで指定している設定は、プログラム領域に焼いていない。
プログラム開始では間に合わない処理を予め「コンフィグ領域」に焼いている。
プログラム開始後に行う設定は、柔軟に対応出来るようプログラムで行っている。
(推測終わり)

詳細は参考サイト見て欲しいのですが、おおまかに次のことを設定すれば良いそう。
コードプロテクトを有効にする。(お遊びの場合は無効でOK)
低電圧書き込みを有効にする。(PIC書き込み専用ツール使うなら無効)
ブラウンアウト・リセットを有効にする。(お遊びの場合は無効でOK)
パワーアップ・タイマーを有効にする。
ウォッチドッグ・タイマーを有効にする。(お遊びの場合は無効でOK)
動作クロックを選択する。
基本はこれだけでいいと分かったら見通し良くなった。
ブラウンアウトリセット、パワーアップタイマ等を知らなかったが、サイトの説明がとても親切だった。

リセットに関しては「リセットの使い方」というページの説明が細かったが分かりやすかった。
4つの種類のリセットについて説明してある。
(1) パワーオンリセット
(2) MCLR端子によるリセット(外部リセット)
(3) ウォッチドッグタイマタイムアウトによるリセット
(4) ブラウンアウトリセット(BOR)

MCLRという単語はPICのコンフィグでも出てきて、利用するかどうか必要になる。


プログラムの設定を理解する(mainより前)

それでは、参考にしたサイトのプログラムの前半部分を読んでコメント入れてみた。
最近の書き方はpragmaでやるっぽい。古い書き方してると、__CONFIGとかになってる。
// picプログラムおきまりのヘッダファイル
#include <xc.h>

// _XTAL_FREQ を定義しないとコンパイル時にエラーになる
#define _XTAL_FREQ 8000000      // 8MHz

#define PR2_DATA 0xFF           // PR2 設定データ
#define T2_DIV_BY_1 0b00000000  // T2CON 設定データ
#define CCP_PWM 0b00001100      // CCP1CON 設定データ

// 16F88
// CONFIG1
#pragma config FOSC = INTOSCIO // 内部発振使用(昔は外部の発振を使ったりした)
#pragma config WDTE = OFF   // ウォッチドッグタイマ
#pragma config PWRTE = ON   //パワーアップタイマーON
#pragma config MCLRE = ON   //マスタークリアー機能
#pragma config BOREN = ON   // ブラウンアウトリセットON
#pragma config LVP = OFF    //低電圧プログラム書き込みOFF
#pragma config CPD = OFF    //データーコードプロテクションOFF
#pragma config WRT = OFF    // フラッシュ書き込み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

config2の部分は「PIC18F2550を使う (2) コンフィギュレーションビットについて調べる」 というページの途中に説明が書いてあった。今回は使わなそう。

あと、xc8インストール時にハードディスクに保存されるコンフィグ説明も参考になるかもしれない。
私の場合、ファイルパスは C:\Program Files (x86)\Microchip\xc8\v1.35\docs\chips/16f88.html だった。

プログラムの設定を理解する(main以降)

個々の部分、どの手順でどれを設定すればOKか読み終わっても分かってない。
「PICの仕組み(PIC16F84A編)」も読んだがもうちょっと調べないと駄目だな。

OSCCON = 0b01110000;    // 内蔵クロックの周波数を8MHzに設定

PORTA = 0x00;           // PORTAを初期化
PORTB = 0x00;           // PORTBを初期化

TRISA = 0x00;           // PORTAの入出力設定
TRISB = 0x00;           // PORTBの入出力設定

ANSEL = 0x00;           // A/D変換を無効化
ADCON0 = 0x00;
ADCON1 = 0x00;

mainの最初に上記の設定をしていた。この辺で、入出力に利用するピン等の指定をしているようだ。それぞれのピンの指定方法はここを参考にした。
http://www.xcprod.com/titan/XCSB-DOC/physical_io.html
http://www.xcprod.com/titan/XCSB-DOC/physical_io_16f88.html


中途半端だけど、ガンダムが始まるので今日はここまで!!


2016/1/11追記:

レジスタの初期設定について

ちょっと調べた。
PIC16F88のデータシートが最終的に見るべきものなのだが、これは英語だし長いしとっつきにくい。
「PIC 16F88の構造(PIC16F88-I/F)」というレジスタ周りを日本語で説明してるページがあった!すげぇ。。


最小限やるなら次の6つを設定しておけば良いらしい。
1. OSCCON
2. ANSEL
3. TRISA
4. TRISB
5. PORTA
6. PORTB

OSCCONはOSCILLATOR CONTROL REGISTERの略で周波数設定。
ANSELはANALOG SELECT REGISTERの略でA/D変換の設定。
TRISはTRISTATE PORT REGISTERの略で、ピンの入出力設定。
PORTはそのままPORT REGISTERの略で、ピンの値設定。

データシートの53ページに次のような文がある。
PORTA is an 8-bit wide, bidirectional port. The corre-sponding data direction register is TRISA. Setting a TRISA bit (=1) will make the corresponding PORTA pin an input (i.e., put the corresponding output driver in a high-impedance mode). Clearing a TRISA bit (=0) will make the corresponding PORTA pin an output (i.e., put the contents of the output latch on the selected pin). 
要約すると、「PORTとTRISは対応してて一緒に使うんだよ。bitに0と1で入力出力切り替えできるからよろしく。」って感じかな。

ここまで分かれば、実際の回路に合わせてレジスタ初期化を書いてあげればよさそうだな。

追記終わり。

PIC焼く汎用基板作った

ちょっと前の記事「PICkit3でPICを焼くための汎用基盤を作ろうの巻」の続き。

実際に作ってみた。

完成品がこちら。



裏面。前に書いた回路図通りに順番に配線していきました。
キレイに取り回せないのでビニル線でジャンプしてるw



ちなみに参考にしたサイトのこの画像を当初目標にしていました。


ほとんど、線が交差してない。よく作るなぁ。。


Pickitと接続しやすいように専用のケーブルも作った。



接続するときはこんな感じ。


超便利!!
これでブレッドボード使ったpic焼きを卒業できるぜ。


2016/2/28 追記:


2016年1月2日土曜日

3GIMとxivelyの組み合わせた位のサービスがあったらIoTをもっと利用しやすくなると思った

3GIMとは株式会社タブレインが開発している3G通信モジュール。(説明ページ「3GIMの紹介」)
コマンド類も似ているので、広く使われている3G通信チップのコンフィグを調整したり、ハード的に利用しやすくしているのだと推測している。

次に、xively(ザイブリー)というのはIoT向けのwebサービスで、ハードウェアから送信された値(例えば、温度)を保存するときに利用する。( https://xively.com/ )
POSTをするときにトークンを付与すれば、指定したアカウントに紐づく、特定のハードウェアとして認識されてデータが分類される。

さっき思ったことは、この2つのサービスがくっついていてもいいなと思った。
つまり、通信モジュール+クラウドサービスのセットで、通信モジュール→クラウドへのデータ送信はもちろんとし、クラウド→通信モジュールにデータ送信することもできたらいいなと。

使い方としては、例えばビニールハウスの温度調整でストーブに通信機能をもたせたとする。
「ストーブ」にこの通信モジュールをくっつけているとする。
温度と使用した燃料は常にクラウドのサーバに送信している。
室内の温度も見れるし、webで温度調整もできるようになるのではないか。
ビニールハウスは燃料代がすごいらしいから、無駄を減らしたいよね。

あと、3G通信機能をもったやつを親機、短距離無線機能を持ったやつを子機として動作するモジュールにしてあげとけば、色々と使いやすそうに思うんだよね。

実際、自動販売機とかトラックとかには通信モジュールが載ってて、データは送信しているんだけど、こういった汎用的なウェブサービスっていうのは無いと思う。(調べてないけど)

簡単じゃないのかなぁ。結局、ハードウェア毎にプログラムしないといけなくて、コストの割に楽にならないかもしれない。

ふと思ったのでメモ。(いつか何かをひらめくかもしれないので)

2015年12月30日水曜日

PICkit3でPICを焼くための汎用基盤を作ろうの巻

PICを焼くときにブレッドボードでやってるのですが、ピン配置とか面倒くさいしPICの種類によって作り変えないといけない手間がありました。
勉強がてらユニバーサル基板で回路を作っておこうということで調べた記録。

現状はこんな感じ。


他の方がやってる方法を調べる

ネット探すと沢山の人が同様の試みされているので情報は豊富。

・「PICマイコンの書き込みについて」ICソケットを1つ、コネクタを3つにする方法。(これを私もやることにした)

・「[PIC]全ピン数対応のライタ基板を製作(PICkit3使用)」こちらの方法は、ICソケットを3つ用意してコネクタを1つにする回路。


当初、「ICソケット x 1」「PICkitのコネクタ x 1」で出来るといいなぁと思っていたが難しそうなので「ICソケット x 1」「PICkitのコネクタ x 3」で作ることにした。なんでICソケット3つにしなかったかというと、「ゼロプレッシャーのICソケット」が1つ700~900円位して部品として高いから。それだけ。


回路図の作成

参考にした上記ページに載っていた回路図を見ながら自分で同じものを書いてみただけ。
DesignSpark PCBというフリーのCADを勉強がてらにちょうどいいなと思ってやってみた。
ちょっと苦労したけど、このくらいなら描けるぜ!


買うもの

自分用にメモ。
・4隅にネジ穴があるユニバーサル基板(7cm x 5cm位)
・ゴム足(or プラ足)x4 ※基盤の4隅にネジで取り付ける
・足を取り付けるネジx4
(・スズメッキ線)持ってる
(・10kΩ抵抗)持ってる
・ジャンパ線に使えるビニル線
 ※スズメッキ線だけでは辛い。全部ビニル線でも良い気もするが。
・40ピンゼロプレッシャーICソケット
・1列6ピンのピンソケット(2.54mmピッチ) x 3
・1列6ピンL型ピンヘッダ(2.54mmピッチ) x 3



年明けにでもネットで部品注文して作ってみよう。
良いお年を!

2015年12月23日水曜日

【PIC入門】MPLABとXC8をインストール、PICKIT3を接続など簡単な回路を動かすまでのまとめ

センサーのデータをインターネットでサーバに送信する仕組みを作りたいなと思ったところからこの壮大な記録がはじまります。(読み終わるまで5分)

PICというものを使うと幸せになれるらしいが全く分からなくていろいろ躓(つまず)いたことを折角なのでまとめる。

PICとは

PIC(Peripheral Interface Controller)とはマイコンの一種でMicrochip社が売っている製品。マイコンにはCPUやROM、RAMが搭載されておりプログラムを実行することが出来る。PIC用のプログラムはC言語で大体作ることができる。PICにプログラムを焼く時には専用のPICKITという道具が別途必要になる。

サイトとか本とか見た時に「PICにプログラム焼けるのは当たり前なので省略」ばっかで、全く理解できずに苦労したぜ。。

今回作る電子回路

もっと早くに見とけばよかった「はじめてのPICマイコン」というページ。。マルツが書いてくれているのだが、4部構成になっていて入門にちょうどいい。(ちょっと説明汚かったり、無駄な説明あったりするけど。)
このマルツに出てくる次の2つの回路を作る。

1. 基本編


2. 応用編

買ってくるもの一覧

電子部品とかコンビニで買えないからホントミス無く買い物した方がいい。
私なんかPICのプログラム焼くためにPICKIT3(またはPICKIT2)が必要になるって知らなかったしオンライン購入、秋葉へ買い物、秋葉へ買い物しましたからね。。ホント時間の無駄。
全部買っても1万円しないから次の物を買ってくるべし。


No. 名前 購入数 備考
1 PICKIT3 1 4200円で買ったかな?
2 ブレッドボード 2 ・PIC焼く用
・回路作る用
の2つがあるといいと思う。
3 ジャンパワイヤセット(コの字) 1 ブレッドボードとセットになってた。
回路作るときにあると便利。
4 ジャンパワイヤセット(曲がる奴) 1 PICKITとの接続に使った。
ピンヘッダっていう部品使うのが普通かも。
5 単3乾電池 3 「3Vでも動くっしょw」ってやったら動かない。
4.5Vになるように3つ使う。
6 単3電池3個用電池ボックス 1 直列に繋ぐときに電池ボックス使うべし。
これが無いと無駄に疲れる。
7 普通のLED 10 5個あれば足りるけど予備。
20mA位で光る普通のLED1個40円位。
8 220Ω抵抗 10 5個あれば足りるけど予備。
1個5円位。
9 10kΩ抵抗 2 1個あれば足りるけど予備。
1個5円位。
10 PIC12F683 2 1個あれば足りるけど予備。
1個250円位。
ベーシックなPICなので同じ型番探すこと。

PICプログラムの環境構築

分かってしまえばなんてこたぁ無いんだけど、情報少なくて分かりにくかった。Microchip社から販売されているPIC用のプログラムを作るため次の2つをインストールする必要がある。(ちなみに、Windows7環境で作りました。)
  • MPLAB X IDE (プログラム作るIDE)
  • XC8 (コンパイラ、有料版もあるけど素人は無料版で十分)

黙ってインストール!

PICプログラムの作成

MPLAB X IDEを起動してプロジェクトを作るところから。
手順。

1. メニューのFile -> New Project... を選択
2. Choose Projectでは標準のままNext

3. Select DeviceではPIC12F683を選択(Mid-Rangeでフィルタすると見つかりやすい)

4. Select HeaderではNoneのままNext

5. Select ToolではPICKIT3を選択してNext

6. Select CompilerではXC8を選択してNext

7. Select Project Name and Folderでは、プロジェクトのパスを適当に設定、エンコードはUTF-8にした

8. プロジェクトが作られた
9. Souce Filesの部分を右クリックして「New -> main.c」を選択

10. newmain.cというファイルを作成
11. だまって次のプログラム書くべし
(簡単な説明はマルツの第三回の記事に書いてある)
--------------------------------------------------
#include <xc.h>

__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_ON & BOREN_ON & MCLRE_OFF & CP_OFF & IESO_OFF & FCMEN_OFF);

#define _XTAL_FREQ 1000000

void main()
{
    OSCCON = 0x40;
    ANSEL = 0;
    CMCON0 = 0x07;
    TRISIO = 0x08;

    while(1)
    {
        GP2 = 1;
        __delay_ms(300);
        GP2 = 0;
        __delay_ms(300);
    }
}
--------------------------------------------------
この時にエラーが画面に表示されるんだけど気にしなくていいっぽい。
調べたけど意味わからんかったしそのまま動くから。。



以上でプログラム完成。

PICにプログラムを焼く

焼くのも難しかった。。USBに接続してるんだから勝手に電源供給すると思うやん。。
はい、手順説明しまーす。

1. PIC12F683にプログラムを焼くための回路を用意する
googleで「ブレッドボード pickkit」で検索すればいくつも見つかる、今回はこのページを参考にした。(ブレッドボードとPICKit3でPICに書き込む)
上記サイトにおいてあるこの図の通りに回路作る。

実際に繋いだところがこんな感じ。


2. PICKit3をPCとブレッドボードに接続する

3. PICKIT3の設定を変えるためにレンチマークをクリック


4. PICkit 3 -> Option categoriesでPowerを選択して、「Power target circuit from PICkit3」を選択しOKを押す

5. ハンマーマークをクリックしてビルド
メッセージでエラーが出ない事を確認。


6. PICに矢印が向いてるマークを押して書き込む
メッセージでエラーが出ない事を確認。

完了!

回路を作って動かす

買ってきた部品を回路図通りに並べます。
(プログラムはLED1つを点滅させるものですが、回路は応用編のLEDを5つ点滅させるものでも動きますのでどっちでもいいです。)
4番に10Kの抵抗入れて繋ぐ意味などはマルツのページに書いてあるので後で読むとよいです。

あとは、間違えなければ動く!
応用編の回路で、LED1個のプログラム動かすとこんな感じ。


完成!

ちなみに、ココの下の方に書いてある5つのLEDを光らすプログラムを書いて実行したら次のような感じ。



いやー、大変だった。
ホント、素人には厳しいですわ。

私と同じくらいの知識の人がこのページを見たらきっと幸せになるはず。

2015年11月8日日曜日

昔の野菜の価格がどのくらいか調べた。価格推移と物価指数で。

もしかしたら、昔(40~50年位前)の農家の方が今の農家より儲けやすかったのかなぁと疑問に思ったので野菜の価格調べた。
物価指数が出てるから、その物価指数から今日の価格を概算しようという算段。

計算する前の予測では、昔のほうが野菜高かったんじゃないかと考えていた。

結論としては今と変わんなかった!

自分の物価に対する理解があやふやで意味のないデータかもね。
せっかく調べたのでメモしとく。

物価は総務省統計局のHPにあるようだ。
ただ、一覧で見たかったので「いまならいくら」というページの平成22年(2010年)基準の物価指数を利用した。

野菜の価格はベジ探のこのページの「主要野菜の月別小売価格の推移」というexcelファイルを参照した。金額は1kg当たりの値段。

2010年も2015年も物価はそんなに変わって無いので2010年を最後にした。(データ無かったし。)

計算方法は2010年の物価指数が100なので次のように算出している。

(野菜の2010年換算) = (当時の値段) * (100 / (当時の物価指数) )


それでは、調べた野菜について記録を貼っていきます。

換算した表

キャベツ


ハクサイ



タマネギ



トマト


ナス


ホウレンソウ



感想

1970年頃は、肥料や機械化の結果、米の収穫量が消費量を大きく上回り減反政策を始めた時期になる。もしかしたら、それより前はもう少し野菜が高いかも知れない。(肥料も改良されておらず収穫量が少ないから)

過去45年の野菜の値段は変わっていないので、効率的に大量に野菜を生産した農家は儲かっているだろうし、細々とやっているところは貧しいままだろう。
大量生産して価格が下がってしまいそうなときは野菜を処分しているから価格が維持されているのかもしれない。
買う側からすると、外国からの野菜が沢山入ってくるようになったのにスーパーで売っている野菜の値段は変わらないということか。中国産って表示すると売れないからかな。

劇的な野菜価格の変化を期待してたのに期待はずれの調査だった(笑)

2015年11月7日土曜日

農業を成長産業にするために廃止された減反政策と新しい保障制度を調べる

2018年に減反政策が廃止になることが、TPP参加を希望していた2013年に発表された。
減反は学校の教科書にも載っているくらいに古く広く知られている制度なのだが、具体的にどの程度の保障があるのか知らなかったのでせっかくなので調べた。

ちなみに、最近の日本だと10アール当たりの米の収穫量は530kg位らしい。
一枚(まい)の田んぼからお米はどれくらいとれますか?

減反の歴史

まずはwikiの「減反政策」「食糧管理制度」を見て歴史の流れを確認。
おおまかにまとめると次のような感じ。

1942年、食糧管理法成立。

米を政府が買い取ってから市場に流通させる。
貧しい家庭でも米を安価に買えるよう売値を下げていたため逆ざやであり後に財政を圧迫する。

1970年頃、余剰米が問題になる。

「新たに田畑を作ることを禁止」
「政府を通さず米を販売できる自主流通米制度開始」
「水田の一定割合を転作したら保障金を出す転作奨励金制度開始」
の3点を柱にする生産調整(減反政策)が始まる。
このとき「転作する面積」を政府が指定し始める。
減反政策に違反すると、保障金が貰えない等の制裁を受ける。

1987年、生産者米価の引き下げで逆ざやを解消。

1994年、食糧管理法を廃止し「主要食糧の需給及び価格の安定に関する法律」通称「食糧法」成立。

米の価格は市場に任せる。
政府の米買い入れの目的は備蓄になり、大幅に買い入れが削減された。
減反政策は「転作する面積」から「生産できる数量」に変更。


他にもすぐに廃止になった政策とかややこしい流れがあるみたいだけどこの程度の理解でいいかな。

1994年当時、品質の悪い米より美味しい米を国民が求めるようになっていて、食糧管理法廃止直前には自主流通米は政府管理米の2.5倍、自由米(ヤミ米)は政府管理米の0.3倍を占める状況になっていたそう。


現状の保障と減反廃止後の保障

保障制度が分かりやすくまとまっていたので、東洋経済オンラインの記事「減反廃止は名ばかり、迷走を続けるコメ農政」から図を引用します。


減反は廃止というのは本当で今までの「作りたいのに作れない」という問題点を解消しているので、東洋経済オンラインの記事タイトルはPV稼ぎのための釣りタイトル。最近、「東洋経済オンライン」って名前見るとクリックしたくなくなってきた。。

上の図に出てくるそれぞれの保証は10a(1000m2)当たりの金額。
それぞれの制度は次のようなもの。

戸別所得補償(農業者戸別所得補償制度)

2010年から施行され始めた制度。当時は民主党。wikiから引用。
米、麦、大豆、てん菜、でん粉原料用ばれいしょ、そば、なたね等の、販売価格が生産費を恒常的に下回っている作物について差額交付するとともに、麦・大豆等への作付転換を促進、増産を計るものとなっている。
同制度に参加するすべてのコメ農家には、米価水準にかかわらず、全国一律の定額補償が10アール当たり1.5万円が支払われる。対象農家は約180万戸とされる[2]。農林水産省は申請件数120万戸を目標としていたが、2010年6月時点での申請は、すでに130万件を突破していた[2]。
米農家は一定の保障がもらえるとはなんとお得な。。 ただ外国では比較的一般的な保障制度のようで、同じwikiのページに次のような記載があった。
 直接支払いによる農業保護政策は、すでにEU諸国やアメリカで広く実施されている。フランスでは農家収入の8割、スイスの山岳部では100パーセント、アメリカの穀物農家の収入は5割前後が政府からの補助金だという。
農林水産省の申請見積もりは大幅に見誤っているが、世界基準から外れた政策というわけでも無さそう。

転作補助金

水田を特定の畑作に転作する場合に出る保障金のようだが、wikiとかが無くてちょっと自信ない。
例えば、水田全部を転作した場合、何年間補助金もらっていいの?とか分からなかった。水田を全部畑に変えて10年たっても"転作"補助金もらえるとも思えないんだが。
とりあえず、水田持っている人が一時的に転作するときに受けられる制度と認識した。

直接支払制度

民主党の戸別所得補償から対象者と金額を変更した「直接支払い」の新しい制度。
畑10aなら2000円の保証、1haなら2万円。うん、100ha畑持ってたらそれだけで生活できるw
海外の先進国では農業への直接支払い制度が進んでいるらしいので、こういった税の使い方でも良いのではないかと思う。
2011年にこんな記事が出てた「なぜ、アメリカやEUのように「直接支払い」に移行できないのか?」。



なんとなく整理できたつもり。