برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی

برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی و

برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی

برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی و

داده هایی در مورد برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی و

تبلیغات
آخرین نظرات

۴۵ مطلب با موضوع «برق الکترونیک رباتیک :: آردوینو و سایربردها» ثبت شده است

برنامه نویسی به زبان c در آردوینو

ShahBaz | چهارشنبه, ۶ خرداد ۱۳۹۴، ۱۰:۰۹ ق.ظ

The Arduino hardware-processing platform has become ubiquitous within the technology hobbyist community, and non-techies alike are getting to know it because its so simple to use. However, experienced programmers can also benefit from this physical-computing platform with pre-made code, but may be frustrated by the overly-simplistic GUI that comes with arduino software.


This tutorial will show you how to take full control of your arduino by showing you how to take the C++ code arduino provides you, and use (or modify) this code to create your own C++ programs for the arduino platforms, using the Eclipse C++ IDE, the AVR-GCC compiler, and AVR dude to download your programs to hardware

Steps

  1. 1
    Download all the necessary software and files. This includes:
    • The Arduino source code, available from [1]. Optionally you can also download the software package for your platform (Windows/Linux/OSX) which includes all the pre-made C++ files that make arduino run, as well as the simple Java GUI aimed at non-programmers.
      All_the_files_we_need.png
    • AVR-GCC, which is the compiler for the AVR-series of microcontrollers (heart of an Arduino). For Windows users, get WinAVR [2]
    • The Java Runtime Environment 32- and 64-bit are both available from Oracle.
    • The Eclipse IDE for C/C++ [3], where you will be doing your coding and uploading the code to your Arduino. Download the same version (32-bit or 64-bit) as your version of Java
  2. 2
    Setup the Eclipse IDE. First, install WinAVR or AVR-GCC. Then, extract the Eclipse IDE into its own dedicated folder.
    • Start-up Eclipse, and choose your default workspace
    • Go to Help --> Install New Software
      Help_install.png
    • Enter "http://avr-eclipse.sourceforge.net/updatesite" (no quotes) in the 'Work With' field , and click Add
      Work_with.png
    • Select the AVR Eclipse Plugin, select Next, and install
    • When successfully installed, you'll have to re-start Eclipse
  3. 3
    Create a C++ Project in Eclipse, and use the following settings;
    • Make the project type a "AVR Cross Target Application"
    • Ensure "Debug" is UN-CHECKED when selecting Build Configurations (and ensure "Release" IS CHECKED)
    • When asked for hardware details, make sure you select the correct frequency (typically 16000000 Hz) and the correct microcontroller, according to your arduino type [4]
      Arduino HW Config.png
  4. Arduino Folder.png
    4
    Extract the latest version of the arduino software from their website. Copy the entire '\hardware\arduino\cores\arduino' folder into your project folder. Now that Eclipse is installed and the plugin is configured, from now on this is the only folder needed to start new Arduino projects from scratch!
  5. 5
    Create main.cpp where you write your code for the Arduino in which you will declare as usual the main elements i.e. void setup, void loop and int main. For example( In main.cpp(The main Arduino Code)). Include "WProgram.h" (with quotes) in this header as well; this links it to all the arduino code.

    NOTE: As of Arduino 1.0, include "Arduino.h" instead of "WProgram.h".
    Also, include the appropriate "pins_arduino.h" file from arduino-1.0.1\hardware\arduino\variants. Arduino Uno uses the "standard" variant.
    These changes were made in the 2011.11.30 release of Arduino 1.0, according to the revisions.txt file that installs with the IDE.
  6. 6
    Optional: Fix any compiler-errors in arduino software. Compiler errors are going to be different for everyone depending on what your error was, which they you have to find out on your own or in the comments, because it's case dependent. As of arduino v0018, this may include the following changes;
    • main.cpp; delete "#include <WProgram.h>" at the top, and ensure your "main.h" is included instead
    • Tone.cpp; change the last two includes, <wiring.h> & <pins_arduino.h>, to have quotes instead of brackets ("wiring.h" & "pins_arduino.h")
    • Print.h; the function declaration "void function(int inputs) = 0;" must be changed to "void function(int inputs);", or in other words delete the "= 0" so its not a pure-virtual function
  • ShahBaz

