0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用NX4024K实现汽车警报监控系统的设计

科技观察员 来源:hackster.io 作者:hackster.io 2022-04-07 17:45 次阅读

该项目可用于监控油温和压力、水温、电压、燃油液位。通过Nextion显示器或诺基亚LCD显示,以让你更直观的了解自己爱车的各项数值。

这次的项目中我们使用了一辆旧车,一辆ToyotaMR21990。

由于没有OBD端口,并且需要测量油温和压力并报警异常值,因此我们决定使用Arduinouno和诺基亚显示器从安装在汽车上的电阻传感器获取数据。

poYBAGJOsp-AOHAZAAlT46AZPOo250.png

接下来是Arduino输入板:OP=油压;OT=油温;WT水温;V=伏特

poYBAGJOspuATzw6AARHoF2xtnY482.png

poYBAGJOspiAGSUnAAeOwMxATE8887.png

pYYBAGJOspSAeRltAAX0mKbZFKc638.png

再是用于LCD显示的程序:

#include "U8glib.h"
#define backlight_pin 9
int piezoPin = 8; //8 digital pin the piezo buzzer is attached for alarm.
const int oiltemppin = A1; //analog pin
const int oilpressurepin = A2; //oil spacer temp and pressure
const int watertemppin = A3; // fitted in water hose after thermostat
const int voltpin = A4; // from acc
const int fuelpin = A5; //from dash fuel gauge
;
int TA = 130; //OilTmp alarm level over 130
float OA = 1.5; //OilPres alarm level under 1.5
int WA = 100; //WaterTmp alarm level over 100
float VA = 12.0; //Volts alarm under 12.0v
float FA = 5; //Fuel alarm under 10
U8GLIB_PCD8544 u8g(13,11, 7, 5, 6); // CLK=13, DIN=11, CE=7, DC=5, RST=6
void draw(void) {
float oiltempres = analogRead(oiltemppin);//resistance value (432.667-Resistance)/1.75
double oiltemp = (432.667 - oiltempres) /1.80;// 50c=347ohm 60=324 70=312 80c= 95c= 110= 120=
float watertempres = analogRead(watertemppin);//resistance value (350.124-Resistance)/1.25
double watertemp = (350.124 - watertempres) /1.25;// 40c=297ohm 50=287 60=276 70=263 80=250 90=233 fan on
float oilpresres = analogRead(oilpressurepin);// 1= 2= 2.5=170 3=195 4=227 5=258 6=280 12.1v
float oilpressure = (98.5 - oilpresres) / -31.098; //
if (oilpressure < 0) {oilpressure = 0;} 
float volts = analogRead(voltpin) / 65.0; //65
float fuel = analogRead(fuelpin) / 2.0;
analogWrite(backlight_pin,20); /* Set the Backlight intensity */
u8g.setFont(u8g_font_profont11); // select font
u8g.drawStr(0, 8, "OilTmp: "); // put string of display at position X, Y
u8g.drawStr(0, 17, "OilPres: ");
u8g.drawStr(0, 26, "WtrTmp: ");
u8g.drawStr(0, 35, "Volts: ");
u8g.drawStr(0, 44, "Fuel: ");
u8g.setPrintPos(55, 8); // set position
u8g.print(oiltemp, 0);
u8g.drawStr(80, 8, "c ");
if (oiltemp > TA) {u8g.drawStr(50, 8, "# ");tone(piezoPin, 500,3000);analogWrite(backlight_pin,250);} //tone(pin,freq,duration)
u8g.setPrintPos(55, 17);
u8g.print(oilpressure, 1);
u8g.drawStr(80, 17, "% ");
if ((oilpressure < OA)&(volts > 13.0)) {u8g.drawStr(50, 17, "# ");tone(piezoPin, 1000,3000);analogWrite(backlight_pin,250);}
u8g.setPrintPos(55, 26);
u8g.print(watertemp, 0);
u8g.drawStr(80, 26, "c ");
if (watertemp > WA) {u8g.drawStr(50, 26, "# ");tone(piezoPin, 1500,3000);analogWrite(backlight_pin,250);}
u8g.setPrintPos(55, 35);
u8g.print(volts, 1);
u8g.drawStr(80, 35, "v ");
if (volts < VA) {u8g.drawStr(50, 35, "# ");tone(piezoPin, 2500,3000);analogWrite(backlight_pin,250);} 
u8g.setPrintPos(55, 44);
u8g.print(fuel, 0);
u8g.drawStr(80, 44, "l ");
if ((fuel < FA)& (oilpressure > 1)) {u8g.drawStr(50, 44, "# ");tone(piezoPin, 3000,1000);analogWrite(backlight_pin,250);}
//used for testing only
//u8g.setPrintPos(60, 44);
//u8g.print(fuel, 0);
//u8g.setPrintPos(30, 44);
//u8g.print(oilpresres, 1);
//u8g.setPrintPos(5, 44);
// u8g.print(watertempres, 0);
}
void setup(void) {
analogWrite(backlight_pin,20); /* Set the Backlight intensity */
}
void loop(void) {
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
delay(1000); // update every 1000 = 1 sec
}

