如何解决使用 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 举报,一经查实,本站将立刻删除。