【Arduinoで遊ぼう 暇潰し】

後期高齢者と呼ばれて、嬉しいのやら悲しいのやら? いやな呼び方をされる年になってしまった。 それでも平等に時間はある。以前は釣りがその時間を埋めてくれた。暇故ボ~と過ごすこの辛さ・・・何とかせねば!!! なんとなくネットを見ていたら 電子工作でArduinoを使ったプログラムが紹介されていた。簡単に作れてしまうベーシックの様であまり関心はなかった。とりあえずArduinoをキーワードに調べていたら 九州工業大学情報工学部のホームページにArduino簡易オシロスコープが紹介されていた。以前は高額な測定器であったが現在は数千円で入手できるらしい。 機器設計をする上で、小生も数十万するオシロスコープを所有していた。機能はともかくArduinoと多少のH/Wで作れてしまうらしい。ArduinoS/Wはオープンソースと して上記学部から入手できる。これをきっかけに遊び心に火が付けば、ボ~と過ごす辛さは解消されるかも? 早速遊んでみた。

【開発環境の構築】

ソフトの開発で必要になるArduino IDEのインストールは必須である。小生はArduino IDEの操作感覚に戸惑いが有るため、Visual Studio Code(VSC) を使用する。Arduinoと連携して動くPC用のユーザーインターフェースはProcessingを選択。

***Arduino IDE 画面***
***Processing 画面***
***Visual Studio Code***

 

【Arduino UNO BootLoader Writen Device Composition】

ArduinoIDEでBootLoaderの書込みに手順ついては、ネット検索すれば容易に見つかる。下記に簡単な手順を記載した。

1.USBシリアル変換モジュール
秋月電子通商のFT232を使用したUSBシリアル変換モジュールを使用
:Arduino UNO基板を自作するならば、USB通信部が実装されている市販品からこの共通部分を外出しにすれば、価格的に安く容易に自作できる。 尚、USBシリアル変換モジュールは使い回しが出来るので便利である。

2.Arduino UNO Master基板
通常はプログラムを書き込む為に使用するが、Bootの書き込みを行う際は、書き込み用スケッチをインストールするBootLoaderの役目になる。 尚、BootLoaderが書き込まれたATmega328Pがなければ、秋月電子通商で書込済のICが入手可能。
3.Arduino UNO Slave基板
Bootの書き込みを行う専用の基板である。
:ATMEGA328P-PUを実装するソケットピンは接続するピンに限定して実装している。目的は、挿抜を容易にするためである。 お金持ちの人は、専用のICソケットを使用するのが望ましい

【1.AE-UM232R USBシリアル変換モジュール 改造】
容易にコネクタ接続にする為の改造
AE-UM232Rをユニバーサル基板上に実装し、コネクタ(6P)と接続配線。3.3Vを使用しなければコネクタ(2P)は、不要

【2.Arduino UNO Master基板】
必要最低限の接続図でユニバーサル基板製作。
SSIコネクタ(6P)は、USBシリアル変換モジュールと接続。
8PコネクターはArduino UNO Sleve基板と接続。8Pにした理由は誤挿入防止。

【3.Arduino UNO Slave基板】
ユニバーサル基板製作。
コネクタ(6P)は、Arduino UNO Master基板コネクター(8P)と接続。

【Arduino UNO BootLoader 書き込み手順】
BootLoaderを書き込む為のスケッチはArduinoIDEに具備されている。
1.ArduinoIDEを開き、ファイル→スケッチ例→11.ArduiboISPを開く
2.Arduino UNO Master基板に書き込む。これでBootLoaderの書き込み準備は完了。


目的のBootLoaderを書き込む準備。
1.Arduino UNO Slave基板にATmega328P-PUをソケットに挿入。
2.ArduinoIDEを開いて下記手順操作。
 ①ツール→ボード→ArduinoUNOを選択
 ➁ツール→書き込み装置→Arduino as ISP(ATmega32U4)を選択
 ③ツール→ブートローダーを書き込むを実行


BootLoaderが書き込めたら-----作りたい機器のプログラムを書き込む。
1.Arduino UNO Master基板に、BootLoader書き込み済のATmega328P-PUをソケットに挿入。
2.ArduinoIDE Or Visual Studio Codeを開いてプログラムを書き込む。 お勧めは、Visual Studio Codeである。慣れるまでは苦労するが機能豊富で扱い易い。是非お勧めしたい。
3。動作チェック後、最小機能で作られた製作機器基板に実装して完成となる。

【Arduino UNO Maximum】
ユニバーサル基板で最大の構成・・・
ユニバーサル基板にA'ssyし、外部との接続はコネクター接続とした。基本Arduino UNOモドキとして、組込み基板として使用予定。
本基板を何に組み込むか:
ロボット系/ラジコン系/ドロン 等々  

