情報技術の四方山話

AI、IoT、ヤマハルータ、VPN、無線LAN、Linux、クラウド、仮想サーバと情報セキュリティのよもやま話

ChatGPTを使ってArduinoマイコンソフト開発-Arduino/XIAOにコマンドを送るコード

2024-01-03 23:57:57 | AI,IoT,SensorNetworking
Arduino/XIAOにシリアルポートからコマンドを受け付けて、動作を変更するサンプルコード。このような例を見ないので、私がChatGPT4を支援者として使って書いた。計算力・通信力のあるホストから状況に応じてセンサーまたは表示デバイスに情報を送ることができるようになる



使い方:
1.Arduino IDEでコンパイルしArduino/SeeedStudio XIAOにダウンロードし起動
LEDが一秒間隔で点滅
2.Arduino IDEのシリアルモニタから"BLINK"コマンドを送信
LEDが125msec間隔で点滅
3.Arduino IDEのシリアルモニタから"INTERVAL=500"コマンドを送信
LEDが500msec間隔で明滅。値を変えるとその値で点滅

日本語でコメントを書いたが、ChatGPT4から"英語の方がより広く伝わって良いでしょう"と英語に翻訳されたので、そのまま使うことに。コメントはChatGPT3.5でほぼ意味が分かるように日本語に翻訳することができることを確認している

(注)インデントが反映されないのは、ブログ機能の制約。近い将来GitHUBに置きたい


// 2024-01-03 TANIYAMA Ryoji
// This code is released into the public domain.
//
// This code is designed for Arduino / XIAO and is compatible with the Arduino IDE.
//
// If you require comments in Japanese, please refer to translations provided by ChatGPT.
// These translations have been tested for accuracy.

#define INTERVAL_BLINK 125 // Blink interval when in BLINK mode (milliseconds)
#define INTERVAL_BOOTUP 1000 // Blink interval during startup (milliseconds)
#define SERIAL_LINE_96 9600 // Serial communication speed
#define PIN_USER_LED 13 // Pin number for USER LED on Arduino

// Executed only once at startup
void setup() {
pinMode(PIN_USER_LED, OUTPUT); // Set USER LED pin to output mode
Serial.begin(SERIAL_LINE_96); // Begin serial communication (baud rate 9600)
}

// Executed continuously, appearing as if it's always running
// Do not confuse it with being called only once like main()
// Use static declaration for variables that are continuously used within the function
// Global declarations can make the code harder to read
void loop() {
static unsigned long interval = INTERVAL_BOOTUP; // Current blinking interval. Set initial value
static String incomingCommand; // Variable to store received commands

// Check for incoming data on the serial port
if (Serial.available() > 0) {
// Receive data from serial port until newline "\n"
// Returned value does not include "\n"
incomingCommand = Serial.readStringUntil('\n');
// Echo back for debugging purposes. println() method adds "\n"
Serial.println(incomingCommand);
}

// "BLINK" command received
if (incomingCommand == "BLINK") {
// Set interval to predefined BLINK interval
interval = INTERVAL_BLINK;
}

// "INTERVAL=N" command received, where N is in milliseconds
if (incomingCommand.startsWith("INTERVAL=")) {
// Convert string following "=" to a number and set the blinking interval
interval = incomingCommand.substring(9).toInt();
}

// Echo back any change in blinking interval for debugging
IsIntervalChanged(interval);

// Blink the LED with the specified pin number and interval
blinkLed(PIN_USER_LED, interval);
}

// Detect change in blinking interval, echo back the latest value to serial, and return it
int IsIntervalChanged(int interval)
{
static int last_interval; // Holds the current blinking interval to detect changes

if(interval != last_interval) {
Serial.print("Interval set to ");
Serial.print(interval);
Serial.println(" ms");
}

// Hold and return the current blinking interval
return (last_interval = interval);
}

// Function to handle the LED blinking
void blinkLed(int ledPin, int interval) {
digitalWrite(ledPin, HIGH); // Turn ON the LED
delay(interval); // Wait for the specified interval
digitalWrite(ledPin, LOW); // Turn OFF the LED
delay(interval); // Wait for the specified interval
}

いつもアクセスありがとうございます。Arduino/XIAOにシリアルポートからコマンドを送るコードを共有します
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ChatGPTを使ってArduinoマイコンソフト開発-Arduino/XIAOにコマンドを送る

2024-01-02 11:01:08 | AI,IoT,SensorNetworking
SeeedStudio XIAOのSAMD21マイコン版は、Arduino IDEで開発することができる。Arduino IDEの開発環境で、XIAOの開発ボードを使うと、開発着手までの期間は短くなる

 

USB接続したマイコンにUSBホスト側からコマンド送り、コマンドの指示で様々な動作をさせる。試作として、ホスト側のArduino IDEのシリアルモニター機能を使う。機能確認の方法として、一番簡単な方法だ

プログラム:開発者用LEDの明滅時間をコマンドで変更する
起動時はLEDが一秒ごとに明滅する
"BLINK"をホスト側から送ると125msecごとに忙しく明滅する
"SPAN=N"をホスト側から送ると指定したNmsecごとに明滅する

1.ChatGPTでLED明滅コードを生成
起動したらLED明滅が始まるだけの、簡単なプログラムをChatGPTを使ってプロトタイプした。ChatGPTの惜しいバグを修正して、期待の動作ができるようになった

2.ChatGPTでシリアルからのコマンドを受けるコードを追加
"BLINK"コマンドをホスト側から送ると、明滅間隔を125msecにする

ChatGPTを使って、シリアルからのコマンドを受け付けるコードを追加。loop(){}中で、ループのたびにserialポートへのデータ=コマンドの到着の有無を確認。到着していれば、到着したコマンドをシリアル出力し、ホスト側にエコーバック。"BLINK"であれば明滅間隔を125msecに変更する

ChatGPTのコードの変数の宣言位置を調整して、バグとなりにくいコードに変更して完成

3.ChatGPTで"SPAN=N"指定機能をコードに追加
指定する明滅間隔をコマンド行から取得して、明滅間隔としてセットする
受け取ったSPANコマンドが指定した明滅間隔をシリアル出力とし、エコーバック。
先のコードの素直な機能拡張なので、難なく動作

USB接続したArduino/XIAOにコマンドを送るコードは初めて書いたが、これで、コマンドを送るコードが具体化した。ChatGPTが必要なメッソドとコードを教えてくれるので、全体の実装は簡単だった

完成したコードは次回掲載し、解説する

いつもアクセスありがとうございます。ChatGPTを使ったマイコンプログラムの様子を共有します。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

2024年の匠技術研究所の取り組み-企業ネットワーク編

2024-01-01 23:58:18 | 中小企業のIT戦略
明けましておめでとうございます。匠技術研究所の谷山 亮治です
2024年新年にあたり、匠技術研究所の今年の取り組みをお話しします
今回は、企業ネットワークの分野です


1.企業ネットワーク
1.1. VPN網は自営型に加えサービス型も提供開始
これまでの、自営型VPNネットワークに加え、サービス提供型ネットワークの提供を始めます
新しいSD-WAN方式のネットワークを基軸とし、ファイヤーウオール統合型のネットワークとなります
新たに提供するサービス提供型VPNサービスは、AWSとAzureクラウドとの接続、ファイヤウオール、DNSセキュリティも統合することが可能です

1.2. LAN
これまで通り、VLANを活用して、用途ごとに分離したLAN環境を提供します
また、10GbEネットワークをより広く実装します

1.3. 無線LAN
VLANに対応した、用途ごとに分離した企業W-Fi環境を提供します
FastDFSによる重要無線の自動回避、6G帯を用いた広域接続も行います
アクセスポイントの多様化も進めます

1.4. クラウドを含めた企業ネットワークの運用
マルチベンダ通信機器環境でのインターネット、VPN、LAN、Wi-Fiを常時監視するサービスを実現します
既に、企業ネットワークのインターネット側の常時監視、および各種クラウドサーバーの常時監視は実現しています
今年は、内部ネットワークの常時監視機能を強化します

1.5. DNS/内部DNS
特にDDoS対策を強化した強靭な分散型のDNSを提供します。必要に応じて、内部DNSも提供します

いつもアクセスありがとうございます。今年の取り組みを共有いたします。引き続きよろしくお願いします
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Arduino IDEで開発する仲間たち-Seeed Studio XIAO と開発ボード

2023-12-31 08:51:04 | AI,IoT,SensorNetworking
SeeedStudio XIAOは小型マイコンでArduino IDEでの開発ができる。概ねArduino Unoと同じイメージだ。センサーを付けるには、直付け可能な、Grove拡張インターフェースがある

