0°

Arduino酒精探测仪

第1步:材料和工具

  • 液晶屏16×2
  • MQ-3酒精传感器
  • Arduino UNO
  • 5V无源蜂鸣器
  • 10kOhm电阻器
  • 无焊面包板
  • 焊接面包板
  • PVC管(直径2厘米)
  • 20根公/母跳线
  • 20根母/公跳线
  • 6节电池AA
  • 6个电池座
  • 开关
  • 按键
  • 焊接套件
  • 烙铁30W
  • 热胶
  • 切纸机
  • 电位器5K
  • 纸箱(20x6x13)
  • 绝缘胶带

第2步:焊接LCD屏幕。

Arduino酒精探测仪

一旦你拥有了所有的材料和工具,你就会发现你的液晶显示屏没有针脚。为了解决这个问题,您需要将必要的销钉焊接到屏幕上的相应孔中。您可以在互联网上找到如何焊接引脚,因为这是一个简单的过程。最终结果应如上图所示。完成电路构建后,将进行第二部分焊接,因为您将在没有面包板的情况下构建电路。

第3步:构建电路

使用protoboard和跳线,根据图表进行连接。

Arduino酒精探测仪

第4步:焊接电路

一旦电路使用protoboard运行,你需要复制它,但没有protoboard。为此,您需要焊接以下内容:

– 2个公/母跳线到母针线(一个到+,另一个到 – )

– 在焊接面包板中复制按钮系统,并将其焊接到它上面。

– 将电池座串联焊接,通过焊接将最终的5V电线连接到开关。

– 将接地端线焊接到公/母跳线,然后将其连接到地。

第5步:代码

// The program for the breathalyzer is below:

// Libraries
#include #include

// Warmup

int TIME_UNTIL_WARMUP = 20;

unsigned long time;

// Measurement

int TIME_UNTIL_MEASURE = 5;

unsigned long measurement_start;

// Sensor readings

int analogPin = A0;

int val = 0;

// Buzzer

const int buzzerPin = 3;

// Button

const int buttonPin = 2;

// Modes

bool measurement_mode;

bool measurement_done;

// LCD

// jm_LiquidCrystal_I2C.h lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display

const int rsPin = 9;

const int enablePin = 8;

const int d4Pin = 4;

const int d5Pin = 5;

const int d6Pin = 6;

const int d7Pin = 7;

LiquidCrystal lcd(rsPin, enablePin, d4Pin, d5Pin, d6Pin, d7Pin);

void setup() {

// Serial

Serial.begin(9600);

// Init LCD

analogWrite(10,120);

lcd.begin(16,2);

digitalWrite(13,LOW);

}

void loop() {

// Read button state

int button_state = digitalRead(buttonPin);

if (button_state && !measurement_mode) {

lcd.clear();

measurement_mode = true;

measurement_start = millis()/1000;

measurement_done = false;

}

if(button_state && measurement_done){ delay(500);

}

if (measurement_mode) {

digitalWrite(13,HIGH);

} else {

digitalWrite(13,LOW);

}

// Wait

delay(100);

// Get time

time = millis()/1000;

// Warmup

if(time<=TIME_UNTIL_WARMUP)

{

int progress_time = map(time, 0, TIME_UNTIL_WARMUP, 0, 100);

printWarming(progress_time);

}

else

{

if (measurement_mode == false && !measurement_done) {

// Instruction

printPress();

}

if (measurement_mode && !measurement_done) {

// Instruction

printMeasure();

// Sound

tone(buzzerPin, 1000);

// Read alcohol level

val = readAlcohol();

}

if (measurement_mode && !measurement_done && ((time - measurement_start)> TIME_UNTIL_MEASURE)){

noTone(buzzerPin);

measurement_mode = false;

measurement_done = true;

lcd.clear();

}

if(measurement_done) {

printAlcohol(val);

printAlcoholLevel(val);

//delay(5000);

//measurement_done = false;

}

}

}

void printWarming(int progress)

{

Serial.print("Warming up: ");

Serial.print(progress);

Serial.println("%");

lcd.setCursor(0,0);

lcd.print("Warming up: ");

lcd.setCursor(0,1);

lcd.print(progress, DEC);

lcd.print("%");

}

void printPress()

{

Serial.println("Press to start ...");

lcd.setCursor(0,0);

lcd.print("Press to start ... ");

}

void printMeasure()

{

Serial.print("Breathe until the ");

Serial.println("sound stops...");

lcd.setCursor(0,0);

lcd.print("Breathe until the");

lcd.setCursor(0,1)

lcd.print("sound stops...");

}

void printAlcohol(int value)

{

Serial.print("Sensor reading: ");

Serial.println(val);

lcd.setCursor(0,0);

lcd.print("Detecting...");

lcd.print(val,DEC);

}

void printAlcoholLevel(int value)

{

lcd.setCursor(0,1);

if(value<200)

{

Serial.println("You are sober");

lcd.print("You are sober");

}

if (value>=200 && value<280)

{

Serial.println("One beer.");

lcd.print("Una chela.");

}

if (value>=280 && value<350)

{

lcd.print("two or more beers");

Serial.println("two or more beers");

}

if (value>=350 && value <450)

{

lcd.print("Too much...");

Serial.println("Too much...

}

if(value>450)

{

lcd.print("You're drunk");

Serial.println("You're drunk");

}

}

int readAlcohol()

{

// Number measurements

int nb_measurements = 5;

int measurements;

// Measure

for (int i = 0; i < nb_measurements; i++) {

measurements = measurements + analogRead(analogPin);

}

measurements = measurements/nb_measurements;

return measurements;

}

第6步:设计容器

一旦电路完成并且功能正常,它必须装入容器/盒子(最好是纸箱)。使用的模型是:链接。

使用切割器,在盒子的A侧切割一个矩形(见图像),用于LCD屏幕。切换另一个用于开关和方形按钮。

在B侧切割2个圆圈,一个在中心(直径2厘米)用于传感器,另一个在左下部分(直径2厘米)用于蜂鸣器。

切割一段PVC管,一个3厘米,另一个6厘米。这些部分将保护传感器和蜂鸣器,并将它们放置在各自的孔中。

Arduino酒精探测仪

如果您需要,可以打印自己的贴纸以显示每个类别的范围并标记按钮。

第7步:组装

将arduino和电池座热胶粘到盒子内部。将按钮,开关和LCD屏幕热胶粘到各自的孔中。

切割一个小方形(3x3cm)的紧身衣,盖住6cm PVC管的一端,将蜂鸣器和热胶粘在孔中。

将3cm PVC管与传感器热粘在一起。

Arduino酒精探测仪
Arduino酒精探测仪
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论