ساخت آردوینو UNO

ShahBaz | چهارشنبه, ۶ خرداد ۱۳۹۴، ۰۹:۲۴ ق.ظ

ساخت آردوینو  UNO نوع ۱ کم هزینه

قطعات مورد نیاز

  1. آی سی Atmega328 همراه با boot loader آردوینو uno
  2. کریستال ۱۶ مگاهرتز یک عدد
  3. کلید فشاری یک عدد
  4. دیود LED یک عدد
  5. خازن ۱۰۰ نانوفاراد ۲ عدد
  6. مقاومت ۲۲۰ اهم یک عدد
  7. مقاومت ۱ کیلو اهم یک عدد
  8. بردبرد و سیم بردبردی
  9.  یک ماژول تبدیل USB به سریال ( آموزش ساخت بزودی)
atmega328p-dIP(4)-500x500

شماتیک atmega328p

ساخت:

حال با توجه به شکل های زیر قطعات را روی برد سوار کنیدArduinoOnBreadBoard

ساخت آردوینو  UNO نوع ۲ ( رسمی و قوی)

قطعات مورد نیاز

  1. بردبرد
  2. سیم ۲۲ AWG
  3. رگولاتور ولتاژ ۷۸۰۵
  4. ۲ LED
  5. مقاومت ۲۲۰ اهم ۲ عدد
  6. مقاومت ۱۰ k اهم ۱ عدد
  7.  خازن ۱۰ uF دو عدد
  8. کریستال ۱۶ MHz
  9. خازن ۲۲ pF دو عدد
  10. کلید فشاری کوچک
  11. آی سی Atmega328 همراه با boot loader آردوینو uno

ساخت:

مطابق شکل های زیر قطعات را متصل کنید

arduinobb_02

arduinobb_03

arduinobb_04

arduinobb_05

arduinobb_05_supply

arduinobb_06

arduinobb_07

arduinobb_08

arduinobb_12

arduinobb_13

arduinobb_14

arduinobb_avradapter

آموزش ساخت (بزودی)

arduinobload_wires

  • ShahBaz

بوت لودر آردوینو

ShahBaz | چهارشنبه, ۶ خرداد ۱۳۹۴، ۰۹:۲۰ ق.ظ
اطلاعات فایل
  • ارسال شده: فرو ۱۲ ۱۳۹۴ ۰۳:۴۸ بعد از ظهر
  • آخرین به روزرسانی: فرو ۱۲ ۱۳۹۴ ۰۳:۴۸ بعد از ظهر
  • حجم فایل: 863bytes
  • دفعات بازدید: 152
  • تعداد دریافت ها: 17

دریافت


 بوت لودر آردوینو

- - - - -



تصویر
فایل هگز دریافتی را بوسیله پروگرامر بر روی یک Atmega328 پروگرام کنید
فیوزبیت ها به شکل زیر تنظیم شود:

low_fuse=0xFF
high_fuse=0xDE
extended_fuse=0x05
unlock_bit=0x3F
lock_bit=0x0F

این تنظیمات مربوط به برد آردوینو UNO میباشد



  • ShahBaz

ساخت برد اردینو

ShahBaz | چهارشنبه, ۶ خرداد ۱۳۹۴، ۰۹:۱۷ ق.ظ

با nanino برد آردوینو خود را بسازید!

ش

۲ پاسخ

  1. parsafar

    سلام خسته نباشین.موقع پروگرام فرکانس چقدر باشه؟ای کاش توضیحات کلی برای آموزش این مدار میزاشتین مثلا شناسایی پایه ها ولتاژ کاری و نحوه کارکرد باهاش و حتی انتخاب کدام برد از داخل فایل pdf .
    ونحوه چیدمان قطعات روی برد

    ممنون

    • Pouria

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

  • ShahBaz

ماژول انتقال بیسیم اطلاعات +nrf24l01 ( فرکانس 2.4g ) + آنتن

