今のコンピュータに知的活動をソフトウェアに置き換えて載せようとしているのは間違いではないか。
カテゴリー: ニュース
ニュース
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均の材料では無理なので購入しました。
一通り部品が揃ったのでブレッドボードに差し込んでクリスタルイヤホンを耳にしてみましたが雑音すら聞こえませんでした。
予想通りです。
Audacityで波形を表示して自作回路の動作を確認していたのですが、パソコンの音声入力を被計測回路に接続すると動作が変わってしまうので間に挟む装置を作ります。
今まで自作回路の測定点に音声入力端子を直か逆流防止のダイオードを挟んで使用していました。可聴範囲の単純な回路が多かったためそれでも十分でしたが、ROMライターの製作過程でGNDのレベルが異なるようになってから波形とその電圧レベルが知りたくなりました。
オシロスコープを使えばなんのこともないのですが、持っていないので自作することにしました。これも勉強のためです。
表示はパソコンのAudacityでできるので被測定側に影響が出ないように音声入力できれば良いので単純な装置でできると思います。
抵抗値高めの差動増幅器です。被測定回路に影響をなるべく与えないように全て1MΩにしました。使用するオペアンプはuPC741Cです。
1.3Vの単3電池が直列に10本入る電池ボックスを使い真ん中をGNDにします。被測定回路とは別の電源を使った方がより干渉し合わないと思います。
期待通り5本分のマイナス電圧が出ています。
プラス側も5本分の電圧が出ています。
入力に電圧がかかっていない場合は出力も出ていないことが確認できます。
試しに入力側に電池を一つ繋いでみました。
出力側は反転していますが概ね同じような電圧が出ています。若干の誤差は後で調整します。
入力端子の抵抗値を測ります。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に取り込むのでしょうか?どの程度実用性があるかは試してみないと何とも言えないです。
昔のことですが随分と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の資産を使えるためアニメーションを多用するならばまだ選択肢になるのではないかと思います。
AndroidStudio + KotlinでiOSのアプリも開発できるのがKMMです。まだ正式リリースされていませんがベータ版でその実力を見ていきましょう。
Android Studio Preview releaseをインストールします。
ConfigureでPluginをインストールします。
Kotlin Multiplatformをインストールします。
Projectを新規作成しKMM Applicationを選択します。
Androidアプリをデバック実行します。
Androidシュミレーターで無事に動きました。
続いてiOSアプリをデバック実行します。
iOSシュミレーターで無事に動きました。
生物、および生物が営む生物的な意味合いをもつあらゆる過程はきわめて「多くの原子から成る」構造をもっていなければならない。そして、偶然的な「一原子による」出来事が過大な役割を演じないように保障されていなければならない。
は、誤っている。
遺伝物質に関するデルブリュックの一般的な描像から出てくる事柄とは、生きているものは、今日までに確立された「物理学の諸法則」を免れることはできないが、今までに知られていない「物理学の別の法則」を含んでいるらしい。
とあるが解らないけど何かが含まれているという構造は人工知能に必要だと思います。
周辺環境に合わせて安定化していくものを非生物、周辺に関わらず自身の状態を安定化しようとするものを生物であると理解しました。
CPU Collection
CPUやらマイクロコントローラーを集めてみた。いつか動かしたい。
Google Gemini に聞いてみた。
私の質問
8080A系、8085系のマイコンの使い方を教えて下さい。
8080A系、8085系のマイコンの使い方
8080A系、8085系のマイコンは、1970年代にインテル社によって開発された8ビットマイクロプロセッサです。これらのマイコンは、当時は非常に高度な技術であり、多くのコンピュータや電子機器で使用されました。
今日では、より新しいマイコンが主流となっていますが、8080A系、8085系のマイコンは、レトロコンピューティングや教育目的で使用されることがあります。
使い方
8080A系、8085系のマイコンを使用するには、以下の手順が必要です。
- ハードウェアの準備
- マイコンボード
- 電源
- メモリ
- 入出力デバイス
- プログラミングツール
- プログラミング
- マシン語またはアセンブリ言語でプログラムを作成する
- プログラミングツールを使用して、プログラムをマイコンに書き込む
- 実行
- マイコンに電源を供給する
- プログラムを実行する
詳細情報
8080A系、8085系のマイコンの詳細については、以下のリソースを参照してください。
- データシート
- 8080A: [[無効な URL を削除しました]]([無効な URL を削除しました])
- 8085: [[無効な URL を削除しました]]([無効な URL を削除しました])
- マニュアル
- 8080A プログラミングマニュアル: [[無効な URL を削除しました]]([無効な URL を削除しました])
- 8085 プログラミングマニュアル: [[無効な URL を削除しました]]([無効な URL を削除しました])
- チュートリアル
- [[無効な URL を削除しました]]([無効な URL を削除しました])
- [[無効な URL を削除しました]]([無効な URL を削除しました])
日本語の情報
- 8080伝説(カラー版)
- [[無効な URL を削除しました]]([無効な URL を削除しました])
- 図解マイクロコンピュータ64180の使い方
- [[無効な URL を削除しました]]([無効な URL を削除しました])%
ChatGPTに聞いてみた。
User
uPD8748Dは何ですか。
ChatGPT
uPD8748Dは、NEC(日本電気株式会社)が開発した8ビットマイクロコントローラ(MCU)の1つです。uPD8748Dは、インテル(Intel)の8748マイクロコントローラと互換性があります。
uPD8748Dは、40ピンのデュアルインラインパッケージ(DIP)で提供され、8ビットのデータバス、16ビットのアドレスバス、4KBのROM、128バイトのRAM、2つのタイマ/カウンタ、および入出力ポートを備えています。また、uPD8748Dは、最大6MHzのクロック周波数に対応しています。
uPD8748Dは、多くのアプリケーションに使用されています。具体的には、家庭用電子機器、自動車用途、産業制御、セキュリティシステム、家庭用ゲーム機器などがあります。uPD8748Dは、低消費電力設計であるため、電池駆動のアプリケーションにも適しています。
uPD8748Dは、インテルの8748と互換性があるため、既存の8748ベースのシステムをアップグレードするためにも使用されます。また、uPD8748Dは、NECのマイクロコントローラファミリーの1つであり、他のNEC MCUとの互換性があるため、システム設計者が複数の製品を開発する場合に便利です。
アプリをビルドできるまでXcodeをインストールします。CocoaPodsも必要です。
アプリをビルドできるまでAndroidStudioをインストールします。
AndroidStudioにDartのプラグインをインストールします。
AndroidStudioにFlutterのプラグインをインストールします。
あとは、
https://flutter.dev/docs/get-started/install/macos
の通りにインストールを行います。
flutter doctorを実行し以下のように問題が出なくなるまで設定します。
flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel master, 1.22.0-10.0.pre.142, on Mac OS X 10.15.6 19G2021, locale ja-JP) [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2) [✓] Xcode - develop for iOS and macOS (Xcode 11.6) [✓] Android Studio (version 4.0) [✓] Connected device (1 available) • No issues found!
Androidのシミュレーターを立ち上げてからデバック実行しました。
iOSのシミュレーターを立ち上げてからデバック実行しました。
AndroidとiOSそれぞれシュミレーターでの実行ができました。mac mini 2014 1.4GHzでは起動まで結構時間がかかるので実機をつないで検証した方がいいと思われます。