پروژه های آردینو

ارسال دما به اندروید با آردوینو و بلوتوث

ارسال دما به اندروید با آدوینو و بلوتوث

 

ارسال دما به اندروید با آردوینو و بلوتوث

ارسال دما به اندروید با آردوینو و بلوتوث

ک نسخه از بلوتوث است و به عنوان یک نسخه کوچکتر و بسیار بهینه از بلوتوث کلاسیک در دسترس است.

همچنین به بلوتوث هوشمند معروف است.

BLE با در نظر گرفتن کمترین میزان مصرف انرژی به ویژه برای کم هزینه ، پهنای باند کم ، قدرت کم و پیچیدگی کم طراحی شده است.

ESP32 دارای قابلیت BLE داخلی است اما برای سایر میکروکنترلرها مانند Arduino می توان از nRF24L01 استفاده کرد.

این ماژول RF همچنین می تواند به عنوان ماژول BLE برای ارسال داده ها به سایر دستگاه های بلوتوث مانند تلفن های هوشمند ، رایانه و غیره استفاده شود.

بخوانید : پروگرام آردوینو با بلوتوث

لوازم مورد نیاز

سخت افزار :

Software:

 

بخوانید : ساخت رسیور IR با استفاده از آردوینو

 

شروع با ماژول nRF24L01

nRF24L01 ماژول ها گیرنده های گیرنده هستند ، به این معنی که هر ماژول می تواند داده را بفرستد و دریافت کند اما از آنجا که دو نیمه هستند ، می توانند داده ها را همزمان ارسال یا دریافت کنند.

این ماژول دارای IC عمومی nRF24L01 از نیمه هادی های شمال اروپا است که وظیفه انتقال و دریافت داده ها را بر عهده دارد.

ارتباط آی سی با استفاده از پروتکل SPI انجام می شود و بنابراین می توان به راحتی با هر میکروکنترلر ارتباط برقرار کرد.

از آنجا که کتابخانه ها به راحتی در دسترس هستند ، با Arduino بسیار راحت تر می شود.

pinout های یک ماژول استاندارد nRF24L01 در زیر نشان داده شده است:

ارسال دما به اندروید با آدوینو و بلوتوث

بخوانید : کنترل ماتریس 8×8 با آردوینو

 

ولتاژ کارکرد این ماژول از 1.9 ولت تا 3.6 ولت (به طور معمول 3.3 ولت) است

جریان بسیار کمتری فقط 12 میلی آمپر در هنگام کار عادی مصرف می کند که باعث می شود باتری کارآمد باشد و از این رو حتی می تواند روی سلول های سکه ای کار کند

. حتی اگر ولتاژ کار 3.3 ولت باشد ، بیشتر پین ها 5 ولت تحمل می کنند و بنابراین می توان مستقیماً با میکروکنترلرهای 5 ولت مانند آردوینو ارتباط برقرار کرد.

مزیت دیگر استفاده از این ماژول ها این است که ، هر ماژول دارای 6 خط لوله است

. یعنی هر ماژول می تواند با 6 ماژول دیگر برای انتقال یا دریافت داده ارتباط برقرار کند.

این باعث می شود که ماژول برای ایجاد شبکه های ستاره ای یا مش در برنامه های اینترنت اشیا مناسب باشد.

همچنین آنها دارای دامنه آدرس گسترده ای از 125 شناسه منحصر به فرد هستند ، از این رو در یک منطقه بسته می توانیم از 125 ماژول بدون تداخل با یکدیگر استفاده کنیم.

ارسال دما به اندروید با آدوینو و بلوتوث

بخوانید : کنترل موتور سروو با استفاده از آردوینو

ارتباط nRF24L01 با Arduino برای ارتباط BLE

nRF24L01 بر روی SPI کار می کند ، بنابراین رابط کاربری با استفاده از پروتکل SPI انجام می شود.

کد و فیلم کامل در انتهای این آموزش ضمیمه خواهد شد.

در اینجا از ماژول nRF24L01 برای برقراری ارتباط با برنامه تلفن های هوشمند Nordic استفاده می شود.

در ابتدا کتابخانه های مورد نیاز را نصب نمایید

این کتابخانه شامل RF24 برای دسترسی به دستورات nRF24L01 ، کتابخانه DHT11 برای دسترسی به دستورات DHT11 و کتابخانه BTLE برای استفاده از توابع BLE است.

BTLE library

بخوانید : آشکارساز حرکت با استفاده از سنسور PIR

 

#include <SPI.h>
#include <RF24.h>
#include <BTLE.h>
#include <DHT.h>

 

پین ها و عملکردهای ماژول DHT11 و BLE را تعریف و مقداردهی اولیه کنید.

از آنجا که ما از DHT11 استفاده می کنیم ، نوع DHT به عنوان DHT11 شروع می شود.

