投稿

ESP8266→ATMega32U4→HID→PC

イメージ
ESPからソフトウェアシリアルで、文字列を送信 文字列を受けっとったATMega32U4は、HIDのキーボードとして、受け取った文字列をPCにキーボード入力するテスト 目的は、最終的には、Androidタブレットが起点として画面のボタンを押すと、ESPにWifiで文字列が飛んで、その文字列が自動でキー入力されるというものをつくりたいので。 過去には、Attiny85を使って https://funasover.blogspot.com/2024/06/attiny85-4key-keyboard_23.html 押したボタンで自動にパスワードやメールアドレスが入力できるミニキーボードを作っていたがそれをAndroidのボタンタップを起点として実現したい。 ESPは3.3Vで手元にあったATMega32U4(Pro micro)は5Vのため、シリアルのラインにはレベルコンバータを使っている。自作という訳ではなくて、昔購入していたものを使っている。 同じものだと https://www.amazon.co.jp/gp/product/B081RH1P4L/ref=ox_sc_act_title_1?smid=A3IR3W7NI10CEW&psc=1 とか。 ソフトシリアル通信は、WEBで調べればサクッとできるが、メモを残しておきたい。 ESP8266は、Arduinoのソフトシリアルがそのまま動くので、特にESPだからという配慮はいらない。ピンの配置ぐらい。 #include <SoftwareSerial.h> SoftwareSerial mySerial ( 12 , 13 );  // RX,TX=12,13 void setup () {   // put your setup code here, to run once:   mySerial . begin ( 9600 );        // ソフトウェアシリアル通信の開始(ボーレート9600bps)   pinMode ( 16 , OUTPUT); } void loop () {   // put your main code here, to run repeatedly: m...

【android】USBセレクターの制御 ~wifi経由~

イメージ
 inkscapeを使って、ボタンのデザイン(( ..)φ)カキカキ 久々に触るのとバージョンがかなり前0.9台から1.4にしたこともあって、事前にクマを書いてしまった(チュートリアルをさらりとやって基本の操作を再度勉強)・・・ https://inkscape.eksd.jp/ それなりにかっこいい?ボタンの画像イメージを作ってみた。PC1とPC2の2種類。 作成したファイルをPNGで保存。buttonpc1.pngとbuttonpc2.pngのファイル名で保存。 Android studioのimagebuttonの画像に割り当ててみる。新規プロジェクトを起こして、buttonpc1.pngとbuttonpc2.pn のファイルをdrawableのフォルダーの下に移動させる。 その後、acrivity_main.xmlを編集、imagebuttonを2つ配置。 drawableにコピーした画像を割り当てる。普通に割り当てると、グレーの枠がついてしまう。 この背景を透明にしてやると、思い通りにはなるものの、一つ課題が、それはクリック感がなくなってしまう。 OC techNoteさんのHP に解決法があったので使わせていただく。 drawableのフォルダーに、image_button_bg.xmlをつくり <? xml version ="1.0" encoding ="utf-8" ?> <selector xmlns: android ="http://schemas.android.com/apk/res/android" > <item android :state_pressed ="true" android :drawable ="@color/black" /> </selector> を記述する。 各ボタンのbuckgoundにこのxmlファイルを指定してあげるとクリックしたときに一瞬バックグランドの色が変わる。画像を用意しておいて、それに入れ替えてもOKなはず。まずまずは簡単なバックグランドの色を変更で。 最初は、有線接続でいいや!と思っていたのでusb-serial-for...

タクトスイッチのIoT化改造(USBセレクターのIoT化)

イメージ
赤外線のリモコンがついている機器は、赤外のLEDを光らせて信号を送り込めば、制御する事が簡単にできるが、リモコンがない機器は?という事でスイッチのボタンで制御する機器を外部が制御する事をやってみる。 我が家は、個人のデスクトップPCと会社支給のPCとを家で使う場合、キーボード、マウス、WEBカメラは、このUSB3.0のUSBセレクターを使っている。このUSBのハブをIoT化、つまりWIFI経由やマイコンから制御できるようにしてしまおう!というもの。 https://www.amazon.co.jp/gp/product/B072R16Z6S/ref=ewc_pr_img_1?smid=A9R64JPBW6UFH&psc=1 USB3.0だと3千円弱で、USB2.0だと2千円ぐらいで購入できる。セレクタ自体を作る事もできるだろうが・・中には数百円というのも売っていてさすがに改造はするが購入。チャンネルの基本USBハブだが、ボタンを押すと接続先が①と②と2系統を選択できる。 このセレクタに限らないが、ボタン一つで、行先を変えるという場合は、大抵中身は、タクトスイッチが入っていて、ボタンを押す度に、中に入っているマイコンが経路を切り替えるというような構造になっているはず・・・・。このUSBセレクタを題材にしているが、他の機器でもほぼ同様の措置で、外部のマイコンなどから操作する事ができるようできるはず。 隙間に、隙間ゲージを入れて分解してみた。 短編、長編ともに爪が2か所づつあって、それをはずすと分解できる。一か所、破損させて分解にいたった・・・結構固かった。 タクトスイッチ周辺 (見難いが、拡大すると①Aとか②Aとか写真に記載しています)①Aの端子と①Bの端子(写真で下側の二つ)は、内部で接続されているので、テスターを当てると抵抗値はほぼゼロ。つながっている。②A,②B(この写真で上側にある二つ左右)も、同電位。①と②の間がスイッチを押すと短絡される構造。タクトスイッチの左に見えるのが簡単なマイコンだと思われるが、印刻がなく、型番なんかもわからない。 PCのUSBポートに接続してテスターをあてると、①側はGND、USBのタイプAのシャーシ部分と同電位でつながっている。②側は、USBのシャーシ部分、つまりGNDから電位が高く4.8Vとなっている。 これは、②側はプル...

【android】usb-serial-for-android その2

イメージ
前回その1  https://funasover.blogspot.com/2025/02/usb-serial-for-android.html でやった事を再度、具体的に例示示しながら。 新規でEnpty View Activityを開く。ちなみに、古いStudioのEnpty ActivityとEnpty View Activityは一緒の内容。古いサイトなどを参考にする時には気にしておく。 言語をJavaにして、Groovyを選択して自動生成する。 settings.gradleを開いて、maven { url 'https://jitpack.io' }を追記する。 guild.gradle(Module)の方を開いて、 implementation ' com.github.mik3y:usb-serial-for-android:3.8.1 ' の一行をdependenciesの所に追加  https://github.com/mik3y/usb-serial-for-android からダウンロードしたファイルのxmlのフォルダーにあるdevice_filter.xmlをプロジェクトres/xmlにコピー&ペースト。ドラッグすると移動する。 usb-serial-for-android-master\usbSerialExamples\src\main\res\xml AndroidManifest.xmlを開いて、以下<intent-filter>・・・をコピーする。device_filter.xmlの部分はコピーしたファイル名にあわせる。 <intent-filter> <action android :name ="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> </intent-filter> <meta-data android :name ="android.hardware.usb.action.USB_DEVICE_ATTACHED" android :resource ="@xml/device_filter" /...

【android】Activityのライフサイクル