LCDが付いている開発ボードにはGroveに加えmicroSD、RTC、RTC用ボタン電池スロット、それに充電池I/Fなど、全部入りだ

まとまった形が良ければ、Wio Terminalが簡明だ。これにもGroveがありセンサーを増やすことも簡単

今は、この三種類の開発に集中している



いつもアクセスありがとうございます。Arduinoの環境もだんだん広がり、より分かりやすい開発環境も整ってきました。引き続きこの分野の情報も共有していきます

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Arduino IDEで開発する仲間たち-まずはSeeedStudio XIAOとWio Terminalで開発

2023-12-28 20:16:44 | AI,IoT,SensorNetworking
Aduinoの開発環境で、様々なマイコン(Micro Computer)開発ができるようになった。

マイコン開発には電気回路が不可欠。が、お手軽なSeeedStudio社のデバイスを使い、ほぼほぼソフトの知識のみで、プログラム開発をする

SeeedStudio社のGroveデバイスを使うと、電気回路の知識がほとんど不要になる。まずは、動かしつつ試作ができる環境を揃えてみた

■Arduino IDEで開発ができる

■カラー発光するWio Terminal

■Arduino互換機での学習ボード


いつもアクセスありがとうございます。Arduino IDEで開発可能な、デバイスを紹介していきます
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

arduino / SeeedStudio Wio Terminalでの開発-battely baseでGroveポートも拡張

2023-12-24 08:40:48 | AI,IoT,SensorNetworking
 SeeedStudio Wio Terminalは、単体でもUSB電源で動作する。純正アクセサリに二段重ね接続できるLiPO 650mAH充電池BOXがあり、簡単に充電池で動かすことができた


LiPO充電池BOXには、拡張のGroveポートが6個ついており、本体の2ポートと合わせ、8ポートとなり、センサー類の拡張に便利だ

本体側
2 x Groveポート

拡張側
4 xGroveアナログ/デジタルポート
1 x GroveI2Cポート
1 x GroveUARTポート

充電池BOXを取り付けると、本体背面内臓の光センサーと赤外線送信機は完全に遮られ使うことができない。一方、Groveポートが増えるのでセンサー取り付けに問題はない。本体背面のGPIOポートは充電池BOXに延長コネクタがついており、充電池BOX背面にて利用可能だ

いつもアクセスありがとうございます。Wio Terminalの充電池BOXの情報を共有します。次回以降、いろいろなセンサーを試します
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

匠技術研究所の作品-可搬型パッケージングまで熟考したよ

2023-12-13 19:45:50 | モバイル
可搬型のシステムのパッケージも匠技術研究所で考えたもの。安心して長く使っていただくために、パッケージングまでこだわり選択した


お客様のご要求を具体化するために、沢山のことを考えた。このケースを選択。とても頑丈で、安心して移動することができる仕上がり

可搬型システムをオーダーメイドで企画・開発・実装まで一貫して取り組み、パッケージングしたのは初めてだ。良い形になった

いつもアクセスありがとうございます。パッケージングの例を共有します。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

arduino / SeeedStudio Wio Terminalでの開発-Linux MiniPCでの開発環境

2023-12-05 23:39:23 | AI,IoT,SensorNetworking
Arduino / Wio Terminalを使ったシステム開発を始めている。Wio Terminalには、ディスプレイがついており、表示系の実装が容易だ。さらにBLE、Wi-Fiも最初から組み込まれており、バラバラから組み上げるより、遥かに楽に使い始めることができる

■Arduino Wio Terminal開発イメージ(DLL-E作)


■小さいがくっきりしたディスプレイ

表示は、サンプルプログラム。実際にはパラメータは取得していないので、各データはダミーだ

これで、開発環境とWio Terminalが正しくつながり、プログラムをロードできることが確認できた。工場出荷状態ではjumperという簡単なゲームが搭載されている。jumperもサンプルプログラムとして公開されており、再ロードすることができる

いつもアクセスありがとうございます。今回から数回に分けて、Arduino / Wio Terminalのプログラミングを共有します
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

おかげさまで「情報技術の四方山話」が1200万PV/426万UIPを達成-2023年12月3日

2023-12-04 10:58:46 | ブログ作成関連備忘録
皆様のアクセスのおかげで、このブログを開設して以来、1,200万PVを達成することができました。加えて、延べのご訪問者IPが426万IPを超えました。心より感謝申し上げます。ありがとうございます

皆様のアクセスに支えられて、今日まで続いております。書き続けてきて良かったと思います。これからも、少しずつ書いていきますので、どうぞ引き続きよろしくお願いします

■ChatGPTが書いたお祝いの絵


■2023年11月2日までの累積数
Total PVs = 12,000,000PV
Total  unique IPs = 4,260,000IP

■2023年12月3日までの累積数


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BusyBoxとWindows:Windows上でインストール無しで利用できるLinux環境

2023-11-30 08:44:56 | Linux
BusyBoxは1990年代前半に、フロッピーディスク一枚で起動できる極めてコンパクトなLinuxOSの開発から生まれている

当時のフロッピーディスクの容量は概ね3.5inch四方で1.4MB(MegaByte)だ。PCの標準的な読み書き可能なストレージで、今はUSBメモリやSDカードに置き換わっている


この背景から、BusyBoxは組み込みLinuxとして使う、システムの起動時に実行するLinuxとして使う等、カスタマイズして様々な形で利用されている



Linux/UNIX/POSIX風のOS環境をWindows上で実現することは、LinuxのソフトをWindowsに移植することが簡単になる

私のようにUNIXからソフト開発を始めたエンジニアにとって、その経験をWindows上で活かすには、WindowsをUNIX化する方が簡単だ。UNIXは高価な専用機の上で動くOSだったが、Micorosoft社によりPCアーキテクチャにも移植され、海外ではXenixとその派生OSが広く使われていた。

専用機に比べて安価なPCをUNIX(後にLinux)化して使うことで、後々までUNIXで経験した知識を深め、活用することができる。マルチユーザ、マルチタスクの環境であり、複数人がコンピュータ資源を共有して利用できることから、レジシステムのストアコンピュータとしての活用が顕著だった

いつもアクセスありがとうございます。コンパクトなLinux環境BusyBoxをWindows上で使うことについて、共有を始めます
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BusyBox64.exe/BusyBox64u.exeをWindowsでインストール無しで使う-ダウンロードとbashの起動

2023-11-27 23:56:21 | Windowsの備忘録
BusyBoxをWindows環境で使う方法は大きく2種類ある

BusyBoxのWindosw版のダウンロードはこちら



1)busybox64.exe --installして使う
指定したディレクトリにコマンドなどを展開して、パスを通し実行環境を作る。レジストリと無縁で、実行環境が展開されるのみ

2)busybox64.exeのまま使う
インストールは、置くだけ。
busybox64.exe ls
lsの結果を表示

busybox64.exe bash
$
bashのプロンプト待ちになる。そのままbusybox環境として様々なコマンドを使うことができる。スクリプト開発時に便利

私は2)の方法で常駐プログラムを実行している。Windowsにはシステムソフトがインストールされ、常駐している。その環境に影響を与えること無く、システムソフトのデータを連係するための常駐型bash+awkスクリプトを実行している。

2017年から2023年まで、Windows 10上でメンテ不要で活用いただき、2023年にWindows 11に移植した。移植は、ファイルのパスなど実行環境に依存する軽佻な変更のみで実現できた。引きつづき5年ほどご利用いただくことになる

いつもアクセスありがとうございます。Windows上でのBusyBoxの活用例を共有します。システム専用機上でも、影響のないLinuxの実行環境を追加することができています
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

IoT:Arduino / Seeed Wio Terminalで環境センシング

2023-11-27 21:27:27 | AI,IoT,SensorNetworking
Seeed社のWio Terminalを試し始めた。Wio Terminalは小型のディスプレイ、マイコン、センサ、マイクとスピーカー、Groveコネクタ、Wi-FiとBLEでの通信機能をひとまとめにしたものだ。Arduino IDEでの開発が可能でIoTデバイスにちょうど良い



似たような環境は、やはりSeeed社のXIAOでも実現できるが、Wio Terminalは一まとめに詰め込んだパッケージになっており、USB-C電源で動作する。まだ届いていないが、拡張バッテリ+拡張インターフェイスBOXもある



表示は、PCのパラメータ表示を行う例で実測はしていない。購入直後はJumperというゲームが入っており、PCにUSB接続すれば、すぐに動作確認ができる

WioTerminalは各種センシングのみならず、人への表示と、人からの応答を取り込むことができる機能を持ち、かつUSB、Wi-Fi、BlueToothによる通信が可能。これは便利だ

開発環境はArduino IDEを使うことができる。開発環境のPCは独立させ、開発専用機としたいので、MiniPCにLinux/UbuntuデスクトップをインストールしArduino IDEのLinux版を使っている

いつもアクセスありがとうございます。Arduino IDEで開発ができるWio Terminalの情報を共有します。気づいたことを順次共有していきます
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ブログ記事に見出しイラストを付けてみます-ChatGPT DALL-Eで作画-雰囲気変わりますね

2023-11-26 06:18:59 | AI,IoT,SensorNetworking
このブログには、見出しイラストを付ける機能がある。ChatGPT DALL-Eに描かせてみた。とても楽しい

今の見出しの原画。細長い絵はどうも描きたくないないようで、縦横比を指定しても、期待の比率では無い。努力したのであろう枠がついている


これは、良い感じだが、横長には切り取れないので、これから記事の中で使いたい。横長にするよう頼んだら空白の枠を付けてくれた。ブログ名の「情報技術の四方山話」の英語タイトルもつけてくれている

しばらくは、DALL-Eの画像も使いながら、記事を作ってみたい。一つ前のBusyBoxの記事の挿絵は、やはりChat GPT DALL-Eが生成したもの

いつもアクセスありがとうございます。ChatGPT DALL-Eの画像を共有します。ちょっとしたプロンプトで描けます。ぜひお試しを
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Windowsで常駐型bash+awkプログラム-BusyBoxでレジストリを使わず簡明に実装

2023-11-25 23:05:24 | Windowsの備忘録
Windows上のシステムプログラムをBusyBox+bash+awkで書いている



BusyBox.exeを使えば、Linuxで一般的なbashとawkを組み合わせたプログラムが、Windows上でも同じように動く。LinuxそのものをWindows上にインストールするなど複雑な準備も不用だ

Windows上のBusyBoxは、Linux分野でよく使う、Linux風のコマンドの集合体だ。私は、使い慣れたbashとLinuxのツールを使った常駐プログラムをBusyBooxを実行環境として動かしている



Windows上のBusyBoxは二つの実行環境がある。

1) BusyBox.exeを起動し、その中で指定したコマンドやスクリプトを実行する
2)Windows上にBusyBoxの用途毎のディレクトリ構造をインストールし、その中で実行する

どちらも、Windowsのインストーラーを使うことはないのでレジストリに書き込むこともない。そのため、同居するアプリケーションへの影響はほぼ無いと考えて良いだろう

私は、Windows上でBusyBox.exeを起動する方法を使っている。この方法だと実行環境への依存性が極めて少なく、移植も簡単だ。即ち、寿命の長いプログラムを作ることができる

Windows 10上で開発、2017年から実行してきたBusyBoxプログラムを、Windows 11上に移植した。Windows環境に依存する実行パスやファイルのパスの変更等、実行環境の変化に基づく軽佻な調整で動作した。これは、開発時の期待だった長寿命プログラムそのものだ

いつもアクセスありがとうございます。Windows+BusyBoxでbashやawkを使って書いたシステムプログラムを実行できることを共有します。windows10からwindows11への移行も順調でした
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Windowsのシステム管理-Windowsから現在と最大の物理RAM容量をコマンドで取得

2023-11-24 12:24:20 | Windowsの備忘録
特別に物理RAMの大きいワークステーションを組むことになり、搭載できるRAM容量を調べる必要がある。PCハードが備える搭載可能な最大のRAM容量は、以下の例のようにして知ることができる

■SurfaceLaptop 4 / Windows 11 Pro
拡張性はない。購入時指定サイズが表示されている

PS C:\Users\taniy> wmic memphysical get maxcapacity
MaxCapacity
16777216

PS C:\Users\taniy>


■DELL Precision T3620 / Windows 11 Pro
現在は32Gを実装しており、最大64Gまで搭載できることが判る

PS C:\Users\PC> wmic memorychip get capacity
Capacity
8589934592
8589934592
8589934592
8589934592

PS C:\Users\PC>

PS C:\Users\PC> wmic memphysical get maxcapacity
MaxCapacity
67108864

PS C:\Users\PC> 

いつもアクセスありがとうございます。Windows OSから見た、現在の物理RAM容量と、実装できる最大のRAM容量の取得コマンドを共有します
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする