はりうすブログ (のすけのメモ)

湘南にある小さな会社 代表 ”のすけ”のブログです

SORACOM Air の契約の仕方

こんにちは、のすけです。

IoTの通信として最適なSIMであるSORACOM Air と契約しました。

手順などをご紹介。

SORACOM Air とは

f:id:hollywis:20151216153112p:plain

小容量通信の常時接続に最適な契約ができるのがSORACOM Airです。

通常のサービスが100Mbpsで月額1GBの通信っで1000円のような感じですが

SORACOM Airは, 基本料金は1日 10 円、データ通信量は 1MB あたり 0.2 円からの従量課金になります。

つまり月額(31日計算)310円から利用できるものになります。

従量課金の価格表はこちら

f:id:hollywis:20151216153024p:plain

IoTなら安い・・・と思う。

もうお判りかもしれませんが、スマホなどに刺して普通に使うなら遅いし高いです。

しかし、IoTなら状況は違ってきます。

IoTで利用する通信は、文字データが中心ですので転送サイズは多くても数キロバイトと、たかが知れています。 そのため、低速で少容量でも十分実用的だと考えられます。

コンソールから設定を変えられる!

なんと、SORACOM Airはコンソールから通信設定を変えることができます。

利用が多い時は即座に上のプランに移行できるというのです。

たぶん便利なのでしょう。まだ使ってないのでわかりませんが。

まずはアカウントを作成

f:id:hollywis:20151216153844p:plain

メールアドレスとパスワードを入れます。

メールでアクティベイト用URLがきますのでクリックすると作成完了です。

SIMを登録する

ログインすると、SIMを登録してほしいと言われます。

クリックするとクレジットカードも登録してください。と言われるので登録します。

f:id:hollywis:20151216154108p:plain

SIMはあらかじめAmazonで購入しておきました。888円です。

なお、コンソールから買うこともできますが10枚単位です。(1枚300円)

SORACOM Air SIMカード(データ通信のみ) (ナノ)

SORACOM Air SIMカード(データ通信のみ) (ナノ)

SIM登録にはIMSIとパスコードを登録するようです。

SIM の台紙の裏面に貼ってあるので、それを入力して登録します。名前、グループは空欄のままでもOKです。

f:id:hollywis:20151216154625p:plain

登録後、速度クラスを変更します。初期状態では「s1.standard」になっています。 速度、などは次の通り。

s1.minimum : Upload 32Kbps / Download 32Kbps

最後に、「操作」メニューから「使用開始」を選べばOKです。 f:id:hollywis:20151217163019p:plain

開始されると1日10円の基本料が課金されるようになるはずです。

監視設定

コンソールの監視メニューから、通信量を監視することができます。

ある一定数を超えたら、メールしたり制限したりすることができるようです。

便利ですね。

f:id:hollywis:20151217163333p:plain

私は試しに日次通信料の監視設定を入れました。

課金情報

課金情報は課金メニューで一発でわかります。

CSVをダウンロードすればSIM毎の詳細な通信量と金額も把握できるようです。

f:id:hollywis:20151217163830p:plain

以上で利用設定は完了です。

7セグメントLEDx4を使ってみる | 中華で始める Arduino入門日記15

こんにちは、のすけです。

中華で始める Arduino入門日記の15回目になります。

この連載は、爆安の中華製のArduino互換機を入手し、色々と苦しみながらも安い互換機でArduinoを学習してしまおうというものです。 入手の話はこちらから。

hollywis.hatenablog.com

今回のお題

今回は、7セグメントLEDを4つ付けたやつを利用してみたいと思います。

チュートリアルのchapter13に対応しています。

早速始めましょう。

7セグx4

こやつです。数字部分が4つに増えました。

f:id:hollywis:20151211165528j:plain

裏にピンが12個あります。 数字部分が4つなので、7セグの10ピン*4で40ピンとかでは無いようです。安心しました。

1個との違い

中華キットに入っていたのが5461ASでしたので、データシートを探してみました。

データシート(5461AS)より f:id:hollywis:20151211163345p:plain

1個の数字の入力は基本的に同じようです。

ただしDIG1~4まであるので、あとはその表示をDIG1~4のどこを対象にするのかを指定するだけです。