由于诺基亚显示屏变亮(灰色阴影)的问题,导致显示屏连接不良。最终我决定升级到Nextion显示器,结果看起来也更好。

poYBAGJOso2ALpd9AAQdk_nnEHw942.png

由于Uno只有一个HardwareSerial端口(引脚0/1),并且它与USB-SerialUART共享,因此使用Nextion显示器调试项目很痛苦,所以我们转到链接中的页面并按照说明进行操作,然后我们串行连接在引脚10,11上。

我的NextionHID的硬件连接:

+5V(红色):来自arduino板的5V

TX(蓝色):引脚10(SoftwareSerialRX)

RX(黄色):引脚11(软件串行TX)

GND(黑色):Uno的GND。

颜色是显示器附带的颜色,它带有一个微型分线板上的微型USB连接器

Nextion显示屏图片

pYYBAGJOsomARjsYAARQmexhYDo480.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 显示器
    +关注

    关注

    21

    文章

    4970

    浏览量

    139926
收藏 人收藏

    评论

    相关推荐

    网络摄像头监控系统优势

    PC机即可,不需要对现有布线系统做什么改动;  网络摄像头应用范围广阔:区域性监控利用网络传送实时图像,如办公室、大楼等;跨区远端监控,连锁事业、大型工厂机房、远端老人、儿童看护、公
    发表于 03-25 15:26

    如何利用FPGA和嵌入式系统设计远程监控系统

    系统立足于利用Intemet实现核环境信息的远程采集。告诉大家,如何利用FPGA和嵌入式系统设计远程
    发表于 08-02 08:07

    数字化监控系统的特点及功能

    ,无时空限制。  ◆数字化:监控图像,控制及报警信息数字化后进入计算机,可以充分利用高科技手段进行系统管理和图像处理。  ◆广域化:可以实现全行业大范围内的
    发表于 12-11 14:10

    怎么实现基于SoPC的汽车安全监控系统设计?

    怎么实现基于SoPC的汽车安全监控系统设计?
    发表于 05-13 06:27

    如何利用S3C44B0X和GPRS通讯模块开发基于手机的汽车防盗系统

    采用嵌入式开发技术,利用S3C44B0X和GPRS通讯模块开发了基于手机的汽车防盗系统,该系统能通过车主手机实现
    发表于 05-17 06:22

    请问怎样去设计一种汽车安全监控系统

    基于SoPC的汽车安全监控系统硬件是由哪些部分组成的?基于SoPC的汽车安全监控系统软件是由哪些
    发表于 05-17 06:24

    利用FPGA实现汽车系统设计须遵循哪些步骤?

    利用FPGA实现高可靠性汽车系统设计须遵循哪些步骤?如何去防止潜在的SRAM内容损坏?
    发表于 05-17 07:07

    如何利用IP网络实现远程视频监控系统

    本文介绍的远程监控系统,可利用现有IP网络实现远程监控和控制摄像头的调焦、云台转动等,可满足无人值守的要求,
    发表于 06-07 06:20

    如何利用蓝牙和无线局域网共同控制监控系统?

    怎么实现利用蓝牙和无线局域网共同控制监控系统怎么实现?
    发表于 10-16 06:29

    利用单片机实现的楼宇监控系统

    介绍一种利用单片机实现的楼宇监控系统的硬件线路及软件设计方法,并说明了该系统的功能、特点。关键词:单片机; RS422串行总线; 楼宇
    发表于 08-06 11:51 29次下载

    基于GPRS技术的人防及灾害警报集中控制系统的设计与实现

    摘 要:介绍一种基于GPRS的人民防空及灾害警报集中控制系统实现方法。该系统采用GPRS无线数据通信技术实现人民防空及灾害
    发表于 03-11 13:18 808次阅读
    基于GPRS技术的人防及灾害<b class='flag-5'>警报</b>集中控制<b class='flag-5'>系统</b>的设计与<b class='flag-5'>实现</b>

    使用Bolt IOT的带有消息警报的灯光监控系统

    电子发烧友网站提供《使用Bolt IOT的带有消息警报的灯光监控系统.zip》资料免费下载
    发表于 12-16 09:56 0次下载
    使用Bolt IOT的带有消息<b class='flag-5'>警报</b>的灯光<b class='flag-5'>监控</b><b class='flag-5'>系统</b>

    通过SMS警报进行灯光监控

    电子发烧友网站提供《通过SMS警报进行灯光监控.zip》资料免费下载
    发表于 12-20 17:51 1次下载
    通过SMS<b class='flag-5'>警报</b>进行灯光<b class='flag-5'>监控</b>

    Arduino婴儿汽车警报系统(iCAS)

    电子发烧友网站提供《Arduino婴儿汽车警报系统(iCAS).zip》资料免费下载
    发表于 01-05 09:52 0次下载
    Arduino婴儿<b class='flag-5'>汽车</b><b class='flag-5'>警报系统</b>(iCAS)

    多功能汽车警报系统

    电子发烧友网站提供《多功能汽车警报系统.pdf》资料免费下载
    发表于 11-06 14:16 1次下载
    多功能<b class='flag-5'>汽车</b><b class='flag-5'>警报系统</b>