色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

如何將此ESP32 LORA模塊用作發送方和接收方

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-11-14 17:14 ? 次閱讀

步驟1:操作(數據傳輸)

這是裝配體工作原理圖。

步驟2:使用的資源

2 ESP32 LORA OLED顯示屏

1 Arduino Nano ATmega328

1 Arduino以太網模塊ENC28J60

1氣體傳感器模塊MQ2

1濕度和溫度傳感器DHT22( AM2302)

2330歐姆電阻

1 4k7歐姆電阻

1蜂鳴器5V

1個綠色LED

1紅色LED

跳線

步驟3:功能-發送方

1 ESP32 LORA Display

1氣體傳感器模塊MQ2

1濕度和溫度傳感器DHT22(AM2302)

1個4k7歐姆電阻器

跳線

第4步:使用的功能-接收器

1個ESP32 LORA OLED顯示屏

1個Arduino Nano ATmega328

1個用于Arduino的以太網模塊ENC28J60

2330 ohm r電阻器

1個蜂鳴器5V

1個綠色LED

1個紅色LED

跳線

步驟5:MQ-2氣體傳感器靈敏度

傳感器的電阻(Rs/Ro)根據現有的氣體濃度(ppm)更高或更低。此濃度可以通過引腳A0的輸出來顯示。

MQ-2氣體傳感器對氣體具有高靈敏度:

?LPG(液化石油氣);

?丙烷(C3H8);

?氫氣(H2);

?甲烷(CH4);

?燃料氣體,例如丙烷, CO,酒精和丁烷(用于打火機)。

步驟6:發送器安裝--- Pinout ESP32 LORA OLED

步驟7 :發送器電路

步驟8:發送器安裝

步驟9:安裝接收器---引腳排列Arduino Nano ATmega328

步驟10:接收器電路

步驟11:接收器安裝

綠色LED指示Arduino已連接到以太網客戶端。

紅色LED指示已發送SMS。

發送SMS時,Arduino已斷開連接,因此不再發送任何消息。

步驟12:DHT庫安裝

1。轉到草圖-》包含庫-》庫管理器。

2。搜索SimpleDHT,然后單擊“安裝”。

步驟13:發件人-代碼的組織

設置 》

循環

-readDhtSensor:負責讀取傳感器和獲取溫度和濕度值。

-gasDetected:負責讀取傳感器并驗證是否已檢測到氣體的功能。

-sendPacket:負責通過LORA發送包裹的功能

-showDisplay:負責顯示在顯示屏上獲得的消息和值的功能。

步驟14:發件人代碼[包含和定義]

首先,我們將包含定義引腳的庫。

#include //serial peripheral interface (SPI) library

#include //wifi lora library

#include //communication i2c library

#include “SSD1306.h” //display communication library

#include //dht communication library

//Descomment the line below which dht sensor type are you using

//#define DHTTYPE DHT11 // DHT 11

//#define DHTTYPE DHT21 // DHT 21 (AM2301)

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

我們將處理

// DHT Sensor

const int DHTPin = 23;

int analog_value; //variable used to receive the analog signal from sensor (from 100 to 10000)

int dig_value; //variable used to receive the digital signal from sensor

int gas_limit = 0; //used to indicates the minimum value to active the gas sensor (that value changes as the sensor screw is adjusted)

//h = humidity; c = Celsius temperature

float h, c;

String packSize; //variable used to receive the size of package converted in string

String packet = “OK”; //part of packet, that informs the status of sensor. That variable will be concatenate with the string “values”

String values = “|-|-”; //humidity and temperature values, separated by pipe

//parameters: address,SDA,SCL

SSD1306 display(0x3c, 4, 15); //display object

SimpleDHT22 dht22;

// Pins definition

#define SCK 5 // GPIO5 -- SX127x‘s SCK

#define MISO 19 // GPIO19 -- SX127x’s MISO

#define MOSI 27 // GPIO27 -- SX127x‘s MOSI

#define SS 18 // GPIO18 -- SX127x’s CS

#define RST 14 // GPIO14 -- SX127x‘s RESET

#define DI00 26 // GPIO26 -- SX127x’s IRQ(Interrupt Request)

#define MQ_analog 12 //analog gas sensor pin

#define MQ_dig 13 //digital gas sensor pin

#define BAND 433E6 //Radio frequency, we can still use: 433E6, 868E6, 915E6

步驟15:發送方除了定義氣體傳感器的最小觸發值外,還帶有用于接收模擬數字信號的變量的傳感器。代碼[設置]

在設置中,我們將首先配置引腳和顯示。

void setup()

{

//set the humidity and temperature values with zero

h = c = 0;

//initialize the Serial with 9600b per second

Serial.begin(9600);

//configures analog pin as input

pinMode(MQ_analog, INPUT);

//configures digital pin as input

pinMode(MQ_dig, INPUT);

//configures oled pins as output

pinMode(16,OUTPUT);

//reset oled

digitalWrite(16, LOW);

//wait 50ms

delay(50);

//while the oled is on, GPIO16 must be HIGH

digitalWrite(16, HIGH);

//initializes the display

display.init();

//flip vertically the display

display.flipScreenVertically();

接下來,我們將在顯示屏上定義打印特性,并開始與LORA進行串行通信。然后,我們將繼續進行配置。

//set display font

display.setFont(ArialMT_Plain_10);

//wait 1500ms

delay(1500);

//clear the display

display.clear();

//initializes serial interface

SPI.begin(SCK,MISO,MOSI,SS);

//set Lora pins

LoRa.setPins(SS,RST,DI00);

//initializes the lora, seting the radio frequency

if (!LoRa.begin(BAND))

{

//draw in the position 0,0 the message in between quotation marks

display.drawString(0, 0, “Starting LoRa failed!”);

//turns on the LCD display

display.display();

//do nothing forever

while (true);

}

}

步驟16:發件人代碼[循環]

在循環中,我們還使用顯示器的特性,并指示讀取傳感器的步驟以及LORA的氣體檢測和警報發送的方法。

void loop()

{

//clear the display

display.clear();

//set the text alignment to left

display.setTextAlignment(TEXT_ALIGN_LEFT);

//sets the text font

display.setFont(ArialMT_Plain_16);

//draw in the position 0,0 the message in between quotation marks

display.drawString(0, 0, “Running.。.”);

//reads temperature sensor values

readDhtSensor();

//it concatenates on string the humidity and temperature values separated by pipe

values=“|”+String(h)+“|”+String(c);

//if the digital signal of sensor is lower, it means gas detected (inverse logic

if(gasDetected())

{

//sets the value of the packet string to “ALARM

packet = “ALARM”;

//it concatenates the packet with the values

packet+=values;

//sends package by LoRa

sendPacket();

//shows display, true = gas detected

showDisplay(true);

}

我們定義了將通過SMS發送的信息

else

{

//sets the value of the packet string to “OK”

packet = “OK”;

//it concatenates the packet with the values

packet+=values;

//sends package by LoRa

sendPacket();

//shows display, false = no gas detected

showDisplay(false);

}

//waits 250ms

delay(250);

}

步驟17:發件人代碼[showDisplay]

同樣,我們處理LORA顯示屏上的數據顯示。

void showDisplay(bool gasDetected)

{

//clear the display

display.clear();

//set the text alignment to left

display.setTextAlignment(TEXT_ALIGN_LEFT);

//sets the text font

display.setFont(ArialMT_Plain_16);

//draw in the position 0,0 the message in between quotation marks

display.drawString(0, 0, “Running.。.”);

//if flag = true

if(gasDetected)

{

//draw in the position 0,20 the message in between quotation marks

display.drawString(0, 20, “Status: ALARM”);

//draw in the position 0,40 the message in between quotation marks

display.drawString(0, 40, “Gas detected!”);

//turns on the LCD display

display.display();

}

else

{

//draw in the position 0,20 the message in between quotation marks

display.drawString(0, 20, “Status: OK”);

//draw in the position 0,40 the message in between quotation marks

display.drawString(0, 40, “H: ”+String(h)+“ T: ”+String(c)+“°”);

//turns on the LCD display

display.display();

}

}

步驟18:發件人代碼[gasDetected]

在這里,如果傳感器檢測到某種類型的氣體泄漏,我們具有觸發消息的功能。

bool gasDetected()

{

//reads the analog value of the sensor

analog_value = analogRead(MQ_analog);

//reads the digital value of the sensor

dig_value = digitalRead(MQ_dig);

//obs: the serial views in this code do not influence the operation of the prototype

//shows value to the serial

Serial.print(analog_value);

//shows tab “||” to the serial

Serial.print(“ || ”);

//inverse logic

if(dig_value == 0)

{

//sets the minimum analog value

if(gas_limit == 0 || gas_limit 》 analog_value)

gas_limit = analog_value;

//shows ‘gas detected’ to the serial

Serial.println(“GAS DETECTED !!!”);

//shows the minimum gas limit to the serial

Serial.println(“Gas limit: ”+String(gas_limit));

//gas detected

return true;

}

else

{

//shows ‘no gas detected’ to the serial

Serial.println(“No gas detected.。.”);

//if first time, shows ‘X’ to the serial

if(gas_limit == 0)

Serial.println(“Gas limit: X”);

else //shows gas limit to the serial

Serial.println(“Gas limit: ”+String(gas_limit));

//no gas detected

return false;

}

}

第19步:發送方代碼[readDhtSensor]

void readDhtSensor()

{

// declaration of variables that will receive the new temperature and humidity

float novoC, novoH;

//waits 250ms

delay(250);

//set dht22 sensor values tovariables &novoC and &novoH

int err = dht22.read2(DHTPin, &novoC, &novoH, NULL);

//checks for an error

if (err != SimpleDHTErrSuccess)

{

//shows error in the serial

Serial.print(“Read DHT22 failed, err=”);

Serial.println(err);

return;

}

//if no error

//sets the variable values

c = novoC;

h = novoH;

//shows values in the serial

Serial.print((float)c); Serial.println(“ *C ”);

Serial.print((float)h); Serial.println(“ H”);

//waits 250ms

delay(250);

}

第20步:發送方代碼[sendPacket]

最后,我們打開了一個程序包,以添加用于SMS發送的數據。

void sendPacket()

{

//starts a connection to write UDP data

LoRa.beginPacket();

//send packet

LoRa.print(packet);

//returns an int: 1 if the packet was sent successfully, 0 if there was an error

LoRa.endPacket();

}
責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2550

    文章

    51035

    瀏覽量

    753083
  • 蜂鳴器
    +關注

    關注

    12

    文章

    891

    瀏覽量

    45919
  • ESP32
    +關注

    關注

    18

    文章

    971

    瀏覽量

    17203
收藏 人收藏

    評論

    相關推薦

    【代碼分享】基于樂鑫ESP32的串口不定長數據接收方

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

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

    WI-FI模組 - RF-WM-ESP32B1是基于ESP32-C3FN4為核心自主研發的Wi-Fi+BT模塊,支持IEEE 802.11b/g/n (2.4 GHz Wi-Fi)和低功耗藍牙5.0,可廣泛用于各種消費類電子、手
    的頭像 發表于 11-07 09:45 ?218次閱讀
    基于<b class='flag-5'>ESP32</b>-C3FN4為核心自主研發的Wi-Fi+BT<b class='flag-5'>模塊</b>-RF-WM-<b class='flag-5'>ESP32</b>B1

    【AI技術支持】ESP32模組PSRAM的CS引腳上拉導致功耗上升處理

    esp32芯片類型使用了QSPIPSRAM的情況下,IO16引腳必須接上拉電阻10K且不能用作其他功能。在這個設計下,外部psram啟用時,psram的cs是輸出低
    的頭像 發表于 10-31 08:01 ?349次閱讀
    【AI技術支持】<b class='flag-5'>ESP32</b>模組PSRAM的CS引腳上拉導致功耗上升處理

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

    對OpenAI API的請求。 4、使用HTTP請求向OpenAI API發送文本輸入,接收JSON格式的響應。 5、解析響應并使用它來控制ESP32微控制器
    的頭像 發表于 10-18 10:04 ?401次閱讀

    esp8266和esp32區別是什么

    以下是關于ESP8266和ESP32的主要區別: 處理器和架構 : ESP8266 :使用一個Tensilica L106 80MHz的處理器,屬于Xtensa架構。 ESP32 :使
    的頭像 發表于 08-19 18:16 ?5249次閱讀

    esp32用什么軟件編程

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

    如何將ESP8266-01模塊用作物理層設備?

    嗨,大家好。我想將 ESP8266-01 模塊用作物理層設備,就像射頻發射器和接收器一樣。 一個模塊
    發表于 07-19 12:18

    ESP32-WROOM-32E、ESP32-WROOM-32D、ESP32-WROOM-32U 有什么區別?ESP32-WROOM-32 后綴字母代表的意思是?

    相信很多人心里都有這樣的疑問,今天就教大家怎么區分它們。 32D和32U是同一個芯片ESP32-D0WD的模組,主要區別的天線模式,分別是板載和IPEX外接天線。 32E是用的升級版的芯片
    的頭像 發表于 07-17 10:09 ?9399次閱讀
    <b class='flag-5'>ESP32</b>-WROOM-32E、<b class='flag-5'>ESP32</b>-WROOM-32D、<b class='flag-5'>ESP32</b>-WROOM-32U  有什么區別?<b class='flag-5'>ESP32</b>-WROOM-32 后綴字母代表的意思是?

    如何將AP憑據從移動設備發送ESP模塊

    設備發送ESP 模塊?我是否需要從移動設備執行 UDP 廣播,如果是這樣,那么我需要傳輸到模塊的數據的格式/結構是什么?
    發表于 07-12 15:33

    請問esp-now的安全模型是什么?

    嘗試使用 esp-now 開發一些東西。 似乎,發送者和接收者在通信之前無法就一些共同的秘密達成一致。只要發送方知道接收方的MAC地址,
    發表于 07-10 06:48

    ESP32能取代STM32嗎?哪個更好?

    不能!首先二者不存在哪個更好的問題,因為這兩個芯片使用場景各不相同,在嵌入式系統領域,ESP32和STM32都是常見的單片機系列,它們各自具有一定的優勢和適用場景。本文主要探討ESP32是否能夠取代
    的頭像 發表于 07-06 08:04 ?1.1w次閱讀
    <b class='flag-5'>ESP32</b>能取代STM32嗎?哪個更好?

    ESP32-AT開啟經典藍牙作為藍牙模塊,和MCU連接發送AT之后,返回值沒有OK是怎么回事?

    )。。。。。。。。。。手機藍牙; 我將ESP32當作藍牙模塊,將51單片機的串口連接ESP32的TX2和RX2,用51單片機的串口發送字符串函數,給
    發表于 06-27 07:17

    如何將ESP32端AT串口接收改為DMA方式?

    如題,當前有此需求要將ESP32端AT串口接收改為DMA方式,從而減小MCU端負荷。 芯片: ESP32-PICO-D4 ESP-AT: release/v2.1.0.0_
    發表于 06-27 07:06

    ESP32藍牙發送的數據,手機接收不全怎么解決?

    請教一個問題 原來使用的是V3.5,ESP32作為藍牙服務端 ,手機APP作為藍牙客戶端,一直沒有問題。 最近更新到了V4.4上,功能一樣,手機APP向ESP32請求數據,如果數據量大的話就會收不全
    發表于 06-18 06:39

    如何將CYKIT-028 TFT模塊與Raspberry Pi和ESP32微控制器結合使用?

    我目前正在探索如何將 CYKIT-028 TFT 模塊與 Raspberry Pi 和 ESP32 微控制器結合使用。 不過,在選擇集成開發環境(IDE)和使用 PSOC Creator 的必要性
    發表于 05-21 07:36
    主站蜘蛛池模板: 亚洲 自拍 欧洲 视频二区| MMM日本兽交| 欧美视频 亚洲视频| 国产精品成人A蜜柚在线观看| 在线免费看a| 我要色色网| 男女夜晚在爽视频免费观看| 精品国产90后在线观看| 调教玩弄奶头乳夹开乳震动器| 最新国产三级在线不卡视频| 一品探花论坛| 乌克兰黄色录像| 亚洲三级在线中文字幕| 玩弄朋友娇妻呻吟交换电影| 亚洲国产精品无码AV久久久| 天天操天天干天天透| 全彩无翼污之邪恶女教师| 伦理79电影网在线观看| 好好的曰com久久| 国产午夜精品福利久久| 第一次处破女完整版电影| 国产午夜电影在线观看不卡| 久久免费黄色| 久久免费大片| 日韩免费一区| 人人干人人看| 亚洲 视频 在线 国产 精品 | 欧美18videosex初次| 老熟女重囗味HDXX| 日本湿姝在线观看| 日本xxxx69动漫| 亚洲欧美国产视频| 扒开 浓密 毛| 大学生第一次破女在线观看| 果冻传媒MV免费播放在线观看| 国产精品爽爽久久久久久蜜桃网站| 国产99视频在线观看| 国产精品色无码AV在线观看| 久久免费黄色| 翁熄性放纵交换01| 97视频久久|