ShahBaz | شنبه, ۲۹ فروردين ۱۳۹۴، ۱۲:۳۵ ق.ظ

ماژول انتقال بیسیم اطلاعات +nrf24l01 ( فرکانس 2.4g ) + آنتن

ماژول فرستنده و گیرنده رادیویی +nRF24L01 از جدیدترین فرستنده و گیرنده 2.4 گیگاهرتزی شرکت Nordic Semiconductor یعنی چیپ +nRF24L01 استفاده می کند. فرکانس این آی سی برای دریافت و ارسال رادیویی اطلاعات باند 2.4 گیگاهرتز بوده و مشخصات بسیار جدیدی دارد. این آی سی تمامی مشخصات و مزایای آی سی سری قبل خود یعنی nRF24L01A را داراست. بعلاوه pipeline و بافرهای اضافی، و همچنین ارسال مجدد اتوماتیک، از قابلیتهای اضافه شده در این سری از آی سی های RF است.

توجه: در سری پلاس «+» از این آی سی ها یعنی +nRF24L01 شرکت Nordic مشخصاتی مانند برد، حساسیت و نرخ تبادل اطلاعات را نسبت به محصول سری قبل یعنی nRF24L01 ارتقاء داده است. با این حال دستورات کنترلی یا Command های این سری با سری قبل یکی بوده و تغییری نداشته است.

مشخصات:

  • آنتن 2.4 گیگاهرتز روی بورد
  • برد 100 متر
  • نرخ تبادل اطلاعات قابل تنظیم از 250 کیلوبیت تا 2 مگابیت بر ثانیه
  • Auto Acknowledge
  • Re-Transmit Auto
  • Multiceiver با 6 دیتاپایپ
  • دارای 32 بایت FIFO بصورت مجزا برای TX و RX
  • پایه های ورودی با تحمل ولتاژ 5 ولت
  • قابلیت تنظیم کانال ارتباطی از 2400 مگاهرتز تا 2525 مگاهرتز (125کانال قابل انتخاب)
  • حداقل نیاز به قطعات جانبی جهت راه اندازی
  • ترتیب پایه ها :VCC ، CE ، CSN ، SCK ، MOSI ، MISO ، IRQ


شماتیک مدار:
nrf24l01_sch.jpg

مثال آردوینو:
کد:
/*
 # Be name Khoda!
 # A Mirf example to test the latency between two Ardunio.

 # Company    : AftabRayaneh
 # Website    : http://shop.aftabrayaneh.com
 # Developers : Reza Najafi, Elham Rasekh
 # Date       : 09.09.2013
 # Version    : 3.0
 
 * Pins:
 * Hardware SPI:
 * MISO -> 12
 * MOSI -> 11
 * SCK -> 13
 *
 * Configurable:
 * CE -> 8
 * CSN -> 7
 */

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

const int MAX_BUFFER_LEN = 16;
String Receive_Address = "clie1"; //A name that is dedicated to this station; MAX is 5 Char.
String Send_Address = "clie2";    //A name that is dedicated to another station; MAX is 5 Char. 

String strMirfBuffer="";
byte Transfer_Lock=0;

void setup()
{  
  Serial.begin(9600); 
  Setup_Mirf(); // initializing overall needed...  
  sendData("TALK"); 
}

void loop()
{
  if (!Mirf.isSending())
     check_MirfBuffer();  
  read_SerialBuffer();
} 

//This function checks mirf data availability. if data is available, put it in the buffer and generates an event.
void check_MirfBuffer()
{
  if (Mirf.dataReady())
  { 
    while(Mirf.dataReady())
    {
      int  tmp_index=0;
      byte tmp_buffer[4]={0};
      Mirf.getData(tmp_buffer);  
      while(tmp_buffer[tmp_index] && tmp_index<4 )
      {
        strMirfBuffer = strMirfBuffer + char(tmp_buffer[tmp_index]);
        tmp_index++;
      }
      if (strMirfBuffer.length() >= MAX_BUFFER_LEN ) 
        buffer_ready();     
     
      if (!Mirf.dataReady())
        delay(2);     
    }
  }
  else if (strMirfBuffer.length()>0 )   
    buffer_ready();   
}

