STM32 steuert GY-39 zur Überwachung von Umgebungstemperatur, Luftfeuchtigkeit, Luftdruck und Lichtintensität

Moduleinführung

GY-39 ist ein kostengünstiges Sensormodul für Luftdruck, Temperatur, Luftfeuchtigkeit und Lichtintensität. Die Arbeitsspannung beträgt 3–5 V, geringer Stromverbrauch und einfach zu installieren.
Sein Funktionsprinzip besteht darin, dass die MCU verschiedene Sensordaten sammelt, sie einheitlich verarbeitet und die berechneten Ergebnisse direkt ausgibt. Dieses Modul verfügt über zwei Möglichkeiten zum Lesen von Daten, nämlich über die serielle Schnittstelle UART (TTL-Pegel) oder IIC (2 Drähte). Die Baudrate der seriellen Schnittstelle beträgt 9600 Bit/s und 115200 Bit/s. Sie ist konfigurierbar und verfügt über zwei Modi: kontinuierliche Ausgabe und Abfrageausgabe. Die Einstellungen können beim Ausschalten der Stromversorgung gespeichert werden. Es kann sich an unterschiedliche Arbeitsumgebungen anpassen und mit Mikrocontrollern und Computern verbunden werden. Das Modul kann auch den Arbeitsmodus eines separaten Sensorchips einstellen. Als einfaches Sensormodul ist die MCU nicht an der Datenverarbeitung beteiligt.Fügen Sie hier eine Bildbeschreibung ein

Modultest

Verdrahtung

Hier wird der MCU_IIC-Modus verwendet, daher müssen Sie vor der Verwendung S0 und GND kurzschließen (das Modul ist standardmäßig im UART-Modus), wie im Bild gezeigt. Die blaue Jumper-Kappe ist kurzgeschlossen.
Fügen Sie hier eine Bildbeschreibung ein

Verbinden Sie weitere erforderliche Leitungen des Moduls wie folgt mit der Entwicklungsplatine:
GY-39 – STM32F103C8T6
SCL – PB6
SDA – PB7
STM32 – FT232/USB zu TTL
TX (PA9) – RX
RX (PA10) – TX

Code

Das Datenberechnungsmethodenmodul wurde in der Bedienungsanleitung ausdrücklich erwähnt.
Datenberechnungsmethode:
① Berechnungsmethode für die Beleuchtungsintensität (wenn Byte2=0x15, Daten: Byte4~Byte7):
Lux=(Front High 8 Bits<<24) | (Front Low 8 Bits<<16) | (Letzte High 8 Bits < <8) | Letzte 8 Bit Einheit Lux

②Temperatur, Luftdruck, Luftfeuchtigkeit, Höhe, Berechnungsmethode (wenn Byte2=0x45):
Temperatur: Byte4~Byte5
T=(High 8 Bits<<8)|Low 8 Bits
T=T/100 Einheit ℃

Luftdruck: Byte6~Byte9
P=(Vordere hohe 8 Ziffern<<24) | (Vordere niedrige 8 Ziffern<<16) | (Letzte hohe 8 Ziffern<<8) | Hinten niedrige 8 Ziffern
P=P/100 Einheit pro Jahr

Luftfeuchtigkeit: Byte10~Byte11
Hum=(hohe 8 Ziffern<<8)|niedrige 8 Ziffern
Hum=Brumm/100 Prozent System

Höhe: Byte12~Byte13
H=(hohe 8 Ziffern<<8)|niedrige 8 Ziffern Einheit m

Hier ist der Teil des Codes in der Hauptfunktion, der ihren Ausgabewert berechnet:

if(Single_ReadI2C(0xb6,0x04,raw_data,10))
			{
    
    
				Bme.Temp=(raw_data[0]<<8)|raw_data[1];
				data_16[0]=(((uint16_t)raw_data[2])<<8)|raw_data[3];
				data_16[1]=(((uint16_t)raw_data[4])<<8)|raw_data[5];
				Bme.P=(((uint32_t)data_16[0])<<16)|data_16[1];
				Bme.Hum=(raw_data[6]<<8)|raw_data[7];
				Bme.Alt=(raw_data[8]<<8)|raw_data[9];
			}
			if(Single_ReadI2C(0xb6,0x00,raw_data,4))
			data_16[0]=(((uint16_t)raw_data[0])<<8)|raw_data[1];
			data_16[1]=(((uint16_t)raw_data[2])<<8)|raw_data[3];
			Lux=(((uint32_t)data_16[0])<<16)|data_16[1];
			
		  printf("Temp: %.2f  DegC  ",(float)Bme.Temp/100);
		  printf("  P: %.2f  Pa ",(float)Bme.P/100);
			printf("  Hum: %.2f   ",(float)Bme.Hum/100);
		  printf("  Alt: %.2f  m\r\n ",(float)Bme.Alt+36);
			printf("\r\n Lux: %.2f  lux\r\n ",(float)Lux/100);  
			delay_ms(200);

Testphänomen

Nach dem Anschließen des Power-On-Brennprogramms können Sie sehen, dass die Ausgabedaten der seriellen Schnittstelle bereits die Werte Temperatur, Luftdruck, Luftfeuchtigkeit, Höhe und Lichtintensität enthalten.
Fügen Sie hier eine Bildbeschreibung ein

Zusammenfassen

Was die Berechnung der Höhe im Code betrifft, können Sie den Abweichungswert zu den Höhendaten addieren oder subtrahieren, wenn der Boden flach ist, sodass die Höhendaten der lokalen Durchschnittshöhe entsprechen. Am selben Ort ändert sich der Luftdruck täglich und zu jeder Jahreszeit. Wenn Sie die absolute Höhe messen, müssen Sie diese häufig kalibrieren.

Supongo que te gusta

Origin blog.csdn.net/qq_42250136/article/details/133905049
Recomendado
Clasificación