Obniz

**obniz**（オブナイズ）は株式会社obnizによって開発された、ファームウェアレスの IoTシステムである。本稿では、obniz公式デバイスである「obniz Board」についても合わせて記述する。コンセプトは、「Make Everything Online」である。

## 概要
obnizはON/OFFやUART通信などのIO制御をクラウドのAPI経由で行えるシステムである。ファームウェアをクラウド上に集約し、IoTデバイス側のファームウェアを排した点が特徴である。obnizOS(オブナイズ　オーエス)と呼ばれるソフトウェアをデバイスにインストールすることで、obnizが利用可能になる。obniz OSは1アカウントあたり1デバイスまで無料で利用できるため、導入の敷居が低い。obnizOSがインストール済みのobniz公式デバイスも発売されている。obniz Boardを持っていなくても、前述の1ライセンス付与されることから後述するArduino IDEを用いた開発が可能である。

## 特徴
通常、IoT開発においては、個々のIoTデバイス毎にファームウェア開発が必要だが、obnizではこれが不要である。クラウドにあるひとつのプログラムで、ネットワーク上のすべてのデバイスを制御できる。 IoTデバイスに繋がれているセンサーの種類、コマンドやバージョンなどハードウェアに依存する違いは、クラウド側のソフトウェアで吸収可能である。すなわち、クラウド側でプログラムの変更・修正を行えば、つながっているデバイスは瞬時に新しい動きをする。これによって、ファームウェアの開発コストが不要となるのはもちろん、システムの保守管理コストも大きく削減できる。

## obniz Board
obniz Board（オブナイズ　ボード）は、obnizOSを搭載したIoT開発用シングルボードコンピュータである。

### 概要
昨今、STEM教育の一環としてArduinoやBBC Micro:bit、IchigoJam、Raspberry Pi、M5Stack等、様々な知育玩具があるが、obniz Boardもその範疇に分類されるもので手軽にプログラミングできる環境が用意されていて単なる教材の範疇に留まらず、スマートホーム化やラジコン、ロボットなどと実用的な製品を作成することも可能である。前述したArduinoやRaspberry Pi、M5Stackは、IoT機器で利用される代表格であるがC言語や電子回路、Linux等の知識を必要とするため電子工作初心者には参入障壁が高いという理由が、obniz開発の経緯である。セットアップの容易さから、初心者だけではでなくIoTの上級者までにも利用されている。

obnizは「object」+「nize」の造語であり、現実世界のモノをオブジェクト化する意味で命名された。

### 特徴
obniz Boardの最大の特徴は、容易なセットアップである。上記で述べた他のマイクロコンピューターは、環境設定に多くの時間を費やすが、obniz BoardはWi-Fiのみの設定で直ちに利用できる。PCまたはスマートフォンのブラウザから、obniz cloudを通じて同じLAN内にあるobniz Boardを制御できる。また、IoT機器では必須となるセンサーやモーターなどパーツライブラリのセットアップから実行までも数行のコードで実行可能である。公式サイトには、様々なパーツライブラリを用いたドキュメントが豊富であり初心者であっても容易にIoTを体験できる。
```javascript
//JavaScript: obnizにLEDを繋ぎ点灯させるコード
var led = obniz.wired("LED", {anode:0, cathode:1}); // io0 is connected to anode, io1 is cathode
led.on();
```


## obniz [[Bluetooth Low Energy|BLE]]/[[Wi-Fi]] [[ゲートウェイ]]
obniz BLE/Wi-Fi ゲートウェイは、Bluetooth搭載機器を搭載しているサンサーからデータを受信し、obnizクラウドにデータを送信するハードウェア機器である。

### 概要
従来のBluetooth搭載機器を搭載しているIoT機器は、インターネット等にデータを送信する際には、それぞれの機器1つ1つに適応した組み込みプログラムやゲートウェイを使わなければいけなかった。一方、obniz BLE/Wi-Fi ゲートウェイを利用した場合は、LAN内に1つ利用するだけでWAN側の回線を1つにまとめることが出来る。