つまり、DIGを指定する入力端子が4つ増痩せば良いということですね。

PINが全部で12あり、左下から反時計回りにPIN1~12となるようです。

pin12,9,8,6はDIG指定用で、11,7,4,2,1,10,5,3はLEDのa~gの表示に対応している模様

f:id:hollywis:20151211155027j:plain

まずは、a~g部分(11,7,4,2,1,10,5,3ピン)を指す

前回とほぼ一緒なので、いきなり刺します。

こんな感じでしょうか。

f:id:hollywis:20151211165726j:plain

プログラム的にはこんな感じになります。

int a=1;  //LED 11pin
int b=2; //LED 7pin
int c=3; //LED 4pin
int d=4; //LED 2pin
int e=5; //LED 1pin
int f=6;  //LED 10pin
int g=7;  //LED 5pin
int dp=8;  //LED3pin

残りはpin12,9,8,6ですな。

それぞれArduinoのデジタルpin9~12に刺します。

//DIG選択用
int d1 = 12; //LED12pin
int d2 = 11; //LED 9pin
int d3 = 10; //LED 8pin
int d4 = 9; //LED 6pin

プログラム

サンプルを参考にしつつアレンジしました。

まずは表示確認ということで、1,2,3,4を出してみます。

// 7セグメントLED x4の制御

int a=1;  //LED 11pin
int b=2; //LED 7pin
int c=3; //LED 4pin
int d=4; //LED 2pin
int e=5; //LED 1pin
int f=6;  //LED 10pin
int g=7;  //LED 5pin
int dp=8;  //LED3pin

//DIG選択用
int d1 = 12; //LED12pin
int d2 = 11; //LED 9pin
int d3 = 10; //LED 8pin
int d4 = 9; //LED 6pin

// すべて消す
void all_low(void)
{
  unsigned char j;
  for(j=1;j<=8;j++)
        digitalWrite(j,LOW);
}

