2025年3月5日水曜日

シビックTYPE-Rステアリング解析

 先日ネットでこのブログにたどり着き、私を探し出してくれた方からの依頼作業をしてきました。「シビックTYPE-RのステアリングスイッチがCAN信号になっているが、これを別ハンドルスイッチで実現したい」

自分もいろいろと開発案件抱えているため、昔からの仕事仲間にも手伝ってもらうことになりました(最高のサポートスタッフ!)。


まずはハンドル単体を受け取り、スイッチ部を分解しスイッチ基板上のチップを調査

=> チップの型番からCANではなくLINだと判明。
=> またそのチップの端子などから電源回路構成や車両との端子も判明
そこからLINのデータもほぼ解析でき、そのスイッチを押したらどういうLINデータが出てくるかも判明(オレたちやるやん笑)。


あとはヘッドライトをONしたときに車両から「ステアリング上のLEDを点灯せよ」データが来ると思われるので、それは実車で確認!
実車にLIN経由でPCつないで、いざ調査!




いろいろと試していたら、どこかから焦げ臭いにおい ・・ やばい!
養生不足の端子に12Vバッテリー直結端子があり、ふっとしたタイミングでアースに接触してしまった ><
端子がレアどころかじっくり焼きこんだウェルダン状態w


というわけで部品を手配していただき、次週リベンジです。

 ==========================

自分たちはオシロでCANやLINの波形を見たり、そのデータをPCに取り込んでの解析などはいつもやっていることなので普通のこと。

 逆に「煙出た!」というとささっとハンドル外してくれたり部品手配してくれたりと、依頼主さんはすごいなぁと感心してたり、逆に依頼主さんからはこんな信号のことがわかるのすごいと感心されたり。

また最近の車ヘッドライトがLINで点灯制御されているので、普通に電源つなぐだけでは点灯しなくて困っているなどの話もされてました。

そういえば以前メールで軽自動車のヘッドライトが点灯しなくて困っているという問い合わせもあったなぁ(手が回らないのでお断りしたんですが・・スミマセン)

こんなこともやってますので、ご要望あれば声かけてくださいませ。
COCONALAからではなく、こちらに記載のメールアドレスからお願いいたします。
(でもお安い方だとは言え費用はそこそこかかりますよ・・ご注意を)

2024年9月28日土曜日

platformIO、 Espressif3のバージョン管理

 はまった ・・

3年ほど前に VSCode + PlatformIO + Espressif32を使ってファームウェア開発を行ったのだが、その更新依頼をいただいた。


当時からいろいろと環境が更新されているからビルドが通らなくなっている ><

さぁ、こまったぞ。

超悪戦苦闘しながら、結果以下の手順で解決

(1) pioコマンドを実行してバージョン履歴を把握

> pio platform show espressif32 

 次期的に 2.0.0を選択


(2) platformio.iniの platform定義にバージョン番号を追加

 platform = espressif32@2.0.0

これでビルドしなおしたらOK!
これからもこのバージョン情報は記述しておいたほうが良さそうですね。

ちなみにplatformIO本体は最新バージョンで問題なしでした。


2024年9月3日火曜日

最近の開発について

 最近Lancersさん、CrowdWorksさんあたりから弊社プロフィールを見て、さらにほとんど更新していないこのブログを確認し、開発案件依頼していただける方が増えてきました。

本当にありがとうございます。

ご依頼いただいた会社様と契約したNDAもあり、技術的なことはあまり書けません。
最近ご依頼いただき開発した案件はこんな感じです。


・ ラズパイ上でGUIアプリを動かし、無線通信端末の計測結果を表示するシステム
 => 無線通信端末側マイコンファームウェア、ラズパイGUIアプリすべて開発

・ Bluetoothによるデバイスの情報収集、Androidスマホで情報確認

・ Bluetoothマイコンを使っての計測、Windowsマシンで情報表示