### 特徴
obniz BLE/Wi-Fi ゲートウェイの最大の特徴は、電源を差しLAN内でWi-Fi設定を行うだけで、ゲートウェイを利用出来る点である。通常のゲートウェイを前述したようにBluetooth搭載機器の1つずつのゲートウェイに対してファームウェアを書き込む必要はない。ファームウェアの更新の際にも、obniz クラウドを通して行うことで物理的な書き込み等のコスト削減にもなる。

また、LAN内に新しく何か機器を追加した場合でも簡単に追加、利用出来る。

obniz BLE/Wi-Fi ゲートウェイが受信したデータは、obnizクラウドにデータが転送され、さらにそこから用途にあったソフトウェア開発をNode.jsを使ったAPIで利用出来る。

## obniz OSの開発環境
SDKを使えばJavaScriptから利用が可能でobnizにつないだ部品をHTMLの中で『プログラム上のオブジェクト』として扱えるようになる。HTML内のスクリプトタグで、obniz.jsを読み込むことでJavaScript SDKを利用できる。obnizに繋がれた電子部品も、SDKも用いることでJavaScriptのオブジェクトとして操作ができる。

obnizクラウド上でも前述したJavaScriptやブロックプログラムが実行可能である。この場合、エンドユーザの利用端末でプログラムエディタを保存するのではなく、obnizクラウド上にて保存・更新・削除等ができる。

ブロックプログラミングでは、プログラム初心者でも利用しやすく視覚的にも論理的にも分かりやすく設計・開発されており、初心者へのIoTのハードルが低い。

フロントエンドのJavaScriptだけではなく、バックエンドでのNode.jsやPythonでも利用可能である。フロントエンドでのJavaScriptの場合、ブラウザ使用中のみ、obnizクラウド及びobnizとの連携が可能である。この場合、ブラウザを閉じた場合には、obnizクラウドとの通信が切れ、obnizとの通信も切れる。このような問題を解決するために、Node.jsやPython等のバックエンドプログラムを利用する。この場合、ローカルコンピュータやサーバを利用し実行状態にしておくことでプログラムが常時稼働状態になる。例えば、人が入って来たか否かを探知する人感センサーを用いた場合等でのプログラムでこれは発揮される。また、バックエンドプログラムを利用することにより、ブラウザ仕様でのCORS制限が無くなり、他サイトとのAPIの連携が可能になる利点もある。

Arduino IDEにおいても利用可能である。obnizは、プラグインOS機能を持っている。Arduino IDEが使える機器において、obniz独自のOSをそれぞれの機器にインストールすることで、簡単にそれぞれの機器をobnizクラウドを連携することができる。これは、それぞれの機器でエッジコンピューティングが可能となり、obnizクラウドとの双方向な出入力が可能である。端末に、C言語を用いて組み込むことでその端末が受ける出力を端末で処理し、obnizクラウドへ送信することができる。例えば、カメラで取得した画像をobniz クラウドに送信し保存することも可能であるし、obnizクラウドから端末へ対して何かの命令を行うこともできる。

## 創業者

; 佐藤 雄紀(さとう ゆうき) 
:代表取締役。吉本興行東京NSCお笑いコース12期生。早稲田大学創造理工学部卒(菅野研究室)。卒業論文テーマは、「低輝度集合解析を用いた臓器境界判定の自動化による内出血貯留検出手法の構築」。在学中に出会った後述する木戸たちとiPhoneアプリ「papelook」を開発、創業し全世界で2000万回ダウンロードを達成する。2012年株式会社Spotlightに参画し、ビーコンデバイスの開発やiPhoneアプリの開発にエンジニアとして携わり、M&Aを経験。2014年電子回路のAPI化を広げるために株式会社CambrianRobotics創業。子供の頃から電子工作・プログラムに親しむ。

; 木戸 康平(きど こうへい) 
:共同創業者。小学生時代からプログラムを始め、高校・大学はロボコンに没頭してハードウェア・ソフトウェアの両面を学ぶ。早稲田大学にて佐藤と出会い、共に2000万ダウンロードのiPhoneアプリを制作する。１度、大手通信会社に就職したが、よりIoTを間近で感じ、自分の手で発展させるためにobnizにジョインする。

## 歴史
2014年11月、現在の株式会社obnizの前身となる株式会社CambrianRobotics創業。当時は、iOSアプリ・サーバーサイドアプリ・回路の受託開発などを行なっていた。

2017年3月、obnizを立案、開発する。

2017年9月、MakeFaire NYでobnizを公式発表。

2018年、Kickstarterにて、196人のパッカーにより目標金額150万円に対して約160万円のクラウドファンディングを達成し軌道に乗る。

2018年5月、obniz boardを一般発売する。

2018年11月、株式会社東京大学エッジキャピタル(UTEC)から約1億円を調達する。

2018年12月、AIロボットキット、IoTホームキットを発売する。

2019年11月、obniz board 1Yを発売する。

2020年3月、obniz starter kit、M5StickC for obniz Cloudを発売する。

2020年5月、obniz BLE/Wifiゲートウェイを発売する。

2020年7月、株式会社東京大学エッジキャピタル(UTEC)から約1.5億円を調達する。

2020年11月、西武しんきんキャピタルから約3千万円を調達する。

2021年1月、公式販売台数1万台、販売社数300社を突破。

2021年3月1日、以前の株式会社CambrianRoboticsから「株式会社obniz」へ社名が変更された。

## 利用できる主なプログラミング言語

* Python
* JavaScript
* TypeScript
*Node.js
* ブロックプログラミング
*Arduino IDE

## 利用できるパーツライブラリ

Light(光)関連

* LED：電流を流すことで光らせることができる。
* フルカラーLED：RGB３色のLEDが１つのLEDになっているアナログのフルカラーLEDである。
* WS2811：フルカラーLEDのドライバICである。
* WS2812：フルカラーLEDのドライバICである。
* WS2812B ：フルカラーLEDのドライバICである。
*S11059：カラーセンサS11059-02DTから赤,緑,青,赤外のそれぞれの色のレベルを取得できる。
*PT550：周りの明るさ(環境光)を取得できる照度センサー。
*2JCIE：OMRON社製の環境センサ。電池で動作し、温度、湿度、照度、UV、気圧、騒音、加速度、VOCを計測できる。
*ENERTALK_TOUCH：エンコアードジャパン株式会社製のマルチセンサ。温度、湿度、照度、加速度(3軸)を計測できる。
*μPRISM：エレックス工業株式会社製の極小IoTセンサーモジュール。温度、湿度、気圧、加速度、地磁気、紫外線、照度が取得できる。
*Keyestudio_TrafficLight：Keyestudio社製の、緑、黄、赤色の3つのLEDを備えた信号機型モジュール。
*Keyestudio_HT16K33：複数LEDを操作するHT16K33チップと連携するクラス。Keyestudioの製品のサポートになる。
*M5StickC_Yun：M5StickC と接続できるYun Hat。温度、湿度、明るさのセンサーやLEDが付いてる。
*Grove_LightSensor：Groveコネクタで利用できる照度センサー。周りの明るさを取得することができる。
*Linking Devices：Linking Devices の共通ライブラリ。

Infrared(赤外線)関連

* InfraredLED：赤外線LEDを操作できる。リモコンのような赤外線で信号を送るために利用できる。
* IRSensor：リモコンで使われる赤外線の信号を検出できる。
* IRModule：リモコンで使われる赤外線の信号を送受信できる。
*YG1006：炎を検知するための赤外線センサーモジュール。
*iBS02IR： INGICS社製の近接センサー。赤外線を利用し物体が近くにあるかどうかを検知できる。
*μPRISM：エレックス工業株式会社製の極小IoTセンサーモジュール。温度、湿度、気圧、加速度、地磁気、紫外線、照度が取得できる。

Display(液晶)関連

* 7SegmentLED：数字を表示するために作られたLEDが7個集まった部品である。
* 7SegmentLEDArray：7SegmentLEDを複数連ねてダイナミック点灯させることができる。
* 7SegmentLED_MAX7219：MAX7219に接続された7セグメントLEDを制御することができる。
* MatrixLED_MAX7219：複数LEDを操作するMAX219チップと連携することができる。
* SainSmartTFT18LCD：obniz Boardからサインスマート1.8インチ TFTカラーディスプレイに描画することができる。
* MatrixLED_HT16K33：複数LEDを操作するHT16K33チップと連携することができる。
*SharpMemoryTFT： SHARP製の液晶で、ハイコントラスト・省電力が特徴です。
*Keyestudio_HT16K33：複数LEDを操作するHT16K33チップと連携するクラス。

Camera(カメラ)関連

* ArduCAMMini：少ないピン数で利用でき、jpegで画像を取り出すことができる。
* JpegSerialCam：撮影した画像をjpgにして、UARTで送信できる。

Moving(モーター)関連

* DCMotor：電池を繋いで回すことができる一般的なモーターである。
* ServoMotor：角度を維持することができるモーターである。
* StepperMotor：ある角度ずつ正確に回転させることができるモーターである。
* Solenoid：ソレノイドは金属のピストン付きのコイルである。
* PCA9685：16の独立したPWMを出力できるチップである。

Sound(音)関連

* Speaker：２本の線で接続し、電流によって音を出すことができる。
*Grove_Buzzer：Groveコネクタで利用できるブザー。指定した高さの音を鳴らすことができる。
*Grove_MP3： GroveのMP3プレーヤー。SDカードに保存したMP3を再生することができる。Grove MP3 v2.0 に対応したライブラリ。
*Keyestudio_Buzzer： Keyestudio社製ブザー。指定した高さの音を鳴らすことができる。
*Grove_Speaker：Groveコネクタで利用できるスピーカー。指定した周波数の音を鳴らすことができる。

GasSensor(ガス)センサー関連

* MQ2：高い感度で様々なガスに反応するセンサーで、特にLPG, プロパン, 水素に反応する。
* MQ3：高い感度で様々なガスに反応するセンサーで、特にアルコールに反応する。
* MQ4：高い感度で様々なガスに反応するセンサーで、特にメタン、天然ガスに反応する。
* MQ5：高い感度で様々なガスに反応するセンサーで、特にLPG、天然ガス、都市ガスに反応する。
* MQ6：高い感度で様々なガスに反応するセンサーで、特にLPG、イソブタン、プロパンに反応する。
* MQ7：高い感度で様々なガスに反応するセンサーで、特に一酸化炭素に反応する。
* MQ8：高い感度で様々なガスに反応するセンサーで、特に水素に反応する。
* MQ9：高い感度で様々なガスに反応するセンサーで、特に一酸化炭素、メタン、LPGに反応する。
* MQ135：高い感度で様々なガスに反応するセンサーで、特に大気汚染物質であるNH3, NOx, 煙, Co2などに反応します。
*CCS811：総揮発性有機化合物 （TVOC）と、それから計算される二酸化炭素相当物（eCO2）を計測するセンサー。

Logic関連

* SNx4HC595：1つのチップにある8個の出力できるIOを最低3本の信号線で制御できる。

Accessory関連

* USB：USBアクセサリに電力を供給し、USBで光る電気や扇風機などを操作できる。

Wireless(無線)関連