//display number 1
void digital_1(void) 
{ 
    all_low();
    digitalWrite(c,HIGH);
    digitalWrite(b,HIGH);
} 
//display number2
void digital_2(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(b,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(e,HIGH); 
    digitalWrite(d,HIGH);
} 
// display number3
void digital_3(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(b,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(d,HIGH); 
} 
// display number4
void digital_4(void) 
{ 
    all_low();
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(b,HIGH); 
    digitalWrite(c,HIGH);     
} 
// display number5
void digital_5(void) 
{ 
    all_low();
    digitalWrite(a,HIGH);
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(d,HIGH); 
} 
// display number6
void digital_6(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(d,HIGH); 
    digitalWrite(e,HIGH);     
} 
// display number7
void digital_7(void) 
{   
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(b,HIGH); 
    digitalWrite(c,HIGH); 
} 
// display number8
void digital_8(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(d,HIGH); 
    digitalWrite(e,HIGH); 
    digitalWrite(b,HIGH); 
} 
// display number9
void digital_9(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH); 
} 
// display number0
void digital_0(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(f,HIGH); 
    digitalWrite(e,HIGH); 
    digitalWrite(d,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(b,HIGH); 
}
// display point
void dispDec(void)
{
    digitalWrite(dp, LOW); 
}

void pickDigit(int x) {
  //DIGの選択
  digitalWrite(d1, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d4, HIGH);
  delayMicroseconds(55);
  switch(x) 
  {
    case 1: 
      digitalWrite(d1, LOW); break;
    case 2: 
      digitalWrite(d2, LOW); break;
    case 3: 
      digitalWrite(d3, LOW); break;
    case 4: 
      digitalWrite(d4, LOW); break;
    default:
      digitalWrite(d4, LOW); break;
  }
}

void pickNumber(int x) {
  switch(x) 
  {
    case 1: 
      digital_1(); //1
      break;
    case 2:
      digital_2(); 
      break;
    case 3: 
      digital_3(); 
      break;
    case 4: 
      digital_4(); 
      break;
    case 5: 
      digital_5(); 
      break;
    case 6: 
      digital_6();
      break; 
    case 7: 
      digital_7();
      break; 
    case 8: 
      digital_8(); 
      break;
    case 9: 
      digital_9(); 
      break;
    case 0:
      digital_0(); 
      break;
    default:
      digital_0();  
  }    
}

long n=0;
int x = 100;
int del =155; //delay time

void setup() 
{ 
    int i;//define i
    for(i=1;i<=12;i++) 
        pinMode(i,OUTPUT);//set pin1~pin12 output
} 
void loop() 
{     
    pickDigit(1);
    pickNumber(1);
    delayMicroseconds(del);
    
    pickDigit(2);
    pickNumber(2); 
    delayMicroseconds(del);

    pickDigit(3);
    dispDec();
    pickNumber(3);
    delayMicroseconds(del);

    pickDigit(4);
    pickNumber(4); 
    delayMicroseconds(del);
    n++;
}

1234の結果

やはり一筋縄ではいかない。

どうやらひとつ前の残像が残ってしまい、1,2,3,4が重なっているようです。

f:id:hollywis:20151211174145j:plain

いろいろと試行錯誤をした結果

数字の選択の前に、all_low()を入れて数値のリセットを入れると良いことが判明

そうすると綺麗に表示されました。

void loop() 
{   
    all_low();
    pickDigit(1);
    pickNumber(1);
    delayMicroseconds(del);
    
    all_low();
    pickDigit(2);
    pickNumber(2); 
    delayMicroseconds(del);

    all_low();
    pickDigit(3);
    dispDec();
    pickNumber(3);
    delayMicroseconds(del);

    all_low();
    pickDigit(4);
    pickNumber(4); 
    delayMicroseconds(del);    
}

f:id:hollywis:20151211180916j:plain

7セグメントLEDはdelayの差し込み具合とかがシビアで、ちょっと使いにくいです。

次回は「74HC595」を使います。

7セグメントLEDを使ってみる | 中華で始める Arduino入門日記14

こんにちは、のすけです。

中華で始める Arduino入門日記の14回目になります。

この連載は、爆安の中華製のArduino互換機を入手し、色々と苦しみながらも安い互換機でArduinoを学習してしまおうというものです。 入手の話はこちらから。

hollywis.hatenablog.com

今回のお題

前回は温度センサーを使いました。

hollywis.hatenablog.com

今回は、7セグメントLEDを利用してみたいと思います。

チュートリアルのchapter12に対応しています。

早速始めましょう。

7セグメントLED

こいつです。

f:id:hollywis:20151211152522j:plain

みてわかる通り数字を表示することができそうです。

f:id:hollywis:20151211155027j:plain

サクッと表示させちゃいましょう。

回路

7か所すべての足とデジタルピンをつないで、HIGH,LOWを切り替えればいける感じっぽい。

電圧は下の真ん中の端子にGNDを220Ωの抵抗付きで接続します。

絵では3.3Vにつないでいるように見えますが、実際にはGNDに繋ぎましょう。

f:id:hollywis:20151211152428p:plain by SainSmartチュートリアル

コードがヒドいことになってます。

f:id:hollywis:20151211153413j:plain

プログラム

例によってサンプルプログラムを使うと、まともに数字にならないので自作します。

わかりやすくA~GとDPを表示する変数を作って、それを利用する数字関数を作ります。

数時関数の中では、一度LEDの表示をすべてリセットするall_lowを呼び出すシンプルな構造にしました。

loop内では数字を呼び出します。サンプルにはない9と0も追加してあります。

int a=7; 
int b=6; 
int c=5; 
int d=11; 
int e=10; 
int f=8; 
int g=9; 
int dp=4; 

// すべて消す
void all_low(void)
{
  unsigned char j;
  for(j=4;j<=11;j++)
        digitalWrite(j,LOW); 
}

//display number 1
void digital_1(void) 
{ 
    all_low();
    digitalWrite(c,HIGH);
    digitalWrite(b,HIGH);
} 
//display number2
void digital_2(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(b,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(e,HIGH); 
    digitalWrite(d,HIGH);
} 
// display number3
void digital_3(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(b,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(d,HIGH); 
} 
// display number4
void digital_4(void) 
{ 
    all_low();
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(b,HIGH); 
    digitalWrite(c,HIGH);     
} 
// display number5
void digital_5(void) 
{ 
    all_low();
    digitalWrite(a,HIGH);
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(d,HIGH); 
} 
// display number6
void digital_6(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(d,HIGH); 
    digitalWrite(e,HIGH);     
} 
// display number7
void digital_7(void) 
{   
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(b,HIGH); 
    digitalWrite(c,HIGH); 
} 
// display number8
void digital_8(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(d,HIGH); 
    digitalWrite(e,HIGH); 
    digitalWrite(b,HIGH); 
} 
// display number9
void digital_9(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(f,HIGH); 
    digitalWrite(g,HIGH); 
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH); 
} 
// display number0
void digital_0(void) 
{ 
    all_low();
    digitalWrite(a,HIGH); 
    digitalWrite(f,HIGH); 
    digitalWrite(e,HIGH); 
    digitalWrite(d,HIGH); 
    digitalWrite(c,HIGH); 
    digitalWrite(b,HIGH); 
} 
void setup() 
{ 
    int i;//define i
    for(i=4;i<=11;i++) 
        pinMode(i,OUTPUT);//set pin4~pin11 output
} 
void loop() 
{     
    while(1) 
    { 
        digital_1(); //1
        delay(1000);
        digital_2(); 
        delay(1000); 
        digital_3(); 
        delay(1000); 
        digital_4(); 
        delay(1000); 
        digital_5(); 
        delay(1000); 
        digital_6(); 
        delay(1000); 
        digital_7(); 
        delay(1000); 
        digital_8(); 
        delay(1000);
        digital_9(); 
        delay(1000); 
        digital_0(); 
        delay(1000);     
    }
}

表示してみる

結果はこちら

なかなか綺麗に出ますね。

次は4桁の7セグメントLEDに接続します。

Arduinoでモールス信号練習機を作った話 | さいぞうのArduino初心者日記5

f:id:hollywis:20151211180054j:plain

こんばんは。

さいぞうです。

Arduino入門連載の5回目だ。 前回はArduinoでLEDを点滅させるという初歩の初歩でふざけてLチカモンスターを作って楽しかった。  
hollywis.hatenablog.com

今回やることは、実は前回とほとんどからない。 参考にしているチュートリアルのタイトルは、

  前回はChapter 2 Blink LED

  今回はChapter3 LED Blink

何が違うのか全然わからない。  
 
なので、チュートリアルは無視して、今ある知識だけで作れる応用として、さっき思いついたモールス信号練習機を作ろうと思う。

続きを読む

温度センサーを使ってみる | 中華で始める Arduino入門日記13

こんにちは、のすけです。

中華で始める Arduino入門日記の13回目になります。

この連載は、爆安の中華製のArduino互換機を入手し、色々と苦しみながらも安い互換機でArduinoを学習してしまおうというものです。 入手の話はこちらから。

hollywis.hatenablog.com

今回のお題

前回は光センサーで明るさを検知してみました。

hollywis.hatenablog.com

今回は、温度センサーを利用して部屋の温度を測ってみたいと思います。

チュートリアルのchapter10に対応しています。

早速始めましょう。

温度センサーを知る

LM35DZという温度センサーが入っていました。

データシートによると次のような特徴があるようです。

  • 摂氏 ( ℃ ) 温度に直接較正されている

  • 温度係数はリニアで+ 10.0mV/℃

  • + 25℃において 0.5℃の精度を保証

  • - 55℃~+ 150 ℃の温度範囲

  • リモート・アプリケーションに最適

  • ウェハ・レベル・トリミングによる低コスト化

  • 4 ~ 30V の動作電源電圧範囲

  • 60 μA 以下の電流ドレイン

  • 低自己発熱、静止空気で 0.08℃

  • ± 1/4℃以下の非直線性 ( 代表値 )

  • 低出力インピーダンス、1mA 負荷で0.1 Ω

と、実はそれなりに良さげなセンサーのようです。

中華キット侮れん。。。

f:id:hollywis:20151211000635p:plain

VoutをアナログA0ピンへ、1℃上昇する毎に10mVの出力が上昇するようです。

回路

温度センサーに直接つないじゃいます。

  • 緑が[5V]と[+Vs] を接続

  • 黄が[A0]と[Vout]を接続

  • 青が[GND]と[GND]を接続

f:id:hollywis:20151211133704j:plain

プログラム

サンプルプログラムを実行してみます。

void loop() {
  int val;
  int dat;
  val = analogRead(potPin);
  dat = (125*val)>>8 ; // Temperature calculation formula
  Serial.print("Tep : ") ; //print “Tep” means temperature 
  Serial.print(dat) ; // print the value of dat 
  Serial.println("C"); //print “C” means degree
  delay(500);//delay 0.5
}

なにやら、読み取った値に125を掛けて、8ビット右シフトしているようです。

つまり,28である1024で割っているようですね。

でも実行した結果、温度が-75℃とかになりました。

そんわけないし。

なんか検索すると各所でうまく温度取れない!みたいな話がいっぱい引っかかってきます。

様々な温度の計算方法があったので全部適用してみた。

そのプログラムがこちら。

int apin = 0; //アナログpin0を利用
float v = 5; // 基準電圧

void setup()
{
    Serial.begin(9600);        // シリアル通信設定
}

void loop() 
{
  int val;
  float aV; // アナログpinの電圧
  int dat;
  val = analogRead(apin);
  Serial.print("Anagor read:");
  Serial.println(val);

  // 方式1(samaple)
  dat = (125*val)>>8;
  Serial.print("Tep1 : ") ; //print “Tep” means temperature 
  Serial.print(dat) ; // print the value of dat 
  Serial.println("C"); //print “C” means degree
  
  // 方式2
  aV = (v * val) / 1024;
  Serial.print("Anarog Voltage:");
  Serial.println(aV);
  dat = aV * 100;
  Serial.print("Tep2 : ") ; //print “Tep” means temperature 
  Serial.print(dat) ; // print the value of dat 
  Serial.println("C"); //print “C” means degree

  // 方式3
  dat = val/27.3;
  Serial.print("Tep3 : ") ; //print “Tep” means temperature 
  Serial.print(dat) ; // print the value of dat 
  Serial.println("C"); //print “C” means degree

  // 方式4
  dat = ((v * val/5) / 1024) * 100;
  Serial.print("Tep4 : ") ;
  Serial.print(dat);
  Serial.println("C"); //print “C” means degree

  Serial.println("");
  delay(2000);
}

方式1のサンプルは125というマジックナンバーがありますし、方式3にも27.3というマジックナンバーがあります。

正直よくわかりません。

方式2と4は、アナログピンへの電圧を求めて、1℃あたり10mVであることから、100倍して温度を計算しています。 式を1つにまとめるか、分けたかの違いだけです。

その結果がこちら。

Analog read:328
Tep1 : -96C
Anarog Voltage:1.60
Tep2 : 160C
Tep3 : 12C
Tep4 : 160C

Analog read:389
Tep1 : -67C
Anarog Voltage:1.90
Tep2 : 189C
Tep3 : 14C
Tep4 : 189C

Analog read:448
Tep1 : -38C
Anarog Voltage:2.19
Tep2 : 218C
Tep3 : 16C
Tep4 : 218C

Analog read:753
Tep1 : 111C
Anarog Voltage:3.68
Tep2 : 367C
Tep3 : 27C
Tep4 : 367C

見てわかる通りかなり違います。 方式3のTep3が一番まともだし、合っているよう見えます。 しかし、27.5を掛けるのはやはり意味がわかりません。

ロジック的には方式2,4が合っているはずだと思います。でも367℃ですからね。

また、Analog readの値が448とかになっており、電圧が2.19Vを記録しています。 LM35DZは最大1.5V(150℃)とかな気がしますけど、これはセンサーが壊れているのでしょうか。

もう良くわかりません。揺れも大きいですし、温度センサーは難しいということがわかりました。

今回はこの辺りでやめにしたいと思います。

次回はセグメントLEDを使います。

明るさセンサーを使ってみる | 中華で始める Arduino入門日記12

こんにちは、のすけです。

中華で始める Arduino入門日記の12回目になります。

この連載は、爆安の中華製のArduino互換機を入手し、色々と苦しみながらも安い互換機でArduinoを学習してしまおうというものです。 入手の話はこちらから。

hollywis.hatenablog.com

今回のお題

前回はポテンションメーターという可変抵抗器でグリグリしました。

hollywis.hatenablog.com

今回は、Photoresistor(明るさセンサー)を利用して傾きを検出してみたいと思います。

チュートリアルのchapter10に対応しています。

早速始めましょう。

Photoresistor(明るさセンサー)を知る

こいつです。中華キットに抜かりなく入っていました。

f:id:hollywis:20151210182541j:plain

ちょっとここでWikipedia先生の引用を紹介

フォトレジスタ (photoresistor) とは、入射する光の強度が増加すると電気抵抗が低下する電子部品である。 光依存性抵抗 (light-dependent resistor, LDR) や 光導電体 (photoconductor) 、フォトセル(photocell)とも呼ばれる。 フォトレジスタは、高抵抗の半導体でできている。 充分に周波数の高い光が素子に入ると、半導体に吸収された光子のエネルギーにより束縛電子が伝導帯に飛び込む。 結果として生じる自由電子(と対になるホール)によって電流が流れ、電気抵抗が低くなる。

by Wikipedia

光の強さによって、抵抗が低くなるようです。

また、キットに入っているのは硫化カドミウム (CdS) セルというものらしく、セルに光が当たると抵抗値が低くなります。

なお、明るい時は約600Ω、暗い時に1~2MΩになる模様。

回路を作成

利用する部品はこちら

  • Photoresistor : 1

  • LED : 1

  • 1kΩ 抵抗 : 1

  • 220Ω 抵抗 : 1

  • ブレッドボード: 1

  • ジャンパーワイヤ: 5

f:id:hollywis:20151210190749j:plain

1k抵抗は光センサー側につけます。

こんな感じ。

f:id:hollywis:20151210185021j:plain

写真はA2ピンと1kΩ抵抗にジャンパーワイヤーが刺さっていませんね。刺しましょう。

プログラム

サンプルプログラムを使うより、前回のポテンションメーター用の改造プログラムが思いのほか良さげなので、それをちょっと修正しています。

シリアル出力もされててデバッグしやすくいい感じです。

(もう全部これでいいんじゃないか...)

int apin = 2; //アナログpin2を利用
int ledpin = 12; //LED pin
int threshold = 512; //閾値

void setup()
{
    pinMode(ledpin,OUTPUT); //デジタル pinを出力設定
    Serial.begin(9600);        // シリアル通信設定
}
void loop()
{
    int photocell_read;  //変数photocell_readを定義
    while(1)
    {
       photocell_read = analogRead(apin); //アナログpin0から電圧を読み取って変数に格納
       Serial.println(photocell_read);

       if(photocell_read <= threshold) 
       {
          // 閾値以下ならLED点灯
          digitalWrite(ledpin,HIGH);//led点灯
       }
       else //それ以外の場合
       {
          digitalWrite(ledpin,LOW);//led消灯
       }
    }
}

やってみる

はい、やってみた結果LEDは変わりませんでした。

例によって、チューニングです。 このプログラムではシリアル出力してますから、値を確認してみましょう。

  • 通常時で450前後

  • 隠した時に100前後

になっていることがわかりました。

なので、thresholdを256くらいにして、再度挑戦です。

そして、できた結果がこちら。

いい感じですね。

次回は温度計を使ってみます。

ぼろアパートのオフィスに営業マンが来た話

こんにちは、のすけです。

以前は大手システム会社(SIer:社員1万人以上)でサラリーマンをしていたのですが、ずっと自分でサービスを作りたいという 想いがあり、会社を辞めました。

そして、数ヶ月後に2つ目のサービスをリリースした時のことです。(1個目は空中分解しました;)

実質、もう動いていませんがそのサービスがこちら

HOTCOO | ホックー!

プレスリリースを出す

リリースに際して、みんなに知ってもらわなきゃだめだよねってことで、何もわからなかった僕らは お手軽に周知してももらえるプレスリリースというものを行うことにしました。

プレスリリースとは、一般の企業もよくやっているもので世間に自社の新しい取り組みやプロダクトなどを 発表するものになります。

基本的にはプレスリリースの内容を記載したページを1ページ作成して、有名どころのメディアやネットメディアなどに FAXやリリースメールなどを送信すればOKです。

そして、その記事を見た会社などから問い合わせなどを受けて事業連携が進んだり、その記事を見たユーザが使ってくれたり、その記事を見たブロガーがさらに記事を書いたりなど、いいことだらけらしいです。

今はプレスリリースには便利なサービスがいっぱいあって、僕らは

ValuePress! [プレスリリース配信・PR情報サイト]

を利用しました。ここは、流したい内容を書けば数百件から数千件のメディアに対してメールを送信してくれます。

より多くのお金を払えば、電話連絡もしてくれるようです。

書き方の指導とかもあり、初心者にも優しいサービスでした。

僕たちは、色々と悩みながらもなんとかプレスリリースを作成し、メールだけの プランでやりましたが、数個のネットメディアで取り上げてくれました。

そして、僕らは良い問い合わせが来るのを待ったわけです。

営業電話が来る

プレスリリースを出した反響はすぐに出ました。

そう、営業電話が来るのです。事業提携とか、ユーザからの問い合わせとかそんなのは来ません。

一番多かったのは広告会社です。

〇〇という会社なのですが、うちの広告枠で広告を出しませんか?

〇〇という新聞社なのですが、うちの広告枠で広告を出しませんか?

〇〇という広告配信業者なのですが、1クリック○円で広告を出しませんか?

出しません。

弱小スタートアップはりうすに、そんなお金はないし。

マーケティング戦略なんて、まるで考えていなかった僕らは「ほへ〜」って感じでした。

もう電話に出るのが面倒です。

営業マンからメールが来る

「〇〇という雑誌のものなのですが、すごいCEOとして紹介しませんか?」

ある日、そんなメールが来ました。CEOちゃCEOですけどどう考えても僕は凄くありません。

会社辞めて数ヶ月でしたし、サービスもリリースしたばっかりでユーザも碌についていない。

でも勉強のために話を聞いて見ることにしました。

しかもどうやら、僕らのオフィスに来るというのです。

ちなみに僕らのオフィスは当時、神奈川のマイナー駅から徒歩20分のぼろアパートでした。

hollywis.hatenablog.com

接待用のソファもないし、会議室もありません。

しかも玄関のドアには会社名も書いていませんでしたので、急遽プリンターで素早くロゴを作成し テープでドアに貼り付けることにしました。

果たしてどうなるのか、ワクワクが止まりません。

営業マン現る

営業マンから連絡がきます。

どうやら近くまで来ているようなのですが、場所がわからず迷っているようです。

そりゃそうだ。駅から徒歩20分の奥まったボロアパートの場所がわかったら凄いですよ。

なので、営業マンが今見える景色からヒントを得て電話越しにナビをしました。

そして無事に我がオフィスに到着です。営業マンは汗だくでした。

申し訳なさすぎる。

はるばる徒歩20分もスーツをぴっちり決めて歩いてきてくれたのですから、それは大変でしょう。

でも、僕らには抜かりはありませんでした。

家の前にある自動販売機で冷えたお茶をあらかじめ購入してあったので、 何食わぬ顔でそれをスッと出しました。

営業マンは恐縮しながら飲んでくれました。なんかいい人そうだ。

でも、問題が一つあります。僕らのオフィスには作業用の机しかありませんので商談には向きません。

そこで、たまたま持っていた折りたたみ式の50cm四方くらいの低めのテーブルがありましたので、それを商談のテーブルに使うことにしました。

なお色はピンクです。

別にふざけているわけではありません。それしか無かったのです。

畳にあぐらをかきながら商談スタートです。

時おり営業マンが「僕はこういう雰囲気大好きですよ」とか雑談を含めながら楽しく商談しました。

お世辞でも嬉しいです。

ビジネスについてご意見をいただいたりもしました。

商談の内容については"僕はまだ凄くない"という点や、お値段的に見送ることになりましたが 、「凄くなったらお願いします」という話になり終わりました。

「なぜ僕らみたいなところに来たのでしょうか?」と率直に伺ったところ

営業マン的にも顔つなぎというのは大事だそうで、このように初期から顔を出していくことで親近感を沸かせ後々お客さんになっていくということのようです。

なるほど。勉強になります。

それにしても、畳の上で小さなテーブルを囲んでの商談は、傍目にはなかなかシュールな光景になったのではないかと思います。

早くすごいCEOになりたいものですね。