カテゴリー
学術

波形測定器2

 オペアンプで作った差動増幅器をステレオにし入出力の電圧差が少なくなるように調整しました。

ステレオ差動増幅器入力電圧
ステレオ差動増幅器入力電圧

 乾電池2本分を入力電圧とします。

ステレオ差動増幅器出力電圧右
ステレオ差動増幅器出力電圧右

 手持ちの抵抗を色々取り替えて入出力電圧が同じになるように調整しました。

ステレオ差動増幅器出力電圧左
ステレオ差動増幅器出力電圧左

 もう一つのチャンネルも抵抗を取り替えて入出力電圧が同じになるように調整しました。普通のカーボン抵抗でも誤差同士のバランスが合えばそこそこの精度が得られます。安定性には疑問がありますがデジタル信号であればまあいけると思います。

ステレオ差動増幅器信号入出力
ステレオ差動増幅器信号入出力

 では実際に信号を入れて結果をAudacityで観察します。右が入力信号、左が出力信号です。出力レベル80、入力レベル67でほぼ入力と出力のレベルが同じになりました。

ステレオ差動増幅器信号入力
ステレオ差動増幅器信号入力

 入力信号を拡大した様子です。

ステレオ差動増幅器信号出力
ステレオ差動増幅器信号出力

 出力信号を拡大した様子です。入力の極を入れ替えて反転を無くしほぼ入出力同じにできました。オシロスコープを買わなくても波形が確認できそうです。測定器を買うのではなく用途に合わせて簡易でも作ることができれば勉強にもなり経済的かつ達成感を味わえます。更に問題が起きても解決の糸口を見つけやすくなります。

カテゴリー
学術

AIを作ってみよう05

人工知能入門
人工知能入門

 なぜ8ビットマイコンを今更取り上げてAIを作ろうとしているかの経緯を話します。

 元々AIには興味を持っていたのですがGPUによる高速演算とテンソンフローの公開により続々と個人ベースで高性能な人工知能システムを完成させている事例を見聞きするにつれ自分もそれに参加したくなったのです。

 特にスマホにニューロエンジンと呼ばれる専用ハードウェアが搭載されたことが決定的な出来事でした。

 現在スマホのアプリエンジニアとして仕事をしておりいよいよ直ぐそこまでAIが近いてきています。

 今後もアプリ開発の現場に留まるためにはAIのスキルも必要と思いました。

 西暦2000年前後の頃に汎用ICやPCのグラッフィックボードを使用して低価格で高速計算機を構築する研究結果が出始めその後FPGAを使うなど高性能化が更に進んでいきました。このような背景が第三次AIブームを引き起こした遠因なのでしょう。スーパーコンピュータ並みの計算能力を個人が手に入れることができる時代になったのです。

 1995年に完成したGRAPE-4は5Wで243.2GFLOPSを達成したそうです。https://ja.m.wikipedia.org/wiki/濱田剛

 個人にとってはその計算機の開発費用もさることながら消費電力も重要な所有の条件です。大容量電力を個人ではとても用意できません。

 5Wなら自分でも容易に環境を作ることができます。

カテゴリー
学術

ディープラーニング

ディープラーニング
ディープラーニング

 第三次AIブームの中心話題であるディープラーニングを体験できる本です。技術の背景たる数学の基礎から実際のプログラミングとオープンソース化されたテンソルフローの使い方まで解説されています。日本語で書かれているのがとても便利です。

カテゴリー
学術

人工知能入門

人工知能入門
人工知能入門

 1990年代中葉までの人工知能をまとめた内容です。第二次AIブームを網羅的に解説しています。ディープラーニングが出る直前なので今から見ると歴史的経緯が述べられていると感じます。その時のコンピュータにいかに知能を載せていくかを模索しています。

カテゴリー
学術

AIを作ってみよう04

 CPUは決まったのでそれを動かすにはどうしたら良いか勉強を始めました。

マイコンの勉強
マイコンの勉強

 8085はかなり古い初期型に近いマイクロプロセッサであるため電源を繋げばすぐ使えるというものではありません。目的にもよりますが多くの周辺ICや部品が必要です。

 8080になるともっと多くの部品が必要になり更に入手の難しいものもあるので一旦使用するのは保留とします。8085の周辺ICであればまだなんとか手に入れることができそうです。

カテゴリー
学術

AIを作ってみよう03

 マイクロプロセッサでAIを作るにしても具体的にどうするか決めてからではないと行動できません。ネットで「マイコン」と調べても無数に情報があり的を絞ることができません。

 第一条件として予算、高価で揃えられないものを夢みても空論で終わってしまうので費用を第一の条件とします。

 第二条件として普及度、今この時にしかないような特殊なものは使わないようにします。過去も有ったし未来も有るだろう、それは汎用品だからというものを第二の条件とします。

 この条件に当てはまると思ったのがIntel系の8ビットCPUです。極めて広範囲に普及した為に情報量が多く数十年間様々な分野で君臨しています。これからも廃れることはないでしょう。

UPD8080A
UPD8080A
D8085AC-2
D8085AC-2

 このCPUは割と今でも手に入ります。最新のCPUより割高ですが機能が少なく作りが大きいので素人が学習するには良い教材です。秋月であれば100円以下のCPUもありますが基本から技を得るためにヴィンテージCPUを選択しました。

カテゴリー
学術

AI開発のアプローチ方法に誤りがある

 今のコンピュータに知的活動をソフトウェアに置き換えて載せようとしているのは間違いではないか。

カテゴリー
学術

AIを作ってみよう02

 鉄筋コンクリートではゲルマニュームラジオを動かすとができなかったのでトランジスタの力を借ります。

ダーリントン接続ラジオ
ダーリントン接続ラジオ

https://www.zea.jp/audio/schematic/sc_file/022.htm

 アンテナはベランダに出したビニール線(LANケーブルをばらしたもの)、コイルとバリコンとクリスタルイヤホンはゲルマニュームラジオで使ったもの、ダイオードをやめて高周波増幅に2SC1815を2個ダーリントンにし、低周波増幅も2SC1815を使いました。電源は単3電池2個です。

 鳴りました。分離性が悪い為、受信できた放送局は少ないですが確かに鳴りました。円筒型バリコンの内側を引き出せば短波放送も受信できたのです。

 実用性がないものですが動くととても楽しいものです。出だし吉と占われたと思いAIが完成するまで頑張ろうと思います。

 部品数が十数点の小さな電子回路からの出発ではゴールは見えない遥か彼方です。少しずつ進めていく過程をここで報告致します。

カテゴリー
学術

AIを作ってみよう01

 マイクロプロセッサーを使いAIを作ってみようと思いMPUをどうしようかと調べていました。当然最初は今流行りのARMを選択するのが普通です。しかし昨今凋落著しい国産半導体の報道に触れていると、できれば国産がいいなとの思いがつのります。この時点でいかにもグローバル化に乗り遅れている感が出てしまっていて恥ずかしい限りですが言い訳は多々思いつくので良しとします。

 手元には高価では無いデジタルテスター2台とダイソーで買ったハンダゴテしかありません。ヤフオクで色々な機材を揃えるのも大変なので出来るだけ低い周波数の世界でAIを実現することを目標にします。幸いにもMacとWindows PC、iPhoneやらAndroidスマホがあるので結構出来ることは多いと思います。


 しばらくぶりに工作するので本番前に練習をしました。幸先を占うためにも何かしら簡単に結果が出るものとしてラジオを作りました。

 最も簡単なラジオはゲルマニュウムラジオですが鉄筋コンクリートでは受信できないかもしれません。

ゲルマニュームラジオ
ゲルマニュームラジオ

 コイルはバーアンテナが良く使われますが手持ちも無く買ったとしても他に使い道もないので作ります。自作のアンテナコイルはポリウレタン線やリッツ線で作りますがそれも無いので使わなくなったLANケーブルをバラして厚紙で作ったボックスに巻きつけました。

 バリコンはポリバリコンが良く使われますがこれも手持ちがありません。バーアンテナと同じく買ったとしても他に使い道が無いので無駄になってしまいます。

 アルミホイルとキッチンペーパーを重ねて丸めます。それを二つ作り片方がもう一方の内側に差し入れることが出来るように若干小さくします。完全に差し込まれている時が2枚のアルミホイル間の静電容量が最大の時で少しづつ抜いていくと静電容量が下がります。立派なバリコンが出来上がります。

 ゲルマニュームダイオードとクリスタルイヤホンの自作は100均の材料では無理なので購入しました。

 一通り部品が揃ったのでブレッドボードに差し込んでクリスタルイヤホンを耳にしてみましたが雑音すら聞こえませんでした。

 予想通りです。

