一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

如何使用ArduinoIDE設(shè)置ESP32

454398 ? 來源:工程師吳畏 ? 2019-07-30 11:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

材料清單

ESP32

AmbiMate MS4多傳感器模塊

面包板和跳線

USB連接器

Arduino IDE(軟件)

什么是AmbiMate MS4?

AmbiMate傳感器模塊MS4系列集成了一套傳感器,用于樓宇自動化和連接家庭應(yīng)用到PCB組件上。它在即用型PCB組件上提供了一組專用傳感器,可輕松集成到主機(jī)產(chǎn)品中。

傳感器包括運(yùn)動,光線,溫度,濕度,VSO(揮發(fā)性有機(jī)化合物),CO2和聲音檢測。通過捕獲VOC濃度來增加監(jiān)測空氣質(zhì)量的能力。有許多MS4系列傳感器可用 - 我建議您選擇帶有嵌入式麥克風(fēng)的傳感器來增強(qiáng)運(yùn)動檢測或者能夠收聽聲音事件。

所有MS4系列傳感器模塊都可以靈活地共享一個通用的七位連接。這使得設(shè)計(jì)人員可以布置單個PCB封裝,以適應(yīng)生產(chǎn)中所有可用的傳感器配置。

MS4應(yīng)用

室內(nèi)照明

能源管理

樓宇自動化

工作空間舒適度

區(qū)域環(huán)境控制

自動化

空氣質(zhì)量測量系統(tǒng)

MS4規(guī)范

在MS4版本1中-2314291-2有九個傳感器用于:

運(yùn)動(PIR)

溫度

濕度

運(yùn)動(PIR)

溫度

聲音(麥克風(fēng))

VOC

CO2

MS4 Pinout

將ESP32連接到MS4

按如下方式將MS4連接到ESP32:

使用Arduino IDE設(shè)置ESP32

按照下面的屏幕截圖所示的步驟使用Arduino IDE對ESP32進(jìn)行編程。

單擊文件》首選項(xiàng)

添加URL鏈接。您可以通過逗號分隔其他鏈接。

https://dl.espressif.com/dl/package_esp32_index.json

單擊 確定 。

單擊工具》板》板管理器

搜索 ESP32 并安裝包。

再次轉(zhuǎn)到 工具 并選擇 ESP32板 和 COM端口。

上傳源代碼

復(fù)制下面的源代碼,將其粘貼到Arduino IDE中,然后上傳。您可能需要在上傳過程中長按ESP32板上的啟動按鈕。

#include

unsigned char buf[20];

unsigned char opt_sensors;

int incomingByte = 0;

int loopCount = 0;

char showTemp = 0, showHum = 0, showLight = 0, showSound = 0, degCorf = 0, showCO2 = 0, showVOC = 0, showPwr = 0, showEvents = 0;

String sampPeriodTxt;

float sampPeriod = 1;

void setup() {

// put your setup code here, to run once:

Wire.begin(); // join i2c bus (address optional for master)

Serial.begin(9600); // start serial for output monitor

}

void restart_info() {

// Data and basic information are acquired from the module

Wire.beginTransmission(0x2A); // transmit to device

Wire.write(byte(0x80)); // sends instruction to read firmware version

Wire.endTransmission(); // stop transmitting

Wire.requestFrom(0x2A, 1); // request byte from slave device

unsigned char fw_ver = Wire.read(); // receive a byte

Wire.beginTransmission(0x2A); // transmit to device

Wire.write(byte(0x81)); // sends instruction to read firmware subversion

Wire.endTransmission(); // stop transmitting

Wire.requestFrom(0x2A, 1); // request byte from slave device

unsigned char fw_sub_ver = Wire.read(); // receive a byte

Wire.beginTransmission(0x2A); // transmit to device

Wire.write(byte(0x82)); // sends instruction to read optional sensors byte

Wire.endTransmission(); // stop transmitting

Wire.requestFrom(0x2A, 1); // request byte from slave device

opt_sensors = Wire.read(); // receive a byte

delay(1000);

//If device contains additional CO2 and audio sensor, it is indicated here

Serial.print(“AmbiMate sensors: 4 core”);

if (opt_sensors & 0x01)

Serial.print(“ + CO2”);

if (opt_sensors & 0x04)

Serial.print(“ + Audio”);

Serial.println(“ ”);

Serial.print(“AmbiMate Firmware version ”);

Serial.print(fw_ver);

Serial.print(“?!保?

Serial.println(fw_sub_ver);

Serial.print(“Select which sensors to receive data from: ”);

Serial.print(“Temperature [Y/N]: ”);

while (Serial.available() == 0);

showTemp = Serial.read();

Serial.println(showTemp);

Serial.print(“deg C or F [C/F]: ”);

while (Serial.available() == 0);

degCorf = Serial.read();

Serial.println(degCorf);

Serial.print(“Humidity [Y/N]: ”);

while (Serial.available() == 0);

showHum = Serial.read();

Serial.println(showHum);

Serial.print(“Ambient Light [Y/N]: ”);

while (Serial.available() == 0);

showLight = Serial.read();

Serial.println(showLight);

if (opt_sensors & 0x04)

{

Serial.print(“Audio [Y/N]: ”);

while (Serial.available() == 0);

showSound = Serial.read();

Serial.println(showSound);

}

if (opt_sensors & 0x01)

{

Serial.print(“eCO2 [Y/N]: ”);

while (Serial.available() == 0);

showCO2 = Serial.read();

Serial.println(showCO2);

Serial.print(“VOC [Y/N]: ”);

while (Serial.available() == 0);

showVOC = Serial.read();

Serial.println(showVOC);

}

Serial.print(“Power [Y/N]: ”);

while (Serial.available() == 0);

showPwr = Serial.read();

Serial.println(showPwr);

Serial.print(“PIR and Motion Events [Y/N]: ”);

while (Serial.available() == 0);

showEvents = Serial.read();

Serial.println(showEvents);

Serial.print(“ ”);

Serial.print(“Sample Interval[Secs]: ”);

while (Serial.available() == 0);

sampPeriodTxt = “”;

while (Serial.available() 》 0)

{

int inChar = Serial.read();

sampPeriodTxt += (char)inChar;

}

Serial.println(sampPeriodTxt);

sampPeriod = sampPeriodTxt.toFloat();

if (sampPeriod 《 0.5)

{

sampPeriod = 0.5;

Serial.print(“Input exceeds limits, Sample period set to minimum, 0.5 seconds ”);

}

sampPeriod = sampPeriod * 1000; // convert to mSecs

}

//Top line of headings are printed using the following

void printLabels(void) {

Serial.println(“ ”);

Serial.println(“ ”);

// Construct the first line of the headings

if ((showTemp == ‘Y’) || (showTemp == ‘y’))

Serial.print(“Temperature ”);

if ((showHum == ‘Y’) || (showHum == ‘y’))

Serial.print(“Humidity ”);

if ((showLight == ‘Y’) || (showLight == ‘y’))

Serial.print(“Light ”);

if (opt_sensors & 0x04)

{

if ((showSound == ‘Y’) || (showSound == ‘y’))

Serial.print(“Audio ”);

}

if (opt_sensors & 0x01)

{

if ((showCO2 == ‘Y’) || (showCO2 == ‘y’))

Serial.print(“eCO2 ”);

if ((showVOC == ‘Y’) || (showVOC == ‘y’))

Serial.print(“VOC ”);

}

if ((showPwr == ‘Y’) || (showPwr == ‘y’))

Serial.print(“Power ”);

if ((showEvents == ‘Y’) || (showEvents == ‘y’))

Serial.print(“Event ”);

else

Serial.print(“ ”);

// Construct the second line of the headings

if ((showTemp == ‘Y’) || (showTemp == ‘y’))

{

if ((degCorf == ‘F’) || (degCorf == ‘f’))

Serial.print(“deg F ”);

else

Serial.print(“deg C ”);

}

if ((showHum == ‘Y’) || (showHum == ‘y’))

Serial.print(“% ”);

if ((showLight == ‘Y’) || (showLight == ‘y’))

Serial.print(“Lux ”);

if (opt_sensors & 0x04)

{

if ((showSound == ‘Y’) || (showSound == ‘y’))

Serial.print(“dB ”);

}

if (opt_sensors & 0x01)

{

if ((showCO2 == ‘Y’) || (showCO2 == ‘y’))

Serial.print(“PPM ”);

if ((showVOC == ‘Y’) || (showVOC == ‘y’))

Serial.print(“PPB ”);

}

if ((showPwr == ‘Y’) || (showPwr == ‘y’))

Serial.print(“volts”);

Serial.print(“ ”);

}

//Loop starts here

void loop() {

if (loopCount == 0)

{

restart_info();

loopCount = 1;

}

if (loopCount == 1)

{

printLabels();

loopCount = 2;

}

// All sensors except the CO2 sensor are scanned in response to this command

Wire.beginTransmission(0x2A); // transmit to device

// Device address is specified in datasheet

Wire.write(byte(0xC0)); // sends instruction to read sensors in next byte

Wire.write(0xFF); // 0xFF indicates to read all connected sensors

Wire.endTransmission(); // stop transmitting

// Delay to make sure all sensors are scanned by the AmbiMate

delay(100);

Wire.beginTransmission(0x2A); // transmit to device

Wire.write(byte(0x00)); // sends instruction to read sensors in next byte

Wire.endTransmission(); // stop transmitting

Wire.requestFrom(0x2A, 15); // request 6 bytes from slave device

// Acquire the Raw Data

unsigned int i = 0;

while (Wire.available()) { // slave may send less than requested

buf[i] = Wire.read(); // receive a byte as character and store in buffer

i++;

}

// convert the raw data to engineering units, see application spec for more information

unsigned int status = buf[0];

float temperatureC = (buf[1] * 256.0 + buf[2]) / 10.0;

float temperatureF = ((temperatureC * 9.0) / 5.0) + 32.0;

float Humidity = (buf[3] * 256.0 + buf[4]) / 10.0;

unsigned int light = (buf[5] * 256.0 + buf[6]);

unsigned int audio = (buf[7] * 256.0 + buf[8]);

float batVolts = ((buf[9] * 256.0 + buf[10]) / 1024.0) * (3.3 / 0.330);

unsigned int co2_ppm = (buf[11] * 256.0 + buf[12]);

unsigned int voc_ppm = (buf[13] * 256.0 + buf[14]);

if ((showTemp == ‘Y’) || (showTemp == ‘y’))

{

if ((degCorf == ‘F’) || (degCorf == ‘f’))

Serial.print(temperatureF, 1);

else

Serial.print(temperatureC, 1);

Serial.print(“ ”);

}

if ((showHum == ‘Y’) || (showHum == ‘y’))

{

Serial.print(Humidity, 1);

Serial.print(“ ”);

}

if ((showLight == ‘Y’) || (showLight == ‘y’))

{

Serial.print(light);

Serial.print(“ ”);

}

if (opt_sensors & 0x04)

{

if ((showSound == ‘Y’) || (showSound == ‘y’))

{

Serial.print(audio);

Serial.print(“ ”);

}

}

if (opt_sensors & 0x01)

{

if ((showCO2 == ‘Y’) || (showCO2 == ‘y’))

{

Serial.print(co2_ppm);

Serial.print(“ ”);

}

if ((showVOC == ‘Y’) || (showVOC == ‘y’))

{

Serial.print(voc_ppm);

Serial.print(“ ”);

}

}

if ((showPwr == ‘Y’) || (showPwr == ‘y’))

{

Serial.print(batVolts);

Serial.print(“ ”);

}

if ((showEvents == ‘Y’) || (showEvents == ‘y’))

{

if (status & 0x80)

Serial.print(“ PIR_EVENT”);

if (status & 0x02)

Serial.print(“ AUDIO_EVENT”);

if (status & 0x01)

Serial.print(“ MOTION_EVENT”);

}

Serial.print(“ ”);

// all sensors except the CO2VOC sensor are scanned at this rate.

// CO2/VOC sensor is only updated in AmbiMate every 60 seconds

delay(sampPeriod - 100);

incomingByte = Serial.read();

if ((incomingByte == ‘R’) || (incomingByte == ‘r’))

{

//Serial.print(“Got R ”);

loopCount = 0;

}

}

上傳代碼后,點(diǎn)擊串行監(jiān)視器。

選擇你想要的傳感器喜歡通過輸入‘ Y ’來選擇它。

您現(xiàn)在可以看到傳感器數(shù)據(jù)進(jìn)來。

我希望這個超級傳感器模塊能夠?yàn)槟磥淼捻?xiàng)目提供便利!

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

    關(guān)注

    190

    文章

    6498

    瀏覽量

    192180
  • ESP32
    +關(guān)注

    關(guān)注

    21

    文章

    1017

    瀏覽量

    19265
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    樂鑫ESP32-C5全面進(jìn)入量產(chǎn)

    樂鑫信息科技 (688018.SH) 宣布,ESP32-C5 現(xiàn)已全面進(jìn)入量產(chǎn)。
    的頭像 發(fā)表于 05-06 16:50 ?600次閱讀

    樂鑫ESP32-C5全面進(jìn)入量產(chǎn)!啟明云端樂鑫科技代理商

    樂鑫信息科技(688018.SH)宣布,ESP32-C5現(xiàn)已全面進(jìn)入量產(chǎn)。作為行業(yè)首款2.4&5GHz雙頻Wi-Fi6的RISC-VSoC,ESP32-C5同時集成Bluetooth5(LE
    的頭像 發(fā)表于 04-30 18:10 ?422次閱讀
    樂鑫<b class='flag-5'>ESP32</b>-C5全面進(jìn)入量產(chǎn)!啟明云端樂鑫科技代理商

    ESP32運(yùn)行網(wǎng)頁服務(wù)器 (Web-Server)-入門篇

    什么是ESP32WebServer?ESP32WebServer是在ESP32微控制器上運(yùn)行的一個嵌入式網(wǎng)頁服務(wù)器。它能夠處理HTTP請求并作出響應(yīng),使用戶可以通過網(wǎng)絡(luò)瀏覽器與設(shè)備進(jìn)行通訊和交互
    的頭像 發(fā)表于 03-09 14:24 ?4305次閱讀
    <b class='flag-5'>ESP32</b>運(yùn)行網(wǎng)頁服務(wù)器 (Web-Server)-入門篇

    STM32和ESP32應(yīng)該學(xué)哪個

    STM32 和 ESP32,哪個更適合我們學(xué)習(xí)? 這兩個雖然都是單片機(jī),但是各自的應(yīng)用領(lǐng)域不一樣,不存在誰取代誰的關(guān)系。 STM32 歷史悠久,產(chǎn)品線非常的豐富,應(yīng)用領(lǐng)域涉及醫(yī)療、汽車、工業(yè)自動化
    的頭像 發(fā)表于 02-18 09:52 ?695次閱讀

    esp32如何接入豆包

    要在 ESP32 上接入豆包工具,本質(zhì)上是讓 ESP32 設(shè)備與豆包的 API 進(jìn)行通信,以獲取相關(guān)服務(wù)
    的頭像 發(fā)表于 02-05 13:40 ?1974次閱讀
    <b class='flag-5'>esp32</b>如何接入豆包

    【AI技術(shù)支持】ESP32-S3外掛FLASH不能設(shè)置為80MHz問題處理

    問題描述在掃地機(jī)產(chǎn)品上使用ESP32-S3芯片/模組,ESP-IDF版本為idf5.x時,客戶在spi2上用外掛flash設(shè)置40mhz的時候sck有波形,但是80mhz的時候沒有波形,報(bào)錯提示
    的頭像 發(fā)表于 12-10 01:00 ?1397次閱讀
    【AI技術(shù)支持】<b class='flag-5'>ESP32</b>-S3外掛FLASH不能<b class='flag-5'>設(shè)置</b>為80MHz問題處理

    ESP32-S3-WROOM-1/ESP32-S3-WROOM-1U技術(shù)規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《ESP32-S3-WROOM-1/ESP32-S3-WROOM-1U技術(shù)規(guī)格書.pdf》資料免費(fèi)下載
    發(fā)表于 12-07 15:30 ?11次下載

    【代碼分享】基于樂鑫ESP32的串口不定長數(shù)據(jù)接收方法

    【代碼分享】基于樂鑫ESP32的串口不定長數(shù)據(jù)接收方法
    的頭像 發(fā)表于 11-15 01:02 ?1453次閱讀
    【代碼分享】基于樂鑫<b class='flag-5'>ESP32</b>的串口不定長數(shù)據(jù)接收方法

    基于ESP32-C3FN4為核心自主研發(fā)的Wi-Fi+BT模塊-RF-WM-ESP32B1

    WI-FI模組 - RF-WM-ESP32B1是基于ESP32-C3FN4為核心自主研發(fā)的Wi-Fi+BT模塊,支持IEEE 802.11b/g/n (2.4 GHz Wi-Fi)和低功耗藍(lán)牙5.0,可廣泛用于各種消費(fèi)類電子、手機(jī)外設(shè)產(chǎn)品等。
    的頭像 發(fā)表于 11-07 09:45 ?661次閱讀
    基于<b class='flag-5'>ESP32</b>-C3FN4為核心自主研發(fā)的Wi-Fi+BT模塊-RF-WM-<b class='flag-5'>ESP32</b>B1

    【AI技術(shù)支持】ESP32模組PSRAM的CS引腳上拉導(dǎo)致功耗上升處理

    啟明云端/01你是否曾遇到過?在游戲機(jī)產(chǎn)品上,使用ESP32-WROOM-32E/ESP32-WROOM-32UE模組,ESP-IDF版本為IDFv5.1.1時,根據(jù)外圍設(shè)計(jì)原理圖介紹,在模組內(nèi)置
    的頭像 發(fā)表于 10-31 08:01 ?2206次閱讀
    【AI技術(shù)支持】<b class='flag-5'>ESP32</b>模組PSRAM的CS引腳上拉導(dǎo)致功耗上升處理

    esp32上使用chatGPT做一些有意思的事情

    將ChatGPT與ESP32進(jìn)行結(jié)合,可以在物聯(lián)網(wǎng)應(yīng)用方面做出更有意思的事情,如聊天機(jī)器人、語音助手和自然語言界面。下面,我將在ESP32中使用ChatGPT API。為了讓ESP32
    的頭像 發(fā)表于 10-18 10:04 ?1068次閱讀

    ESP32 微控制器系列指南

    2024-05-29 Don Wilcher [微控制器] ESP32 微控制器已成為物聯(lián)網(wǎng) (IoT) 和嵌入式控制器領(lǐng)域的核心部分。 ESP32 生態(tài)系統(tǒng)的制造商 Espressif
    的頭像 發(fā)表于 10-02 18:21 ?5045次閱讀
    <b class='flag-5'>ESP32</b> 微控制器系列指南

    esp32esp8266代碼共用嗎

    本文將介紹ESP32ESP8266兩款流行的微控制器在代碼共用性方面的可能性與差異性。 一、引言 隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,越來越多的智能設(shè)備開始進(jìn)入我們的生活。其中,ESP32ESP
    的頭像 發(fā)表于 08-19 18:23 ?2344次閱讀

    esp8266和esp32區(qū)別是什么

    以下是關(guān)于ESP8266和ESP32的主要區(qū)別: 處理器和架構(gòu) : ESP8266 :使用一個Tensilica L106 80MHz的處理器,屬于Xtensa架構(gòu)。 ESP32 :使
    的頭像 發(fā)表于 08-19 18:16 ?7346次閱讀

    esp32用什么軟件編程

    ESP32是一款由樂鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍(lán)牙雙模微控制器,廣泛應(yīng)用于物聯(lián)網(wǎng)、智能家居、智能穿戴等領(lǐng)域。要對ESP32進(jìn)行編程,需要選擇合適的編程軟件和開發(fā)環(huán)境
    的頭像 發(fā)表于 08-19 17:24 ?6986次閱讀