0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用STM32實現(xiàn)酒精測試儀的設(shè)計

科技觀察員 ? 來源:hackster.io ? 作者:hackster.io ? 2022-05-13 16:40 ? 次閱讀

背景

該項目的誕生是因為觀察到在大多數(shù)汽車共享服務(wù)中,人們即使喝醉了也可以開車,因為沒有檢查他們的狀況。事實上,要駕駛汽車,您只需使用移動應(yīng)用程序打開它并拿到里面的鑰匙。為了解決這個問題,我創(chuàng)建了一個基于云的物聯(lián)網(wǎng)呼氣測醉器,連接到一個包含汽車鑰匙的盒子;如果測試返回負值,則該框?qū)⒋蜷_,否則將保持關(guān)閉狀態(tài)。以下是更詳細的分析:IoT 設(shè)備架構(gòu)、云層和 IoT 設(shè)備的 RIOT-OS 代碼。

物聯(lián)網(wǎng)設(shè)備

pYYBAGJ-GN-AM8qIAAKemmR3oIw033.png

上圖顯示了傳感器和執(zhí)行器如何連接到 SMT NUCLEO-f401re 板。

使用的傳感器是超聲波傳感器和MQ-3酒精傳感器;使用的執(zhí)行器是伺服電機、三個 LED(迷你交通燈)、一個按鈕和一個蜂鳴器。

超聲波傳感器(HC SR04):

它用于允許酒精傳感器計算正確的測量值。事實上,它位于 MQ 3 傳感器附近,只有當傳感器與人的距離小于 5 厘米時,MQ 3 模塊才會在人呼氣時開始測量人的血液酒精水平。通過發(fā)送觸發(fā)信號和接收回波信號來估計距離;計算出的時間(以我們?yōu)閱挝唬┏?58 是超聲波傳感器前方物體的距離(以厘米為單位)??蓽y量2-400厘米范圍內(nèi)的距離,測距精度可達3毫米。一旦通過移動應(yīng)用程序打開汽車(通過為系統(tǒng)供電),超聲波傳感器就會進行定期感應(yīng)(每 5 秒執(zhí)行一次新的測量)。當裝有鑰匙的盒子被打開時,傳感器停止采取措施。

MQ 3 傳感器:

它測量空氣中酒精的濃度。其檢測范圍從 0.04 到 4 mg/l 酒精。它是一種金屬氧化物半導體,通過改變電阻來檢測周圍是否存在酒精蒸汽。事實上,當酒精濃度變高時,傳感器的電導率也會上升。電導率的這種變化被轉(zhuǎn)換為指示酒精含量的輸出值。特別是,當返回的值減去 100 大于 450 時,酒精含量被認為太高,并且框鍵將保持關(guān)閉狀態(tài)。該傳感器具有模擬輸出和數(shù)字輸出,但對于本項目,使用的是模擬輸出。MQ 3 傳感器僅在超聲波傳感器計算的距離小于 5 cm 時進行測量,因此可以計算出正確的測量值。

伺服電機:

伺服電機用于打開或關(guān)閉裝有汽車鑰匙的盒子。如果酒精傳感器返回的值小于或等于 450,則該框?qū)⒋蜷_,以便取走鑰匙。如果測量值大于 450,框鍵將保持關(guān)閉狀態(tài)。

迷你紅綠燈:

它具有三個 LED:紅色、黃色和綠色。它們用于為超聲波傳感器測量的距離提供反饋。距離大于 15 厘米時紅色 LED 亮;距離在5厘米至15厘米之間時黃色燈亮;當距離小于 5 厘米時,綠色會亮起。當綠色 LED 亮起時,表示該人距離傳感器足夠近,可以進行酒精測試,因此 MQ 3 傳感器被激活并可以測量酒精水平。

按鈕:

它用于關(guān)閉框鍵。按下時,伺服電機被激活,框鍵將關(guān)閉。為了將按鈕連接到電路板,它使用了一個 10K 歐姆的電阻器。

蜂鳴器:

