

以前に乗っていた車からドライブレコーダーをつけました。
当然、前に向けてつけています。
中国製の安いのを買って、適当につけていました。
車が新しくなった時に、ディラーでドライブレコーダーの配線をフロントピラーに入れて配線が見えにくいようにしてくれました。
ドライブレコーダーは、両面テープでなく、吸盤でとめているだけなので、ときどき落ちますが、問題なく、動いているようです。
あおり運転とか、話題になるので、後ろ用のドライブレコーダを追加しようと考えました。
前用のドライブレコーダーに、後ろ用のカメラが取り付けられたら問題はありませんが、そんなのは期待できません。
新しく、前後2カメラのドライブレコーダを買うのは、問題外です。
ところで、ほとんどのドライブレコーダーには、モニターがついています。
さすがに、360度のカメラを使うドライブレコーダーではモニターがない場合もあるようです。
ちゃんと録画しているのかを確認するのに、モニターが必要かと思いました。しかし、SDカードを入れてなくても、モニターには、映像がでるようです。SDカードに一旦貯めた画像をモニターに表示しているのではなさそうです。
それ以外にモニターが必要な理由は思いつきませんでした。
モニターがどうしても必要だと思っている人がいるのでしょうか?
小さいし、安そうなモニターですが、モニターがあることで、原価は高くなると思います。
ましてリア用ですから、モニターはいりません。
WiFiを使って、スマホで、モニターできるというドライブレコーダーがアマゾンにありました。それを買いました。
もちろん前用です。
Wifiを使うので、前後のカメラを結ぶ線とかは必要ありません。
車のトランクルームというかハッチバックを開けたところには、ライトだけではなく、シガーソケットもついていました。後ろで電源も簡単にとれます。
今の車は、ハッチバックというのでしょうか、後ろに扉がありますので、ドライブレコーダはハッチバックの窓ガラスに止めることになります。
フロントのグラスに止めるのとは違って、ハッチバックのグラスに止めるので、ハッチバックを開け閉めすると、そのうち、とれてしまうのではないかと心配していますが、今は、まだ大丈夫みたいです。そんなにハッチバックを開け閉めしません。
セダンにしたら良かった?
スマホにアプリを入て起動すると、スマホで後ろの映像も見れるようになりました。もちろん前用を後ろ向きにつけていますので、左右は逆になります。
結構、気に入っています。
それで、前のドライブレコーダーと後ろのドライブレコーダーをモニターなしにして、まとめてスマホで見ることができるようなのをIoTの続きとして作ろうかと思っています。
WiFiの使い方が難しそうですが、どうせ、スマホからは、前か後ろかのどちらかを見るようにできればよいと思います。
ドライブレコーダーは、ミニタイプBというUSBのコネクタを使っているのが多いと思います。
タイプAとミニタイプBのUSBケーブルがあれば、モバイルバッテリーとドライブレコーダーをつなげば、モバイルバッテリーが使える間は、ドライブレコーダーを使えます。つまり時間は制限されますが駐車監視にも使えます。
買ったドライブレコーダーは、タイムラプス機能もあります。
駐車管理にするには、前向きだと思います。でも、このドライブレコーダーは、後ろ向きについています。
プログラムの開発は、PCでします。WindowsでもMacでもどちらでも良いみたいです。
最初は、Arduino IDEというのを使います。その後は、Micro Pythonというのを使うようです。
IDEは統合開発環境というものです。Arduino IDEということは、Arduinoという基板用に作られた開発環境だと思います。
それが、ESP32でも使えるみたいです。
Arduino IDEは指定されたところからダウンロードしました。arduino.ccというアドレスは気になりました(ccというドメイン)が、ccはオーストラリア領ココス諸島に割り当てられいるドメインだそうです。無料のドメインだったみたいです。
私のパソコンは、Windowsです。
arduino.ccには、Windows10用のexeファイルとWindowsアプリの両方がありました。
何回かインストールしましたので、両方とも確かめました。私には問題がみつかりませんでした。
「ツール」で、パラメータを設定するとか、確認すると書いてありました。でも、本には、シリアルポートの記載がありませんでした。
シリアルポートでは、デバイスドライバーで見たUSB-Seialと書かれたCOM?を選択する必要がありました。
でも、これは、ドライバーのダウンロードで失敗したからかも知れません。正常にダウンロードできたなら、自動的に設定されるのかも?
Arduino IDEの上には、「検証」と「マイコンボードに書き込む」の2つのボタンがあります。
タイプするときに入力ミスがありますので、「検証」をクリックして、エラーがなくなってから、「マイコンボードに書き込む」にした方が良いように思いました。
プログラムは久しぶりなので、結構、タイプミスが多かったです。
検証とかマイコンボードに書き込むを操作すると、プログラムが保存されるみたいです。
勝手に名前を付けてくれるみたいですし、自分で名前をつけることもできました。
Lチカと名前を付けて保存するときに、Lチカというフォルダーができて、そこにLチカ.inoというファイルができます。
なお、丁寧に読めば、本にもそのように書いてありました。
でも、意味のない?フォルダーができると思ってなかったので、私は、結構、混乱しました。
Arduino IDEには、シリアルモニターという機能とシリアルプロッターという機能があります。
両方ともツールにあります。右上の方にもシリアルモニターのアイコンがあります。
マイコンボードから送った文字、数値を表示するのがシリアルモニターです。
マイコンボードから送った数値をグラフにするのがシリアルプロッターというみたいです。
表示の仕方により、二通りが選べます。
プログラムにSerial.printとかSerial.println(lnがつくと、改行されます)命令を入れて、シリアルモニターに文字列を表示させると、プログラムがどこまで進んだかチェックできます。
そのときには、Serial.begin(・・・)という命令をいれて、速度を指定した方が、うまくいくことが多かったです。
シリアルモニターにもシリアルプロッターでも、速度が指定できるようになっていますが、Serial.beginを入れると、その速度になっていたと思います。
シリアルモニターで、速度が違うと、文字が正しく表示されないだけでなく、改行は改行と認識されないので、どんどん横に長く表示されました。
ネット上のサンプルでは、Serial.begin(9600)と9600bpsに設定しているのが多いですが、115200でも大丈夫でした。
シリアルプロッターは、8つまでのグラフを作ることができますが、データとデータの間は,カンマにするそうです。
一連のデータの終わりは、改行にするそうです。
本の中では、Serial.printfという関数を使っていました。Serial.printfの説明は、英語しかなかったので、読んでいません。
例えば、データが2つの時(データ1とデータ2)は、
Serial.print(data1);
Serial.print("、");
Serail.println(data2)
としました。これを繰り返すと、グラフになりました。
デバイスドライバーは、アプリが周辺機器(デバイス)を動かすために、必要なソフトウェアであるというぐらいは、知っていましたが、実は、あまりよくわかっていませんでした。今もよくわかりません。
プリンターを買うと、CDがついてきて、その中にあるプリンタードライバーをインストールしました。
最近でも、CDも付いていますが、メーカーのサイトにドライバーソフトがあり、それをダウンロードするものだと思っていました。
一方で、USBメモリとかを使うときは、ドライバーが自動でインストールされるか?すでにインストールされているのか?わかりませんが、ユーザーは、ドライバーを気にしなくてよいのも、なんとなく知っていました。
USBのことを本で見ていたとき特定の機能をUSBクラスと言って、それに対応しているUSBクラスドライバーというのが、インストールされているように書いてありました?
ドライバーが、ちゃんとインストールされているか?は、デバイスマネージャーで確認するのも、知っていました。
そう言えば、Windows10になってから、デバイスマネージャーを見たことがありません。
デバイスマネージャーは、タスクバーの検索窓(Windowsの左下にある「ここに入力して検索」というところ)に、デバイスマネージャーと書いて検索したら見つかるように書いてありました。
また、Windowsマーク(マウスを持って行くとスタートとでます)を右クリックすると、出てくる表の中にデバイスマネージャーがあると書いてありました。Windowsキーとxキーを同時に押しても、同じ表が出てくるみたいです。
以前のWindowsバージョンでは、コントロールパネルにデバイスマネージャーがあったと覚えていますが、今は、コントロールパネルは、Windwosシステムツールにあるのですね。
ディスクの管理やタスクマネージャーを使うときに、Windowsマークを右クリックするのは知っていましたが、そこにデバイスマネージャーがあるのをすっかり忘れていました。
デバイスドライバーをインストールするということは、一度でもつないだデバイスドライバーは、ドライバーマネージャーで確認できるものだと思っていました。でも、違うみたいです。
USBメモリーを挿すと、デバイスマネージャーには、ポータブルデバイスというのが、追加されます。
USBメモリーを抜くと、そのポータブルデバイスがなくなります。
パソコンでプログラムを作ります。マイコン(ESPr Developer32のつもりです)にそのプログラムを処理したものを送ります。また、プログラムでは、どこまで実行したか?進み具合を確認するために、マイコン側から、文字を送って、それをパソコンで表示させたりすると思います。
USBケーブルは、データも送れるようになっているはずなので(スマホ用の充電専用ケーブルは違いますが)、それに従って送るのだと思っていました。
パソコンとマイコンは、USBケーブルを使っていますが、昔懐かしいシリアル通信(シリアルは、データを1つずつ送ります)になっているそうです。
USB通信にしない理由としては、USB通信は複雑だからだそうです。また、USBフォーラムのベンダーIDというのが必要になるそうです。
Wikipediaで調べてみると、USBインプリメンターズ・フォーラムというのがあるそうで、そこがベンダーIDを発行しているそうです。ベンダーIDの発行に5000米ドル、USBのロゴの使用に2年間で3500米ドルと書いてありました。
USBケーブルを使ってますが、シリアル通信をするために、ESPr Developer32では、FTDI社の、USBーシリアル変換IC FT231XSを使っているようです。この型番は、説明に書いてあったのをうつしました。歳のせいかICの上に書いてある名前は読めなくなりました。
パソコンでは、差込口やコネクタのことをポートと言うそうです。
USBポートやLANポートとも言うそうですが、今では、あまり使わないように思います。
以前は、モデムをつなぐためのシリアル通信のためのCOMポート(RS-232Cというコネクタがついていた)とかプリンターをつなぐLPTポートがあったそうです。LPTポートはセントロニクスというコネクタがついていたと思います。
ドライバーマネージャーで見ると、ポート(COMとLPT)というのがありますが、これが相当すると思います。
ちなみに、最初に探したときは、ポート(COMとLPT)は見つかりませんでした。たぶん、見逃したのだと思います。
今のパソコンは、Type Cがどうこうと言っているぐらいで、周辺機器は、ほとんどUSBになりました。
RS-232Cやセントロは使っていないと思います。
RS-232Cのコネクタはないけど、仮想的なCOMポートは使われているみたいです。複数使われるときは、COM1から順番に数字が増えていくみたいです。
IoT開発スタートブックには、パソコンのドライバーのことについては書かれていませんでしたが、ネットの情報では、いろいろ書かれていました。
たぶん、自動でドライバーがインストールされるので、本では触れられなかったと思います。
でも、私の場合は、ここでトラブルがありました。
最初にマイコンボードを利用するものを作るときは、LEDをチカチカ点滅させるのを作るみたいです。
一般的に「Lチカ」とか言うみたいです。IoT開発スタートブックでもLチカから作ります。
「Lチカ」の回路を作って、プログラムを作って、さあパソコンとUSBケーブルでつなごうとしました。
何度か回路、プログラムを確認して、USBケーブルをつないで、アプリで「マイコンにプログラムを送る」としました。でも、LEDがチカチカしません。どこかで間違えたはずだから、壊れる前に、あわててUSBケーブルを抜きました。
USBメモリの時は、タスクバーに「ハードウェアを安心に取り外してメディアを取り出す」というアイコンが出てきます。
それをクリックしてから抜いていました。
ESPr Developer32の時は、タスクバーを探しても、そのようなアイコンは出ていませんでした。
それで、そのまま、USBケーブルを抜きました。
回路を確認しても、プログラムを確認しても間違いないので、ネットで調べると、ドライバーを自動でインストールするには、時間がかかると書いてありました。(どれぐらいかかるかは、パソコンの性能とかネットワークに違うのだと思います)
壊れるのは、心配だけど、もう一度、USBケールをつないでから、じっくり時間をかけてから、「マイコンにプログラムを送る」にしましたが、LEDはチカチカしません。
それで、別のパソコンに、ESPr Developer32を接続して、ゆっくり時間をかけて、「マイコンにプログラムを送る」をするとLEDがチカチカしました。
動いたパソコンのドライバーマネージャーを見ると、ポートとLEDにUSB Serial Port(COM6)というのができていました。
ESPr Developer32がつながっているときにドライバーマネージャを見ないといけないみたいでした。
一方、動いていないパソコンでは、USB Serial Port(COM6)というところに△マークがついていて、ドライバーが正常にインストールできなかったようなことが書いてありました。
FTDI社から、ドライバーソフトをダウンロードしてインストールしました。Lチカが動き出しました。
シリアル通信は、速さ、データビットの数、パリティ、文字ごとのストップビットの数を設定しないといけないみたいです。
それが、どのように決まっているのかわかりませんでした。
速度だけは、設定のようなところに出てきます。
結論としては、ESPr Developer32をパソコンと接続するときに、自動で、ドライバーがインストールされるみたいです。
回路を間違えてないか確認して、USBケーブルでパソコンと接続します。
ドライバーをインストールしている状況はわかりにくいので、じっくり待ってください。ドライバーマネージャーで確認しても良いと思います。
ポート(COMとLPT)の項目を確認して、USB Serial Port(COM?)が追加されていれば、OKです。
?の数字は、後で(ソフトを作るとき)に必要になります。
IoTとかの言葉を聞くことが増えました。
図書館に行ったとき、なにげなく本の背表紙を見ていたら、「IoT開発スタートブック」という本が目につき、借りてきました。
読み始めると、ここに書かれている程度なら私でもできるのではないかと思いました。
IoTとは、「Internet of Things」の略だそうです。インターネットは、コンピューターが接続するためのものでしたが、コンピューターだけでなく、「モノ」がインターネットに接続されることを言うみたいです。
お百姓さんの話を聞いたことがあります。
田んぼは、毎日、見て回ることが必要だそうです。田んぼは、あちこちにあるので移動するのに時間がかかるそうです。
たぶん、毎日見るので、あまり変化はないのだと思います。余計に大変に思えるのかも。
田んぼにカメラがあったり、温度、湿度がわかれば、行く回数を減らすとかできるのだと思います。
そんなところにも応用できるのかなあ?
私は、外出した時に、戸締りしたか?とか心配になります。途中から家に戻るのが嫌なので、心配になりそうなところにセンサーを付けておけば、スマホで確認できると思います。お金を無視して探せば、そんな装置はあると思いますが、使えるお金も限られていますし、自分で作ってみたいと思うようになりました。
私は、どうもチマチマと作るのが好きみたいです。
IoT端末を作るのに必要なのは、マイコンボードです。それに、センサーをつけて、そのデータをネットワークを経由して、IoTプラットフォームと呼ばれるところに保存して、グラフとして表示させることもできるようです。
この本を書いた下条健彦さんは、ambientというIoTプラットフォームの会社の代表取締役だそうでして、ambientを利用の方法も、このIoT開発スタートブックにありました。
それだけでなく、マイコンボードに、マイコンボードからのデータを物理運動に変換するためのアクチュエーターというのをつけると、インターネット経由でアクチュエーターの動きが制御できるようになります。それもIoTだと思います。ロボットみたいなものもIoTにはいるみたいです?
マイコンボードの例としては、IoT開発スタートブックでは、Arduino、Raspberry Pi、ESP8266/ESP32、BBC micro:bitと4つ上がっていました。
Raspberry Piは、名前は聞いたことはありましたが、Arduino、ESP8266/ESP32、BBC micro:bitは初めて聞きました。
それぞれで調べてみると、各マイコンボード用にセンサーとかサーボモータとか売っていました。それをマイコンボードに取り付けた例(ソフトも含みます)をブログに載せている人も多いように思います。
ネットワークとしては、WiFiやBluetoothとか、携帯電話やLPWAが挙げられていました。
有線もあると思いますが、電線を引かなくて良いだけ、無線が便利そうです。
話は変わりますが、楽天モバイルは、月に1GBまでのデータは無料になるようです。
初期の費用はいると思いますが、使う量が少なければ維持に費用がかからないのは、ユーザーには、良いことです。
楽天モバイルを利用できるIoT端末があれば面白いように思いました。維持は無料になります。
楽天モバイルも、そんなことを見込んで、1GB未満は、無料にしたのでしょうか?
楽天モバイルの携帯電話の数を増やしたいので、1GB未満は無料にしたのだと思いますが。
まあ、いつ料金を変更されるかわからないのが心配です。
Wifi、Bluetoothがついている、消費電力が比較的少ない、メモリ容量で制限されることが少ないということから、IoT開発スタートブックでは、ESP8266/ESP32を使うようです。いろいろなセンサーをつけて、IoT端末を作るようです。
マイコンボードをブレッドボードに挿して、その他の回路もジャンパーワイヤを使ってブレッドボードに作ります。
プログラムはパソコンで作って、マイコンボードには、USBケーブルで送ります。
でも、同じように作っても、動きませんでした。
たぶん、ベレランには当然と思われることが、私にはできていなかったためでしょう。
このあとのブログでもトラブったところを書くつもりです。
「IoT開発スタートブック」では、ESP32シリーズがのっているESPr Developer32というマイコンボードを利用して、IoT端末を作Tります。
ESP32をインターネットで調べてみたら、wikipediaにもESP32シリーズの説明がありました。
上海のEspressif Systemsという会社が開発したマイクロコントローラだそうです。何種類かあるので、ESP32シリーズとしているのだと思います。
Esprissifは、CPUとWiFi、Blutooth、メモリ、インターフェース等を1つのチップにまとめたものを開発したそうです。
今ではそんなのをSoCとか言うのだと思います。
それに、アンテナとかをつけて基板に実装しやすいようにモジュールとしたものも作っているみたいです。
ESP-WROOM-32という名前で、このモジュールも売っているみたいです。
ESP8266というのは、Wifiだけしか対応していないようです。
ESP-WROOM-32を実装したマイコンボードには、Espressif Systemsが作ったESP32-DevKitCというのもあるみたいです。
モジュールを作ったところが開発した基板ですから、これが一般的なのかと思いましたが、どうも、そうではないようです?
アマゾンでESP32を検索するといろいろな会社のマイコンボードが出てきました。
「IoT開発スタートブック」では、スイッチサイエンス社が開発したESPr Developer32という基板を利用します。ESP-WROOM-32モジュールがのっています。
ESPや32がモジュールの名前にもマイコンボードの名前にもあって、私は、混乱しました。それで、こんなことを書いています。
ESP32を検索すると、M5stackという製品がよく目につきます。
M5stackもESP32シリーズを使った製品みたいです。
「IoT開発スタートブック」の著者は、「M5Stack入門」という本も書いています。
「IoT開発スタートブック」で使っている部品リストがありました。
第2章から第4章までに使っている部品は、マイコンボードを売っているスイッチサイエンス社というところで「IoT開発スタートブック入門キット」として購入できるとありました。
本にのっている部品を合計すると5086円でした。スイッチサイエンスのホームページを見ると、IoT開発スタートブックキットは、5225円でした。部品によっては、値上がりしているのもあるみたいでした。
スイッチサイエンスというのは、このようなIoT用基板の開発と、その関係部品をネットで販売している会社みたいです。
キットを買うのではなく、自分で部品を集めることも考えましたが、家から大阪まで出ると交通費もかなりかかります。また、この種の知識はありませんので、違う部品を買ってしまう可能性もあります。それで、キットを買いました。
本に書いてある通りにブレッドボードを作り、PCでプログラムを書くときに間違わないようにすれば、問題なく動くのだと思います。
でも、素人が作業すると、このような本を書く人なら当然と思うこともできなくて、作ったけど動かないということも多いと思いです。そんなときの対応については、あまり書かれていませんでした。ページ数の問題もあったかと思いますが。
それで、備忘録として書きます。
まず、ESPr Developer32には、ピンヘッダーを取り付けないといけません。はんだ付けです。
ESPr Developer32の片側には、はんだ付けするための穴が20個開いています。
40ピンのピンヘッダーが2つ入っていましたので、1つを半分にして20ピンずつにしました。
本もある図を参考にこのように取り付けました。
このように、ブレッドボードに差し込んで使うみたいです。なお、これは、第3章の後半の回路です。
キットについていたブレッドボードには、ESPr Developer32を置くと、他の回路用の場所がほとんどありません。
それでも、とりあえずは、問題とはならないようなので、そのままにしました。
インターネット上では、ブレッドボードを2枚並べて、その境目にESPr Developer32を置くとか、ピンヘッダーを逆につけて、ブレッドボードと別のところにESPr Developer32を置くとかすることもあるみたいです。
なお、ピンヘッダーを逆につけると、ジャンパー線は、キット付属のオスーオスではなく、メスーオスが必要になります。
キットとは別にメスーオスのジャンパー線は売っているみたいでした。
でも、余計なことは考えずに、本の通りにしたら良いと思います。
ESPr Developer32には、2つのスイッチがついています。RESETとFLASHという押しボタンスイッチです。
スイッチサイエンス社のESPr Developer32の紹介のページの下の方に、スイッチの説明がありました。(最初は気が付きませんでした)
説明をみてもらったらよいと思いますが、RESETは、たぶん、プログラムを最初から走らせるためにあると思います。
FLASHを押しながらRESETを押すと、ファームウェアの書き込みモード(マイコンにプログラムを書き込むモード)になると書いてあります。
マイコンボードは、USBケーブルをパソコンとつないでないときでも、その前にパソコンから送られてきたプログラムは覚えているみたいです。
パソコンで、プログラムを作って、マイコンボードに書き込もうとしても、うまく書き込まれないときがありました。
ちゃんと書き込まれるときもあります。その差がどこにあるのかわかりませんでした。
それで、プログラムを書き込む操作をする前には、FLASHを押しながら、RESETを押すようになりました。
それからは、問題なく、パソコンで新しく作ったプログラムが動いているみたいです。
この辺りを確認するには、プログラムごとに、このプログラムが動いているということをシリアルモニターに出すことも必要だと思います。
このESPr Developer32とパソコンはキットに入っていたUSBケーブルでつなぎます。
USBケーブルで接続するので、USBを使って、電気とプログラムなどを送るのかと思っていました。
電気は、そうみたいで、USBケーブルをつなぐと、赤いLEDが点灯します。
プログラムとかのデータを送るときに、USBを使うと、手順が複雑になるそうで、ライセンス費用もかかるとかどこかに書いてありました。
それで、このようなマイコンボードでは、データ線は、USBのものを使いますが、昔懐かしいシリアル通信を使うそうです。
そのためにUSBシリアル変換というICもマイコンボードには、のっていました。
本(IoT開発スタートブック)では、実際の開発はLチカからスタートします。
ブログとか見ても、Lチカから開発をスタートすることが多いみたいです。
でも、私も、Lチカからスタートしました。
回路とプログラムを作って確認してから、恐る恐るE32とパソコンをUSBケーブルで接続しました。
でも、LEDがチカチカしないので、慌てて、E32を抜きました。(正確には、パソコンからUSBケーブルを抜きました)
それで、ドライバーが正しくインストールできなかったのではないかと思っています。(確かめられません)
始めて、久しぶりに作るには、Lチカは、難しすぎるように思います。
動かなかったら、USBケーブルを抜くぐらいしかできません。
それで、まず、回路が作れるということを確認するため、E32の3.3VのところにLEDを付けました。
本に書いてあるように、220オームの抵抗も付けました。
これでE32に回路をつけて動いていることが確認できたので、次は、プログラムが動くかどうかです。
このようにすると1秒ごとに、シリアルモニターにHello Worldが表示されます。
どうも動作を確認のために文字を表示するときは、Hello Worldという言葉を使うことが多いみたいです。
void setuo(){
Serial.begin(115200);
}
void loop(){
Serial.print("Hello World");
delay(1000)
}
ここまで確認出来たら、Lチカにとりかかったらトラブルは少ないと思います。
現在は、センサーも無事につながり、ambientを使おうとしています。
第3章の最後です。
データがambientに届いていないみたいです。
どうして確認するか、これからです。