* RN42：BluetoothClassic Moduleです。
* XBee：複数のXBeeを使って通信し、ブロードキャストや１対１の通信ができる。
* MFRC522：NXP製のMFRC522チップを搭載したRFIDカードリーダー・ライターで．ポイントカードや学生証なども，MifareカードであればUIDを取得し識別する事ができる。

Movement Sensor関連

* Button：押すことで電流を流したり止めたりできる。
* JoyStick：X軸Y軸とプッシュスイッチをもつジョイスティック。出力がアナログ値の一般的なものに対して利用できる。
* Potentiometer：ボリュームのように回すことで抵抗値を変えることができる。
* ENC03R_Module：ENC03Rを利用したジャイロセンサーモジュールで、回転速度を検出できる。
* HC-SR505：PIR センサーです。人や動物が近くにいるかを検出できる。
* PaPIRsVZ：パナソニックの PIR センサーで、人や動物が近くにいるかを検出できる。
* Pressure Sensor - FSR40X：圧力センサFSR40Xで、センサで取得した圧力を知ることができる。
* KXR94-2050：x,y,zの3軸加速度センサ。重力の向きや，どちらの方向に動いているかを知ることができる。
* MPU9250：加速度3軸，ジャイロ3軸，地磁気(磁界)3軸の計9軸を検出することができる。
* MPU6050：加速度3軸，ジャイロ3軸の計6軸を検出することができる。
* MPU6886：加速度3軸，ジャイロ3軸の計6軸を検出することができる。
* AK8963：磁気センサモジュールで、地磁気(磁界)3軸を検出します。
* IPM-165：24Ghzの周波数を利用した移動体験知用のドップラーモジュールで、人や物など移動するものの検知に利用できる。
* BMP280：温度、気圧センサでとても低い消費電力で、かつ高い精度で計測できます。
*Grove_3AxisAccelerometer：Grove 3軸加速度センサモジュールGrove - 3 Axis Digital Accelerometer(±16g)からX,Y,Z軸の加速度を取得できる。

* HC-SR04：超音波を利用した距離センサ。
* GP2Y0A21YK0F：赤外線を利用した距離センサーで、距離を電圧として出力するモジュール。
* VL53L0X：レーザーで測定する距離センサーで、30mm~2000mmを計測できる。
*ENERTALK：エンコアード ジャパン株式会社製のマルチセンサ。温度、湿度、照度、加速度(3軸)を計測できます。
*SH200Q：加速度3軸，ジャイロ3軸の計6軸を検出できる。

GPS関連

* GYSFDMAXB：GPSモジュール(GYSFDMAXB(太陽誘電))から情報を取得できる。
*Grove_GPS：Grove GPSモジュール(Grove - GPS)から情報を取得するライブラリ。

Magnet(磁気)関連

* HMC5883L：3軸地磁気センサで、取得した値から方位を知ることができる。
* CT10：Groveコネクタで利用できる磁気センサーで、磁石と一緒に使うことでドアが開いたかどうかなどの検知に利用できる。：

ADConverter関連

* HX711：24-bit ADC ロードセル用重さセンサ。
*LogttaAD：BLE経由で利用できるAD変換器。
*M5StickC_ADC：M5StickC用ADコンバータ。+と-の間の電位差を読み取れる。0~12vまでを計測することができる。

DAConverter関連

* MCP4725：アナログ電圧を生成できます。+と-の間に電位差を作り出すことができる。

Soil Moisture Sensor(土壌センサ)関連

* SEN0114：土壌の湿度を取得できる。

Biological Sensor(生体センサ)関連

* Pulse08 M5StickC S：脈波センサーで、脈拍数の計測及びグラフ化ができる。

Temperature Sensor(温度センサ)関連