它用于在呼氣測醉器返回的值超出限制時提供反饋。當 MQ 3 傳感器測量的值大于 450 時,蜂鳴器開啟 1 秒。為了將蜂鳴器連接到電路板上,它使用了一個 1 歐姆的電阻器。

云級別

云級別完全使用 AWS 生態(tài)系統(tǒng)開發(fā)。在下圖中,有一個架構(gòu)說明了所使用的 AWS 服務(wù)如何在整個系統(tǒng)中連接。

pYYBAGJ-GOaAGT3fAAE4bs7n7XE438.png

物聯(lián)網(wǎng)設(shè)備層和云端通過基于發(fā)布/訂閱機制的通信協(xié)議交換消息。董事會使用 MQTT-SN 協(xié)議將酒精傳感器采取的措施發(fā)送到 Mosquitto 代理。這些消息在“alcool_level”主題下發(fā)布。此外,該板訂閱了主題“topic_in”以接收從外部發(fā)送的消息,這些消息用于關(guān)閉或打開包含密鑰的框。Mosquitto 使用 MQTT 通過透明橋與 AWS 生態(tài)系統(tǒng)交換消息,這是一個 Python 腳本,用作 Mosquitto 和 AWS IoT Core 之間的橋梁。實際上,它將“alcool_level”的消息從板發(fā)布到 IoT Core,并將 IoT Core 在主題“topic_in”下發(fā)布的輸入消息作為輸入消息,這些消息被定向到板。然后,通過設(shè)置適當?shù)囊?guī)則,從板傳到 IoT Core 的消息直接存儲到 DynamoDB。然后通過調(diào)用 REST API 將它們顯示在 Web 儀表板上,這會觸發(fā)從數(shù)據(jù)庫中獲取數(shù)據(jù)的 lambda 函數(shù)(“get_data_from_db.py”)。從 Web 儀表板,可以通過在主題“topic_in”下發(fā)布消息“關(guān)閉”或消息“打開”來關(guān)閉或打開框鍵。消息通過調(diào)用使用另一個 lambda 函數(shù)(“publish_to_iotcore.py”)執(zhí)行此操作的 REST API 發(fā)布到 IoT Core。

AWS Amplify 用于托管 Web 儀表板的所有靜態(tài) Web 內(nèi)容。這會觸發(fā)從數(shù)據(jù)庫中獲取數(shù)據(jù)的 lambda 函數(shù)(“get_data_from_db.py”)。從 Web 儀表板,可以通過在主題“topic_in”下發(fā)布消息“關(guān)閉”或消息“打開”來關(guān)閉或打開框鍵。消息通過調(diào)用使用另一個 lambda 函數(shù)(“publish_to_iotcore.py”)執(zhí)行此操作的 REST API 發(fā)布到 IoT Core。AWS Amplify 用于托管 Web 儀表板的所有靜態(tài) Web 內(nèi)容。這會觸發(fā)從數(shù)據(jù)庫中獲取數(shù)據(jù)的 lambda 函數(shù)(“get_data_from_db.py”)。從 Web 儀表板,可以通過在主題“topic_in”下發(fā)布消息“關(guān)閉”或消息“打開”來關(guān)閉或打開框鍵。消息通過調(diào)用使用另一個 lambda 函數(shù)(“publish_to_iotcore.py”)執(zhí)行此操作的 REST API 發(fā)布到 IoT Core。AWS Amplify 用于托管 Web 儀表板的所有靜態(tài) Web 內(nèi)容。消息通過調(diào)用使用另一個 lambda 函數(shù)(“publish_to_iotcore.py”)執(zhí)行此操作的 REST API 發(fā)布到 IoT Core。AWS Amplify 用于托管 Web 儀表板的所有靜態(tài) Web 內(nèi)容。消息通過調(diào)用使用另一個 lambda 函數(shù)(“publish_to_iotcore.py”)執(zhí)行此操作的 REST API 發(fā)布到 IoT Core。AWS Amplify 用于托管 Web 儀表板的所有靜態(tài) Web 內(nèi)容。

網(wǎng)絡(luò)儀表板上有:

兩個圖表用于顯示:過去 7 天內(nèi)一天內(nèi)打開盒子鑰匙的次數(shù)(MQ-3 傳感器測量的值小于或等于 450)和酒精測試返回陽性的次數(shù)過去 7 天內(nèi)一天的價值;

顯示 MQ-3 傳感器在當天采取的所有措施的表格;

用于打開或關(guān)閉框鍵的兩個按鈕;

關(guān)于過去 7 天計算的測試的一些統(tǒng)計數(shù)據(jù):測試結(jié)果為陽性的最大時間段(8-12、12-17、17-20、20-24 和 00-8 之間的值);裝有鑰匙的盒子被打開的次數(shù);呼氣測醉器檢測到超過限值的次數(shù);陽性測試占總測試的百分比。

RIOT代碼的邏輯
主要功能如下:

int main(void){
int result;

sensor_init();
mqtts_init();

while(true){
if(box_keys==0){
dist=distance_ultrasonic();

if(dist<5){
set_led("verde");
check_alcool();
}
else if(dist>=5 && dist<15){
set_led("giallo");
}
else{
set_led("rosso");
}
}
else{
while(box_keys==1){
result = gpio_read(box_pin);
if(result>0){
box_keys=0;
/*close box keys*/
servo_set(&servo, SERVO_MAX);
}
xtimer_sleep(0.5);
}
}
xtimer_sleep(5);
}
return 0;
}

如果全局變量box_keys等于 0,則意味著包含鍵的框已關(guān)閉,因此我們可以繼續(xù)進行測量。函數(shù)distance_ultrasonic返回從超聲波傳感器計算的距離(以厘米為單位)。

如果距離小于 5 厘米:通過set_led("verde")函數(shù)打開迷你交通燈的綠色 LED ,用戶可以繼續(xù)進行酒精測試。函數(shù)check_alcool管理與測試相關(guān)的所有部分(更多細節(jié)在下面解釋)。

如果距離在 5 厘米到 15 厘米之間,黃色 LED 燈亮,表示計算測試的距離差不多,但用戶必須更靠近

如果距離大于 15 厘米,紅色 LED 會亮起,表示距離太遠,用戶必須更靠近傳感器才能進行酒精測試。

如果全局變量box_keys不等于 0,則表示包含鍵的框已打開,因此我們進入“else”塊。在其值等于 1 之前,每 0.5 秒讀取一次連接到按鈕的引腳。如果它返回一個大于零的值(當它被按下時它返回值 256),通過用伺服電機鎖定它來關(guān)閉盒子,并且變量box_keys設(shè)置為 0 以允許進入前面的“if”塊下一輪 while 循環(huán)。

如果box_keys等于 0,則超聲波傳感器將每 5 秒感應(yīng)一次,這是由于在 main while 中的“if-else”塊之外設(shè)置的計時器。

下面將對 main 函數(shù)中前面提到的所有函數(shù)進行更詳細的解釋。

sensor_init函數(shù):在 main 函數(shù)開始時使用,用于初始化傳感器和執(zhí)行器的所有 GPIO 引腳,以及伺服電機。

void sensor_init(void){
/*ultrasonic*/
gpio_init(trigger_pin, GPIO_OUT);
gpio_init_int(echo_pin, GPIO_IN, GPIO_BOTH, &call_back, NULL);
distance_ultrasonic(); /*first read returns always 0*/

/*mq3*/
adc_init(ADC_LINE(0));

/*traffic light*/
gpio_init(red_pin, GPIO_OUT);
gpio_init(yellow_pin, GPIO_OUT);
gpio_init(green_pin, GPIO_OUT);

/*button box keys*/
gpio_init(box_pin,GPIO_IN);

/*buzzer*/
gpio_init(buzzer_pin,GPIO_OUT);

/*servo init*/
servo_init(&servo, DEV, CHANNEL, SERVO_MIN, SERVO_MAX);
servo_set(&servo, SERVO_MAX);
}

用于引腳和伺服變量的所有變量都是全局的,因此它們是在函數(shù)之外定義的(您可以在項目的 GitHub 存儲庫中的代碼中找到有關(guān)它們的更多信息)。對于 MQ 3 傳感器,它被初始化為板接收值的模擬線路。用于初始化伺服電機的常量DEV、CHANNEL、SERVO_MIN、SERVO_MAX在函數(shù)外部定義。

check_alcool功能:它檢查用戶呼吸中的酒精含量并據(jù)此采取行動。

void check_alcool(void){
int sample = 0;
char msg[4];
sample=read_mq3();
sprintf(msg, "%d", sample);

if (sample > 450) {
gpio_set(buzzer_pin);
xtimer_sleep(1);
gpio_clear(buzzer_pin);
} else {
/*open box keys*/
servo_set(&servo, SERVO_MIN);
box_keys=1;
}
pub(TOPIC_OUT1,msg);
}

函數(shù)read_mq3返回 MQ 3 傳感器計算的值,如果大于 450 表示超過法定限制,因此無法駕駛汽車。包含按鍵的盒子將保持關(guān)閉狀態(tài),并激活蜂鳴器 1 秒鐘(蜂鳴器用于向用戶提供酒精測試陽性結(jié)果的反饋)。如果傳感器返回的值小于或等于 450,則打開盒子(通過伺服電機解鎖盒子)并將全局變量box_keys設(shè)置為 1。在這兩種情況下,由Breathalyzer 與主題“alcool_level”下的函數(shù)pub一起發(fā)布(這是常量TOPIC_OUT1的值)。

read_mq3函數(shù):返回 MQ 3 傳感器測量的值。

int read_mq3(void){
int sample = 0;
int min = 100;
sample = adc_sample(ADC_LINE(0), RES);
sample = (sample > min) ? sample - min : 0;
return sample;
}

如果傳感器測量的值大于 100,則返回減去 100 的值,否則返回 0。

distance_ultrasonic函數(shù):返回超聲波傳感器測量的值。

int distance_ultrasonic(void){
uint32_t dist;
dist=0;
echo_time = 0;
gpio_clear(trigger_pin);
xtimer_usleep(20);
gpio_set(trigger_pin);
xtimer_msleep(100);
if(echo_time > 0){
dist = echo_time/58;
}
return dist;
}

它向傳感器發(fā)送一個脈沖并等待 100 毫秒以讀取全局變量echo_time 的值。如果該值大于 0,則將其除以 58 以計算傳感器前方物體的距離(以厘米為單位)。

call_back函數(shù):它與distance_ultrasonic函數(shù)一起用于計算超聲波傳感器測量的值。

void call_back(void* arg){
int val = gpio_read(echo_pin);
uint32_t echo_time_stop;
(void) arg;
if(val){
echo_time_start = xtimer_now_usec();
}
else{
echo_time_stop = xtimer_now_usec();
echo_time = echo_time_stop - echo_time_start;
}
}

當檢測到回顯引腳上的變化時,該功能被激活。它測量從發(fā)送超聲波脈沖到接收回超聲波脈沖的時間差。它將值存儲在全局變量echo_time中, distance_ultrasonic函數(shù)使用該變量來計算傳感器前方物體的距離(以厘米為單位)。echo_time_stop也是一個全局變量。

set_led函數(shù):用于根據(jù)傳遞給函數(shù)的參數(shù)設(shè)置迷你紅綠燈的正確 LED。

void set_led(char *str){
if(strcmp(str,"verde")==0){
gpio_clear(red_pin);
gpio_clear(yellow_pin);
gpio_set(green_pin);
}
else if(strcmp(str,"rosso")==0){
gpio_clear(yellow_pin);
gpio_clear(green_pin);
gpio_set(red_pin);
}
else if(strcmp(str,"giallo")==0){
gpio_clear(red_pin);
gpio_clear(green_pin);
gpio_set(yellow_pin);
}
}

如果str為“verde”,則綠色 LED 亮起,其他 LED 熄滅。如果str為“giallo”,則黃色的打開,其他的關(guān)閉。如果str是“rosso”,則紅色的打開,其他的關(guān)閉。

mqtts_init函數(shù):它初始化與 MQTT-SN 代理的連接,并使用函數(shù)sub訂閱主題“topic_in”(常量TOPIC_IN的值) 。

static char stack[THREAD_STACKSIZE_DEFAULT];
static msg_t queue[8];
static emcute_sub_t subscriptions[NUMOFSUBS];
static char topics[NUMOFSUBS][TOPIC_MAXLEN];

void mqtts_init(void){
/* the main thread needs a msg queue to be able to run `ping`*/
msg_init_queue(queue, ARRAY_SIZE(queue));

/* initialize our subscription buffers */
memset(subscriptions, 0, (NUMOFSUBS * sizeof(emcute_sub_t)));

/* start the emcute thread */
thread_create(stack, sizeof(stack), EMCUTE_PRIO, 0, emcute_thread, NULL, "emcute");

char * addr1 = "fec0:affe::99";
add_address(addr1);
con();
sub(TOPIC_IN);
}

以下函數(shù)用于初始化部分:

static void *emcute_thread(void *arg){
(void)arg;
emcute_run(BROKER_PORT, "board");
return NULL;
}

static int add_address(char* addr){
char * arg[] = {"ifconfig", "4", "add", addr};
return _gnrc_netif_config(4, arg);
}

static int con(void){
sock_udp_ep_t gw = { .family = AF_INET6, .port = BROKER_PORT };
char *topic = NULL;
char *message = NULL;
size_t len = 0;

ipv6_addr_from_str((ipv6_addr_t *)&gw.addr.ipv6, BROKER_ADDRESS);

if (emcute_con(&gw, true, topic, message, len, 0) != EMCUTE_OK) {
printf("error: unable to connect to [%s]:%i\n", BROKER_ADDRESS, (int)g w.port);
return 1;
}

printf("Successfully connected to gateway at [%s]:%i\n", BROKER_ADDRESS, (int)gw.port);
return 0;
}

函數(shù)sub用于訂閱作為參數(shù)傳遞的主題。

static int sub(char* topic){
unsigned flags = EMCUTE_QOS_0;

if (strlen(topic) > TOPIC_MAXLEN) {
puts("error: topic name exceeds maximum possible size");
return 1;
}

/* find empty subscription slot */
unsigned i = 0;
for (; (i < NUMOFSUBS) && (subscriptions[i].topic.id != 0); i++) {}
if (i == NUMOFSUBS) {
puts("error: no memory to store new subscriptions");
return 1;
}

subscriptions[i].cb = on_pub;
strcpy(topics[i], topic);
subscriptions[i].topic.name = topics[i];
if (emcute_sub(&subscriptions[i], flags) != EMCUTE_OK) {
printf("error: unable to subscribe to %s\n", topic);
return 1;
}

printf("Now subscribed to %s\n", topic);
return 0;
}

當在訂閱的主題(在本例中為主題“topic_in”)下接收到消息時,函數(shù)on_pub對其進行管理:

static void on_pub(const emcute_topic_t *topic, void *data, size_t len){
(void)topic;
char *in = (char *)data;
printf("### got publication for topic '%s' [%i] ###\n", topic->name, (int)topic->id);

for (size_t i = 0; i < len; i++) {
printf("%c", in[i]);
}
puts("");

char msg[len+1];
strncpy(msg, in, len);
msg[len] = '\0';
if (strcmp(msg, "open") == 0){
if(box_keys==0){
/*open box keys*/
servo_set(&servo, SERVO_MIN);
box_keys=1;
}
}
else if (strcmp(msg, "close") == 0){
if(box_keys==1){
/*close box keys*/
servo_set(&servo, SERVO_MAX);
box_keys=0;
}
}
}

如果收到的消息是“打開”,則通過伺服電機解鎖包含鑰匙的盒子,并將全局變量box_keys設(shè)置為 1。如果消息是“關(guān)閉”,則使用伺服電機鎖定盒子,并且全局變量box_keys設(shè)置為 0。函數(shù)的第一部分用于通過在終端上打印收到的消息及其相關(guān)主題來獲取反饋。

函數(shù)pub用于發(fā)布消息。

static int pub(char* topic,char* msg){
emcute_topic_t t;
unsigned flags = EMCUTE_QOS_0;

printf("pub with topic: %s and name %s and flags 0x%02x\n", topic, msg, (int)flags);

/* step 1: get topic id */
t.name = topic;
if (emcute_reg(&t) != EMCUTE_OK) {
puts("error: unable to obtain topic ID");
return 1;
}

/* step 2: publish data */
if (emcute_pub(&t, msg, strlen(msg), flags) != EMCUTE_OK) {
printf("error: unable to publish data to topic '%s [%i]'\n",t.name, (int)t.id);
return 1;
}

printf("Published %i bytes to topic '%s [%i]'\n", (int)strlen(msg), t.name, t.id);
return 0;
}

特別是,該函數(shù)的第二個參數(shù)是您要發(fā)布的消息,第一個參數(shù)是相關(guān)主題的名稱。

pYYBAGJ-GNmAU6rpAAYD0481yqY874.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10849

    瀏覽量

    353905
  • 酒精測試儀
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    6320
收藏 人收藏

    評論

    相關(guān)推薦

    便攜式酒精測試儀電路設(shè)計

    測試儀只要被試者問由氣敏元件組成的傳感探頭吹一口氣,便可顯示出被試者醉酒的深度,決定出被試者是否還適宜駕駛車輛。實用酒精測試儀的電路如圖,它是實用酒精
    發(fā)表于 11-05 16:13 ?8762次閱讀
    便攜式<b class='flag-5'>酒精</b><b class='flag-5'>測試儀</b>電路設(shè)計

    【CANNON申請】藍牙酒精測試儀

    申請理由:市場現(xiàn)有的各種藍牙模塊二次開發(fā)性不高,不開放,需要另加MCU才能實現(xiàn)功能,希望有一顆藍牙芯片就能搞定一切(春節(jié)回家所以收貨地址是老家)項目描述:我的酒精測試儀,適用于各種測試
    發(fā)表于 01-26 13:52

    簡易手持式酒精測試儀電路設(shè)計與單面板pcb繪制

    的功能、特點和基本工作原理;以及完成酒精測試儀制作后電路各部分的調(diào)試方法。最終實現(xiàn)酒精測試儀酒精
    發(fā)表于 06-30 19:53

    如何采用89C52和MQ-3酒精濃度傳感器設(shè)計酒精濃度測試儀?

    基于單片機的酒精濃度測試儀的設(shè)計本文設(shè)計了一款便攜式的酒精濃度測試儀,該設(shè)計方案采用的是89C52單片機和MQ-3酒精濃度傳感器。待檢測到氣
    發(fā)表于 11-10 06:44

    酒精測試儀電路

    酒精測試儀電路 如圖所示為實用酒精測試儀的電路,該測試儀只要被試者向傳感器吹一口氣,便可顯示出醉酒的程序,確定被試者是
    發(fā)表于 11-06 12:37 ?4606次閱讀
    <b class='flag-5'>酒精</b><b class='flag-5'>測試儀</b>電路

    智能酒精測試儀中信息處理模塊的設(shè)計與測試_李耀輝

    智能酒精測試儀中信息處理模塊的設(shè)計與測試,基于51。
    發(fā)表于 03-11 16:55 ?2次下載

    智能酒精測試儀設(shè)計研究

    ,對酒精測試儀進行了完善,能夠更加貼合人手握的舒適感受;在滿足有效監(jiān)測飲酒駕駛的同時,充分考慮了酒精測試儀的交互方式,對手柄、連接結(jié)構(gòu)及各個部件進行了材質(zhì)選擇、色彩搭配等具體設(shè)計工作。
    發(fā)表于 03-09 10:42 ?3次下載

    機械酒精耐磨測試儀的用途是什么,它的特點有哪些

    多功能酒精鉛筆橡皮耐磨測試儀簡介標示耐水酒精耐磨測試儀適用于按鍵表面、塑料外殼、涂料之涂層耐溶解性試驗,常用于電子、機械、家具、印刷等行業(yè),試驗產(chǎn)品表面之印刷字體、標示耐水及腐蝕液體溶
    發(fā)表于 05-18 11:23 ?773次閱讀

    基于單片機的酒精濃度測試儀的設(shè)計

    基于單片機的酒精濃度測試儀的設(shè)計本文設(shè)計了一款便攜式的酒精濃度測試儀,該設(shè)計方案采用的是89C52單片機和MQ-3酒精濃度傳感器。待檢測到氣
    發(fā)表于 11-04 21:06 ?40次下載
    基于單片機的<b class='flag-5'>酒精</b>濃度<b class='flag-5'>測試儀</b>的設(shè)計

    酒精測試儀原理和酒精的代謝過程

    現(xiàn)實生活中,我們的駕駛?cè)私?jīng)常會遇到交警對我們進行酒精測試,就是俗稱的查酒駕。這一期我們就來討論一下,酒精測試儀的原理是什么?我們喝酒后,酒精
    發(fā)表于 12-01 10:24 ?3925次閱讀

    語音芯片在酒精測試儀的應(yīng)用

    酒精氣體吹氣檢測,可以短時間內(nèi)判斷是否有酒后駕車的嫌疑,主要應(yīng)用于交通運輸業(yè),地下開采等,大家最??吹降木褪墙煌ň焓种心玫?b class='flag-5'>酒精測試儀,使用酒精
    發(fā)表于 06-23 10:12 ?592次閱讀
    語音芯片在<b class='flag-5'>酒精</b><b class='flag-5'>測試儀</b>的應(yīng)用

    技術(shù)干貨 | 基于晶華微SD8114便攜式酒精測試儀方案

    概述 便攜式酒精含量測試儀是專用于測試人體呼出氣體中酒精含量的儀器,可進行自身快速排查,幫助預(yù)判是否處于醉酒狀態(tài),給以酒駕或是醉駕警示。 便攜式酒精
    發(fā)表于 10-13 17:01 ?788次閱讀
    技術(shù)干貨 | 基于晶華微SD8114便攜式<b class='flag-5'>酒精</b><b class='flag-5'>測試儀</b>方案

    基于SD8114芯片的便攜式酒精測試儀應(yīng)用方案

    便攜式酒精含量測試儀是專用于測試人體呼出氣體中酒精含量的儀器,可進行自身快速排查,幫助預(yù)判是否處于醉酒狀態(tài),給以酒駕或是醉駕警示。
    發(fā)表于 10-14 11:23 ?1086次閱讀

    技術(shù)干貨 | 基于晶華微SD8114便攜式酒精測試儀方案

    ? 01·概述 便攜式酒精含量測試儀是專用于測試人體呼出氣體中酒精含量的儀器,可進行自身快速排查,幫助預(yù)判是否處于醉酒狀態(tài),給以酒駕或是醉駕警示。 便攜式
    發(fā)表于 12-01 11:59 ?753次閱讀
    技術(shù)干貨 | 基于晶華微SD8114便攜式<b class='flag-5'>酒精</b><b class='flag-5'>測試儀</b>方案

    酒精測試儀的分類和功能原理介紹

    具體的酒精測試儀設(shè)備可以按測試方式分為以下五類: 1,燃料電池型(電化學) 2、半導體型、 3,紅外線型、 4,氣體色譜分析型、 5,比色型。
    的頭像 發(fā)表于 07-13 17:50 ?2403次閱讀
    <b class='flag-5'>酒精</b><b class='flag-5'>測試儀</b>的分類和功能原理介紹