//This function sends a 4 byte packet
void sendPacket(char packet[5])
{   
  Mirf.send((byte *)packet);
  while(Mirf.isSending());
}

//This function sends data 
void sendData(String strData)
{
  int StrLen=0;
  String tmp_Str="";
  Serial.print("sending data: ");
  Serial.print(strData);
  Transfer_Lock=1;
  StrLen=strData.length();
  Serial.print(" : ");
  Serial.println(StrLen);
  
  //parsing the data to 4 character packets (byte *)packet
  while (StrLen>0)
  {
    char tmp_Char[5]={0};
    if(StrLen>4)
    {
      tmp_Str=strData.substring(0,4);
      strData=strData.substring(4);
    }
    else
    {
      tmp_Str=strData;
      strData="";
    }
    tmp_Str.toCharArray(tmp_Char, 5);;
    sendPacket(tmp_Char); 
    StrLen=strData.length();    
  }  
  Transfer_Lock=0;
}

//This function parses received commands from another nrfs.
void buffer_ready()
{  
  if (strMirfBuffer == "TALK")
  {
    sendData("HURRAY !");
    Serial.println("Talking...");  
  }   
  //and parse other commands so on ...
  else 
  {
    Serial.print("<");
    Serial.print(strMirfBuffer);
    Serial.println(">");
  }
  clear_buffer(); 
}

//This function forms a buffer of serial data and send it
void read_SerialBuffer()
{
  if(Serial.available())
  {
    char CharData;
    String StrSerialBuffer=""; 
    
    while (Serial.available() && StrSerialBuffer.length() < MAX_BUFFER_LEN ) 
    {      
      CharData=Serial.read();
      StrSerialBuffer=StrSerialBuffer + CharData;   
      if (!Serial.available())
         delay(1);       
    }      
     while (Transfer_Lock); //wait for transfer process     
      
     sendData(StrSerialBuffer);    
  }
}

//This function initializes overall needed for wireless communication
void Setup_Mirf() 
{
  char Receive_Adr_Char[6];
  char Send_Adr_Char[6];
  Receive_Address.toCharArray(Receive_Adr_Char, 6); 
  Send_Address.toCharArray(Send_Adr_Char, 6); 

  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)Receive_Adr_Char);
  Mirf.setTADDR((byte *)Send_Adr_Char);
  Mirf.payload = sizeof(unsigned long);
  Mirf.config();

  //reg - Start  
  byte rf_setup = 0;
  Mirf.readRegister( RF_SETUP, &rf_setup, sizeof(rf_setup) );

  if (rf_setup != 0)   
    Serial.println("Beginning ... "); 
  else
  {
    Serial.println( "Wireless did not initialize!" );
    while (rf_setup==0);       
  }
  delay(100);
}

//This function clears the buffer
void clear_buffer ()
{
  strMirfBuffer="";
}
جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
تصاویر کوچک شده (Thumbnails) پیوست شده تصاویر کوچک شده (Thumbnails) پیوست شده nrf24l01.jpg  
فایل های پیوست شده فایل های پیوست شده
ویرایش توسط max : 10-31-2013 در ساعت 01:12 PM

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

سلام
این کد برای یک جفت +nrf24l01 تولید شده است ، فرض بر این هست که هر کدام از ماژول ها به یک برد آردوینو متصل هست ،کافی هست فقط این دو خط رو تغییر بدید و بعد روی هر برد جداگانه آپلود کنید.

کد:
String Receive_Address = "clie1";
String Send_Address = "clie2";



به صورت پیش فرض یکی از بردها به نام clie1 و برد دیگر clie2 نامگذاری شده ، پس توجه داشته باشد در زمان آپلود کد بر روی برد دوم حتما جای اسامی رو به این ترتیب تغییر بدید:


کد:
String Receive_Address = "clie2"; 
String Send_Address = "clie1";



بعد از اجرای کد در صورتی که از کنسول سریال مونیتور آردوینو استفاده کنید باید به راحتی بتونید پیام ها رو به صورت متنی برای برد دوم ارسال و دریافت کنید.

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

سلام
این 11 12 13 پایه های برد آردوینو هست ، باید معادلش رو روی میکرو مورد نظر خودتون پیدا کنید.


* MISO -> 12 * MOSI -> 11 * SCK -> 13 * * Configurable: * CE -> 8 * CSN -> 7 */

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

با سلام من آردوینو مگا رو با آردوینو پرو مینی را با این ماژول بیسیم به هم وصل کردم 

فقط یادتون باشه شما با استفاده از کتابخانههای بالا نمیتونید پایه هارو خودتون عوض کنید پس بل اجبار باید از دیتا شیت آردیونو خودتون پایهای فوق ( * MISO -> 12 * MOSI -> 11 * SCK -> 13 * * Configurable: * CE -> 8 * CSN -> 7 */) را پیدا کنید

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


طبق دیتا شیت باید که از 1.9 تا 3.5 کارکنه و ولتاژ 2.5 به نظر ایمن میاد برای کار (ولتاژ 2.5 با تقیسم ولتاژ دو مقاومت 10 کیلو از پین VCC میکرو گرفته شده است)
البته از خود کتابخانه SPI واسه تست کردن استفاده کردم و تمام مود ها و تقسم کلاک ها را نیز چک کردم به نظر تو کلاک های پاینتر پایدارتر میاد اما باز هم نتیجه ای نگرفتم 
ممکن است به خاطر کیفیت پایین محصولات چینی باشه.

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

مشکل حل شد. سیم بندی برای Mega2560 باید به صورت زیر باشد:
MISO -> 50
MOSI -> 51
SCK -> 52
CE -> 8
CSN -> 7
GND -> GND
VCC -> 3.3v

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

من از یک Arduino Pro Mini که به یک سنسور دما و رطوبت DHT 22 متصل است استفاده کردم. طرف دیگه یک آردینو Uno بود که مقادیر رو دریافت می کنه و روی یک Liquid Crystal نمایش میده. با همه ماژول های NRF که 8 پایه هستند تست کردم و با همشون به خوبی کار میکنه.

کد ارسال:
کد:
/* YourDuinoStarter Example: nRF24L01 Transmit Joystick values
 - WHAT IT DOES: Reads Analog values on A0, A1 and transmits
   them over a nRF24L01 Radio Link to another transceiver.
 - SEE the comments after "//" on each line below
 - CONNECTIONS: nRF24L01 Modules See:
 http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
   1 - GND
   2 - VCC 3.3V !!! NOT 5V
   3 - CE to Arduino pin 9
   4 - CSN to Arduino pin 10
   5 - SCK to Arduino pin 13
   6 - MOSI to Arduino pin 11
   7 - MISO to Arduino pin 12
   8 - UNUSED
   - 
   Analog Joystick or two 10K potentiometers:
   GND to Arduino GND
   VCC to Arduino +5V
   X Pot to Arduino A0
   Y Pot to Arduino A1
   
 - V1.00 11/26/13
   Based on examples at http://www.bajdi.com/
   Questions: terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include "DHT.h"
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>


/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10
//#define JOYSTICK_X A0
//#define JOYSTICK_Y A1
#define DHTPIN 2     // what pin we're connected to
#define DHTTYPE DHT22   // DHT 22  (AM2302)

// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe


/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int data[3];  // 2 element array holding Joystick readings

DHT dht(DHTPIN, DHTTYPE);
void setup()   /****** SETUP: RUNS ONCE ******/
{
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
  dht.begin();
   
  
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  //joystick[0] = analogRead(JOYSTICK_X);
  //joystick[1] = analogRead(JOYSTICK_Y);

  float h = dht.readHumidity();
  float t = dht.readTemperature();
  data[0] = 1;
  data[1] = 100;//h;
  data[2] = 200;//t;
  
  radio.write( data, sizeof(data) );
  //delay(1000);
}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********
کد دریافت
کد:
/* YourDuinoStarter Example: nRF24L01 Receive Joystick values

 - WHAT IT DOES: Receives data from another transceiver with
   2 Analog values from a Joystick or 2 Potentiometers
   Displays received values on Serial Monitor
 - SEE the comments after "//" on each line below
 - CONNECTIONS: nRF24L01 Modules See:
 http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
   1 - GND
   2 - VCC 3.3V !!! NOT 5V
   3 - CE to Arduino pin 9
   4 - CSN to Arduino pin 10
   5 - SCK to Arduino pin 13
   6 - MOSI to Arduino pin 11
   7 - MISO to Arduino pin 12
   8 - UNUSED
   
 - V1.00 11/26/13
   Based on examples at http://www.bajdi.com/
   Questions: terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display


/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10

// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe


/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int data[3];  // 2 element array holding Joystick readings

void setup()   /****** SETUP: RUNS ONCE ******/
{
  Serial.begin(9600);
  delay(1000);
  Serial.println("Nrf24L01 Receiver Starting");
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();;
  
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  if ( radio.available() )
  {
    // Read the data payload until we've received everything
    bool done = false;
    while (!done)
    {
      // Fetch the data payload
      done = radio.read( data, sizeof(data) );
      //Serial.print("H = ");
      //Serial.print(data[1]);
      //Serial.print(" T = ");      
      //Serial.println(data[2]);
      lcd.clear();

      lcd.setCursor(0,0);
      lcd.print("Channel: ");
      lcd.print(data[0]);
      
      lcd.setCursor(0,1);
      
      lcd.print("H: ");
      lcd.print(data[1]);
      lcd.print(" T: ");
      lcd.print(data[2]);

      delay(500);
    }
  }
  else
  {    
      //Serial.println("No radio available");
      lcd.clear();
      lcd.print("No radio available");
      delay(500);
  }

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********

امّا از دو طرف فقط توی سریال صفر میبینم...
دوستانی که کار کردن با این ماژول و یا اطلاعاتی دارن لطفاً راهنمایی کنید...
قسمت SETUP هر دو تا برنامه یکی هست و فقط جای آدرس pipe ها (read و write)عوض شده
اون قسمت setRetries هم با 15و15 هم همین طور کار می کرد...

من چیز دیگه ای، به ذهنم نمیرسه دوستان اگر چیزی میدونند لطفاً کمک کنید...

لطفاً از طریق همین فروم یا میل «arsham.sharifnia@gmail.com» پاسخ بدید

نقل قول نوشته اصلی توسط navidnkh نمایش پست ها
میشه کتابخونه هایی که استفاده کردید رو بزارید تا بهتر بتونم مشکلتونو حل کنم
این هم لینک دانلود دوتا کتابخونه rf24,nRF24l01 ممنون میشم...


لینک پرشین*گیگ:
Download LIBRARIES.zip


لینک از سرور همین سایت:
LIBRARIES.zip


نقل قول نوشته اصلی توسط arsham نمایش پست ها
این هم لینک دانلود دوتا کتابخونه rf24,nRF24l01 ممنون میشم...


لینک پرشین*گیگ:
Download LIBRARIES.zip


لینک از سرور همین سایت:
فایل پیوست 1159
من کد شما رو تست کردم و خب دقیقا همون جواب 0 رو دریافت کردم ولی چون من دقیقا نمیدونم میخواید چه کار انجام بدید نمی دونم کد رو اون جور که میخواید تونستم تغییر بدم یا نه

حالا این کد هارو میزارم ببینید به درد کارتون میخوره یا بازهم اگر مشکل داره بگید تغیرش بدم

کد مگا به عنوان فرستنده

کد:
 /*       
        ####UPLOAD TO MEGA####
        #     MOSI==>51      #
        #     MISO==>50      #
        #     SCK===>52      #
        # # # # # # # # # # ##
        # CE_pin 7&CSN_pin 8 #
        ######################
*/


//====# header files #====
#include<SPI.h>
#include<nRF24l01.h>
#include<RF24.h>


//====# define #====
#define CE_pin 7
#define CSN_pin 8


//====# pre initializing #====
RF24 radio(CE_pin,CSN_pin);
const uint64_t mega_to_uno_pipe=0x0f0f0f0f01LL; //40 bit add, differs in lsb
const uint64_t uno_to_mega_pipe=0x0f0f0f0f02LL; // LL means long-long
int A[1];
bool done;
//====# SetUp part #====
void setup(){
  Serial.begin(9600);
  radio.begin();
  radio.setPayloadSize(sizeof(A));
  radio.openReadingPipe(1,mega_to_uno_pipe);
  radio.openWritingPipe(uno_to_mega_pipe);
  radio.setRetries(0,0);
  radio.setDataRate(RF24_1MBPS);
}


//====# The main program #====
void loop(){
  A[0] = 0xF0;
 done=radio.write( A, 1 );
 Serial.print(done);
 delay(100);
}
کد uno به عنوان گیرنده





کد:
/*        
        ####UPLOAD TO UNO####
        #    MOSI==>11      #
        #    MISO==>12      #
        #    SCK===>13      #
        # # # # # # # # # # #
        #CE_pin 7&CSN_pin 8 #
        #####################
*/




//====# header files #====
#include<SPI.h>
#include<nRF24l01.h>
#include<RF24.h>


//====# define #====
#define CE_pin 7
#define CSN_pin 8


//====# pre initializing #====
RF24 radio(CE_pin,CSN_pin);
const uint64_t mega_to_uno_pipe=0x0f0f0f0f01LL; //40 bit add, differs in lsb
const uint64_t uno_to_mega_pipe=0x0f0f0f0f02LL; // LL means long-long
int A[1];
bool done=false;
//====# SetUp part #====
void setup(){
  A[0] = 0x000;
  Serial.begin(9600);
  radio.begin();
  //radio.setPayloadSize(sizeof(A));
  radio.openReadingPipe(1,uno_to_mega_pipe);
  radio.openWritingPipe(mega_to_uno_pipe);
  radio.setRetries(0,0);
  radio.setDataRate(RF24_1MBPS);
  pinMode(13,OUTPUT);
  radio.startListening();
}


//====# The main program #====
void loop(){
   
  if (radio.available()){   
    while (true){
      radio.read(&A,sizeof(A));
      if(A[0]==0xF0){
        done=true;
      }
      //radio.stopListening();
      digitalWrite(13,done);
      Serial.print("Done: ");
      Serial.println(done);
      Serial.print("A[0]: ");
      Serial.println(A[0],HEX);
      delay(100);
    }
  }
}
ویرایش توسط navidnkh : 11-10-2014 در ساعت 06:15 PM
===================================================
بسم الله الرحمن الرحیم

0)من اینو خریدم منتها قاعدتا این کد برای سایر بوردهای NRF24l01 هم جواب می ده:

ماژول انتقال بیسیم اطلاعات +NRF24L01 ( فرکانس 2.4G ) + آنتن

1) برای رفع مشکل تغذیه شما می تونید با موازی کردن دو خازن در رنج های ۱۰۰ نانو فاراد و ۱۰ میکرو فاراد با تغذیه ۳/۳ ولتی اون هر نویزی رو از روی تغذیه حذف کنید و مطابق شکل زیر سیم کشی ها رو انجام بدید:

nrf24l01_bb_.jpg
my_nrf24.jpg

2)من از کتابخونه RF24 استفاده کردم؛ فایل فشرده RF24 رو unzip کنید و توی فولدر libraries قرار بدید.

github.com/tmrh20/RF24

3)فایل فشرده my_RF24_T کد مربوط به فرستنده هست و فایل فشرده my_RF24_R کد مربوط به گیرنده هست.
اتصال پین ها باید با کد انطباق داشته باشه:

کد:
// Hardware configuration: Set up nRF24L01 radio on SPI bus plus pins 7 & 8 
RF24 radio(7,8);
امیدوارم مفید بوده باشه.
فایل های پیوست شده فایل های پیوست شده


  • ShahBaz