・ WindowsノートPCを使ってのWifi無線電波強度グラフ表示
・ 船舶用CANデータのシミュレータ(Windowsアプリ)

・ ラズパイ5を使ってのマーク認識画像処理

・ CANデータ通信制御システム開発
・ スマホでの設定データをサーバーにアップロード&データベース化システム

・ EV充電器のサーバー通信部(OCPP1.6 / 2.0.1 プロトコルを使ってのEV充電量監視システム)

詳細は言えない書けないことばかりなのですが、相変わらずいろんな開発案件をいただき、粛々と作業を進めております。

少人数チームでの開発のため、納期的に困難などの場合に受託できないこともあるのですが、請け負った限りは最後まで必ず責任もって開発することをお約束いたします。

どうぞ遠慮なくお気軽に声かけてくださいませ。


我が家のとらみとさわみ ・・ たまにWeb会議に乱入しますがお許しください💦





2023年4月24日月曜日

USBラジオ

3年ほど前に作ったものなのですが、今回アップデートしました。
AndroidスマホのUSBコネクタに差し込んで、スマホアプリから音を鳴らすFMラジオです。

(技術的な細かいことはあまり書けないのですが・・)
今回は以前開発した円形チューナー基板をスマホに直接刺しても動作するよう、そしてAndroid最新版への対応でした。 

このスマホに差し込んでいる円形基板がチューナー基板です。あえて部品の少ない裏側が見えるようにしてますが、表側には部品がぎっしり。もう配線パターン増やすのもつらい状況です


基板設計は弊社ハードウェア担当者
基板上で動かすソフトウェア(ファームウェア)とAndroidアプリも私。

簡単そうに見えるのですが、実は超悪戦苦闘したもので開発の工数的には大赤字💦

でも完成したらとてもうれしくて感慨深いものとなりました。
 

チューナーチップから取り出した音データをI2Sでマイコンに取り込み、USBのIsochronous通信でスマホに送り込む。
スマホアプリはタイミングを計りながらUSBから音データを取り込み、スマホの音声出力モジュールに音データを送り込む。

言えばこれだけ。。でもこれがとても難しく、自分でもよく動くところまで持っていけたなという感じで、途中何度も泣きそうになりました。

オシロスコープで波形を確認しながらソフトウェア開発、このためにスマホアプリもオシロでタイミング見ながらデバッグする手法を使いした(詳細は以前のブログで記載済み)。


その成果として、当然ながらアプリはバックグラウンド再生対応でき、他のアプリをいじりながらFMラジオを聞くことができます。当然Bluetoothイヤホンでも聞くことできます。

実はAMラジオも受信対応しているのですが、アンテナが巨大になるので基板上に実装してません。

 

さすがに同じ製品は依頼主様を裏切ることになるので作ってあげることはできませんが、I2S通信、USBのIsochronous通信、AndroidスマホのC++によるUSBデータ取り込み(Javaでは追いつかない)~音声部取り込みなど実際に開発できると思います。

ということで、こんな感じのものなど、いろいろなご依頼お待ちしております笑

#I2S
#USB
#Isochronous通信

2023年1月13日金曜日

本年もよろしくお願いいたします。

2023年、本年もどうぞよろしくお願いいたします(今更感・・)

昨年はCOCONALAさん、ClowdWorksさんなどのプロフィールからこちらにたどり着いた方とたくさんのやりとりを行い、実際に開発依頼をいただきました。

・Xamarinにて開発したAndroid&iOSアプリでのDBサーバーアクセス

・CAN通信のシミュレータ

・I2C制御による電圧制御基板開発&制御用ファームウェア&Windowsアプリ

・ESP32でのAD変換取り込み&WindowsPCでのログ収集(Bluetooth経由)

・AndroidスマホのUSBコネクタに接続するFMラジオチューナー基板作成


たまに半田ごてと虫眼鏡を握りながら、オシロスコープで波形見てデバッガをいじり、ソースコードを構築していく・・これが自分の得意なスタイル。