【Arduino UNO Minimum】
ユニバーサル基板で最小の構成・・・
外部とのコネクター接続はSSI・I2C・I/O(5P(3Pは予備))とした最小寸法(60X24mm)の基板A'ssy。
USB接続はSSI、 液晶表示器(LCD1602)との接続はI2C、 外部モジュール等の接続はI/O、 とした最小構成の基板。
I/O信号線が3本あれば、かなりのモジュール接続が可能。
例:1.ソフトウエアシリアル(Tx/Rx 2本)
  2.リモコン(Tx1本/Rx1本)
  3. 温湿度センサー(1本)
  4. シリアル/パラレル変換(74HC595 3本)
  5. パラレル/シリアル変換(74HC166 3本)等々
  尚予備のI/Oは、例としてアナログ入力等に・・・・・

 

【Arduino Nano で製作してみた------簡易オシロスコープ】

Arduino Nano 簡易オシロスコープ製作例がネットで紹介されていたので作ってみた。
製作資料:九州工業大学  https://www.iizuka.kyutech.ac.jp/faculty/physicalcomputing/pc_kitscope から入手。

【Arduino Nano 互換】
Arduino Nano互換 : 価格的なメリットがあり、送料含めて千円以下で入手可能。
それが苦労の始まり : USBインターフェースICにCH340Gが使われていて、PCにCH340Gのドライバーをインストールする 必要が発生(中国?のホームページから入手)チョッピリ不安。
Windows : Windows11(64Bit)ではArduinoにプログラムダウンロードエラーが発生し悪戦苦闘・・・なんと午前中一杯・・
疲れ気味 諦めてAduino Unoに切替ようか考慮中・・・諦めきれずにWimdows10(32Bit)に開発環境を 構築して・・・なななんと不思議ダウンロードできた。理由は解らず・・Arduino NanoのブートローダーはWindows11に対応していないかも?

【簡易オシロスコープ】
Arduino Nano 配線図 : 簡易オシロスコープ用にユニバーサル基板に配線を行う。
専用基板 : 簡易オシロスコープ専用基板として使用するための配線であり、簡単な波形観測に使用することを 目的に製作。但しDC5V以下で使用するならば、それなりの機能を有している。さすが九州工業大学。

【簡易オシロスコープ画面】
Processing : https://www.iizuka.kyutech.ac.jp/faculty/physicalcomputing/pc_kitscope からスケッチを入手して Run で実行
Arduino Scope がスタート :

 

【Arduino UNO 通信デバイスのライブラリ化】

各センサーや通信デバイスをライブラリ化して、今後の展開に応用できる様構築した。 興味あるのはGPSセンサー,ジャイロ等々があるが、おいおいと暇な時に・・・
【リモコン 送受信】 リモコン通信デバイスの基礎使用方法をライブラリ化。今後応用できる製品は如何に?
 PCモニターで受信データーを表示:受信情報全表示 尚LCD1602表示の場合はアドレスとコマンドのみ
  PCモニターの受信データーを表示した例
   FE01BF40
   Protocol=NEC Address=0x40, Command=0x1, Raw-Data=0xFE01BF40, 32 bits, LSB first, Gap=928400us, Duration=66950us,
   Send with: IrSender.sendNEC(0x40, 0x1, );

【リモコン時計 と NECコード 】 当初は電波時計(JJY)の製作を目指したが、マンションの窓の近くでも電波を拾えない。何回かトライするも残念ながら保留。
しかたなく、リモコンで時間設定できる時計を製作。時計精度は±5Sec/月。月一回のリモコン時間再設定ならば良しとする。 尚 RTCは使用していない。

【 BlueTooth HC-05/HC-06 】  HC-06を使用したBlueToothもライブラリー化した。

 

【Arduino UNO で製作してみた------例等】

ArduinoUNOで暇潰しに作ってみたオモチヤ等---いろんな製作例がネット検索すれば容易に見つかる。

【Arduino UNO リモコン車&自動障害物回避車を作ろう】
上記のArduino UNOで・・・
ネットの製作例を見ていたら面白そうで作ってみたくなった。
もしかして孫が喜んでくれるかも知れないし、手頃な価格で製作できるならば、時間の有り余る小生には丁度良い課題かも!
リモート車は、TOSHIBAデジタルテレビリモコン用コードの一部を使用した。
↑:前進 ↓:後進 決定:停止
←:左90° →:右90° +:右30° -:左30°

