毕业设计 单片机农业土壤酸度检测系统
文章目錄
- 0 前言
- 1 簡介
- 2 主要器件
- 3 實現效果
- 4 硬件設計
- 土壤酸堿度傳感器
- 土壤pH傳感器與Arduino的硬件連接
- 5 軟件說明
- 土壤pH傳感器的Arduino代碼
- 6 最后
0 前言
🔥 這兩年開始畢業設計和畢業答辯的要求和難度不斷提升,傳統的畢設題目缺少創新和亮點,往往達不到畢業答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統達不到老師的要求。
為了大家能夠順利以及最少的精力通過畢設,學長分享優質畢業設計項目,今天要分享的是
🚩 畢業設計 單片機農業土壤酸度檢測系統
🥇學長這里給一個題目綜合評分(每項滿分5分)
- 難度系數:3分
- 工作量:3分
- 創新點:3分
🧿 選題指導, 項目分享:
https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md
1 簡介
本項目使用土壤酸堿度傳感器(pH Sensor)和Arduino開發板制作自己的土壤酸度計,用于測量土壤的pH值。土壤可以是天然酸性或堿性的,可以通過測試其pH值來測量。土壤pH值是衡量土壤酸度或堿度的指標。
除了土壤pH值外,土壤中的氮、磷、鉀、EC和鹽度含量也對植物生長有用。對于NPK含量的測量,我們可以使用NPK Sensor。對于土壤電導率(EC)和鹽度測量,我們可以使用土壤EC傳感器,但與土壤NPK相比,土壤pH值是完全不同的因素。
在這文中,我們將了解土壤酸度傳感器和Arduino的連接方法,并設計一款簡易的Arduino土壤酸度計,并在0.96寸OLED顯示屏上顯示土壤pH值。
2 主要器件
- Arduino Nano開發板
- HONDETEC土壤pH傳感器
- 0.96寸I2C OLED顯示屏
- MAX485 Modbus模塊
- 5V - 30V直流電源
- 連接跳線
- 面包板
3 實現效果
傳感器穩定下來,就可以開始測試了。傳感器暴露在空氣中時的Ph值為7.0,可以在OLED顯示屏上觀察到
另外,將傳感器放入不同的土壤樣本中。您會看到pH值的變化取決于土壤的類型。 該值像模擬土壤酸度傳感器一樣增加或減少,也可以用作物聯網土壤酸度傳感器。
4 硬件設計
土壤酸堿度傳感器
這是一款防水防塵的土壤pH傳感器,可以測量從3到9的土壤pH值,精度高達±0.3PH。傳感器具有IP68保護殼,采用高密度環氧樹脂密封,可防止水分進入機身內部。該傳感器適用于農業種植、工業生產、環境監測、畜牧業和污水處理。
土壤pH傳感器有4個引腳,因為它需要連接到RS485模塊。四種顏色的電線是黃色、藍色、黑色和棕色。
該模塊使用的通信協議是Modbus。設備作為從機設備工作,設備地址如下所示。您可以發送該指令或查詢幀并讀取設備地址0x01處的土壤pH。
您將獲得如下響應幀。從響應幀中,您可以計算pH值。
根據收到的響應幀數據,您可以計算pH值。第4位(從第0 開始)是pH值。假設我們得到的是0047H(十六進制)= 71 十進制 => pH = 7.1pH
土壤pH傳感器與Arduino的硬件連接
現在,讓我們使用MAX485 Modbus模塊將土壤pH傳感器與Arduino Nano開發板連接起來。連接圖如下。
Modbus的RO和DI引腳使用軟件串口連接到Arduino的D2和D3。同樣,我們必須設置D?E和RE高電平,因此將它們連接到Arduino的D7和D8引腳。pH傳感器有4根電線。棕色的是 VCC,需要一個5V-30V的電源,可以連接到Arduino的5V。黑色線的GND引腳需要連接到Arduino的GND。B 腳藍線連接到MAX485的B腳,黃線A腳連接到MAX485的A腳。
0.96寸SSD1306 OLED顯示屏是I2C模塊。OLED顯示屏的VCC和GND分別連接到Arduino的3.3V和GND。另外,將它的SDA和SCL引腳連接到Arduino的A4和A5。按照電路圖在面包板上組裝電路。
5 軟件說明
土壤pH傳感器的Arduino代碼
下面給出的代碼用于將土壤pH傳感器與Arduino連接并通過Modbus命令從傳感器中檢索土壤pH值。您可以發送命令并檢索代碼中的HEX值。需要將十六進制代碼轉換為十進制才能獲得測量的土壤pH值數據。
由于我們使用OLED顯示屏進行顯示,因此需要OLED庫。下載以下OLED庫并將其添加到Arduino IDE。
Adafruit SSD1306庫
Adafruit GFX庫
以下是完整的源代碼。編譯并上傳到Arduino Nano開發板
#include <SoftwareSerial.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>#define RE 8 #define DE 7const byte ph[] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x01, 0x84, 0x0A}; byte values[11]; SoftwareSerial mod(2, 3);#define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);void setup() {Serial.begin(9600);mod.begin(4800);pinMode(RE, OUTPUT);pinMode(DE, OUTPUT);if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)){Serial.println(F("SSD1306 allocation failed"));for (;;); // Don't proceed, loop forever}display.display();delay(100);display.clearDisplay();display.clearDisplay();display.setTextColor(WHITE);display.setTextSize(2);display.setCursor(20, 20);display.print("PH Meter");display.display();delay(3000); }void loop() {byte val;digitalWrite(DE, HIGH);digitalWrite(RE, HIGH);delay(10);if (mod.write(ph, sizeof(ph)) == 8){digitalWrite(DE, LOW);digitalWrite(RE, LOW);for (byte i = 0; i < 11; i++){values[i] = mod.read();Serial.print(values[i], HEX);}Serial.println();}float soil_ph = float(values[4]) / 10;Serial.print("Soil Ph: ");Serial.println(soil_ph, 1);display.clearDisplay();display.setTextSize(2);display.setCursor(20,0);display.println("Ph Value");display.setTextSize(3);display.setCursor(35,30);display.print(soil_ph, 1);display.display();delay(3000); }6 最后
總結
以上是生活随笔為你收集整理的毕业设计 单片机农业土壤酸度检测系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决this application f
- 下一篇: 手机访客更方便刷脸开闸更快捷