قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 05-09-2015, 10:20 AM المشاركة 33   
افتراضي



كيف يتم ضبط البرنامج هدا للتعامل مع esp
السلام عليكم

سأشرح ذلك في مشاركات القادمه

قمت بتجربه Wifi TCP/UDP مع موديل ESP8266 وبفعل اشتغل تمام ولكن لم شيئ وحيد الدي لم انجح في هذا البرنامج هو استلام البيانات من موديل

حيث كتبت برنامج للتحكم ب 8 الاجهزه عن طريق الاندرويد واي فاي ويتم التحكم من خلال راوتر او عن طريق موديل مباشره

على عموم حاول اكمال الكود وربما اضعه حتى وان كان فيه نقص ويتم التحديث عليه تباعا

تحياتي

اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 05-09-2015, 08:19 PM المشاركة 34   
افتراضي شرح مكتبه esp8266 مع كود تحكم بعدد من الاجهزه وبأستخدام برنامج الاندرويد


السلام عليكم
في هذه مشاركه سنضع مشروع شغال سيتم شرح فيه كيف يتم تعامل مع البرتوكول UDP

اولا قم بتحميل ملف مشروع ومكتبه ESP8266 وبرنامج الاندرويد wifi TCP/UDP


http://www.mediafire.com/download/6v...d+UDP+test.rar

===============================
اسم البرنامج مستخدم هو wifi TCP/UDP
قم بتحميله من متجر aplay



التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 05-09-2015 الساعة 08:25 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 05-09-2015, 09:02 PM المشاركة 35   
افتراضي الشرح مشروع


مكتبه ESP8266 مهمتها
1- عمل تهيئه للموديل مع ربطه بالشبكه راوتر خاصه بك
2- تجعل موديل كراوتر يمكن من خلاله ارسال واستقبال البيانات بدون حاجه الى راوتر
3- قراءه البيانات
4- ارسال البيانات
مكتبه تحتاج الى هذه التعريفات
كود:
//************** ESP8266 parameter*********//
sbit RST_ESP8266 at LATC0_bit;
sbit RST_ESP8266_dir at TRISC0_bit;
// Change following information to match your network settings
unsigned char *SSID_STA = "your network";
unsigned char *password_STA = "your password";
unsigned char *port = "1234";
unsigned char *SSID_AP = "ESP8266";
unsigned char *password_AP = "ESP12345";
unsigned char *IP_address="210.201.4.120";
const char chanel = 6;
const char enc = 4;
char ESP_id =0;
const char esp8266_rec_max=10;
unsigned char esp8266_received_data[esp8266_rec_max+1];
حيث تحتاج منك طرف للريسيت
واسم شبكتك والباسورد
واسم الشبكه الي يبث بها موديل مع الباسورد لاتقل عن 8
والايبي station للموديل حتى تتمكن من خلاله اتصال مع الاجهزه او برامج وكذلك البورت
اضافه الى اقصى بيانات ممكن استقبالها طبعا لو وضعنا 10 مثلا واستقبلت انت فقط 2 بايت فان مكتبه اتوماتيكا ستعطيك 2 بايت ولكن ان استلمت اكثر من 10 بايت فهي لن تعطيك سوى 10 فقط


كما تحتاج مكتبه الى تعريف uart مستخدم
كود:
    UART1_Init(115200);
  Delay_ms(300);
 // Setup interrupts
  RC1IE_bit = 1;          // Enable Rx1 intterupts
  PEIE_bit = 1;           // Enable peripheral interrupts
  GIE_bit  = 1;           // Enable global interrupts
على فكره هنا استخدمت uart اي ليس uart1 او uart2 هذا uart يمكنك من


خلالها استخدام اي من uart1 او uart2
في مثالنا استخدمنا uart1 وبتالي مكتبه uart اتوماتيكا ستأخذ uart1 لذلك من تدخل داخل مكتبه ستجد بعض اوامر مثل
كود:
UART_Wr_Ptr
او
كود:
esp_tmp = UART_Rd_Ptr();
معناها انني استخدمت مكتبه uart والتي تعمل مع العائله 18F وبعض البيكات 16F والغايه من هذه مكتبه هي استخدام اي منفذ لuart مثلا uart1 او uart2 بدون حاجه الى تغير الاوامر في الكود اي مكتبه عامه