【Arduino UNO 湿温度計】
デジタル温度・湿度センサーモジュールを使用した湿温度計を製作・・・
センサーモジュールはDHT22を使用。DHT11は当初使用したが、湿度の精度が悪い為、DHT22に切り替えた。
DHT22の精度比較の為2式製作してみたが、同じような数値を表示した。ちなみにDHT11はDHT22に比べ湿度10%以上に低く表示。
LCD表示器は一般的なLCD1602(I2C)を使用。(尚、16MHzを20MHzに変更(20MHzを多く保有) )

【Arduino UNO 楽器-Keybordを作ろう】
アナログK/B・・・3線式(VCC,GND,PortA0-InPut)
Switch機能---選曲, オクターブUp/Down, 半音Up/Down

自動演奏曲とK/B演奏ができるので、それなりに遊べるかも!

【Arduino UNO スロットマシーンを作ろう】
ランダム関数を使ったスロット・・・孫が遊んでくれるかなぁ~?
①乱数の種となる数値を100に指定。
➁乱数の最小値を100に指定。
③乱数の最大値を999に指定。
④約3.2ms毎にランダム関数を呼び出す。
操作(動作)
①START/STOP スイッチ STARTで7SegLEDがランダム表示。 STOPで1秒/3秒/5秒で逐次7SegLEDランダム表示を停止。
➁STOP スイッチ押下で、DFPlayer(MP-3)のマイクロSDに書き込まれた効果音を再生(ファイルNo:インクリメント操作)
③7SegLEDの1桁目がランダム表示停止で、1桁/2桁/3桁の数字一致でそれぞれの効果音を鳴らす。
④リトライはSTART/STOPスイッチを押下。(オルタネイト動作)

【 Arduino UNO PWM出力対応のAMP組込ケース 】 DEPlayer(MP3)とスピーカー1Wが安価で入手できたので、無駄にしないよう何かを作ろうと考慮した結果? MP3ユニット/AMP内蔵 組込みののスピーカーケースを製作する。雑な仕上がりだがそれなりに良い音が出ている。プラスチックケースは適当な大きさの廃材を利用した。

***** DFPlayer+スピーカー2個 Amazonで安く購入
***** 雑な作りだがそれなりに満足なAMPケース

 

【Arduino UNO MINIMA】

Arduino UNO R4 MINIMA

外観組立図

Arduinoの主力製品「Arduino Uno」の R4(リビジョン4)である。R3までは8 bitマイコンのATMega328PをMCUとして搭載していたが、 R4ではルネサスの32 bitマイコン RA4M1を搭載。一方でフォームファクタや5 Vの動作電圧は R3から引き継ぎ、各種シールドもほぼそのまま使える。

Arduinoの接続形態はコネクタ接続とする。一度デバック済の スケッチは、配線間違なく再度使える様にする為。基本ブレッドボードは使わないことが前提。

コネクター接続配線図

基板A!ssy コネクター接続

嫌味なコネクター接続ピッチ・・・するホール11番めの コネクタピッチが、1.5ピッチになっている。そうした理由は不明だが、何とか苦労して基板を作り上げた。

ユニバーサル基板で完成したコネクタ接続形態基板。 デザイン的にはスケルトンが望ましいが、これで良しとする。

 

【FREENOVE ESP32 WROOM 】

ESP32は、2016年9月に中国のEspressif Systemsから発表された、Wi-FiとBluetoothを統合したマイコンだ。 IoTデバイス向けに設計されたこのチップは、デュアルコアプロセッサ、豊富な入出力端子、強化されたセキュリティ機能を 搭載したベアチップらしい。
【無線通信機能 :】 ワイヤレス接続機能では、ESP32は2.4GHz帯の802.11 b/g/n Wi-Fi(最大150Mbps)と Bluetooth v4.2 BR/EDRおよびBLE4.2を統合している。 送信出力は最大+20.5dBm(802.11b)で、統合アンテナスイッチ、RFバラン(高周波回路の整合素子)、パワーアンプ、低ノイズ受信アンプ、フィルタを内蔵する。 ESP32の書き込みが遅いのは、主に「コンパイル時間」と「アップロード時間」である。Arduinoに比べて相当遅い。解決方法は あるらしいが、このままの状態で仕事に使うにはチョット無理かなぁ~ 購入した箱の中に Get Tutorial & Get Supportが記されたカードが入っている。
【無線通信機能を使用したもの作り: とりあえずWiFi時計の製作】 なにが作れるのかネットで調べた結果、WiFi時計/WiFiカメラが紹介されていた。Arduino Core for ESP32 はもうずいぶん前 2.0系から3.0系にバージョンアップされ、変更が多く混乱させられた。ただ、公式の説明がよく分からなかったり、 移行の仕方が載っているWeb記事が引っかからなかったり大変です。未だに古い記事などでは2.0系のコード記述で変換も 解説記事が少ないので苦労します。
タイマー割り込み設定等はその典型でチョッピリ苦労した。