IT/ICT/IoT

思いつくままに書き綴るIT/ICT/IoT
サイト内検索
カスタム検索
 GPT
 MBR
 LVM
...etc.
C++

電子工作、楽しいよ

[2020/08/13]

 壊れかけリモコンの代用、鑑賞を楽しみにしてる赤い実狙いの鳥よけ作り目的で始めた電子工作歴3年半のいわゆる文系のおじさん、いや、おじーさんからの一言。

 電子工作、めっちゃ楽しいよ。

 だって今や家の中のいろんなものが、自作品のスマートリモコン、スマートコンセントでブラウザから無線操作、自作のラズパイスマートスピーカーやパソコンから音声操作できちゃってるんだから。

 エアコンとか、テレビとか、壁スイッチの照明とか、紐で引っ張るペンダントライトとか、カーテンとか、はたまた自作のロールカーテンとか...。

 最初、リモコンの代用を作ろうと思って始めた電子工作たけど、やり始めてみたら、それより、無線や音声操作のほうが、めっちゃ便利って気づいちゃった。

 ちなみにスマートスピーカーは、AI搭載のアレクサとかGoogle Homeとかも実質、無償公開されているから、ラズパイで自作して使うこともできる。

 だけど、じーさんは、あえて非AIながら何れも日本製でオープンソースの音声認識ソフトJuliusと音声合成ソフトOpen JTalkを使わせてもらってる。

 あれこれ学習して賢くなっていくわけじゃなく、シナリオ通りにしか動かないけど、シナリオの書き方が良過ぎるのか、超便利だよ。

 と言うより、Amazon、Google、LINE、Appleとかのクラウドサービス使っちゃって個人特定されないまでも使用履歴、行動履歴や音声識別とかだと誰が、家にいる・いないとか、時間帯とか、GPSあったら家とか居場所とかも保存されちゃったり、把握されちゃって、利用サービス提供会社の社員だとしても、自分からしたら、どこの誰だかわからない人に、いや知人でも嫌だけど、知られる可能性がゼロじゃないのって超気色悪いなんてもんじゃないし。

 まぁ、何れにしても、自分で作ることができて、自分の意思で使うものを選択できるっていいよね。

 スマホやタブレット、パソコンから使えるブラウザの操作パネルの他、Gtkより微妙に情報が多かったQtでパソコン用デスクトップアプリとしての操作パネルも作っちゃった。

 パソコンからラズパイスマートスピーカーを操作することもできるし、音声操作じゃちょっと厳しい細かい操作もできるから。

 これって電子工作っていうより、その延長線上にあると言ってもいいIoTなんだけど、IoTじゃない便利グッズも作ったよ。

 人感センサー+LEDテープライト自動点灯するベッド下照明、スイッチ付きコンセントに挿したACアダプタから電源をとったLEDテープライトのデスク下照明やちょっとした間接照明、電池式でスイッチ付きのLEDテープライトとか。

 今どき市販品買ったほうが安いけどArduino時計や温湿度計付きのESP32時計とかもあるか。

 もちろん、電子工作をはじめたきっかけの1つ、鳥よけも今や2個稼働中、追加でテープ状のNeoPixel使ったやつを1個試作・検証中。

 どれも超便利で快適だから当たり前に毎日のように使ってる。

 とは言え、実用上全く困ってないけど、完成品でも間違ってるところもあれば、改善の余地も多分にあるとは思うけどね。

 なんたってまだ始めて3年半だし、ここで挙げたほとんどは、作ったの、今も成長してないながら右も左もわからない幼気な1〜2年目の頃だし。

 いたいけってこんな字なんだ、生まれて初めて使ったよ。

