PendahuluanApa yang bisa ditampilkan pada layar dua baris kecuali "Hello world!"? Mengapa tidak menampilkan kelembaban dan tekanan suhu?
Sensor yang ditawarkan sebagai alat bantu pelatihan untuk arduino (DHT11, DHT22) menunjukkan suhu dan kelembaban. Untuk tujuan pendidikan (untuk universitas) perlu untuk mengamati tekanan dengan cara yang sama. Secara alami, departemen memiliki barometer, tetapi mengapa tidak mengambil sendiri? Selain itu, Anda dapat mengumpulkan lebih lanjut bacaan dalam mode otomatis, dan ini adalah pengalaman yang baik dalam mempelajari Arduino.
Dengan satu atau lain cara, komponen dipesan dari Cina dan perangkat ini dirakit.
Komponen yang diperlukanArduino Pro MiniI2C untuk LCD (itu mungkin untuk memesan segera dirakit, tetapi ternyata sedikit lebih murah)
LCD 1602BME280USB-UART digunakan untuk mengirim sketsa ke Arduino. Dimungkinkan juga untuk menggunakan Raspberry Pi atau komputer dengan port COM.
Diagram koneksi untuk firmware dan kode programDari Cina, USB-UART datang dengan satu set kabel:

Mereka sudah cukup. Saya meninggalkan jumper di 3,3 volt, terlepas dari kenyataan bahwa versi saya dari Arduino didukung oleh 5 volt.
UART - Arduino
5v - VCC
TXD - RXD
RXD - TXD
GND - GND
CTS - DTR (opsional, tidak berfungsi untuk saya, mungkin karena tegangan sinyal tetap 3.3V)
Jika Anda tidak menghubungkan DTR, maka setelah mengirim firmware Arduino Anda perlu melakukan reboot dengan tombol bawaan, pertukaran data aktif akan dimulai dari kedua sisi (seperti ditunjukkan oleh LED USB-UART), setelah firmware berhasil diunduh, firmware akan reboot dengan sendirinya.
Perpustakaan pihak ketiga yang diperlukan:
SparkFunBME280LiquidCrystal I2CLangsung kode, dengan komentar dari contoh-contoh (jika seseorang perlu mengubah sesuatu).
Kode#include <stdint.h> #include "SparkFunBME280.h" #include "Wire.h" #include "SPI.h" #include <LiquidCrystal_I2C.h> //Global sensor object BME280 mySensor; LiquidCrystal_I2C lcd(0x3F,16,2); // , 0x3F void setup() { lcd.init(); lcd.backlight(); //***Driver settings********************************// //commInterface can be I2C_MODE or SPI_MODE //specify chipSelectPin using arduino pin names //specify I2C address. Can be 0x77(default) or 0x76 //For I2C, enable the following and disable the SPI section mySensor.settings.commInterface = I2C_MODE; mySensor.settings.I2CAddress = 0x76; // , //For SPI enable the following and dissable the I2C section //mySensor.settings.commInterface = SPI_MODE; //mySensor.settings.chipSelectPin = 10; //***Operation settings*****************************// //renMode can be: // 0, Sleep mode // 1 or 2, Forced mode // 3, Normal mode mySensor.settings.runMode = 3; // Forced mode, Normal mode //tStandby can be: // 0, 0.5ms // 1, 62.5ms // 2, 125ms // 3, 250ms // 4, 500ms // 5, 1000ms // 6, 10ms // 7, 20ms mySensor.settings.tStandby = 5; // //filter can be off or number of FIR coefficients to use: // 0, filter off // 1, coefficients = 2 // 2, coefficients = 4 // 3, coefficients = 8 // 4, coefficients = 16 mySensor.settings.filter = 0; //tempOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.tempOverSample = 1; //pressOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.pressOverSample = 1; //humidOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.humidOverSample = 1; //Calling .begin() causes the settings to be loaded mySensor.begin(); } void loop() { // , , . lcd.setCursor(0,0); lcd.print("H="); lcd.print((uint8_t)mySensor.readFloatHumidity()); lcd.print("%"); lcd.print(" T="); lcd.print(mySensor.readTempC()); lcd.setCursor(13,0); lcd.print(" P:"); lcd.setCursor(0,1); int mmH=mySensor.readFloatPressure()/133; lcd.print(mmH); lcd.print("mmH "); lcd.print(mySensor.readFloatPressure()); lcd.setCursor(14,1); lcd.print("Pa"); delay(1000); }
Alamat sensor bisa ditebak, hanya ada dua.
Cara mengetahui alamat tampilan Anda, bisa Anda lihat di
sini . Tergantung pada chip, ada dua piring.
Dalam hal ini:
Dan alamatnya akan 0x3F sejak itu A0 - A2 terbuka:

LED yang dilingkari dalam oval
lebih baik menguap.
Diagram pengkabelanResistor dipilih sebagai setengah dari resistansi sensor (antara VVC dan GND), sehingga voltase jatuh pada 1,7 volt. Juga, rangkaian dapat ditenagai dari input RAW, tegangan lain (misalnya dari mahkota).

Foto menunjukkan bahwa untuk kekompakan, Anda dapat mengambil daya ke sensor dan menampilkan dari pin lain. Ini juga menunjukkan cabang sepasang kabel berwarna oranye-kuning, sebuah resistor 100 Ohm tergantung pada mereka untuk mengurangi kecerahan cahaya latar (Anda dapat meninggalkan jumper, tetapi itu akan memotong mata Anda).

Dalam kasus saya, semuanya didukung oleh catu daya komputer lama. Dapat ditenagai oleh USB. Semua komponen dilem dengan lem Momen, yang ada di tangan.
RingkasanDi tempat kerja muncul 1602 melesat ke meja, yang menunjukkan tekanan, kelembaban, suhu. Arduino dapat direflash tanpa melepasnya (
ini bisa menjadi garis yang merayap ).
Foto
Tempat kerja, pandangan umum.

Tampak depan.

Tampak belakang.