スキップしてメイン コンテンツに移動

投稿

注目

【Arduino CAN】(LIN)

 Arduino Unoを使って LIN-USB(シリアル)コンバータ を作りました。            (※LIN:Local Interconnect Network) 【回路的】  回路的には、LINトランシーバ+プルアップ抵抗1本を追加したのみです。 【実装】  余っていたボードの再利用なので、少し雑です。 【ソフトウェア】  ArduinoのLINライブラリ等をネット検索して参考にしました。 但し、今回はUSBシリアルへのコンバータですが、Arduino Unoのマイコンには、シリアルが1回線しか無いので、SoftwareSerialライブラリを改造する形で、SoftwareLINライブラリを作成しました。  今回は、スレーブデバイスからデータを読み出すマスター側を作成しました。マスター側からスレーブ側へ[ヘッダパケット]として、Breakフィールド、Syncフィールド、IDフィールドをパケット的にデバイス側へ送ってやると、デバイス側からResponseパケットが返ってきます。Breakフィールドは、13bitのLow信号ですので、SoftwareSerialライブラリの改造するアプローチは、ビット操作が柔軟にできて都合が良かったです。 【PC側ソフトウェア(ドライバ)】  今回、PC側は、Qt Quickを使ってプログラムを作りました。ここで一つ問題が発生しました。Qtプログラム側(C++)からは、QSerialPortクラスを使ってポート操作を行いますが、Arduinoのシリアルモニタからは、ポートが開けるのに、QSerialPortからはポートが開けないという問題です。(一度開いてしまえば通信可能なのですが・・・)  結果としては、Arduinoを使う場合は、DTR(Data Terminal Ready)の操作が必要で、ポートをOpen/Connectした後に、setDataTerminalReady(true)を加える必要がありました。

最新の投稿

【Home Electronics】SANYO DC-DA82修理

【Arduino CAN】

【ホーム・セキュリティ計画】

【スマホ・アプリ復活作戦】

【ホーム・スパコン計画】

【ホーム・スパコン計画】

【カー・コンピュータ作戦】

【カー・コンピュータ作戦】

【カー・コンピュータ作戦】