カテゴリー
学術

ガウス

ガウス数論論文集
ガウス数論論文集

 数式が多いのでまず解説を読みました。常々数学は200年前のガウスまで理解ができれば良いと目標を持っていたので、文庫とはいえじっくりと読むというよりか学んでみます。分野が数論なので式自体は難解ではないのですが、あのガウスが書いたものなので理解できるかどうかわかりません。時間をかけてでも取り組みます。

カテゴリー
学術

波形測定器1

 Audacityで波形を表示して自作回路の動作を確認していたのですが、パソコンの音声入力を被計測回路に接続すると動作が変わってしまうので間に挟む装置を作ります。

 今まで自作回路の測定点に音声入力端子を直か逆流防止のダイオードを挟んで使用していました。可聴範囲の単純な回路が多かったためそれでも十分でしたが、ROMライターの製作過程でGNDのレベルが異なるようになってから波形とその電圧レベルが知りたくなりました。

 オシロスコープを使えばなんのこともないのですが、持っていないので自作することにしました。これも勉強のためです。

 表示はパソコンのAudacityでできるので被測定側に影響が出ないように音声入力できれば良いので単純な装置でできると思います。

測定器用差動増幅回路設計
測定器用差動増幅回路設計

 抵抗値高めの差動増幅器です。被測定回路に影響をなるべく与えないように全て1MΩにしました。使用するオペアンプはuPC741Cです。

電池ボックス単3×10と差動増幅器
電池ボックス単3×10と差動増幅器

 1.3Vの単3電池が直列に10本入る電池ボックスを使い真ん中をGNDにします。被測定回路とは別の電源を使った方がより干渉し合わないと思います。

差動増幅器と電池ボックスを接続
差動増幅器と電池ボックスを接続
差動増幅器マイナス側電圧
差動増幅器マイナス側電圧

 期待通り5本分のマイナス電圧が出ています。

差動増幅器プラス側電圧
差動増幅器プラス側電圧

 プラス側も5本分の電圧が出ています。

無入力時の出力電圧
無入力時の出力電圧

 入力に電圧がかかっていない場合は出力も出ていないことが確認できます。

単3電池一個の電圧
単3電池一個の電圧

 試しに入力側に電池を一つ繋いでみました。

差動増幅器の出力電圧
差動増幅器の出力電圧

 出力側は反転していますが概ね同じような電圧が出ています。若干の誤差は後で調整します。

入力端子の抵抗値
入力端子の抵抗値

 入力端子の抵抗値を測ります。2MΩもありますので大丈夫そうです。本当はインピーダンスを計りたいのですが器材が無いのでこれでよしとします。

差動増幅器の入力と出力
差動増幅器の入力と出力

 Audacityで入力と出力を表示してみました。左が入力で右が出力です。少し増幅されています。

差動増幅器への入力
差動増幅器への入力

 よく使う信号を入力し拡大した絵です。

差動増幅器から出力
差動増幅器から出力

 出力側は波形が反転していますが十分に使えそうな結果になりました。

カテゴリー
学術

Multiplatform2

2 評価

 どのプラットフォームを採用すれば良いかはその時々で様々な見解に分かれますが常に念頭に置いておかなければならない観点をまとめます。

2.1 ネイティブ機能へのアクセス方法

 それぞれのプラットフォームはアプリを開発出来ると謳っていますが、どこまでネイティブ固有の機能を利用できるか承知した上で利用します。開発していく中で要件を実現できないことになっては大変です。無理してできたとしても予定外のコストが掛かってしまってはそのプロジェクトを成功には導けません。

C\C++

 OS自体がC/C++でできているのでネイティブ機能は全て利用できるはずですがそのアクセス方法が利用し易い形でまとまって公開されているわけでもないので難易度が高くまた、直接OSにアクセスするのでメンテナンスが大変です。高速処理が必要なOSに依存しないビジネスロジックをSDKなどの共通ライブラリとして利用するならば良いでしょう。

Flutter

Binding to native code using dart:ffi にあるようにネイティブ機能を呼び出せます。

