目录
第1步:材料和工具
- 液晶屏16×2
- MQ-3酒精传感器
- Arduino UNO
- 5V无源蜂鸣器
- 10kOhm电阻器
- 无焊面包板
- 焊接面包板
- PVC管(直径2厘米)
- 20根公/母跳线
- 20根母/公跳线
- 6节电池AA
- 6个电池座
- 开关
- 按键
- 焊接套件
- 烙铁30W
- 热胶
- 切纸机
- 电位器5K
- 纸箱(20x6x13)
- 绝缘胶带
第2步:焊接LCD屏幕。
一旦你拥有了所有的材料和工具,你就会发现你的液晶显示屏没有针脚。为了解决这个问题,您需要将必要的销钉焊接到屏幕上的相应孔中。您可以在互联网上找到如何焊接引脚,因为这是一个简单的过程。最终结果应如上图所示。完成电路构建后,将进行第二部分焊接,因为您将在没有面包板的情况下构建电路。
第3步:构建电路
使用protoboard和跳线,根据图表进行连接。
第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厘米。这些部分将保护传感器和蜂鸣器,并将它们放置在各自的孔中。
如果您需要,可以打印自己的贴纸以显示每个类别的范围并标记按钮。
第7步:组装
将arduino和电池座热胶粘到盒子内部。将按钮,开关和LCD屏幕热胶粘到各自的孔中。
切割一个小方形(3x3cm)的紧身衣,盖住6cm PVC管的一端,将蜂鸣器和热胶粘在孔中。
将3cm PVC管与传感器热粘在一起。