Mundarija:
Video: Arduino Nano - MPL3115A2 nozik altimetrli sensorli qo'llanma: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
MPL3115A2 aniq bosim/balandlik va harorat ma'lumotlarini taqdim etish uchun I2C interfeysli MEMS bosim sensori bilan ishlaydi. Sensor chiqishlari yuqori aniqlikdagi 24 bitli ADC yordamida raqamlashtirilgan. Ichki ishlov berish MCU tizimidagi kompensatsiya vazifalarini olib tashlaydi. U 0,05 kPa o'zgarishini aniqlay oladi, bu balandlikning 0,3 m o'zgarishiga teng. Mana, Arduino Nano bilan uning namoyishi.
1 -qadam: Sizga nima kerak.. !
1. Arduino Nano
2. MPL3115A2
3. I²C kabeli
4. Arduino Nano uchun I²C qalqoni
2 -qadam: Ulanishlar:
Arduino Nano uchun I2C qalqonini oling va uni muloyimlik bilan Nano pinlariga suring.
Keyin I2C kabelining bir uchini MPL3115A2 sensoriga, ikkinchi uchini esa I2C ekraniga ulang.
Ulanishlar yuqoridagi rasmda ko'rsatilgan.
3 -qadam: Kod:
MPL3115A2 uchun arduino kodini bizning github omboridan-DCUBE do'konidan yuklab olish mumkin.
Mana shu havola:
github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
Sensorning Arduino platasi bilan I2c aloqasini osonlashtirish uchun biz Wire.h kutubxonasini o'z ichiga olamiz.
Siz bu erdan kodni nusxalashingiz mumkin, u quyidagicha berilgan:
// Ixtiyoriy litsenziya bilan tarqatilgan.
// Agar xohlasangiz, foyda yoki tekin ishlating, agar u tegishli asarlar litsenziyalariga mos kelsa.
// MPL3115A2
// Bu kod MPL3115A2_I2CS I2C Mini moduli bilan ishlash uchun mo'ljallangan
#qo'shing
// MPL3115A2 I2C manzili - 0x60 (96)
#aniqlang Addr 0x60
bo'sh o'rnatish ()
{
// I2C aloqasini boshlang
Wire.begin ();
// Serial aloqani ishga tushiring, bod tezligi = 9600
Serial.begin (9600);
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Boshqarish registrini tanlang
Wire.write (0x26);
// Faol rejim, OSR = 128, altimetr rejimi
Wire.write (0xB9);
// I2C uzatishni to'xtating
Wire.endTransmission ();
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumot konfiguratsiyasi registrini tanlang
Wire.write (0x13);
// Ma'lumot tayyor hodisasi balandlik, bosim, harorat uchun yoqilgan
Wire.write (0x07);
// I2C uzatishni to'xtating
Wire.endTransmission ();
kechikish (300);
}
bo'sh halqa ()
{
imzosiz int ma'lumotlari [6];
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Boshqarish registrini tanlang
Wire.write (0x26);
// Faol rejim, OSR = 128, altimetr rejimi
Wire.write (0xB9);
// I2C uzatishni to'xtating
Wire.endTransmission ();
kechikish (1000);
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini tanlang
Wire.write (0x00);
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 6 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 6);
// 0x00 (00) manzilidan 6 bayt ma'lumotni o'qing
// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
agar (Wire.available () == 6)
{
ma'lumotlar [0] = Wire.read ();
ma'lumotlar [1] = Wire.read ();
ma'lumotlar [2] = Wire.read ();
ma'lumotlar [3] = Wire.read ();
ma'lumotlar [4] = Wire.read ();
ma'lumotlar [5] = Wire.read ();
}
// Ma'lumotni 20 bitga aylantiring
int tHeight = (((uzun) (ma'lumotlar [1] * (uzun) 65536) + (ma'lumotlar [2] * 256) + (ma'lumotlar [3] & 0xF0)) / 16);
int temp = ((ma'lumotlar [4] * 256) + (ma'lumotlar [5] & 0xF0)) / 16;
suzuvchi balandligi = tHeight / 16.0;
float cTemp = (temp / 16.0);
float fTemp = cTemp * 1.8 + 32;
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Boshqarish registrini tanlang
Wire.write (0x26);
// Faol rejim, OSR = 128, barometr rejimi
Wire.write (0x39);
// I2C uzatishni to'xtating
Wire.endTransmission ();
kechikish (1000);
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini tanlang
Wire.write (0x00);
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 4 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 4);
// 4 bayt ma'lumotni o'qing
// status, pres msb1, pres msb, pres lsb
agar (Wire.available () == 4)
{
ma'lumotlar [0] = Wire.read ();
ma'lumotlar [1] = Wire.read ();
ma'lumotlar [2] = Wire.read ();
ma'lumotlar [3] = Wire.read ();
}
// Ma'lumotni 20 bitga aylantiring
long pres = (((uzun) ma'lumotlar [1] * (uzun) 65536) + (ma'lumotlar [2] * 256) + (ma'lumotlar [3] & 0xF0)) / 16;
suzuvchi bosim = (pres / 4.0) / 1000.0;
// Ma'lumotlarni ketma -ket monitorga chiqarish
Serial.print ("Balandlik:");
Ketma -ket chop etish (balandlik);
Serial.println ("m");
Serial.print ("Bosim:");
Ketma -ket chop etish (bosim);
Serial.println ("kPa");
Serial.print ("Selsiy bo'yicha harorat:");
Serial.print (cTemp);
Serial.println ("C");
Serial.print ("Farengeytdagi harorat:");
Serial.print (fTemp);
Serial.println ("F");
kechikish (500);
}
4 -qadam: Ilovalar:
MPL3115A2 -ning turli xil ilovalari yuqori aniqlikdagi altimetriya, smartfonlar/planshetlar, shaxsiy elektron altimetriya va boshqalarni o'z ichiga oladi. Shuningdek, u GPS o'lik hisob -kitobiga, favqulodda xizmatlar uchun GPS -ni takomillashtirishga, xaritaga yordam berishga, navigatsiyaga, shuningdek ob -havo stantsiyasi uskunasiga qo'shilishi mumkin.
Tavsiya:
NodeMCU sensorli sensorli LDR haroratni boshqarish rölesi bilan uy avtomatizatsiyasi: 16 qadam
NodeMCU sensorli sensorli LDR haroratni nazorat qilish rölesi yordamida uyni avtomatlashtirish: NodeMCU -ning oldingi loyihalarida men Blynk ilovasidan ikkita maishiy texnikani boshqarganman. Men qo'lda boshqarish va qo'shimcha funktsiyalarni qo'shish orqali loyihani yangilash uchun ko'plab sharhlar va xabarlarni oldim, shuning uchun men bu aqlli uyni kengaytirish qutisini yaratdim
Ultrasonik sensorli qo'llanma Arduino -dan foydalanish: 6 qadam
Arduino -dan foydalanadigan ultratovushli sensorli qo'llanma: Bu ko'rsatma mashhur ultratovushli sensor HC - SR04 haqida qo'llanma. Men uning qanday ishlashini tushuntiraman, sizga uning ba'zi xususiyatlarini ko'rsataman va o'z loyihalaringizga qo'shilish uchun amal qilishingiz mumkin bo'lgan Arduino loyihasi misoli bilan bo'lishaman. Biz sxematik diagrammani taqdim etamiz
Prototip - odam sensorli sensorli signalli qurilma (KY -036): 4 qadam
Prototip - Odam sensorli sensori yordamida signalizatsiya qurilmasi (KY -036): Ushbu loyihada men teginish bilan ishlaydigan signalizatsiya qurilmasini loyihalashtiraman. Ushbu loyiha uchun sizga inson sensorli sensor (KY-036) kerak bo'ladi. Sizga ushbu loyiha haqida qisqacha ma'lumot berishga ruxsat bering, yuqoridagi rasmlarda ko'rib turganingizdek, sensorli sensor
Sensorli uchta sensorli davr + Sensorli taymer davri: 4 qadam
Sensorli uchta sensorli davr + Sensorli taymer davri: Sensorli sensor - bu pimlarga teginish aniqlanganda yoqiladigan elektron. Bu vaqtinchalik ishlaydi, ya'ni yuk faqat pimlarga tegib turganda yoqiladi, bu erda men sizga teginishning uch xil usulini ko'rsataman
Arduino: Step Motor uchun nozik Lib: 19 qadam
Arduino: Step Motor uchun Precision Lib: Bugun men sizga cheklovli kalitlarga ega dvigatel haydovchisining kutubxonasini, dvigatelning tezlanish va mikro qadamli harakatlanishini ko'rsataman. Arduino Uno va Arduino Mega -da ishlaydigan bu Lib sizga dvigatellarni faqat bitta emas, balki boshqa joyga ko'chirishga imkon beradi