簡単なマイコンもあるよ

 さっき言ったLEDテープライトのやつとか、IoTガジェットじゃないものなら、どれもマイコンがなくても作れるからお手軽。

 プラスアルファ機能を追加したいなとか、もっと複雑なことやりたいぞってことになるとマイコン(マイクロコントローラーやマイクロコンピュータ)ってものが必要になるけどね。

 マイクロコントローラは、制御用の電子機器で、マイクロコンピュータは、パソコンの頭脳部と一緒、共に一般に裸の基板状態で、どっちもハードウェア。

 文系じーさん、マイクロコントローラというものを知って探した時、最初、PICとかFPGAとか目に入って、まじか!?ハードル高すぎっ!!って思ったけど、しばらくしてArduinoっていうの見つけて、それそれ!求めてたのは、そういうの!!って飛びついちゃった。

 マイクロコンピューターには、IchigoJam(いちごジャム)やRaspberry Pi(ラズベリーパイ)とかがある。

 どれも見た目は、基板。

 だけどIchigoJamは「こどもパソコン」とも呼ばれていて、プログラミング言語の中でも比較的シンプルでコマンド数も少ないBASICっていうものでプログラムを作ることができて、こどもでも覚えやすいように工夫されているみたい。

 電子工作からは、ちょっと話が逸れちゃうけど、大人でもプログラミングをはじめてみたいけど、おっかなびっくりみたいな場合は、IchigoJamから入るっていうのも良いかもね。

 Raspberry Piは、そういう意味では、大人向けって感じかな。

 Arduinoには、OSは不要だけど、Raspberry Piは、Wi-FiやBluetooth通信もできてパソコンの頭脳としても使えるコンピュータそのもの。

 だからWindowsやLinux、*BSDなどのOSをインストールして使うんだ。

 まぁ、最先端、最新の最上位やミドルレンジパソコンほど贅沢スペックってわけじゃないこともあるし、ラズベリーパイでよく使われるのは、Linuxだから、Linuxがおすすめだけど。

 何かわからないことを調べる場合の情報量からしても、特に限りなく標準に近いDebian GNU/Linuxのラズベリーパイ版Raspbianを使うのが賢明だと思う。

 ってなわけでラズベリーパイを使うならLinuxを知っている、というか、使えるのが前提だね。

 仮に今、Linuxって何?状態だったとしても知っておいて損はない!というより得がある!いや、知らないのは損!って、じいさんは、いつになっても常々、そう思わされるシーンに出くわしているよ。

 あー、こんな便利で万能なもの、ちょっとだけでも知っててよかった!ってね。

 それとラズベリーパイ自体は基板だから、これをいじるにしてもコンピュータとして使うにしてもOSを入れたり、保存するためのMicroSDカード(かバリエーションによっては、USBメモリ、HDD、SSDでも可な場合も)、モニタやキーボード、マウス、ACアダプタも必要になる。

 それらを備えたパソコンを持っていれば、sshっていうコマンド、もしくはVNCっていうリモート仮想デスクトップ環境を使って他のパソコンから遠隔操作できるからモニタやキーボード、マウスは要らないけどね。

 って、以後含め、ここで言うパソコンは、それでも使える場合もあるけどChromeブックとかのブラウザOSのやつじゃなくてWindowsやmacOS、Linux/*BSD/PC-UNIXが入ったコンピュータね。

 ただ、電子工作、IoTガジェット作りで使う分には、ハイスペックである必要はないから激安PCでも十分。

 とは言え、ゲーム含め、ヘビーなことはしない前提であっても、電子工作以外のことも考えるとCPUは、64ビット、Celeronデュアルコア以上、RAMは4GB以上、ストレージも容量はともかく、できれば、HDDよりもSSDの方が良いとは思うけどね。

電子工作やプログラミングをパソコン・オンラインで体験

 とりあえず、パソコン上で体験してみたい!という希望も今は叶う。

 まず、プログラミングなら、Scratch

 MIT(米マサチューセッツ工科大学)のプロジェクトから生まれたScratchは、プログラミングなんてよくわからないという人でもこどもでも馴染みやすいブロックを並べる感覚でゲームやアニメを作ることができるソフトウェア。

 続いてAUTODESK Thinkercad

 Thinkercadは、3Dデザイン、電子機器シミュレーション、コーディングなどができるブラウザ完結のウェブアプリ。

 Arduinoを含む電子工作の回路をウェブ上でフルカラーでグラフィカルに配置、配線して実際にどう動くのかとか、値の計測・表示といったシミュレーションもできる。

 だから、Arduinoを買わなくても練習することができちゃう。

 ただ、このThinkercadは、以前は、Autodesk Circuits、その前は、123D Circuitsなんて名称だったんだけど、名称やホームページをコロコロ変えるので使わせたいのか使わせたくないのか謎。

Arduino(あるどぅいーの)

 Arduinoは、OSはないから必ずしもLinuxを使える必要はないけど、知っているに越したことはなく、スケッチっていうC言語やC++ベースながら、これを簡略化したプログラムを書いて転送して書き込むにあたってパソコンが必要。

 スケッチは、寄付もできるし、無料でもダウンロードできるArduino専用のArduino IDE(統合開発環境)を使うんだ。

 これには、Web版とダウンロード版がある。

 少なくともLinuxでは、1つのバージョンならインストールしても、複数バージョン使いたいとかインストールしたくないならインストールせずにダウンロード・展開して使うこともできる。

 他にも使えるIDEはいくつかあるけどね。

 だから、Arduinoを使うなら見様見真似でもなんとかならなくもないけど、初歩の初歩の文法だけでもC言語やC++を知っているに越したことはない。

 Arduinoはオープンハードウェアっていう形態をとっていて誰でもArduinoを作ることができるんだ。

 おかげで正規品もあるけど互換品もたくさんあって特に中国製は、基本的に機能は同じなんだけど値段は数千円の正規品と比べ物にならないくらい安く数百円で手に入るっていうのもArduioの魅力の1つ。

 2005年イタリアからデビューしたArduinoにもいろいろバリエーションがあるんだけど、Arduino UNO(その前身はDuemilanove)っていう基本形みたいなモデルがあって、これが手始めには、一番おすすめ。

 UNOには、USBポートがあってUSBケーブルでパソコンとつないでスケッチっていうプログラムを転送してあげるとその通りに動いてくれるから手軽。

 そんなUNOには、ピンソケットっていう先端がピンになった配線コード(ジャンパワイヤー)の差し込み口がたくさんあって5Vや3.3Vの電源をとったり、電気信号の送受信に使ったりできるから、これを利用して、いろんなセンサーをつなげて遊ぶことができるようになっている。

 Arduino UNOとセンサーをピンやピンソケット付きの配線コードで直接つなぐこともできるし、最近ではブレッドボードっていうハンダ付けしなくても通電・配線できるピンを挿す穴がいっぱいあいた板状のものがあるから、それを介してつなげることもできる。

 Arduinoに対応したセンサーほか各種モジュール(ピンや配線をつなぐだけで使える状態の基板)もたくさんある。

 対応って言っても一般的な3.3V出力もできる入力電圧5V版のArduinoボードと同様に3.3Vや5Vで動作するっていうだけで専用っていうわけではないけど。

 更にArduinoには、Arduino用に作られたシールドと言われる機能を追加・拡張することができるものがあってUNO用が一番多くてUNOのピンソケットにそのまま挿すだけで使えるようになっている。

 有線でインターネットにつなぐためのイーサネットシールドっていうのもあるし、この機能を持ったArduinoボードもある。

 話題のIoT(モノのインターネット)ガジェットを作るなら、ネットワークにつなげるのは大前提だしね。

 ただ、無線ネットワークを介して通信する場合、日本には、技適というものがあって、これをクリアしている通信モジュールを使う必要があるんだけど、Arduinoで使える技適をクリアした無線モジュールは限られ、それらはオープンハードウェアでもなかったりして結構、高価なのが、ネックだったりするんだよね。

ESP8266/ESP32

 そんな中、Arduinoよりも性能が高い上にWi-Fi接続できるESP8266やESP-WROOM-02、この後継でWi-Fiに加えてBluetooth通信できるESP-WROOM-32が中国から登場したんだ。

 これが、激安なArduino互換品とイーサネットシールドよりも安くて、Arduino互換品単品と比べても同程度の値段、わずか数百円で買えるという驚きの価格設定だからIoT向けはもちろん、仮にそうじゃなくても大人気。

 これもOSは要らないから、その辺の知識や経験は不要。

 ESP-WROOM-02やESP-WROOM-32は日本の技適を通っているものもあるから、日本では、それを使わなければならない(それを使っておくのが安心)、だけど、それはたいした制約ではない。

 プログラムは、C/C++ベース、より玄人向けでプログラムの作成や書き込みに端末(ターミナル)を使う専用のESP-IDFっていうのもあるけど、なんとArduino IDEでもArduino的に書けて転送して書き込むことができるし、Arduinoと同じような使い方もできるから、別にArduinoを用意する必要もなく、既にArduinoに馴染んでいる人も使いやすくなっているんだ。

 それとESP-WROOM-02やESP-WROOM-32はICチップでブレッドボードで使うにも使い回すにもピッチ変換基板にハンダ付けしておいた方が使い勝手がよい。

 だけど、例えば、ESP32ならUSBポートとか必要となりそうな(それ以上のもの)一切合切載っかりつつ、もはや、ICチップ+変換基板と価格もほぼ同じくらいのDevKitCやDEVKITといった開発ボードもあって、そっちの方が何かと楽。

 ICチップ+ピッチ変換基板には、プログラムを書き込むのに安価とは言え、FTDIモジュールっていうものも必要になるけど、開発ボードならUSBケーブルがあればOKだしね。

 IoTガジェットを作るならコスパからしてもESP32一択と言って良いと思う。

 ESP32内蔵で技適もクリアしてモニタから何から一通り搭載したM5StackとかそのままウェブカメラになるM5Cameraとかもある。

 中国産に抵抗がなければ、だけど。

 まさにアメリカが、おめーらなんかやってるだろ!って怒ってるし、GoogleやAmazonに情報抜かれるのも抵抗があってクラウドなんて...って引き気味に見てるじーさんももちろん気にはなるところだけど、なんだかんだ言っても、今どき中国産、避けて通れないしね。

 まさかESP32に超ナノサイズのGPSとか、マイクとか、カメラとか、広域通信網でキャッチできるデータ通信機能が内蔵されているわけもないだろうし、いっかなと。

IchigoJam

 IchigoJamは、日本からデビューしたものでオープンハードウェアではなく、正規品が1500円程度みたい。

 これは、基板だけの価格であり、モニタやキーボード、必要ならマウスもいるみたい。

 使うまでにハンダ付けを要するバージョンとハンダ付けの要らないブレッドボード版があるらしい。

 また、Linuxはちょっと...という人向けにRaspberry Pi用のOSとしてIchigoJam BASIC RPi/RPi+もリリースしている。

Raspberry Pi

 Raspberry Piは、2012年イギリスからデビュー、ラズベリーパイも完全なオープンハードウェアではなく、RCコンポーネンツ(英国)製、RCコンポーネンツ(日本)製、element14(中国)製などの正規品がある。

 バリエーションは、CPU性能やRAM容量512MB、1GBと変遷はありつつも25ドルから始まって後の35ドルの基本モデルの他、Pi Zeroや現時点最新のModel 4BのRAM1GB、2GB、4GB、8GBなど5ドル〜75ドルまでいろいろ。

 ドル表記したけど、日本でも買えるよ。

 前に言ったように単なる基板だから、モニタやキーボード、マウス、ACアダプタはない、PCから操作する分には、モニタ/キーボード/マウスは不要、でもラズベリーパイの電源(基本ACアダプタ)とかOSを入れておく、データを保存するためのMicroSDカード(モデルによっては併用、もしくはUSBメモリ、HDD、SSDだけでも可)は必須。

 それにホコリ対策や見栄えのため、また、安定稼働のためにも基板というかICの放熱対策としてヒートシンクとか、ファンとかもあった方がよくて、これを固定するためにもケースとか、その分の費用も必要だけどね。

 電源をとったり、センサーと通信できる各種ピンもあってIoTガジェットを作るのにも使えるんだけど、コンピュータだから、ArduinoやESP32にできないこともできるよ。

 特にOSがLinuxならコマンド含め、OS機能全般使えるし、Perl、Python、Rubyとかスクリプトも使えて、必要ならソフトウェアとの連携なんかもできるし、ArduinoやESP32と連携することだってできる、しかも完成品のパソコンに比べて圧倒的にコンパクトで汎用的に使えるようになっているから使いみちもいろいろ。

 例えば、ESP32で作ったスマートリモコンやスマートコンセントをラズベリーパイで作ったスマートスピーカーから操作するとかね。

 スマートスピーカーを機能させるにあたっても、いろんな追加機能にしてもLinuxコマンドやPerlとかPythonなんかのスクリプトが活躍してくれているんだ。

 ただ、じーさんは、電子工作を始める1年くらい前に最初サーバとしてラズベリーパイを買って、今も運用中たけどね。

 2台めがスマートスピーカー、3台めがサブパソコンの頭脳として。

 どれもOSはRaspbian。

 Raspberry Pi 4BもRAM1GB以外にも2GB/4GB/8GBもリリースされたけど、microSDレス起動の標準化、性能、目新しさ、コスパ...何か物足りない、もう一声ってとこかな...と様子見中。

Linux便利だよ

 ブラウザ操作パネルにしてもデスクトップアプリの操作パネルにしても、ソフト使うにも基本、制約はなくて作るのも使うのもWindowsよりLinuxの方が、圧倒的に簡単だから、ESP32を使う場合もLinuxに慣れていた方が、より活用できると思うよ。

 ちなみにスマホやタブレットのOSであるAndroidもLinuxの派生だから、実は知らず知らずにでもLinuxを使っている人は多いんだけどね。

 macOSも少なくともMac OS Xシリーズの一部は正統派UNIXなわけでUNIXコマンドに慣れている人も多いだろうからLinuxに抵抗はないだろうし、Windowsユーザーでもdockerとかのコンテナもあるし、VirtualBoxとかVMWareとか仮想化ソフトウェアもあるし、Windows10には、WSL/WSL2もあってLinux使えるから、Windowsユーザーでも手軽に試せるし、覚えられるよね。

 まぁ、仮想とかじゃなくて普段使いのOSとして物理的なコンピュータに直接入れた方が、より、その快適さがわかるけどね。

 そのプロセスは学びも多いし。

Valid HTML 4.01 TransitionalValid CSS!
2017/11/03-HTTPS対応
スマートフォン対応
ペイパル|Mastercard,VISA,American Express,JCB

2004-someday

webzoit

 Mac OS/Mac OS X/OS X
VirtualBoxにDOS/Windows
VMware PlayerにPE
VMware PlayerにDOS/Windows
QEMU
QEMUにDOS/Windows
Virtual PCにDOS/Windows
【コンテナ】