KMM

 Connect to platform-specific APIs にあるようにネイティブ機能を呼び出せます。

Haxe

 アプリ開発の具体的な手順があまり載っていませんのでよくわかりません。OpenFL等の高機能なライブラリを利用して実装しC++に変換してからXcodeやAndroidStudioに取り込むのでしょうか?どの程度実用性があるかは試してみないと何とも言えないです。

カテゴリー
学術

Haxe

 昔のことですが随分とActionScriptにお世話になりました。だいぶ廃れてきましたがHaxeとOpenFLという形になって生き続けていると思います。実務に活かせるかどうかわかりませんが追い続けていきます。

2023.05.15
まだHaxeは生きているようです。
なので
ChatGPTに聞いてみた。

User
Haxeというアプリ開発環境は知っていますか。

ChatGPT
はい、Haxeはオープンソースのプログラミング言語およびアプリケーション開発フレームワークです。Haxeは、JavaScript、Flash、C++、Java、Python、PHP、C#、Objective-Cなど、さまざまなプラットフォームや言語で実行可能なコードを生成することができます。

Haxeは、静的型付けの言語であり、構造体やジェネリックなどの高度な機能を提供します。Haxeは、クロスプラットフォームの開発をサポートし、複数のターゲットに対してコンパイルできることが特徴です。例えば、Haxeで書かれたコードは、ウェブブラウザやモバイルデバイス上のネイティブアプリ、デスクトップアプリケーション、ゲームエンジン、およびその他のプラットフォーム上で実行できます。

Haxeには、豊富なライブラリやフレームワークが用意されており、それらを利用することで、開発者は簡単に高品質なアプリケーションを作成することができます。また、Haxeは、エディタやIDEのプラグインなど、豊富なツールセットを提供しており、効率的な開発が可能です。

Haxeは、広く利用されているプログラミング言語やフレームワークよりも新しいため、まだ一般的な知名度は高くありませんが、将来的には重要な開発環境の1つになる可能性があります。

カテゴリー
学術

Multiplatform1

 今注目しているMultiplatform開発環境は、
  C/C++
  Flutter
  KMM
です。それぞれ長所、短所があるので比較してみます。それとマイナーですが個人的な思い入れで
  Haxe
も一緒に比較します。

1 概要

C/C++
 PCでもスマホでも組み込み用のマイクロコントローラーでも開発できます。Emscriptenを使えばWebアプリでも大丈夫です。古い言語なので広範囲に応用されており修得している人材の幅が広いです。

Flutter
 ビューもコントローラーもモデルもDartで開発できます。FlutterもPCでもスマホでもアプリを開発できます。デザインを統一できるアプリ開発なら共通化のメリットを存分に受けられます。

KMM
 デザインパターンでいうモデルを両モバイルOSで共通化しビューはそれぞれのIDEで作成するというコンセプトです。KMMはKotlinで作ったモデルをiOSでも使えます。OSごとの特徴を活かし且つ少しでも共通化したいアプリ開発に向いています。

Haxe
 ActionScriptから発展したマルチプラットフォーム開発環境です。Flashの資産を使えるためアニメーションを多用するならばまだ選択肢になるのではないかと思います。

カテゴリー
学術

Kotlin Multiplatform Mobile

 AndroidStudio + KotlinでiOSのアプリも開発できるのがKMMです。まだ正式リリースされていませんがベータ版でその実力を見ていきましょう。

https://developer.android.com/studio/preview

 Android Studio Preview releaseをインストールします。

 ConfigureでPluginをインストールします。

 Kotlin Multiplatformをインストールします。

 Projectを新規作成しKMM Applicationを選択します。

 Androidアプリをデバック実行します。

 Androidシュミレーターで無事に動きました。

 続いてiOSアプリをデバック実行します。

 iOSシュミレーターで無事に動きました。

カテゴリー
学術

光学

光学
光学 ニュートン

 誰もが知っているニュートンは数百年も前の人ですが、その人の書いたこの本は現代でも通用するほど科学的な記述です。

 この時代の常識や因習に立ち向かい自身の信じる理論を実験により実証していくその姿は、人類を未来に導く戦士だったのでしょう。

 ニュートンの業績はそれとなく知ってはいましたが本人が書いたものを読むのは初めてでした。ライプニッツよりもニュートンの名前が残ってるのは彼が栄光の戦士だったからです。

カテゴリー
学術

生命とは何か

生命とは何か
生命とは何か

 生物、および生物が営む生物的な意味合いをもつあらゆる過程はきわめて「多くの原子から成る」構造をもっていなければならない。そして、偶然的な「一原子による」出来事が過大な役割を演じないように保障されていなければならない。

は、誤っている。

 遺伝物質に関するデルブリュックの一般的な描像から出てくる事柄とは、生きているものは、今日までに確立された「物理学の諸法則」を免れることはできないが、今までに知られていない「物理学の別の法則」を含んでいるらしい。

とあるが解らないけど何かが含まれているという構造は人工知能に必要だと思います。

 周辺環境に合わせて安定化していくものを非生物、周辺に関わらず自身の状態を安定化しようとするものを生物であると理解しました。

カテゴリー
学術

方法序説

方法序説
方法序説

 タイトル通り序説でした。ただデカルトのことが少し解ることができて良かったです。もっと知りたくなった時に序説の次を探します。

 デカルトは最初書物で学んだそうです。学び尽くした後書物で学ぶのを止め実体験を通して学ぶ方法に切り替えたとありました。

 これを人工知能に置き換えるとなかなか実現は難しいです。今の機械学習は正に書物での学習に他なりません。更に悪いことに直ぐ過学習に陥ります。

 デカルトの学び方ができる人工の知能ができた時にそれが人工知能といえます。

カテゴリー
学術

エミール

エミール
エミール

 人を教育するように人工知能の教育もできるようになりますでしょうか。今はまだできないようです。

 機械学習に教師有りと無しがありますが他の方法も必要になりそうです。

 結構量があるのでまださわりしか読んでいませんが教育について書かれている本です。

 冒頭の解説にプラトンの国家も教育に関わる本だそうです。今度手に入れてみようと思います。

 教育論に興味はありませんが人工知能の教育に役立つような気がします。

カテゴリー
学術

CPU Collection

CPUやらマイクロコントローラーを集めてみた。いつか動かしたい。

D8080A
D8080A
D8085AC-2
D8085AC-2
M80C39
M80C39
UPD8048C
UPD8048C
uPD8748D
uPD8748D
M80C85A-2
M80C85A-2
TMP8085AP-2
TMP8085AP-2

Google Gemini に聞いてみた。

私の質問

8080A系、8085系のマイコンの使い方を教えて下さい。

8080A系、8085系のマイコンの使い方

8080A系、8085系のマイコンは、1970年代にインテル社によって開発された8ビットマイクロプロセッサです。これらのマイコンは、当時は非常に高度な技術であり、多くのコンピュータや電子機器で使用されました。

今日では、より新しいマイコンが主流となっていますが、8080A系、8085系のマイコンは、レトロコンピューティングや教育目的で使用されることがあります。

使い方

8080A系、8085系のマイコンを使用するには、以下の手順が必要です。

  1. ハードウェアの準備
    • マイコンボード
    • 電源
    • メモリ
    • 入出力デバイス
    • プログラミングツール
  2. プログラミング
    • マシン語またはアセンブリ言語でプログラムを作成する
    • プログラミングツールを使用して、プログラムをマイコンに書き込む
  3. 実行
    • マイコンに電源を供給する
    • プログラムを実行する

詳細情報

8080A系、8085系のマイコンの詳細については、以下のリソースを参照してください。

  • データシート
    • 8080A: [[無効な URL を削除しました]]([無効な URL を削除しました])
    • 8085: [[無効な URL を削除しました]]([無効な URL を削除しました])
  • マニュアル
    • 8080A プログラミングマニュアル: [[無効な URL を削除しました]]([無効な URL を削除しました])
    • 8085 プログラミングマニュアル: [[無効な URL を削除しました]]([無効な URL を削除しました])
  • チュートリアル
    • [[無効な URL を削除しました]]([無効な URL を削除しました])
    • [[無効な URL を削除しました]]([無効な URL を削除しました])

日本語の情報

  • 8080伝説(カラー版)
    • [[無効な URL を削除しました]]([無効な URL を削除しました])
  • 図解マイクロコンピュータ64180の使い方
    • [[無効な URL を削除しました]]([無効な URL を削除しました])%