版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
附錄#include<DHT.h>#include<BluetoothSerial.h>#include<WiFi.h>#include<PubSubClient.h>#include<MFRC522.h>#include<Adafruit_SSD1306.h>#include<Wire.h>#include<esp_sleep.h>#include<freertos/FreeRTOS.h>#include<freertos/task.h>#include<freertos/queue.h>//======硬件配置======#defineDHTPIN4//溫濕度傳感器#defineDHTTYPEDHT11#defineUV_PIN23//紫外線燈#defineFAN_PIN22//通風(fēng)電機(jī)#defineLED_PIN2//狀態(tài)燈#defineRFID_SS_PIN21//RFID模塊SS#defineRFID_RST_PIN5//RFID模塊RST#defineOLED_SDA18//OLEDI2CSDA#defineOLED_SCL19//OLEDI2CSCL//======網(wǎng)絡(luò)配置======#defineWIFI_SSID"YourWiFi"#defineWIFI_PASS"YourPassword"#defineMQTT_SERVER""#defineMQTT_PORT1883#defineMQTT_USER"wardrobe"#defineMQTT_PASS"your_mqtt_key"http://======全局對象======DHTdht(DHTPIN,DHTTYPE);BluetoothSerialSerialBT;WiFiClientespClient;PubSubClientmqtt(espClient);MFRC522rfid(RFID_SS_PIN,RFID_RST_PIN);Adafruit_SSD1306oled(128,64,&Wire);QueueHandle_tdataQueue;//======FreeRTOS任務(wù)句柄======TaskHandle_tSensorTask;TaskHandle_tDisplayTask;TaskHandle_tNetworkTask;//======數(shù)據(jù)結(jié)構(gòu)======structEnvData{floattemp;floathumi;StringrfidTag;};//======初始化設(shè)置======voidsetup(){Serial.begin(115200);//硬件初始化initSensors();initOLED();initWiFi();initMQTT();//創(chuàng)建FreeRTOS任務(wù)xTaskCreatePinnedToCore(taskSensor,//任務(wù)函數(shù)"SensorTask",//任務(wù)名稱4096,//堆棧大小NULL,//參數(shù)3,//優(yōu)先級&SensorTask,//任務(wù)句柄0//核心0);xTaskCreatePinnedToCore(taskDisplay,"DisplayTask",2048,NULL,2,&DisplayTask,0);xTaskCreatePinnedToCore(taskNetwork,"NetworkTask",4096,NULL,1,&NetworkTask,0);//創(chuàng)建數(shù)據(jù)隊列dataQueue=xQueueCreate(10,sizeof(EnvData));}//======FreeRTOS任務(wù)函數(shù)======voidtaskSensor(void*pvParam){EnvDatadata;while(1){//讀取傳感器數(shù)據(jù)data.temp=dht.readTemperature();data.humi=dht.readHumidity();data.rfidTag=readRFID();//發(fā)送到隊列xQueueSend(dataQueue,&data,portMAX_DELAY);//環(huán)境控制邏輯autoControlEnvironment(data.humi);vTaskDelay(2000/portTICK_PERIOD_MS);}}voidtaskDisplay(void*pvParam){EnvDatadata;while(1){if(xQueueReceive(dataQueue,&data,portMAX_DELAY)){updateOLED(data.temp,data.humi,data.rfidTag);}vTaskDelay(500/portTICK_PERIOD_MS);}}voidtaskNetwork(void*pvParam){EnvDatadata;while(1){if(xQueueReceive(dataQueue,&data,1000/portTICK_PERIOD_MS)){sendToCloud(data.temp,data.humi);}mqtt.loop();vTaskDelay(1000/portTICK_PERIOD_MS);}}//======硬件初始化函數(shù)======voidinitSensors(){dht.begin();pinMode(UV_PIN,OUTPUT);pinMode(FAN_PIN,OUTPUT);//RFID初始化SPI.begin();rfid.PCD_Init();}voidinitOLED(){Wire.begin(OLED_SDA,OLED_SCL);oled.begin(SSD1306_SWITCHCAPVCC,0x3C);oled.clearDisplay();oled.setTextSize(1);oled.setTextColor(WHITE);}voidinitWiFi(){WiFi.begin(WIFI_SSID,WIFI_PASS);while(WiFi.status()!=WL_CONNECTED){delay(500);Serial.print(".");}Serial.println("\nWiFi已連接");}voidinitMQTT(){mqtt.setServer(MQTT_SERVER,MQTT_PORT);while(!mqtt.connect("Wardrobe",MQTT_USER,MQTT_PASS)){delay(1000);}Serial.println("MQTT已連接");}//======功能函數(shù)======StringreadRFID(){if(!rfid.PICC_IsNewCardPresent())return"";if(!rfid.PICC_ReadCardSerial())return"";Stringtag="";for(bytei=0;i<rfid.uid.size;i++){tag+=String(rfid.uid.uidByte[i],HEX);}rfid.PICC_HaltA();returntag;}voidautoControlEnvironment(floathumidity){digitalWrite(FAN_PIN,(humidity>65)?HIGH:LOW);}voidupdateOLED(floattemp,floathumi,Stringtag){oled.clearDisplay();oled.setCursor(0,0);oled.printf("Temp:%.1fC\nHumi:%.1f%%",temp,humi);oled.setCursor(0,40);oled.print("RFID:");oled.print(tag.substring(0,8));oled.display();}voidsendToCloud(floattemp,floathumi){Stringpayload=String("{\"temp\":")+temp+",\"humi\":"+humi+"}";mqtt.publish("wardrobe/data",pay
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 脫酚工崗前基礎(chǔ)操作考核試卷含答案
- 通信設(shè)備組調(diào)工崗前工作質(zhì)量考核試卷含答案
- 表面(化學(xué))熱處理工操作知識水平考核試卷含答案
- 考古勘探工班組評比能力考核試卷含答案
- 加工合同增補(bǔ)協(xié)議
- 新房接盤合同范本
- 車貸加盟協(xié)議合同
- 銅雕采購合同范本
- 路燈照明合同范本
- 承包殺鴨合同范本
- 臨沂市高三年級教學(xué)質(zhì)量檢測考試語文參考答案及評分標(biāo)準(zhǔn)
- 醫(yī)療器械(耗材)項目售后服務(wù)能力及方案
- 中國青瓷藝術(shù)鑒賞智慧樹知到期末考試答案章節(jié)答案2024年麗水學(xué)院
- (完整)初二數(shù)學(xué)(上)期末易錯題、難題培優(yōu)復(fù)習(xí)精心整
- 高壓斷路器和隔離開關(guān)的原理與選擇
- 玻璃纖維拉絲工藝
- 新生兒護(hù)士述職報告
- 2024年員工激勵與認(rèn)可培訓(xùn)資料
- 幼兒園幼兒教育課件跳動的心臟
- 新生兒血栓的預(yù)防及護(hù)理
- 光伏工程光伏場區(qū)箱式變壓器安裝方案
評論
0/150
提交評論