そしてこれくらい簡単にできるぞと思って開発スタートしても、毎回何かのトラブルで悩まされます。

そのたびにどう対応したら良いかすごく悩み、たくさんの試行錯誤を行うけど、これも開発の楽しいところ。

そして一度依頼いただいたら最後までしっかり責任もって仕上げることが自分の責任。

今年もまた新しい方と出会い、依頼いただいた開発案件では冷や汗かきながらなんとか納品する・・こんなことができる楽しい一年になるようがんばります。

ご依頼お待ちしております(笑)


写真は2022年7月 夫婦で乗鞍岳(標高2700m)を登ったときのワンシーン。
自転車で坂登るのが楽しんどすぎて最高の2日間。
妻も押し歩きすることなく最後まで登ってくれました。今年も行ったことない坂を登りたいです。



2021年11月25日木曜日

連絡先について

最近Lan〇ers様、クラウ〇ワークス様などに登録してみました。
得意分野は組み込みのため、少し応募してみるくらいでまったく実績はありません。

しかしながら、少し興味を持っていただけることもあるようです。
自社Webページも作ってない弱小企業のままなのですが、本当にありがたいことです。

まずは下記から連絡いただけたらうれしいです。
迷惑メール対策として、まずはフリーメールにしております。
ここから正式メールアドレスを使って返信させていただきます。

 info.maxport.anami @ gmail .com
 maxport.anami @ hotmail .com

 ※ あえて挿入している途中のスペースは詰めてください。


2021年10月5日火曜日

Androidアプリでのタイミング調査

 Androidアプリを開発する際、タイミングが気になるときありませんか?
このAPIは本当に10mS周期で呼ばれているのだろうか・・など。

マイコンなら空いたIOポートにHIGH/LOW出力を組み込み、オシロスコープで確認すれば簡単。ではAndroidでは ・・ ???


Raspberry PI4でAndroid11が動くというOmniROMの存在を知りました。

このような方たちが試してくれています。

 https://paiza.hatenablog.com/entry/2020/11/25/150000


ラズパイ上でAndroidが動くなら、ラズパイ上のGPIOが使えるじゃないか!
でもAndroidアプリ(Java)でラズパイのGPIOを動かせるのか??

私はCでGPIO制御を作り、JNIを使ってJavaから呼び出すことで、JavaアプリでAPI呼び出しタイミングをオシロスコープで確認することに成功しました。

以下のコードをAndroidプロジェクト内のJNIに追加します。

(JavaからのJNI呼び出しは各自設定してください)。


またAndroidのJavaプログラムから下記関数をJNI経由で呼び出すことで、ラズパイのGPIOが動くのです。
Androidアプリを構築される方はオシロを使ってタイミングを確認したりしないのかな?

ミリ秒周期の動作確認する場合、GPIO端子をHigh/Low切り替えてオシロで見るほうが確実ですよ(こんなことしたいなんて思ったことないですか??)。


※ gpiod.hは libgpiodのものを呼び出します。

// ======================================
//          GPIO
// ======================================
#include "gpiod.h"
const char *chipname = "gpiochip0";
struct gpiod_chip *chip;
struct gpiod_line *line20;
struct gpiod_line *line21;
void    OpenGpio( void )
{
    // open GPIO chip
    chip = gpiod_chip_open_by_name(chipname);

    // open GPIO Lines
    line20 = gpiod_chip_get_line( chip, 20 );
    line21 = gpiod_chip_get_line( chip, 21 );

    // Open GPIO Lines for Output
    gpiod_line_request_output(line20, "example1", 0 );
    gpiod_line_request_output(line21, "example1", 0 );
}
int     gpioOut20Dat = 0;
void    SetGpio20( int val )
{
    gpioOut20Dat = val;
    gpiod_line_set_value( line20, gpioOut20Dat );
}