• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

アンドロ沼のブログ一覧

2020年11月19日 イイね!

水温計の作り方(ソースコード編)

下記にソースコードを示します。エディタにコピペして、適当な名前を付けて、拡張子を”ino"にして保存してください。その後、Arduino IDEで開けば、コンパイル通るはずです。なお、実際に設置した水温計のソースからコメントとか、デバックコード消したり、ドライバが新しくなったためエラーが発生したところを修正したので、100%動く保証はできないんですが、たぶん大丈夫かと。
次回は、コンパイルの仕方説明します。

↓この下からソースです。

#include
#include
#include
#include

CAN_device_t CAN_cfg;
unsigned long prev_time;
byte loop_counter;
int last_rpm;
//unsigned byte test;

LiquidCrystal_I2C lcd(0x3F,16,2); // set the LCD address to 0x3F for a 16 chars and 2 line display

void setup() {
CAN_cfg.speed=CAN_SPEED_500KBPS;
CAN_cfg.tx_pin_id = GPIO_NUM_5;
CAN_cfg.rx_pin_id = GPIO_NUM_4;
CAN_cfg.rx_queue = xQueueCreate(10,sizeof(CAN_frame_t));
//start CAN Module
ESP32Can.CANInit();
prev_time = millis();
lcd.begin(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Waiting CAN");
}

void loop() {
int current_rpm;
CAN_frame_t rx_frame;
//receive next CAN frame from queue
if(xQueueReceive(CAN_cfg.rx_queue,&rx_frame, 3*portTICK_PERIOD_MS)==pdTRUE){
if ((rx_frame.MsgID & 0xFFFFFF00) == 0x18daf100) {
if ((rx_frame.data.u8[2])== 0x05) {
lcd.setCursor(0,0);
lcd.print("Water Temp = ");
lcd.setCursor(13,0);
lcd.print((signed char)(rx_frame.data.u8[3]) - 40);
}else if ((rx_frame.data.u8[2])== 0x0c) {
current_rpm=(int)(((int)rx_frame.data.u8[3])*256 + (int)rx_frame.data.u8[4])/4;
if (current_rpm != last_rpm) {
lcd.setCursor(0,1);
lcd.print("ENGINE rev: ");
lcd.setCursor(12,1);
lcd.print(current_rpm);
last_rpm = current_rpm;
}
}
}
}
if ((prev_time-millis())> 50) {
prev_time=millis();
if (loop_counter == ((loop_counter/4)*4)) { // if counter value is even
rx_frame.FIR.B.FF = CAN_frame_ext;
rx_frame.MsgID = 0x18db33f1 ;
rx_frame.FIR.B.DLC = 3;
rx_frame.data.u8[0] = 0x02;
rx_frame.data.u8[1] = 0x01;
rx_frame.data.u8[2] = 0x0C; // Request engine speed
ESP32Can.CANWriteFrame(&rx_frame);
} else if (loop_counter == 19) { // 1sec expired
rx_frame.FIR.B.FF = CAN_frame_ext;
rx_frame.MsgID = 0x18db33f1 ;
rx_frame.FIR.B.DLC = 3;
rx_frame.data.u8[0] = 0x02;
rx_frame.data.u8[1] = 0x01;
rx_frame.data.u8[2] = 0x05; // Request coolant temperature
ESP32Can.CANWriteFrame(&rx_frame);
}
if (loop_counter >= 19) {
loop_counter = 0;
} else {
loop_counter++;
}
}
}
Posted at 2020/11/19 19:48:56 | コメント(0) | トラックバック(0) | 日記
2020年11月19日 イイね!

水温計の作り方(LCDドライバ導入編)

次に、LCD表示のためのLCDドライバーを導入します。CANドライバ同様に関連情報URLのサイトに行って、下図のようにダウンロードします。


その後、CANドライバの時同様、下図のようにライブラリを組み込めば、開発環境の構築は完了です。
Posted at 2020/11/19 19:41:08 | コメント(0) | トラックバック(0) | 日記
2020年11月19日 イイね!

水温計の作り方(CANライブラリ導入編)

次に、Arduino IDEにESP32用のCANドライバのソフトを導入します。関連情報URLのサイトに飛び、下記のようにZIP形式のファイルをダウンロードします。



続いて、ArduinoIDEを立ち上げて、下記のようにライブラリの導入を選んでから、上記でダウンロードしたZipファイルを導入します。
Posted at 2020/11/19 19:36:14 | コメント(0) | トラックバック(0) | 日記
2020年11月19日 イイね!

水温計の作り方(ESP32対応拡張編)

今度は、Arduino IDEにESP32をコンパイルするための機能拡張を行います。関連情報のリンク先に行き、最新のやり方に従ってボードマネージャーから追加してください。これでESP32のソフト開発ができるようになります。
Esp32の基板を購入したら、まずは、この段階で、Blink のサンプルコードをコンパイル&ダウンロードして、Lチカの確認を済ませて置くことをお勧めします。
Posted at 2020/11/19 18:06:57 | コメント(0) | トラックバック(0) | 日記
2020年11月19日 イイね!

水温計の作り方(開発環境構築編)

ハードウェアができたら、次はソフトを作るために開発環境を構築します。ESP32煮は自前の開発環境も有りますが、難しいのでArduino IDEを使用します。まずは、関連情報に記載したリンク先で丁寧に説明されてますので、その通りにインストールすれば問題ないと思います。
IDEがインストールされても、そのままではESP32のソフトをコンパイルできないので、次回ESP32のための拡張を行います。
Posted at 2020/11/19 17:56:17 | コメント(0) | トラックバック(0) | 日記

プロフィール

「水温計の作り方(M5StickC plus ソースコード編2) http://cvw.jp/b/1552949/45254112/
何シテル?   07/05 22:01
アンドロ沼です。アクアからフリードハイブリッドに買い換えしました。
みんカラ新規会員登録

ユーザー内検索

<< 2020/11 >>

1234567
891011121314
15 1617 18 19 2021
22232425262728
2930     

愛車一覧

ホンダ フリードハイブリッド ホンダ フリードハイブリッド
家族が増え、強い圧力がかかり買い換えました。
スズキ ワゴンRハイブリッド スズキ ワゴンRハイブリッド
電車通勤から、車通勤に替り買い足しました。
トヨタ アクア トヨタ アクア
Fitからアクアに買い替えついでに、いろいろいじろうと思ってます。

過去のブログ

2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation