アルコールセンサー MQ-3 と Arduinoで呼気中と血中アルコール濃度(BAC)測定 スケッチコード付

アルコールセンサー MQ-3 と Arduinoで呼気中と血中のアルコール濃度(BAC:blood alcohol concentration)測定をしてみた。

といってもDatasheetの[Rs/R0]/[mg/L]両対数グラフから近似式を手計算で算出して
変換しただけなので、実際の値とどれくらい近いのかは不明。
参考したURLのページでは、回帰分析しているんですが、いまいちな結果だったので、
今回の手計算で求めた近似式にしてみました。

なので、必ず、ご自分で確認をしてください。

ダイソーで買ってきたアルコールウェトテッシュ近づけると
値を出しましたが、近いかどうか誰か検証したら教えてね。

使用したモジュールはこちらのMQ-3モジュール

まず、キャリブレーションのためにR0値を測定する
スケッチは下記。ここで計算されるR0値はメモっておきましょう。

// キャリブレーションのためにR0を計測する
// MQ-3 Pin1 VCC → Arduino 5V
// MQ-3 Pin2 GND → Arduino GND 
// MQ-3 Pin3 DOUT:アルコール検出でHIGH出力する  → 今回は不使用
// MQ-3 Pin4 AOUT:アルコールレベルのアナログ出力 → Arduino A0
// Wind Abaft Co., Ltd.

void setup()
{
   Serial.begin(9600);
}

void loop()
{
    float sensor_volt;
    float RS; // 空気中のRS値
    float R0; // アルコール中のR0値
    float sensorValue;

    for(int i = 0 ; i < 100 ; i++)
    {
        sensorValue = sensorValue + analogRead(A0);
    }

    sensorValue = sensorValue/100.0;     //平均値の算出
    sensor_volt = (sensorValue/1024)*5.0;  //ArduinoのPWMは10ビット1024
    RS = (5.0-sensor_volt)/sensor_volt; // 省略 RL
    R0 = RS/60.0; // きれいな空気中のRS/R0=60
    Serial.print("R0 = ");
    Serial.println(R0);
    delay(1000);

}

まず呼気中のアルコール濃度を求めるのに、下記グラフから手計算で下記の近似式を作った。
検算していないので間違っているかも。

BAC(呼気中のアルコール濃度[mg/L]) = pow(10,-1*(((log10(ratio))+0.2391)/0.6008))

MQ-3 アルコール濃度両対数グラフ
MQ-3 アルコール濃度両対数グラフ

この式と先ほど求めたR0値をもとに呼気中アルコール濃度算出する。
一般的に,呼気中アルコール濃度[mg/L] : BAC[mg/ml] = 1:2
とのことなので、それを元に2倍してBAC[mg/ml]出した。

先ほどの測定で得た
R0値
を、下記に代入してみてください

// キャリブレーションのために測定したR0の値を利用する
// MQ-3 Pin1 VCC → Arduino 5V
// MQ-3 Pin2 GND → Arduino GND 
// MQ-3 Pin3 DOUT:アルコール検出でHIGH出力する  → 今回は不使用
// MQ-3 Pin4 AOUT:アルコールレベルのアナログ出力 → Arduino A0
// Wind Abaft Co., Ltd. Fumiyoshi.Yotsugi

#include <math.h>
void setup() 
{
    Serial.begin(9600);
}

void loop() 
{
    float sensor_volt;
    float RS_gas; // 測定対象のガス中のRS値
    double ratio; // RS_gas/RS_air 空気中のRS割合
    double BAC;
    int sensorValue = analogRead(A0);
    sensor_volt=(float)sensorValue/1024*5.0;
    RS_gas = (5.0-sensor_volt)/sensor_volt; // 省略 *RL

   /*- "R0" を先ほど計測した値に置き換えてください -*/
    ratio = RS_gas/R0;  // ratio = RS/R0   
    BAC = pow(10,-1*(((log10(ratio))+0.2391)/0.6008));  // mg/L中のBAC
    Serial.print("呼気中BAC[mg/L] = ");
    Serial.println(BAC); // 呼気中のアルコール濃度[mg/L]
    Serial.print("\n");
    Serial.print("血中BAC[mg/ml] = ");
    Serial.println(BAC*2);  // 血液内のアルコール濃度[mg/ml]に変換(1:2)
    Serial.print("\n\n");
    delay(1000);
}

ちなみに本モジュールはアルコールに反応して(アルコール濃度が閾値をこすと)、
D3 Pin (D Out)がhighを出力して、モジュール裏面のチップLEDが点灯します。

上記の私の式だと0.01[mg/L]で、モジュール裏面のチップLEDが点灯してしまうので
敏感すぎるかなーという感じですね。
より更正していく必要がありそうです。

参考:https://www.teachmemicro.com/mq-3-alcohol-sensor/
データシート:https://www.sparkfun.com/datasheets/Sensors/MQ-3.pdf

アルコール濃度の運転技能へ与える影響は下記だそうです。

悪影響を与える運転技能 血中アルコール濃度
(mg/mL)
呼気中アルコール濃度
(mg/L)
注意の集中 0.05 [0.025]
反応時間 0.2 [0.1]
追跡技能 0.2 [0.1]
多方面への注意 0.2 [0.1]
ハンドル操作 0.3 [0.15]
視覚機能(視線の固定が困難) 0.4 [0.2]
規則遵守 0.5 [0.25]

出典元:https://www.asahibeer.co.jp/csr/tekisei/drink_drive/effect.html

ちなみに法定の酒気帯び基準は下記(参照:警察庁
呼気中アルコール濃度0.15[mg/L]以上からアウトだそうです。

酒酔い運転

(「酒酔い」とは、「アルコールの影響により車両等の正常な運転ができない状態」をいう。)

  • 基礎点数35点
    免許取消し 欠格期間3年(※)

酒気帯び運転

  • 呼気中アルコール濃度0.15mg/l 以上 0.25mg/l 未満
    基礎点数13点
    免許停止 期間90日(※)
  • 呼気中アルコール濃度0.25mg/l以上
    基礎点数25点
    免許取消し 欠格期間2年(※)

ダストセンサー DSM501AでPM1.0 と PM2.5 の測定してみた Arduino スケッチコード付

ダストセンサーDSM501AでPM1.0(以上の)粒子数カウントしてみた

PM1.0を計測できるのか?と思いきや
PM1.0以上のサイズの粒子をカウントできるよというもののようだ。

PWM出力されるパルスを30秒間計測して、その中でLOWパルス幅の全体に占める比率から
粒子数を出すというもの。

もちろん、データシートにメーカー側が
「Lowパルス幅の占有率に対する粒子数」
のグラフを用意してくれているので、そのグラフを元に粒子数出してる。
(合っているのか?)

とりあえず、いろんな所で計測してみて、自分でも
この値からは空気が悪そうだというデータをとったほうが良さそうな気もする。

ピン配置は下記で左からPin1~Pin5

Pin1: コントロール(Vout1用のコントロール)
Pin2: Vout2 (PM1.0以上計測用)
Pin3: VCC
Pin4: Vout1  (PM2.5以上計測用)
Pin5: GND

以下が今回使ったArduino用スケッチコード

// DSM501A Pin3 → Arduino 5V
// DSM501A Pin5 → Arduino GND
// PM1.0以上を計測したい場合:DSM501A Pin2 → Arduino D8
// PM2.5以上を計測したい場合:DSM501A Pin4 → Arduino D8
// Wind Abaft Co., Ltd.

#include<string.h>
byte buff[2];
int pin = 8;//DSM501A input D8
unsigned long duration;
unsigned long starttime;
unsigned long endtime;
unsigned long sampletime_ms = 30000; // データシートの計測方法が30秒のため
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
 
int i=0;
void setup()
{
  Serial.begin(9600);
  pinMode(8,INPUT);
  starttime = millis(); 
}
void loop()
{
  duration = pulseIn(pin, LOW);
  lowpulseoccupancy += duration;
  endtime = millis();
  if ((endtime-starttime) > sampletime_ms)
  {
    ratio = (lowpulseoccupancy-endtime+starttime + sampletime_ms)/(sampletime_ms*10.0);  // Integer percentage 0=>100
    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // データシートのグラフ参照
    Serial.print("lowパルス幅(30秒間):");
    Serial.print(lowpulseoccupancy);
    Serial.print("    Lowパルス幅の占有率[%]:");
    Serial.print(ratio);
    Serial.print("    DSM501A計測粒子数[pcs/283ml]:");
    Serial.println(concentration);
    lowpulseoccupancy = 0;
    starttime = millis();
  } 
}

 

IPカメラ、DVR(録画機)の脆弱性(セキュリティ)チェック方法2

TBK DVR4104、 DVR4216という種類のDVRについて2018年4月に報告された脆弱性

このDVRはOEMでいろんな会社のブランド名をつけて売られていて、現段階で有名どころは下記

Novo
CeNova
QSee
Pulnix
XVR 5 in 1 ←日本の会社の名前にリブランド見たことあり
Securus
Night OWL
DVR Login ←日本の会社の名前にリブランド見たことあり
HVR Login
MDVR Login

【脆弱性の確認方法】
まず、Macなどでターミナルを立ち上げる。
Windowsの場合にはteratermなどでOK

下記のコマンドをIPアドレスの箇所とポート番号だけ直して打ち込んでください。
例:192.168.1.10:80 (DVRのIPアドレスを192.168.1.10、公開しているポート番号を80にしている場合)

$> curl "http://192.168.***.***:ポート番号/device.rsp?opt=user&cmd=list" -H "Cookie: uid=admin"

もし、脆弱性のある機器であった場合、上記コマンドを実行するとjsonが返ってきて、
その中に下記のようなadminのパスワードが記載されています。

“uid”:”admin“,”pwd”:”パスワード

パスワードをはいてしまうので、これでシステムにログインが可能になってしまうという脆弱性になります。

IPカメラ、DVR(録画機)の脆弱性(セキュリティ)チェック方法1

現在も販売されているのを見かけますが、特に2016年以前に販売されていたIPカメラ、
DVRには乗っ取られる(rootを取られる)非常に重大な脆弱性がある場合があります。

知らない間に、DDOS攻撃や犯罪のプロキシサーバーに利用されたりと

犯罪行為に加担してしまう可能性があるので、かなり深刻です。

内容については2016年、2017年に報道されてはいましたが、未だにその脆弱性がある防犯カメラ、DVRが一部の業者によって楽天やamazon、ヤフーショッピングなどで販売、流通しているようなので、下記の方法で確認してみてください。

使用している方も是非、この機会に確認してみてください。

ちなみに下記の写真のような画面の場合には、該当の可能性が非常に高いです。
問題のメーカーがリコール発表してから2年以上経っていることから、未だにそのDVRを販売しているような業者には要注意。

危険なDVRに多いGUIデザイン
中国XM社が作った深刻な脆弱性があったソフトウェア(CMS)が使われているDVRの管理画面

【脆弱性の確認方法】
まず、Macなどでターミナルを立ち上げる。
Windowsの場合にはteratermなどでOK

下記のコマンドをIPアドレスの箇所だけ直して打ち込んでください。
“telnet IPアドレス” と打つだけなので簡単!

$ telnet 192.168.***.***(DVRのIPアドレス)
Trying 192.168.***.***...
Connected to 192.168.***.***.
Escape character is '^]'.
LocalHost login: root
Password:

ユーザー名に「root
パスワードに「xc3511

と入力してログインできてしまったらアウトです。

ログイン後に試しにlsコマンド打ってみた結果は下記のような感じになりました。

Welcome to Monitor Tech.
# ls
bin      etc      linuxrc  proc     share    usr
boot     home     mnt      root     slv      var
dev      lib      opt      sbin     sys

この脆弱性をわざわざ取り上げたのは、「直せない」脆弱性だからです。
理由は、ハードウェアにハードコーディングされているため

書き換える事が出来ません。
つまり、アップデートなどでの対処は不可能になります。

このようなDVR, IPカメラだった場合、保証期間内であれば
すぐにご購入の店鋪にクレームして交換してもらいましょう。
とはいっても、同じ脆弱性のDVRに交換しても意味がないので、
脆弱性が改善されたものか確認して交換してもらいましょう。

操作画面のデザイン(GUI)が同じだと、業者によっては
何も改善されていない同じものの可能性があります。

特にこの事を話してもはぐらかしてくる業者の場合に諦めざるをえない場合もあるでしょう。

そのような交換出来なかった場合、ルーターでポートを閉じる対策をし、
くれぐれも直接インターネットに繋ぐようなことは辞めましょう。

余裕のある方はVPNルーターを使用して、VPNでアクセスするなどの対策をとるとなおよしです。

よくわからないよという方は、インターネットとの接続を遮断してLANのみで利用するようにしましょう。
(一番安全です)

そうしないと、Miraiなどのウイルスに乗っ取られ
自分達の映像がダダ流れという事よりも、ボットネットを構成しDDOSなどの犯罪行為に加担する可能性があるので
脆弱性がわかった場合には、必ず何かしらの対応をとってください。

インターネットに繋げるという事は必ずリスクが伴います。
また、私も商品を作っている身なのでよくわかりますが、インターネットに繋げて利用する機器には
必ず何かしらの脆弱性が発生してしまいます。

それは、ユーザーにとっては便利な機能である場合もあります。
(ワンタッチで接続設定ができる!などのプラグ&プレイ(PnP機能が良い例です)

100%安全なものなんてないのです。

そういうものと想定して、便利さを享受できるよう知識をつけて対策をとっていけば
そこまで気にする問題にはなりませんので、ちょっと一手間対策をするようにしましょう。

上記の画面デザイン(GUI)のソフトウェア(CMS)は中国の大手セキュリティソフト会社の
XM社(Hangzhou Xiongmai Technology Co.,LTD.)が作ったものになります。

下記のようなデザインの格安中華DVR等にインストールされている事が多いので、
自分が使用しているDVRでデザインが似ていたら上記の脆弱性チェックをしてみるのをお勧めします。
(下記デザインの筐体は廉価版としてよく使われるもののため、中身の基板もそのようなものが使われることが多い)

下記の防犯カメラ録画機が、上記の脆弱性により日本国内で犯罪に加担していたということが、
2017年11月26日NHKスペシャル「あなたの家電が狙われている ~インターネットの新たな脅威~」
の回でも放送されていたので、オンデマンド等で番組を見れる方は、自分のものと違うか確認してみてください。

危険な脆弱性があるDVR

中華USBシリアル変換ドライバ CH340, CH340G のアンインストール(uninstall)方法

激安のArduino互換機に搭載されている事が多い
CH340, CH340Gといった中国製USBシリアル変換ICを使用するには
専用のドライバーを別途インストールする必要があります。

しかし、MacではOSのバージョンによってはカーネルパニックを起こしたり、
インストールするしても認識しないなどの不具合が起ります。

それで、アンインストールしたいけど、アンインストールどうやってやるのと言う人多いと思うので
ここに書いておきますので、ご参考にして貰えればと思います。

1. MACのターミナル開く(黒い画面アイコンのやつ)
2. 下記コマンドを入力する

※V1.0 ~ V1.3などの古いドライバー向けが一つ目のコマンドで、最近のものは二つ目のコマンドが対応という感じです。

sudo rm -rf /System/Library/Extensions/usb.kext
sudo rm -rf /Library/Extensions/usbserial.kext

ドライバーのバージョンの新旧で保存場所が変わったため、上記のようになっています。

 

ちなみにMacにArduino等を接続した際に認識しているのかを確認する方法
ターミナルで

ls -l /dev/tty.*

を実行してみましょう。
USBポートに接続されている機器の名前が表示されます。Arduinoだと下記のような感じの名前が表示される
例:/dev/tty.usbmodem1421

マウスなどの他に接続しているUSB機器の名前も表示されるので間違わないように。

楽天やYahoo!ショッピング等で売られている「日本製」防犯カメラには騙されないで!

2~3年前くらいから楽天やYahoo!ショッピングで急に増えてきた
「日本製」
と銘を打った防犯カメラ達。

詳しい方であれば、すぐにこれが嘘であることはすぐにわかります。

楽天やYahoo!ショッピングで売られているものは、ほとんどが一般家庭で使用することを想定された
いわゆる民生用の防犯カメラ、録画機(DVR)になります。

これらの構成材料にあたる電子基板であったりチップ(CPUやメモリ)等、ソフトウェアまでほぼ全てが
中国産 Made in CHINA
であるからです。

販売業者に聞けば、おそらく
輸入後に検査を日本で行ったから(実際はしてないけど)日本製なんだよ!
とか
組立は日本でやったから日本製なんだよ!
とかいろいろと理由つけて言い返してくるでしょうが、
原産地については下記のような国際的なルールがあります。
(輸出入やってる方ならHSコードは聞いたことあるよね!)

日本産商品の判断基準:
原産地証明書における物品の原産国が「JAPAN」であることの判断基準は、主に1,2のいずれかです。

1.日本で獲れる鉱物資源や動植物、魚介類(完全生産品)
2.日本において、産品の関税番号(HSコード)上4桁が、その材料のHSコード上4桁から変わる加工又は製造が行われたことにより、実質的な変更(加工・製造)を満たす産品であること。

東京商工会議所 原産国の判定基準
https://www.tokyo-cci.or.jp/shomei/preparation/country_of_origin/

経済産業省
http://www.meti.go.jp/policy/external_economy/trade_control/boekikanri/gensanchi/qa.html#q-18

ちなみに虚偽で日本製を語って販売した場合
景品表示法違反
なので、れっきとした犯罪です。

ですが、ここで一番いいたいのは
消費者に騙されないようにしてほしい、それがサイバー犯罪に加担することを防げるから
ということです。

このようにして販売されている商品は虚偽表示をしてでも売ろうということですから
販売者(販売企業)の遵法意識や顧客への意識やネットワークに対する知識は低いでしょう。

なので、すでに脆弱性が指摘されているものを販売することもあるでしょうし、
顧客も日本製という意味不明な安心感でセキュリティを徹底しないリスクもあるかもしれません。

現在の防犯カメラやネットワークカメラ、ベビーカメラなどはインターネットと繋がる機能を有しているため
ハッキングされて機械が乗っ取られるとサイバー犯罪に使われる可能性が非常に高いです。

これについてはニュースでもしばしば取り上げられているので知っている方もいるかとは思います。
もし、ご自分のDVRやネットワークカメラが乗っ取られていて、犯罪に利用されていて、突然警察が来たらどうしますか?

このような事を防ぐためにも、日本製と表示している数万円の防犯カメラ、録画機には注意してください。
本当に国際的なルールに乗っ取った日本製であれば、そもそも数万円で防犯カメラの録画機(DVR)は作れません。
(Raspberry pi使った簡易的な防犯カメラみたいなのは除く)

それでは、防犯カメラを導入しようとしている方は気を付けてくださいねー!
(防犯しようとして映像ダダ漏れで、サイバー犯罪加担していたら防犯しないほうがましになってしまう。。。)

RaspberryPi3で3G接続してみよう!SORACOM Air 編

まず、ソラコムにてアカウント作成してユーザーコンソールにてSIM登録をします。
※クレジットカードの登録が必須だよ!

そして今度は3G接続するためのUSBドングルにSIMカードをセットします。
今回はソラコム推奨のABIT AK-020を使用しての方法を説明します。
ちなみにnanoSIMを使用します。

まず、カードにnanoSIMがついているので外します。

USBドングルは標準サイズのSIMが対応なので、サイズ変換アダプタを写真のようにnanoSIMにはめて
USBドングルに挿入します。

そして、このUSBドングルをRaspberryPi3のUSBポートに接続(でかいので隣のポート塞いじゃう。。)
とりあえず、アップデートを念のためにしておきましょう。
※アップデートが大量にあった場合には、終了後に再起動しておきましょう

sudo apt-get update
sudo apt-get upgrade

SORACOM Airに必要な2つのパッケージをインストールします

sudo apt-get install -y usb-modeswitch wvdial

3G接続用スクリプトをSORACOMのサイトからダウンロードします
下記はpiユーザーでダウンロードしたため、ダウンロード後にusrフォルダに移動させています

curl -O http://soracom-files.s3.amazonaws.com/connect_air.sh
chmod 755 connect_air.sh
sudo mv connect_air.sh /usr/local/sbin/

接続プログラムを実行

sudo /usr/local/sbin/connect_air.sh

接続できているようなメッセージがコンソールにでるので、ソラコムのユーザーコンソールを見てみると

「オンライン」になっています。

ためしにRaspberryPiでソラコムのウェブサイトを閲覧してみると

このようにソラコムのユーザーコンソール上の通信料が更新されました。

ちなみにソラコムのWEBサイトにアクセスして、全表示する前に閉じたんですが、3MB11円くらいになりました。

3G接続を停止したいときは下記のキーを押してプログラムを終了させる

[CTRL]+[C]キーで、connect_air.shのプログラムを終了

そうすると、ソラコムのユーザーコンソールも下記のように「オフライン」になります。

どうでしたでしょうか?

ものの数分でRaspberryPiで3G接続ができるようになりましたね!

 

DVRやIPカメラにネットからアクセスしたいがDDNS機能がないとき、使えない時

防犯カメラの録画機であるDVR(NVRやXVRとも呼ぶ)やIPカメラには
ほとんど全てといっていいほど、インターネットからのアクセス機能がついています。

外部からDVRに接続する設定方法には、
UPnP(ユニバーサルプラグアンドプレイ)やDDNSが代表格になるかと思います。

ですが本ブログでも何度か言っていますが、セキュリティが良くわからない場合には
UPnPは使用しない事をお勧めします。
楽天やYahoo!,Amazon等で販売されている中華DVRの場合には絶対に使用しないことを強くお勧めします。
(業務用以外の日本市場で販売されている民生用DVRはほぼ全て中華DVRです)

よくあるのが
「QRコードが表示されて、ここにアクセスして少し設定するだけで簡単アクセス!」
的なふれこみがされているものになります。

このUPnPはポートマッピングを行って、ルーターのNAT越えをしP2P通信をしたり、
中国にあるDNSサーバーにアクセスすることで通信を確立させます。

確かにネットワークがわからない方にとっては、特に何も設定をしなくても
インターネット経由(アプリ等)で簡単に見られるようになるので、
知らずしらずに利用している方は多いようです。

ですが、

「カメラの画像が誰でもみられるようになっていたり」、

「機器自体が容易に乗っ取られて、他サーバーを攻撃していた」

という事も多々発生しております。

なので、まだDDNSとルーターの組み合わせのほうが比較的安全なので、
外部からアクセスして映像を見たい方は
DDNSの設定をしてみてはいかがでしょうか?
(ルーターのポートフォワーディング設定もしっかり行いましょう!!)

ただ、DDNSはDVR設置されている箇所のIPアドレスとURLを紐づけるため
インターネット経由で誰でも、DVRまでアクセスが可能です。

なので、できればVPN経由でしかアクセスできないようにしましょう。
最近VPN付のルーターの価格が数千円で買えるようになってきたため
できればVPN機能付きのルーターを使い、VPNでアクセスする設定しましょう。
※VPNルータと言っても民生用(tp-link等)は脆弱性が指摘されているため100%安全というわけではありません
ただ、しないよりはだいぶマシです。

で、ここからが本題なのですが、タイトルにあるように
DDNSが自由に設定ができないDVRやIPカメラが売られている場合があります

特に、アマゾンや楽天等で売られている格安モデルには、
DDNS欄によく知らない会社のドメインが指定されていて、
自分が使いたいDDNSサービス会社のドメインを指定できない場合があります。

つまり、使用できるDDNSサービス会社を限定されている場合です。

こういう場合お手上げかというと、そうでもありません。

バッファローやコレガ、エレコムなどがルーターという機器をだしておりますが
おそらくほぼ全てのご家庭で使用しているかと思います。
「えっ、使っていない!」
と思った方でも、ご家庭では無線LANを使用していれば、
それが”ルーター”になります。(AP機能だけのものもありますが、その場合親ルーターがどこかにあるはず)

そのルーターに、DDNS機能が搭載されている機種が多くあります。
「ルーターのDDNS設定の箇所にDDNSサービス会社から指定されたご自分のURL、ユーザー名、パスワードを設定する」
だけでルーターが一定時間毎に自分のグローバルIPをDDNSサービス会社のDNSに通知するので、
DDNSアドレスにアクセスするだけで、そのルーターのあるネットワークにアクセスできるようになります。
(ルーターにDVRへのポートフォワーディング設定もしないと外部からは映像を見られません!)

これで、せっかく買ったIPカメラやDVRでDDNSが使えなくても、
ルーターのDDNS機能を使うことで外部から見る事ができるようになります。

ArduinoでI2Cを使って格安LCDの1602に文字を表示させよう!

写真左の格安液晶モジュール1602に
写真右のI2C アダプターを利用して、簡単に文字を表示させることができます。

LCDにI2Cドライバを実装(要ハンダ付)

下記のようにI2CモジュールとArduino UNOを繋ぐ
I2Cモジュール → Arduino UNO
GND → GND
VCC → 5V
SDA → A4
SCL → A5

まずは、LiquidCrystal_I2C ライブラリをダウンロードして取り込み。

LiquidCrystal_I2C ライブラリ

スケッチは下記

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  lcd.init(); 
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Hello, world!!");
}

void loop(){
}

どうでしょうか?表示されましたか?

画面が真っ青であったり、何も映らない場合には、モジュール裏面の可変抵抗がLCDコントラスト調整ツマミ
になっているので回して調整してみてください。

モジュール裏面のA0, A1, A2はハンダブリッジの組み合わせでアドレスを変更できます。
1個も半田ブリッジが無い「全てオープン」の状態では、デフォルトの
「0x27」
となっています。

LCDもI2Cモジュールも150円くらいで手に入るので、

約300円程度でArduinoに簡単に液晶表示をさせることができるようになります。

アナログ防犯カメラをLANケーブルで延長できるバラン(Balun)変換コネクタの仕組み1(BNC-LAN変換アダプタ)

前回の記事
アナログ防犯カメラをLANケーブルで配線する
で書いたように今までBNCケーブル(同軸ケーブル)で配線していた
アナログカメラを
防犯カメラ LANコネクター Balun
で接続することでLANケーブルで配線できるようになりました。

これを読んで、
「なんだ接続用のコネクタ(端子台)とかでLAN内の線をBNCに結線すれば、
わざわざ防犯カメラLANコネクタなんて使わなくても接続・配線できるんじゃないの?」

と感じたかもしれません。
ですが、確かに映る事には映る場合もありますが、映像品質は不安定で
延長距離が長いほど顕著に悪化します。

原因は特性インピーダンスと伝送方式(平衡・不平衡)が下記のように違う事に起因します。
BNCケーブル(75Ω):不平衡
LANケーブル(約100Ω程度):平衡

つまり種類が違うケーブルをむりやり繋いだので、ケーブルの接続箇所で
反射損失 (return loss)
が起こり、映像データが送信元から受信元に適切に届かなくなる事が原因です。

これを下記写真のようにBalunコイルを使用して解決します。

Balunとは平衡と不平衡の状態にある電気信号を変換するための素子をさしますが、
業者さんは「防犯カメラLANコネクタの商品」をそのままバラン(バルン)と呼んでいることもよくあります。

ちなみに
「balun」=平衡-不平衡変換器
という意味で平衡(balanced)と不平衡(unbalanced)の頭文字を合成した造語

同じ種類のケーブル同士であれば、減衰はありますがインピーダンスが同じなので
このような変換アダプタを使わなくても延長ができます。

また、なぜこのようなBNCをLANに変換する商品があるかというと
単にBNCケーブル(RG59)よりもLANケーブルのほうが単位長さあたり安いというのが
一番の理由だと思います。

また、BNCケーブルは長距離伝送には不向きですが、
LANケーブルの場合は、
映像の伝送距離が約300m程度までリピータ-(増幅器)等なしで延長が可能になります。
あくまで映像伝送の場合です。電源は電圧降下が起こるためこうはなりません

なので、長距離の映像転送の必要があった場合に
この防犯カメラLANコネクタを使って、LANケーブルで安く伝送する事が可能になります。

もし、そのような際には、今回説明した方法も検討してみてください。

※反射損失(反射減衰量)= Return Loss について
高周波回路(反射が起きるような接続点)に
入力される電力の平方根 (入射波) をa1
反射された電力の平方根 (反射波) をb1
とすると、接続点における反射損失RL(Return Loss)は

となります。また、特性インピーダンスZ0と、入力インピーダンスZLとの間に、
a1=ZL+Z0
b1=ZL-Z0
の関係があるので、下記のようなインピーダンスの式に直せます。

つまり、接続点(境界面)において伝送路の

インピーダンスの差が大きくなる⇒RL(反射損失)が大きくなる

ということになります。