Так, просто для информации - это библиотека на питоне. А у нас тут в основном форум про С
Хм вот я дубина то)
Это я понимаю)) на ардуино тоже есть эти библиотеки , но там тоже у меня ничего не получается
Простите , что столько постов подряд от меня ! Вот даже ссылка на проект где берут 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.
ну так, приёмник жеж не включен!?
Да, и на приемнике тоже такая же ошибка
- для начала вернуть пины на авторские (в обоих девайсах)
- приёмник должен быть включенным
- включаем передатчик и смотрим, если вылезает та же ошибка смотрим команды библиотеки 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 пина , ну это прям если все как в оригинале паять
В библиотеке 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 подпаяй керамику на всякий случай.

