Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

IFTTTのMakerチャンネルの接続先はどこなのか

なにやら画面が変わって探し辛くなったので、メモ

お急ぎの方

別に設定などみたくない方は、以下のようなURLを作って下さい。

https://maker.ifttt.com/trigger/{{APP_NAME}}/with/key/{{YOUR_KEY}}

これに、以下のような様式のJSONデータをぶっこみます。

{“value1” : {{DATA_A}}, “value2” : {{DATA_B}}, “value3” : {{DATA_C}}}

実際のところ

ちゃんとみたい人はこちら。
まず、Makerのページに飛び右上の歯車をクリック
f:id:shuzo_kino:20170214212725p:plain
詳細情報がでます。
ここで、URLをクリック
f:id:shuzo_kino:20170214212730p:plain
そうすると、ようやく見慣れた設定画面が出てきます。
f:id:shuzo_kino:20170214212734p:plain

メモリをケチってchar型でカウンターを作ると

arduinoで動作チェックも兼ねたカウンターを作っておりました。
ここ数年、型を意識しないですむ言語ばかり扱っていたためか、久々にやらかしたのでメモ。
マイナスになる可能性がないカウンターなら、最初から符号なしにしましょう。

実際のところ

char cnt = 0;
char tartget[20] = "";
cnt = 0xff & cnt
sprintf(target, "%02x%s%s", cnt, "12","34");

とかでcharでカウンター回そうとしたら、以下のような挙動

7d
7f
ff80

出力側はsprintfで"%02x"とかやってます。
これは最低桁数を保証してくれるもので、溢れればそのまんま出力されます!
今回は0xffと0x80の組と判断されたみたいですね……
このあたりはちゃんと解析したいトコですが、とりあえずこの場を凌ぐには
unsigned char型にして、符号を排除すれば措定通り80,81...と余計なffがない状態でいけます。

Arduinoで文字列のゼロ埋め/左揃えをやりたいなら、素直にsprintfを使おう

Arduinoで文字列のゼロ埋め/左揃えをやりたいなら、素直にsprintfを使うと楽です。

実際のところ

打っ込むのはString型でなくChar配列型文字列です。

char sendPacket[24] = "";

 cnt =  ((cnt + 1) & 0xff);
 sprintf(sendPacket, "x%s", cnt, "0203");
 Serial.println(sendPacket); 

【読書メモ】Soft skills ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

33歳にして経済的自由人となったソンメズ氏が、ソフトウェア開発者の人生プランについて書いた本です。

取り扱う分野は本当に人生早見表みたいな塩梅で多岐にわたっています。
我々に馴染みのあるとこではキャリア、マーケティング、学習、生産性……ここまでなら類書はありそうです。
本書はこれに加えて資産運用、健康、精神衛生、恋愛に自己啓発……とやたら盛りだくさんな内容になっています。

内容は割とぶっちゃけており、自身の失敗談を包み隠さず語る姿には好感が持てます。
が、本書の三分の二も過ぎた辺りに出てくるご自身の「モデル時代の写真」を見ると、なんというか……個体固有値が高い人っていいデスネという印象に……。

最終章で作者も明言している通り、この本はあくまで一例なのであって後は個々人の実行に掛かっています。
私には私のルートがある筈なので、取り敢えずは本書通りにやって手痛い一撃を喰らう所から始めてみます。
失敗する事それ自体が大事……というのは本書の趣旨ですしね

過去に紹介した関連本

健康面に特化した本として、昔紹介した「ヘルシープログラマー」というのもあります
shuzo-kino.hateblo.jp

315MHz帯通信モジュールIM315をArduinoで試す その2:送受信スクリプト編

shuzo-kino.hateblo.jp
の続きです。
今回は送受信用のスクリプトを書いてみます。

実際のところ

送信側

#include <SoftwareSerial.h>

SoftwareSerial IM315Serial(8, 9); // ソフトウエアシリアル
int busy;
unsigned char cnt = 0;
String inputstr = "";
char sendPacket[24] = "";


void setup() {
 IM315Serial.begin(19200); // ソフトウエアシリアル 初期化
 Serial.begin(19200);
 pinMode(10, INPUT);// Busy 信号 Pin10 入力
  while (!IM315Serial & !Serial ) { ; }
 delay(1000);
 Serial.print("ID:");

 IM315Serial.println("RDID");
  while (IM315Serial.available()) {
    readPacket();
  };
 delay(1000);

}

void loop() {
  do {
    busy = digitalRead(10); // Busy 信号 読み取り
  } while (busy != 0); // Busy なら Loop
  
 IM315Serial.print("TXDT "); // 送信コマンド
 cnt = (0x00ff & (cnt + 1));  //カウンター。0xffで0x00に戻る
 sprintf(sendPacket, "%02x%s", cnt, "0203");
 IM315Serial.println(sendPacket); // アナログ値を HEX フォーマットで送信
 // Serial.println(sendPacket); //デバッグ用

 // 受信成功時にでる"OK"を拾いたい場合、以下を有効に
 //while (IM315Serial.available()) { 
 // Serial.write(IM315Serial.read());
 //}
 
 delay(5000);
}

void readPacket() {
  inputstr += (char)IM315Serial.read();;
}

受信側