* LM35DZ：センサで取得した温度を知ることができる。
* LM60：センサで取得した温度を知ることができる。
* LM61：センサで取得した温度を知ることができる。
* LMT87：センサで取得した温度を知ることができる。
* MCP9700：センサで取得した温度を知ることができる。
* MCP9701：センサで取得した温度を知ることができる。
* SHT31：センサで取得した温度を知ることができる。
* SHT20：センサで取得した温度を知ることができる。
* BME280：温度、湿度、気圧センサーで、とても低い消費電力で、かつ高い精度で計測できる。
* AMG8833：赤外線アレイセンサAMG8833を使用しており、測定範囲は0~80℃。8x8画素で温度分布を測定することができる。
* DHT12：温湿度センサで、センサで取得した温度を知ることができる。
* D6T44L：サーモセンサーで、測定範囲は5~50℃の温度分布を4x4画素で測定することができる。
* AM2320：センサで取得した温度と湿度を知ることができる。

Light/Color Sensor(光/色)関連

* S11059：カラーセンサS11059-02DTから赤,緑,青,赤外のそれぞれの色のレベルを取得できる。
* PT550：周りの明るさ(環境光)を取得するための照度センサ。

Grove規格関連

* Grove_Button：Groveコネクタで利用でき、押されたかどうかを検知できるボタン。
* Grove_Buzzer：Groveコネクタで利用でき、指定した高さの音を鳴らすことができるブザー。
* Grove_EarHeartRate：Grove の耳たぶクリップ式心拍センサーで、心拍数を計測できる。
* Grove_MP3：SDカードに保存したMP3を再生することができる。
* Grove_GPS：Grove GPSモジュール(Grove - GPS)から情報を取得できる。
* Soil Moisture Sensor：土壌の湿度を取得できる。アナログ・デジタルの出力を持っている。
* Grove_JoyStick：X軸Y軸とプッシュスイッチをもつGrove対応のジョイスティック。I2C通信を利用する。
* Grove_3AxisAccelerometer：Grove 3軸加速度センサモジュールGrove - 3 Axis Digital Accelerometer(±16g)からX,Y,Z軸の加速度を取得する。

BLE(Bluetooth Low Energy)規格関連

* 2JCIE：OMRON社製の環境センサ。
* Linking Devices：Linking Devices の共通ライブラリ。

Keyestudio関連

* Keyestudio_Button：Keyestudio社製ボタンモジュールで、押されたかどうかを検知できる。
* Keyestudio_Buzzer：Keyestudio社製ブザーで、指定した高さの音を鳴らすことができる。
* Keyestudio_MoistureSensor：Keyestudio社製土壌湿度センサで、土壌の湿度を取得できる。
* Keyestudio PIR：Keyestudio社製のモーションセンサで、人や動物が近くにいるかを検出できる。
* Keyestudio_TemperatureSensor：Keyestudio社製温度センサで、センサで取得した温度を知ることができる。
* Keyestudio_TrafficLight：Keyestudio社製の、緑、黄、赤色の3つのLEDを備えた信号機型モジュール。

M5Stack関連

* M5StickC_Yun：M5StickCと接続でき、温度、湿度、明るさのセンサーやLEDが付いている。
* M5StickC_JoyStick：X軸Y軸とプッシュスイッチをもつジョイスティックで、I2C通信を利用する。
* M5StickC RS485：M5StickC用のRS485-HAT は RS485 converter。
* StickC_ADC：M5StickC用ADコンバータです。+と-の間の電位差を読み取ることができる。
* M5StickC_DAC：M5StickC用DAコンバータで、+と-の間に電位差を作り出す。
* M5StickC_ToF：レーザー測距センサVL53L0Xを内蔵するM5StickC用距離センサ。30mm~2000mmを計測できる。
* M5StickC_FINGER：指紋の登録、削除、一致確認ができる。

## 脚注

## 関連項目
* シングルボードコンピュータ
* IoT
* Arduino
* BBC Micro:bit
* IchigoJam
* ESP32
* M5Stack
* M5StickC
* Raspberry Pi

## 外部リンク
* 
* 
* 
* 
*