(https://blogs.embarcadero.com/building-good-with-cbuilder-contest-results/)
https://blogs.embarcadero.com/building-good-with-cbuilder-contest-results/ https://youtube.com/embed/tNYx-wSfjVc

كيف يمكن لتقنية البلوتوث تحسين استخدام الموارد المائية في جميع أنحاء العالم. كانت البرمجة باستخدام C++ Builder 10.3 Community Edition أسرع بكثير من سلحفاة Android Studio وكوابيس الفهرسة الأبدية؛ لذا، فقد حان الوقت للمضي قدمًا باستخدام بيئة التطوير المتكاملة (IDE)، في هذا المشروع، باستخدام ميزات الأجهزة المتعددة.
الهدف، المزيد من التحكم في استخدام المياه في قضايا الري، أولاً في حديقة أمي، ثم في حدائق المدينة، ثم الأراضي الزراعية، ثم في أي نشاط لتوزيع المياه في جميع أنحاء العالم. شكرًا لمسابقة Building Good with C++Builder على إتاحة هذه الفرصة.
سيستخدم النظام جهازًا مزودًا بتقنية البلوتوث للتحكم في صمام لري النبات. يمكن أن يكون جهاز التحكم عبارة عن كمبيوتر محمول/كمبيوتر شخصي أو هاتف ذكي (Android أو iOS). تتحكم هذه الأجهزة من خلال الارتباط اللاسلكي عبر البلوتوث في لوحة Arduino UNO المتصلة بوحدة بلوتوث HC-05؛ لذلك يمكن لهذا الأخير فتح/إغلاق صمام الملف اللولبي بواسطة مرحل؛ وفقًا للأوضاع التالية: 1. بناءً على المستشعرات (الرطوبة، مستوى خزان المياه، وكثافة المطر) سيقرر الاردوينو متى يتم فتح/إغلاق الصمام لسقي النبات بشكل صحيح. سيتم مقارنة قيم المستشعرات مع النقاط المحددة لاتخاذ القرارات. الوضع 2. وضع الاختبار، يمكننا فتح/إغلاق الصمام بغض النظر عن قيم أجهزة الاستشعار. الوضع 3، استخدام جداول الري، أي فترات زمنية محددة عندما يكون الصمام مفتوحًا.











Proteus 8.6 مع مكتبات Arduino لمحاكاة التحكم في صمامات Arduino والحساسات المرفقة (الرطوبة ومستوى الماء والمطر) واستجابة نظام التحكم في الصمامات (الدائرة والبرامج الثابتة) للأوامر من تطبيق Irrigation 3021 المبرمج بلغة C++ Builder.


في حالتي الخاصة، استخدمت scrcpy لرؤية مشروعي (Irrigation 3021) في إصدار Android الخاص به. https://github.com/Genymobile/scrcpy


تم تحديث رمز المصدر
في الملف BTReadThread.cpp، تم إجراء التغييرات التالية:
.................................
else if(cmd==2) { dataFromArduino=Socket->ReceiveData();
if(dataFromArduino.Length>0)
{
StrReceived = TEncoding::ASCII->GetString(dataFromArduino);
/*************************************/
AllReceivedData+=StrReceived;
msg=AllReceivedData;
Synchronize(TabbedForm->WriteMemo);
if(AllReceivedData.Length()>12)
{
sensors=AllReceivedData;
Synchronize(TabbedForm->UpdateValueSensors);
AllReceivedData="";
Sleep(100);
}
#ifndef __ANDROID__
else
AllReceivedData="";
#endif
/*****************************************/
/*msg=StrReceived;
Synchronize(TabbedForm->WriteMemo);
if(msg.Length()>3)
{
sensors=StrReceived;
Synchronize(TabbedForm->UpdateValueSensors);
} */
}
Sleep(100);
}
..................................