先程わかった固有IDを設定します。
今回は"9E46"だったので、これを直接。
公式によると以下の仕様とのことなので、あまり書き込みしすぎない方がいいでしょう。
私は力技のコメントアウトで対処してますが……場合によっては、初期設定用の別ルーチンを用意したほうがいいかも。

電源投入直後は、不揮発メモリへの書込みは禁止状態です。
不揮発メモリへの書込み回数は最大1万回ですので、頻繁にパラメータ変更をする場合は書込み禁止状
態にしてください。
通信対象となる送信モジュールの固有 ID は、最大 64 個まで登録することができます。

#include <SoftwareSerial.h>

SoftwareSerial IM315Serial(8, 9); // ソフトウエアシリアル
int busy = 0;
String inputstr = "";

void setup() {
 Serial.begin(19200);
 IM315Serial.begin(19200); // ソフトウエアシリアル 初期化
 pinMode(10, INPUT);       // Busy 信号 Pin10 入力

 while (!IM315Serial & !Serial ) { ; }
 delay(500);

 //デバイス登録機能。不揮発領域に書き込むので、あまり使わない
 //device_reg_process();
}

void loop() {
 do {
    busy = digitalRead(10); // Busy 信号 読み取り
 } while (busy != 0); // Busy なら Loop
 
  while (IM315Serial.available()) {
    readPacket();
  };

  if (inputstr[-1] = '\n' && inputstr != "") {
    //sample:AB,0001,7C:13,57,9B,DF,02,46,8A,CE
    Serial.println(inputstr);
    inputstr = "";
  }
  
  delay(100);
 }

void readPacket() {
  inputstr += (char)IM315Serial.read();;
}

void sendPacket(String packet) {
  Serial.println("Send" + packet);
  IM315Serial.println(packet);
  delay(3000);
  while (IM315Serial.available() > 0) {
    readPacket();
  };
  delay(3000);
}

void device_reg_process(){
  sendPacket("ENWR");      //不揮発領域に書き込みを可能に
  sendPacket("SRID 9E46"); //受信対象の固有ID(この例では9E46)を設定
  sendPacket("DSWR");      //書き込みを再度禁止
}

【読書メモ】おカネが変われば世界が変わる―市民が創るNPOバンク

おカネが変われば世界が変わる―市民が創るNPOバンク

おカネが変われば世界が変わる―市民が創るNPOバンク

NPOバンクというのがあるそうです。
私が今個人的に感じている「とある業界」の問題解決に使えるんじゃ無いかと手を出しました。

銀行法があるので、出資能力を持ったNPO法人として機能する様子。
元本保証も無ければ利子も出せないと儲ける仕組みにならなそうです。
とは言え、課題解決のための持ち回りプラットフォームとして考えるなら悪くはなさそうでもあります。

本文中ではクリアすべき法律、実際の事例などが出ており運用イメージが掴み易くなっています。

……この世代の文系教授にありがちな社会批判が一々挟まれてウンザリする事を除けば、
非常に勉強になる本です。

世間に支援策がないわけでは、決して無い

NPOバンクは「無担保」「小額」「目的重視」をターゲットにしています。
内容によっては、必ずしも上記条件が全部必要というワケでも無いでしょう。
その場合、既存の支援策が使えるかも。

まず、地域振興系なら
www.furusato-zaidan.or.jp
教職員の互助会なんかでも
www.gojo-saitama.jp
年金を担保にした小額融資……なんてのも
www.nyfsk.or.jp

315MHz帯通信モジュールIM315をArduinoで試す その1:Arduinoシールド編

IM315シリーズは"特定小電力無線"と呼ばれる帯域を使う通信モジュールです。
1:1からN:Mまで、スター型やクラスタツリー型のネットワークを構築可能。
送信専用のデバイスに至っては、なんとボタン電池一個で一年持つとかいう脅威の低消費電力。
通信距離も、見通し50m(公式による)、屋内でもドアを挟んで4m、遮蔽なしで15m程は飛びます。
ワザワザZigBeeみたいなものは使いたくないがリモートで接続したい場合……などには中々有用です。

実際のところ

構成

受/送信子機

どちらも同じ構成で行けます。

315MHz特定小電力無線 送受信モジュール IM315TRX

315MHz特定小電力無線 送受信モジュール IM315TRX

組み上がった装置はこんな感じ

デフォではD8、D9が通信に使われています。
また、D10がビジー状態用フラグ、D11がスリープ状態指定用フラグとして推奨されている様子。

ソフトウェア

とりあえず、受信器側で動作確認してみましょう。
"RDID"という機器固有IDを読み出す関数をコールしてシリアルに吐き出してみます。

#include <SoftwareSerial.h>

SoftwareSerial IM315Serial(8, 9); // ソフトウエアシリアル

void setup() {
 IM315Serial.begin(19200); // ソフトウエアシリアル 初期化
 Serial.begin(19200);
 pinMode(10, INPUT);       // Busy 信号 Pin10 入力
 while (!IM315Serial & !Serial ) { ; } //受信待機
 delay(1000);

 /* 機器固有IDを表示*/
 Serial.print("ID");

 IM315Serial.println("RDID");
  while (IM315Serial.available()) {
    readPacket();
  };
}

void loop() {
  ;
}