イメージ
Androidでのプログラムの勉強中・・・。Activityのライフサイクルについては https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ja 公式にこの図が出ていて、同様の図を書籍などでも見る事ができる。 いやいや、わかるよ・・・でもね。という事で実際の動作を確認する事をしてみた。 新規作成で、Enptyのプロジェクトを立ち上げて、 以下のように編集する。 編集点は①がonCreateだけが自動で生成されるが、他のonStart,onResumeなどについても記載する。①Logを出力するようにする。 package com.example.lifecycle_test; import android.os.Bundle; import android.util.Log; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; public class MainActivity extends AppCompatActivity { @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState); EdgeToEdge. enable ( this ); setContentView(R.layout. activity_main ); ViewCompat. setOnApplyWindowInsetsListener (findViewById(R.id. main ), (v, insets) -> { Insets systemBars = insets....

【android】usb-serial-for-android その1

イメージ
usb-serial-for-android その名の通り、タブレットやスマートフォンのUSB端子に、OTGのUSBケーブルを介して、シリアル通信を実現する。具体的には、Arduino 等とつなぐ事ができる。 これつかって、PCデスク回りのIoT化をしてやろうと思いつきプロジェクトを開始。照明のON/OFFや2ディスプレイのHDMIのセレクタ、USBのセレクタをアンドロイドの画面をタッチしてコントロール。同じへ部屋のエアコンなんかも操作できる(赤外線LED使って・)とか妄想段階。 アンドロイドのシリアル通信ライブラリー各種 シリアル通信を実現するためのライブラリーとしてはいくつか調べると出てくる。 ・UsbSerial https://github.com/felHR85/UsbSerial ・ PhysicaloidLibrary https://github.com/ksksue/PhysicaloidLibrary ・usb-serial-for-android  https://github.com/mik3y/usb-serial-for-android ここでは、usb-serial-for-androidが情報量が多そうだったので、選択。 基本、ReadMeに書いてある通りにすればOKですが、ハマるところをメモしておく。 新規プロジェクトの設定 →Java, Groovyの方が楽・・ 新規プロジェクトを作る時に、言語は”Java”で Buide configration languageをKotline DSLではなく、Groovy DSLを選択しておく。最近のKotlineとか使いたいのだが、いろいろ自分で調べて思考錯誤が必要で、ひと昔前の環境でアプリをつくる。 マイコンはかなり経験があるものの、アンドロイドのアプリ作成となると経験が少ない。実は、KotlineのコードよりJavaの方がまだまだ情報量が多いという理由だけ。おそらく、Kotlineでも同じ事ができる術はあって、本職の人はスラスラ・・・なんでしょうが・・・ ライブラリーの読み込み設定  https://github.com/mik3y/usb-serial-for-android Quick Sartに書いてある通りに、 ライブラリーを読み込むために、 maven { ...

ATtiny85 4key keyboard 組み立て

イメージ
 ATtiny85 4key keyboard 基板設計と発注 https://funasover.blogspot.com/2024/06/attiny85-4key-keyboard.html で発注していた基板が納品されたので組み立て。 (Attiny85を使う場合は、最大4つのキー入力をするより3つにしてLEDでステータスがわかるようにした方が使い勝手が良い・・・というのは発注してから気がついた事) せっかく納品されたので組み立てる。 タイプCのUSBメスのコネクタから固定して、背の低い抵抗やダイオードを固定をさっとすませる。ユニバーサル基板と違ってすぐ終わる。Attiny85は、ファームの書き込みを行ってから半田で固定する前に、指で押さえつけた状態で、PCにUSBに接続してHIDデバイスとして認識する事を確認してから半田。最後にキースイッチを半田づけ。 100円ショップの写真立てポリスチレンの板を切り出してバックプレートにして、キーキャップも取り付けて完成。 キーキャップは3Dプリンターで打ち出したもの。 積層痕をなくすためにパテ埋めして、紙やすりで削りなめらかにした所でサーフェイサー1200番で下地作り。黒の塗料で2度ほど塗装してから、クリアー塗装、そして研磨剤でピカピカといった処理。

PCB基板ホルダーをつくってみた(3Dプリンター使うが300円以下)

イメージ
  半田の作業をする時、PCBをホールドするツールを作ってみた。 いろいろ基板の固定の方法があるが、”EleksFix”という商品名で検索すると出てくるピンで固定するタイプを作ってみた。あくまでイメージであって、そんなに凝ったものを作るつもりはない・・・。何せ今まで使っていなかったのだから・・。 ダイソーで売っているブックエンド。税込み110円。 これを平らな鉄の板としてベースに使うために、ジグソーでばさりと切断。(鉄鋸でがんばるというのでも切れるとは思う) 続いて、マグネット。 ダイソーで購入したマグネットが、直径6.5mmで厚さが2mm。 あとは、六角のネジとナット。M4の長さ30mm。たまたま転がっていたので。 (ナットを写真いれるの忘れた。) 3Dプリンター用のデータの作成。ネジの頭に接着剤でマグネットつけて、ナット複数とワッシャーで基板を挟めば、プリンターなくても出来そうだが、ここは用意してみる。 Φ=15mmの円柱、高さは2cmとした。ネジが通る4.5mmの穴を中央に。ネジ頭が入るようにクリアランスをとって7.25mmで深さがネジ頭4mm+マグネット2mm合計6mm+0.1mm 押さえる側は同じくΦ=15mmで高さ10mm、そこにナットが収まるようにザグリを入れる。ザグリ深さは5mmとちょい深め(金属を接触させたくなかったので)。簡単に回せるように、周囲に、凹凸をつけてみた。 3Dプリンタで打ち出したものに、ネジ、マグネットとナットを装着。 くみ上げて、基板をホールドしてみた。 いつも半田の作業をしてる実体顕微鏡の下に配置してみる。 位置を変える時はベースの板ごと動かしてもよいし、マグネットの強さが程よい感じで、ずるずると鉄の板の上で位置を変えられるが、半田作業ぐらいだと動かなさそう。 ほんと、電子工作を趣味を言っておきながら、これまで手でおさえたり、ラジオペンチで抑えたりとしていたのがばからしく・・・そうそうに用意しておけばよかた・・・ 後々に、フレキのアームを用意してクリップで線も固定できるようにしたり、プローブを落とせるようにしたりと・・・