هي default تعمل على uart1 ولكن لو استخدمت uart2 عليك فقط بأعاده تفعيل مكتبه uart على uart2
كود:
UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle); // set UART2 active
طبعا هذه مكتبه مفيده مثلا تستطيع استخدام نفس الكود لقراءه البيانات من خلال uart1 وuart2

حيث تستخدم في حاله قراءه من uart1
كود:
UART_Set_Active(&UART1_Read, &UART1_Write, &UART1_Data_Ready, &UART1_Tx_Idle); // set UART1 active
وفي حاله قراءه او الارسال من uart2
كود:
UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle); // set UART2 active
==================================
اما بعض البكات التي لاتتوافق معها مكتبه بسبب استخدام مكتبه uart يمكنك فقط تعديل على اوامر uart وسوف تعمل معاك

======================================

طبعا بالبدايه راح راح تقوم مكتبه بتخاطب مع موديل لغرض عمل تهيئه
حيث ترسل
1-AT
2- ATE0
3-AT+RST
4-AT+CWMODE
5-AT+CIPMUX
6- ربط مع راوتر عن طريق AT+CWJAP
7- جعل موديل كمحطه الارسال عن طريق AT+CWSAP
8- واخير عمل اتصال ببروتوكول udp وفتح بورت عن طريق AT+CIPSTART

طبعا انا خليت ليد من يكمل كل هذه الخطوات يضيئ ليد لدلاله على انه تم موديل اصبح جاهز وتم عمل اتصال مع راوتر


كود:
void configuration_ESP8266()
{
 RST_ESP8266=0;
 RST_ESP8266_dir=0;
 wait_1sec();
 RST_ESP8266=1;
// Negotiate baud rate
  while(1)
  {
    esp8266_Send(AT);                 // Send "AT" string until ESP8266 sets up its baud rade
    new_line();
    wait_1sec();                    // and gets it correctly
    if (Get_response() == ESP_OK) break;    // If esp8266 says "OK" on our baud rate we program can continue
  }
 //****************************************************//
 esp8266_Send(ATE0);        // Disable command echo
 new_line();
 Wait_response(ESP_OK);
 //****************************************************//
  while(1)
  {
    esp8266_Send(AT_RST);                 // Send "RST" reset module
    new_line();
    wait_1sec();                   // and gets it correctly
    if (Get_response() == ESP_READY) break;    // If esp8266 says "ready" on our baud rate we program can continue
  }
 //****************************************************//
  do
  {
    esp8266_Send(AT_CWMODE);                // set wifi mode 1-station  2- access point 3- station+access point
    new_line();
    wait_1sec();                    // and gets it correctly

  }while(Get_response() != ESP_OK);// If esp8266  says "OK" on our baud rate we program can continue
//****************************************************//
    while(1)
  {
    esp8266_Send(AT_CIPMUX);                 // Set multiple connections mode
    new_line();
    wait_1sec();                    // and gets it correctly
    if (Get_response() == ESP_OK) break;    // If esp8266 says "OK" on our baud rate we program can continue
  }
 //****************************************************//

   do {      // connected with your network
     //AT+CWJAP="SSID","pasword" <CR><LF>
     esp8266_Send(AT_CWJAP);
     UART_Wr_Ptr('"');
     esp8266_Send_Ram(SSID_STA);
     UART_Wr_Ptr('"');
     UART_Wr_Ptr(',');
     UART_Wr_Ptr('"');
     esp8266_Send_Ram(password_STA);
     UART_Wr_Ptr('"');
     new_line();
     wait_3sec();
  } while(Get_Response() != ESP_OK);
 //****************************************************//
  do { // set parameter for access point
     //AT+CWSAP="SSID","pasword" , port,port,mode, <CR><LF>
     esp8266_Send(AT_CWSAP);
     UART_Wr_Ptr('"');
     esp8266_Send_Ram(SSID_AP);
     UART_Wr_Ptr('"');
     UART_Wr_Ptr(',');
     UART_Wr_Ptr('"');
     esp8266_Send_Ram(password_AP);
     UART_Wr_Ptr('"');
     UART_Wr_Ptr(',');
     UART_Wr_Ptr(chanel+48);
     UART_Wr_Ptr(',');
     UART_Wr_Ptr(enc+48);
     new_line();
     wait_3sec();
  } while(Get_Response() != ESP_OK);
  
 //****************************************************//

  do {
     //connected with ip addrss and used UDP protocol
     esp8266_Send(AT_CIPSTART);
     UART_Wr_Ptr(ESP_ID+48);
     UART_Wr_Ptr(',');
     UART_Wr_Ptr('"');
     esp8266_Send_Ram("UDP");
     UART_Wr_Ptr('"');
     UART_Wr_Ptr(',');
     UART_Wr_Ptr('"');
     esp8266_Send_Ram(IP_address);
     UART_Wr_Ptr('"');
     UART_Wr_Ptr(',');
     esp8266_Send_Ram(port);
     UART_Wr_Ptr(',');
     esp8266_Send_Ram(port);
     UART_Wr_Ptr(',');
     UART_Wr_Ptr('2');
     new_line();
     wait_3sec();
  } while(Get_Response() != ESP_OK);
 //****************************************************//
}
========================================
من ناحيه الاستقبال البيانات
طبعا يوجد متغير داخل مكتبه اسمه esp_DataReady_received هذا يساوي 1 لما يكتمل قراءه البيانات هنا تجد كل البيانات مخزنه في مصفوفه esp8266_received_data
اما طول هذه البيانات ستجدها مخزنه في متغير موجود داخل مكتبه اسمه esp8266_len
اما ID فتجده مخزون في متغير اسمه esp8266_id

======================================

اما ارسال البيانات فيتم عن طريق داله اسمها Send_ESP8266_data هذه تحتاج منك البيانات بشكل string وعدد هذه البيانات

=======================================

في مثال ستجد اننا نعرض البيانات المستقبله وعددها ورقم ID على LCD
وكذلك في عنصر الاول فيه امر تشغيل واطفاء لاجهزه



طبعا مكتبه قابله للتحديث


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 05-09-2015 الساعة 09:12 PM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 05-09-2015, 09:39 PM المشاركة 36   
افتراضي شرح برنامج wifi tcp udp




الان كيف نضبط البرنامج اول ماتفتح البرنامج تضعط على ايقونه ضبط موجوده في جهه اعلى الشاشه من جهه اليسار عندها نضبط هذه لاحظ الصوره



نختار controller ونقوم بالضبط البيانات التاليه
1- IP
2- port
3- نختار UDP
4- اما button فهذه تتكون من
1- name وهنا نخلي اسم مناسب للجهاز
2- commands هذا مهم جدا لانه يعتبر مثل كود يتم قراءه من خلال ESP8266
3- Visibility هذا لاظهار الازرار او اخفاءها

انا خليت التالي طبعا داخل commands
انه اذا ضغطنا على زر رقم 1 يرسل A وبداخل main خصصته لاضاءه ليد
وهكذا لازرار اخرى
شاهد صوره


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 05-09-2015, 09:57 PM المشاركة 37   
افتراضي


هسى احنا ارسلنا اوامر التشغيل اما كيف نقوم بالاطفاء ليدات

يوجد طريقتين
1- هل نريد عند ضغط على زر يشتغل ليد ومن نرفع اليد عنه يطفئ في هذه حاله من خلال نفس commands تجد stop commands عندها اضع الكود في الازار مثلا انا وضعت A للتشغيل ليد1 , الامر a لاطفاء ليد1

2- اما اذا اردنا ادا ضغطنا على زر 1 مثلا يرسل A ومن نضغط عليه مره اخرى يرسل a هنا يكون الضبط كتالي
نختار controller اخر مثلا controller A ونضبط الايبي والبورت و udp اما الازرار نضع اوامر اخرى مثلا انا خليت في controller A خليت button1 الامر A وفي controller B خليت نفس الزر اي button1 الامر a وبتالي عند ضغط عليه يرسل الامر A وعند ضغط عليه مره أخرى يرسل a

=====================================

طبعا يوجد في كل controller خصائص اخرى مثلا
size button هنا للتحكم بحجم الازرار و الكتابه
يوجد ايضا send data هنا يظهر نص لتشاهد اوامر الي ترسلها لغرض التأكد منها مثلا

