版權(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ù)隊(duì)列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ā)送到隊(duì)列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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年長春師范高等??茖W(xué)校單招職業(yè)技能考試備考題庫含詳細(xì)答案解析
- 2026年河南物流職業(yè)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年黑龍江能源職業(yè)學(xué)院單招綜合素質(zhì)考試備考試題含詳細(xì)答案解析
- 2026年湖南高爾夫旅游職業(yè)學(xué)院單招職業(yè)技能考試備考題庫含詳細(xì)答案解析
- 2026年云南經(jīng)濟(jì)管理學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年南寧學(xué)院單招綜合素質(zhì)考試備考試題含詳細(xì)答案解析
- 2026年韶關(guān)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年廣東碧桂園職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細(xì)解析
- 2026年廣東農(nóng)工商職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試參考題庫含詳細(xì)答案解析
- 2026年北京社會管理職業(yè)學(xué)院單招綜合素質(zhì)筆試模擬試題含詳細(xì)答案解析
- 新工會考試試題題庫工會考試試題題庫及答案解析
- 企業(yè)用車制度規(guī)范標(biāo)準(zhǔn)
- 2025-2030中國道路標(biāo)志漆市場運(yùn)營態(tài)勢分析與全面深度解析研究報告
- 電力網(wǎng)絡(luò)安全培訓(xùn)教學(xué)課件
- 網(wǎng)絡(luò)布線施工技術(shù)要求
- 上海市徐匯區(qū)上海中學(xué)2025-2026學(xué)年高三上學(xué)期期中考試英語試題(含答案)
- 2026年關(guān)于春節(jié)放假通知模板9篇
- 初三畢業(yè)班寒假家長會課件
- 電站組件清洗措施及方案
- 冀教版五年級英語下冊全冊同步練習(xí)一課一練
- 城鎮(zhèn)土地估價規(guī)程
評論
0/150
提交評論