(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
เทคโนโลยี Bluetooth สามารถปรับปรุงการใช้ทรัพยากรน้ำทั่วโลกได้อย่างไร การเขียนโปรแกรมโดยใช้ C++ Builder 10.3 Community Edition นั้นเร็วกว่าเต่าของ Android Studio อย่างน่าประหลาดใจและฝันร้ายของการจัดทำดัชนีชั่วนิรันดร์ ดังนั้นถึงเวลาที่จะก้าวไปข้างหน้าโดยใช้ IDE นี้ในโปรเจ็กต์นี้โดยใช้คุณสมบัติหลายอุปกรณ์
เป้าหมายคือควบคุมการใช้น้ำในประเด็นการชลประทานได้มากขึ้น อันดับแรกในสวนของแม่ฉัน จากนั้นในสวนสาธารณะในเมือง จากนั้นในฟาร์มแลนด์ จากนั้นในกิจกรรมการกระจายน้ำทั่วโลก ขอขอบคุณการประกวด Building Good with C++ Builder ที่ให้โอกาสนี้
ระบบจะใช้อุปกรณ์ที่รองรับบลูทูธเพื่อควบคุมวาล์วเพื่อชลประทานในต้นไม้ อุปกรณ์ควบคุมอาจเป็นแล็ปท็อป/พีซี หรือสมาร์ทโฟน (Android หรือ iOS) อุปกรณ์เหล่านี้ควบคุมผ่านลิงก์ไร้สาย Bluetooth บนบอร์ด Arduino UNO ที่เชื่อมต่อกับโมดูลบลูทูธ HC-05 ดังนั้นสุดท้ายนี้สามารถเปิด/ปิดโซลินอยด์วาล์วด้วยรีเลย์ ตามโหมดต่อไปนี้: 1. ขึ้นอยู่กับเซ็นเซอร์ (ความชื้น ระดับถังน้ำ และความเข้มของฝน) Arduino จะตัดสินใจว่าเมื่อใดจะเปิด/ปิดวาล์วเพื่อรดน้ำต้นไม้อย่างเหมาะสม ค่าเซ็นเซอร์จะถูกเปรียบเทียบกับค่าที่ตั้งไว้เพื่อการตัดสินใจ โหมด 2 โหมดทดสอบ เราสามารถเปิด/ปิดวาล์วได้ไม่ว่าค่าเซ็นเซอร์จะเป็นอย่างไร โหมดที่ 3 ใช้ตารางการชลประทาน เช่น ระยะเวลาที่กำหนดว่าวาล์วจะเปิดเมื่อใด
Proteus 8.6 พร้อมไลบรารี Arduino สำหรับจำลองการควบคุมวาล์ว Arduino และเซ็นเซอร์ที่แนบมา (ความชื้น ระดับน้ำ และฝน) การบรรยายและการตอบสนองของระบบควบคุมวาล์ว (วงจรและเฟิร์มแวร์) ต่อคำสั่งจากแอป Irrigation 3021 ที่ตั้งโปรแกรมใน C++ Builder
ในกรณีเฉพาะของฉัน ฉันใช้ scrcpy เพื่อดูโครงการของฉัน (Irrigation 3021) ในเวอร์ชัน Android https://github.com/Genymobile/scrcpy
อัปเดตรหัสแหล่งที่มาแล้ว
ในไฟล์ BTReadThread.cpp ได้ทำการเปลี่ยนแปลงต่อไปนี้:
-
อื่นถ้า (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);
}
-