ايضا
Received data طبعا لم يعمل معاي ولا اعرف الاسباب ولكن اعتقد مشكله في عدم معرفتنا كيف يستقبل البيانات يعني كيف يظهرها

ايضا
received Data Preference هذا من خلال نضبط الالوان

هذه كل ما اعرفه عن هذا البرنامج

تحياتي









ٌ


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-09-2015, 03:48 PM المشاركة 38   
افتراضي


هسى احنا ارسلنا اوامر التشغيل اما كيف نقوم بالاطفاء ليدات

يوجد طريقتين
1- هل نريد عند ضغط على زر يشتغل ليد ومن نرفع اليد عنه يطفئ في هذه حاله من خلال نفس commands تجد stop commands عندها اضع الكود في الازار مثلا انا وضعت A للتشغيل ليد1 , الامر a لاطفاء ليد1

2- اما اذا اردنا ادا ضغطنا على زر 1 مثلا يرسل A ومن نضغط عليه مره اخرى يرسل a هنا يكون الضبط كتالي
نختار controller اخر مثلا controller A ونضبط الايبي والبورت و udp اما الازرار نضع اوامر اخرى مثلا انا خليت في controller A خليت button1 الامر A وفي controller B خليت نفس الزر اي button1 الامر a وبتالي عند ضغط عليه يرسل الامر A وعند ضغط عليه مره أخرى يرسل a

=====================================

طبعا يوجد في كل controller خصائص اخرى مثلا
size button هنا للتحكم بحجم الازرار و الكتابه
يوجد ايضا send data هنا يظهر نص لتشاهد اوامر الي ترسلها لغرض التأكد منها مثلا

ايضا
Received data طبعا لم يعمل معاي ولا اعرف الاسباب ولكن اعتقد مشكله في عدم معرفتنا كيف يستقبل البيانات يعني كيف يظهرها

ايضا
received Data Preference هذا من خلال نضبط الالوان

هذه كل ما اعرفه عن هذا البرنامج

تحياتي


ٌ
ملاحظه على نقطه 2 في مشاركه مقتبسه من تفتح الاعدادات اختار ON/OFF Mode ومن ثم قم بتفعيله ومن ثم ستجد اسفل منه ايقونه
Another commands source
ثم اختار controller الي قمت انت بوضع الاوامر في الازرار الي تخصه

يعني كل كنترولر فيه نفس الازار والتي عددها 25


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-09-2015, 07:27 PM المشاركة 39   
افتراضي


السلام عليكم

اخوان وجدت في برنامج WIfi TCP UDP فقره جميله وهي SeeKBar



طبعا من خلاله تستطيع ارسال قيم من 0 الى 255 وبالطبع هذا تستفاد منه في عمليه التحكم مثلا بشده الاضاءه او بالسرعه الماطور او ..........

طبعا افتح SeeKBar سوف تجد هناك ثلاثه وهي Enable SeeKBar A و Enable SeeKBar B و Enable SeeKBar C

تلاحظ وجود التالي
SeeKBar Name هذه تعطيه اسم مثلا SPEED CONTROL او اي اسم تشاء
Marker ASCII طبعا هذا يعتبر command اي يرسل مع القيمه لنفترض وضعنا في مربع كلمه TA

Min Value و Max Value هذه لضبط القيم الاوطئ والعظمى

الان كيف ترسل القيمه هكذا
Marker ASCII+Value مثلا لو كانت value=100 اذن مايكرو راح يستلم هذه البيانات

TA100



التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 06-09-2015 الساعة 07:42 PM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-09-2015, 08:02 PM المشاركة 40   
افتراضي


أخوان بالنسبه للربط

VCC =3.3

ربطت طرف RX من موديل مع طرف TX من مايكرو
ربطت طرف TX من موديل مع طرف RX من مايكرو

ربطت طرف CH-PD مع 3.3V

ربطت طرف RST مع اي طرف من مايكروكنترولر (( طبعا هذا مهم لان لازم بالبدايه اعطيه 0 وبعدها اعطيه 3.3 ))

طبعا اذا المايكرو يعمل على 3.3 يكون افضل حتى ترتاح من اي تحويل ب logic



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:29 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)