微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 RaspberryPi 和 arduino 无线发送数据

如何解决使用 RaspberryPi 和 arduino 无线发送数据

我已经安装了以下版本。但是我无法通过 arduino uno 向带有 nrf24l01 的 raspBerrypi 发送无线数据。

我正确输入了 RaspBerrypi 和 Arduino 连接引脚。

我无法发送任何数据。但我的链接是正确的。

你能帮忙解决这个问题吗?

树莓派 - 服务器

    using Radios.RF24;
    using System;
    using System.Diagnostics;
    using System.Text;
    using Windows.UI.Core;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Navigation;

    namespace MyApplication.UWP
    {
        public sealed partial class MainPage : Page
        {
            private const byte CS_LINE = 0;
            private const byte CE_PIN = 16;
            private const byte IRQ_PIN = 21;
            private const byte CHANNEL = 76;
            private byte[] NODE1 = Encoding.UTF8.GetBytes("1Node");
            private byte[] NODE2 = Encoding.UTF8.GetBytes("2Node");

            public RF24 sender;
            public RF24 receiver;
            bool isInitialized = false;

            public MainPage()
            {
                this.InitializeComponent();
                SendButton.Click += ButtonSend_Click;

                Datarate.ItemsSource = Enum.GetValues(typeof(Datarate));
                PowerLevel.ItemsSource = Enum.GetValues(typeof(PowerLevel));

                sender = new RF24();
                receiver = new RF24(); //

                sender.OnDataReceived += Radio_OnDataReceived;
                sender.OnTransmitFailed += Radio_OnTransmitFailed;
                sender.OnTransmitSuccess += Radio_OnTransmitSuccess;

                isInitialized = true;
            }

            protected override async void OnNavigatedTo(NavigationEventArgs e)
            {
                await sender.Initialize(23,24,"SPI0");
                await receiver.Initialize(5,6,"SPI1"); //

                sender.IsEnabled = true;
                receiver.IsEnabled = true; //

                sender.Channel = 76;
                receiver.Channel = 76; //
                
                sender.Address = NODE1;
                receiver.Address = NODE2;

                Debug.WriteLine(sender.details());
                Debug.WriteLine(receiver.details()); //
            }

            private void ButtonSend_Click(object sender1,RoutedEventArgs e)
            {
                var addr = Encoding.UTF8.GetBytes(SendToAddress.Text);
                Array.Reverse(addr);
                sender.SendTo(NODE2,Encoding.UTF8.GetBytes(SendBuffer.Text));
            }

            private void Radio_OnTransmitSuccess()
            {
                Debug.WriteLine("Transmit Succeeded!");
                if (isInitialized)
                    dispatcher.RunAsync(CoredispatcherPriority.normal,() => SendStatus.Text = "Transmit Succeeded");
            }

            private void Radio_OnTransmitFailed()
            {
                Debug.WriteLine("Transmit Failed");
                if (isInitialized)
                    dispatcher.RunAsync(CoredispatcherPriority.normal,() => SendStatus.Text = "Transmit Failed");
            }

            private void Radio_OnDataReceived(byte[] data)
            {
                Debug.WriteLine("Received: " + Encoding.UTF8.GetString(data));
                if (isInitialized)
                    dispatcher.RunAsync(CoredispatcherPriority.normal,() => ReceiveBuffer.Text = Encoding.UTF8.GetString(data));
            }
        }
    }

我在 arduino 端使用的代码

Arduino uno - 客户端

#include <SPI.h>
#include <nRF24L01.h>
#include "printf.h"
#include <RF24.h>
#include <RF24_config.h>

int address = 0x28; // 28 is the address
byte byte1,byte2,byte3,byte4;
RF24 radio (7,8);
const uint64_t cihazlar[3] = { 0x0E314E6F6465,0x0E324E6F6465};

struct dataStruct {
  int p1; 
  int t1; 
} transmitter2_data;

void setup()
{
  radio.begin();
  radio.setChannel(76);
  Serial.begin(9600);
  
  printf_begin();
  radio.setRetries(15,15);
  radio.enableDynamicPayloads();
  radio.setDatarate(RF24_250KBPS);
  
  radio.openWritingPipe(cihazlar[0]);
  
  radio.stopListening();
  radio.printDetails();
}

void loop()
{
  transmitter2_data.p1 = 300;
  transmitter2_data.t1 = 400;

  bool ok = radio.write(&transmitter2_data,sizeof(transmitter2_data));

  if (ok)
  {
    Serial.println("ProMini 2");
    Serial.println(transmitter2_data.p1);
    Serial.println(transmitter2_data.t1);
    Serial.println(transmitter2_data.s1);
  }
  else
  {
    Serial.println("it Failed to send");
  }
  delay(1500);
}

原始地址 https://github.com/silvinus/NRF24L01

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?