Rasberry PI PICO (RP2040) продолжение темы

Так, просто для информации - это библиотека на питоне. А у нас тут в основном форум про С

Хм вот я дубина то)

Это я понимаю)) на ардуино тоже есть эти библиотеки , но там тоже у меня ничего не получается

Простите , что столько постов подряд от меня ! Вот даже ссылка на проект где берут pi pico и Lora ra 02 и заливают скетчи и все работает. Raspberry Pi Pico W with LoRa SX1278 for Sensor Monitoring Где я туплю пока не понимаю(

возьмите код этих проектов, там всё сделано

Брал , заливал , не работает, может у меня pico слишком китайская?

что видите в мониторе порта передатчика?

измените в коду в setup() на этот кусок (добавить задержку, а то можете ничего не увидеть)

void setup() {
  Serial.begin(9600);                   // initialize serial
  delay(5000);
  pinMode(pot2, INPUT);

откройте монитор порта и залейте новый код, приёмник должен быть включен, если нет связи увидим это:

LoRa init failed. Check your connections.

Ничего нет. Давайте по порядку расскажу как я делаю.

Скачал я с того сайта библиотеку LoRa.h закинул ее в Документы\Arduino\libraries

потом взял код

/*
  Raspberry pi pico transmitter
  https://www.electroniclinic.com/
*/
#include <SPI.h>              // include libraries
#include <LoRa.h>
 #define nss 8
#define rst 9
#define dio0 7
byte MasterNode = 0xFF;     
byte Node2 = 0xCC; 
  int pot2=26;
String SenderNode = "";
String outgoing;              // outgoing message
String message1;
String message2; 
byte msgCount = 0;            // count of outgoing messages
 
// Tracks the time since last event fired
unsigned long previousMillis=0;
unsigned long int previoussecs = 0; 
unsigned long int currentsecs = 0; 
unsigned long currentMillis = 0;
int Secs = 0; 
 
long lastSendTime = 0;        // last send time
int interval = 20;          // interval between sends 

void setup() {
  Serial.begin(9600);                   // initialize serial
    pinMode(pot2,INPUT);

           LoRa.setPins(nss, rst, dio0);

  if (!LoRa.begin(433E6)) {             // initialize ratio at 915 MHz
    Serial.println("LoRa init failed. Check your connections.");
    while (true);                       // if failed, do nothing
  }
 
 Serial.println("LoRa init succeeded.");
}
 
void loop() {
 
  if (millis() - lastSendTime > interval) {
    int  sensor2;
   sensor2 = analogRead(pot2); 
   Serial.println(sensor2);
   message2=message2 + sensor2 +","; 
    sendMessage(message2,MasterNode,Node2); 
   delay(50);
    
    //Serial.println("Sending " + message);
    lastSendTime = millis();            // timestamp the message
  //  interval = random(50);  
    message1="";
    message2 = "";
    
    }
    
  }
 
 
void sendMessage(String outgoing, byte MasterNode, byte otherNode) {
  LoRa.beginPacket();                   // start packet
  LoRa.write(otherNode);              // add destination address
  LoRa.write(MasterNode);             // add sender address
  LoRa.write(msgCount);                 // add message ID
  LoRa.write(outgoing.length());        // add payload length
  LoRa.print(outgoing);                 // add payload
  LoRa.endPacket();                     // finish packet and send it
  msgCount++;                           // increment message ID
}

Поменял в коде значения на свои пины

#define nss 5
#define rst 14
#define dio0 2

Теперь выдергиваю pico из усб , зажимаю кнопку boot на плате , вставляю в усб (она открывается как флешка ) и зашиваю, все происходит успешно.
Пробовал и без нажатия кнопки boot зашивать, тоже зашивается, но , как я понял именно с boot код зашивается и работает , проверял на коде со светодиодом.

А в мониторе ничего нет, пробовал смотреть и через Terminal. Так подробно расписываю все , так как первый раз с pico имею дело, мож нюансы какие есть.

я же сказал как сделать, выше, исправить код, открыть монитор порта, залить код, смотрим монитор порта

[quote=“ua6em, post:422, topic:8657, full:true”]
я же сказал как сделать, выше, исправить код, открыть монитор порта, залить код, смотрим монитор порта

Да я сделал как вы сказали и получил ошибку LoRa init failed. Check your connections.

ну так, приёмник жеж не включен!?

Да, и на приемнике тоже такая же ошибка

  1. для начала вернуть пины на авторские (в обоих девайсах)
  2. приёмник должен быть включенным
  3. включаем передатчик и смотрим, если вылезает та же ошибка смотрим команды библиотеки Lorа, попытаться определить в чем проблема (то-есть надо пообщаться с модулем Lora, есть ли общение на уровне ардуино- Lora)

Хорошо, пошел пробовать

кстати, у тебя модули на какую частоту?

модули на 433, еще вот такой вопрос в оригинале на схеме не задействованы пины dio0 и rst , а в коде есть эти пины

если на модуле они есть значит надо подключать

и если саму библиотеку открыть то там мы видим такую картину

#ifdef ARDUINO_SAMD_MKRWAN1300
#define LORA_DEFAULT_SPI SPI1
#define LORA_DEFAULT_SPI_FREQUENCY 250000
#define LORA_DEFAULT_SS_PIN LORA_IRQ_DUMB
#define LORA_DEFAULT_RESET_PIN -1
#define LORA_DEFAULT_DIO0_PIN -1
#else
#define LORA_DEFAULT_SPI SPI
#define LORA_DEFAULT_SPI_FREQUENCY 8E6
#define LORA_DEFAULT_SS_PIN 10
#define LORA_DEFAULT_RESET_PIN 9
#define LORA_DEFAULT_DIO0_PIN 2
#endif

#define PA_OUTPUT_RFO_PIN 0
#define PA_OUTPUT_PA_BOOST_PIN 1

что явно не соответствует моей плате


и еще на моей pico нет 19 пина , ну это прям если все как в оригинале паять :grinning:

В библиотеке Lora есть примеры “LoRaSender” и LoRaReciever". Попробуйте их.

//LoRaSender
#include <SPI.h>
#include <LoRa.h> //Download here: http://electronoobs.com/eng_arduino_LoRa_SX1278.php.php
  #define SCK     15// пины поменяйте на свои
  #define MISO    14// пины поменяйте на свои
  #define MOSI    16// пины поменяйте на свои
  #define SS      8// пины поменяйте на свои
  #define RST     4// пины поменяйте на свои
  #define DI0     7// пины поменяйте на свои
  #define BAND    433E6  // 915E6
int counter = 0;

void setup() {
  Serial.begin(9600);


  Serial.println("LoRa Sender");

  if (!LoRa.begin(BAND)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
else{
Serial.println("Starting LoRa OK!");
}
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);

  // send packet
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();

  counter++;

  delay(1000);
}

Если инициализация ОК- подключаем и приемник. Если “failed” проверяем подключение и питание.
Между выводами 2 и 3 модуля LoRa подпаяй керамику на всякий случай.