DHT به GPIO Pin 4 و nRF ماژول CE و پایه های CSN به ترتیب به پایه 9 و 10 متصل می شوند.

 

#define DHTPIN 
#define DHTTYPE DHT11                  
DHT22
DHT dht(DHTPIN, DHTTYPE);
RF24 radio(9, 10);
BTLE btle(&radio);

 

پورت سریال را از 9600 شروع کنید ، می توانید هر پورتی را انتخاب کنید.

سپس سنسور DHT را شروع کرده و همچنین BTLE را با بلوتوث نام محلی با حداکثر 8 کاراکتر شروع کنید.

 

بخوانید : ساخت اعلام حریق با سنسور شعله

 

Serial.begin(9600);
dht.begin();   
btle.begin("CD Temp");

 

دما را روی حلقه بخوانید و آن را در دمای متغیر شناور ذخیره کنید.

اگر DHT قدرت خود را از دست داد یا هر اتفاق غیر منتظره ای رخ داد ، خط نمایش اشکال زدایی را برای نمایش پیام خطا اضافه کنید.

 

  float temp = dht.readTemperature();   //read temperature data
  if (isnan(h) || isnan(t)) {                                                
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

مقدار را در Buffer ذخیره کرده و در ماژول BLE تجزیه کنید.

همچنین مقدار دما را به BLE Module ارسال کنید.

ماژول BLE اطلاعات دما را تبلیغ می کند.

برنامه android می تواند ماژول BLE را جستجو کرده و داده های حسگر را دریافت کند.

 

nrf_service_data buf;
  buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID;
  buf.value = BTLE::to_nRF_Float(temp);

  if (!btle.advertise(0x16, &buf, sizeof(buf))) {
    Serial.println("BTLE advertisement failed..!");
  }

پس از اتمام ، فقط به کانال بعدی بروید.

 

btle.hopChannel();

 

از آنجا که مستندات سنسور DHT توصیه می کند حداقل 2 ثانیه تأخیر را پس از یک بار خواندن حفظ کنید ، بنابراین 2 ثانیه تأخیر اضافه کنید.

 

delay(2000);

 

پس از بارگذاری و جفت شدن تلفن هوشمند با ماژول nRF ، شروع به دریافت مقادیر nRF Temp 2.0 برای برنامه اندروید BLE می کنید

مانند تصویر زیر ( ارسال دما به اندروید با آردوینو و بلوتوث )

ارسال دما به اندروید با آدوینو و بلوتوث

کد کامل برنامه

 

/* Sending Sensor Data to Nordic BLE android app  by wetat(www.circuitdigest.com)
works with nRF24L01. and the works for Nordic’s
It reads temperature from a DHT11 and sends it via BTLE.
Works with Nordic Semiconductor apps such as
“nRF Connect for Mobile” and “nRF Temp 2.0 for BLE”
Pin Mapping:
GND -> GND on the Arduino
VCC -> 3.3v on the Arduino
CE -> PIN 9 on the Arduino
CSN -> PIN 10 on the Arduino
SCK -> PIN 13 on the Arduino Uno
MOSI -> PIN 11 on the Arduino Uno
MISO -> PIN 12 on the Arduino Uno
IRQ -> not used
*/

#include <SPI.h>
#include <RF24.h>
#include <BTLE.h>
#include <DHT.h>                                                            // dht11 temperature and humidity sensor library

#define DHTPIN 4                                                           // what digital pin we’re connected to
#define DHTTYPE DHT11                                                       // select dht type as DHT 11 or DHT22
DHT dht(DHTPIN, DHTTYPE);

RF24 radio(9, 10); // CE, CSN
BTLE btle(&radio);

void setup() {
Serial.begin(9600);
delay(1000);
Serial.print(“BLE and DHT Starting… “);
Serial.println(“Send Temperature Data over BTLE”);
dht.begin();   // initialise DHT11 sensor
btle.begin(“CD Temp”);    // 8 chars max
Serial.println(“Successfully Started”);
}

void loop() {
float temp = dht.readTemperature();   //read temperature data
if (isnan(h) || isnan(t)) {                                                // Check if any reads failed and exit early (to try again).
Serial.println(F(“Failed to read from DHT sensor!”));
return;
}
Serial.print(” Temperature: “);  Serial.print(t);  Serial.println(“°C “);
nrf_service_data buf;
buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID;
buf.value = BTLE::to_nRF_Float(temp);

  if (!btle.advertise(0x16, &buf, sizeof(buf))) {
Serial.println(“BTLE advertisement failed..!”);
}
btle.hopChannel();
delay(2000);
}

 

ارسال دما به اندروید با آدوینو و بلوتوث

این پروژه توسط گروه وی تات انجام شده wetat.ir

کپی با دکر منبع بلامانع است

 

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *