2025年11月8日土曜日

Qtのandroidへのデプロイ(備忘録)

 android studioをインストール
環境変数 setxで永続保存
setx JAVA_HOME "C:\Program Files\Android\Android Studio\jbr"
setx ANDROID_SDK_ROOT  "C:\Users\<ユーザー名>\AppData\Local\Android\Sdk"
setx ANDROID_NDK_ROOT  "C:\Users\<ユーザー名>\AppData\Local\Android\Sdk\ndk\29.0.14206865" のように
NDKがないときインストール必要(CMAKEも)
Qtで プロジェクト>キットの管理...>デバイスでAndroidが追加できるが、他の項目をチェックしてまだ不十分なところ(SDKsの赤字のところSdkCommandLineToolなどあれば)をAndroidStudioのSDK Managerで設定していく
・OpenSSLダウンロードなども

スマホ側設定:「設定 → 開発者向けオプション」を有効化→ 「ビルド番号」を7回タップして出ます。「USBデバッグ」をオンにする システムの開発者向けオプションの設定で

PC側:Android Studio で「SDK Manager → SDK Tools → Android SDK Platform-Tools」
がインストールされていること(=adbコマンドが使える)。Qt Creator が SDK/NDK/JDK を認識している。(ツール → オプション → Devices / Android を確認) 

デプロイ手順(Qt Creatorから):スマホをUSBで接続>
adb devices→ device と表示されれば接続成功。
(C:\Users\<ユーザー名>\AppData\Local\Android\Sdk\platform-tools\adb.exeのパスも通しておく必要あり、コントロールパネルあたりから)
Qt Creator を開く>左下でデバイスとしてスマホ選択>▶ 実行ボタンをクリック
Qt が自動で.apk をビルドスマホへインストール>アプリを起動

ビルド、デプロイ環境構築に手間はかかるが、自作アプリがWin、Linuxだけでなくスマホでも使えるのは便利。

QtのWindowsでのデプロイ方法

 マルチプラットフォーム言語のため、デプロイ方法は少し手間がかかる。

mingwの形式でビルドした場合

Release ビルドの exe があるディレクトリに移動して、

cd C:\Users\****\kjog\build\Desktop_Qt_6_9_3_MinGW_64_bit-Release

windeployqt.exe のフルパスを指定して実行する必要がある。

"C:\Qt\6.9.3\mingw_64\bin\windeployqt.exe" kjog.exe

2025年11月1日土曜日

ESP32 DEVKIT_Cで容量をWIFIでロギング

間欠動作で12時間ごとにGPIO4を容量センサとして使い、ロギングしてみた。raspiにGETでデータを保存し、スマホ等で取り出すアプリを作れば完成の予定。 はたして、灯油タンク残量が容量センサで計測実用なるか、テスト予定。(PICのCPSも検討したが、かえって複雑になりそうなので、このパターンにしてみた。)
PICに比べると、至れり尽くせりでesp32は開発しやすい。それでも、ネットワークがからむとプロトコルやポートとかいろいろ調整が必要になってくる。

2025年10月30日木曜日

PIC12F1822で間欠ブザー

30秒ごとにブザーならすタイマーをPICで作ってみた。TTP223と2sc1815で電源オンオフ、電子ブザーはPICのRA2で出力してみた。電源はボタン電池で常時TTP223を待機状態にしておくけれど、ほとんど消費しないらしいので、これで試してみたい。なお省エネのため、TTP223のLEDは取り外した。かわりにブザーを1secごとに1msならして、電源状態確認できるようにした。
 
 最初、TTP223がオフの状態でもブザーがかすかに音するので、なぜかと思ったら、PICのアースはコレクタに、ブザーのアースは電源のアースにつないでいたためだった。内部抵抗による微妙な電位差が原因かと思われます。
 PICとブザーのアースをどちらもトランジスタのコレクタにつなぐことで解決した。


2025年10月29日水曜日

PIC12F675のタイマー修正

 以前つくったタイマーのコード修正してみた。すでにPICを基板に半田づけしてしまったが、PicKITに合わせてコネクタをつけてPICにエナメル線で配線しなんとか、書き込みできるようにしてみた。コードを少し変更して、時間ずれも調整してみた。1割ほど時間が短いので、11/10をかけてみた。だいぶ正確になる。


2025年10月28日火曜日

PIC12F1822のCPS 再挑戦

 静電気測定ということで、PICのCPSを内臓クロックで使ってみたが、温度の影響のためか、変動が大きい気がしたので、12MHzのXtalを使ってみた。ヤフオクで、10pfコンデンサと一緒に購入。


・配線は混乱してきたので、基板を新しくして配線しなおす。
・RA4とRA5をXtalにつなぐため、CPSはRA0に変更したり、周波数も変わるため、ANSELA、TRISA,CPSCON1,SSP1ADDなどの設定を慎重に変更する必要があった。
・XtalをRA4とRA5に接続したら、この2か所に2個10pFをつないでアース。
・TTP223は消費電力が少ないようなので、電池に常時つないで、トランジスタスイッチを動作させることにした。2sc1815使用。電源はエネループ3本。

 タッチしたときだけ、LCDが表示されるようになった。以前は、ボタンスイッチの接触不良があって使いにくかったが、これだとストレスなく使える。
・当初、灯油残量センサに使う予定だったが、ESP32だけで間に合いそうだったので、最終的には容量測定器にしてみた。pF=60000/cps-0.02*cpsという近似式を使ってみた。30pF~20000pFぐらいの範囲で、ある程度の目安としては使えることを確認した。本来反比例になるはずだけれど、容量が小さくなると誤差が出やすくなるようで、-0.02*cpsで補正。

2025年10月26日日曜日

Qtで、UIデザイナでMainWIndowにWidgetを配置する

 C#とは、コントロール(Widget)の配置の仕方が違うので少しとまどいました。

別ウインドウに表示はしやすいのですが、メインウインドウ内に配置するには、レイアウトの指定が必要なようです。

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    table = new KakeiboTable(); // 親は addWidget() で設定されるので不要
    ui->centralwidget->layout()->addWidget(table);
}

上記コードだけでは、エラーになります。centralwidgetにテーブルビューを配置したい場合は、cetnralwidgetをオブジェクトインスペクタで選択したら、メニュー>フォームエディタから、レイアウトの方法を指定する必要がありました。ここらへんは、Qt独特のところで慣れが必要なところかもしれません。

あとはmain.cppで
    MainWindow *w = new MainWindow();
    w->show(); 
とするだけで、Widgetが配置されたメインウインドウを表示できます。