Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pi 2 B is not receiving from moteino. Transmit is OK. #29

Open
morrowwm opened this issue Dec 14, 2017 · 11 comments
Open

Pi 2 B is not receiving from moteino. Transmit is OK. #29

morrowwm opened this issue Dec 14, 2017 · 11 comments

Comments

@morrowwm
Copy link

morrowwm commented Dec 14, 2017

I am testing communication between a Raspberry Pi model 2B and moteino. On the Pi I am using the radio1.py script, with slight changes. On the moteino I am using a modified version of LowPowerLab's "Struct_receive" example script. They're in the attachment.

On the Pi, I see:

starting loop...
tx to radio 2: I'm radio 1: 0
start recv...
timed out waiting for recv
end recv...
 ***  from 0 RSSI:0
ack not requested...

and so on. On the moteino, I see

[1]  [RX_RSSI:-65]Got: I'm radio 1: 2 - ACK sent. Pinging node 1 - ACK...nothing
[1]  [RX_RSSI:-66]Got: I'm radio 1: 1 - ACK sent.

the [1] means the message came from node 1, which is the Raspberry Pi. So it transmits and the moteino receives.

However, the ACK back fails, and any transmitting I try from the moteino side is not received by the Pi.

I'm using a perfboard hack to attach the RFM69 to the Pi. I've attached the RFM69 according to the pins in README.md here, except I'm using ground pin 20. I have RFM69W, so not enabling high power.
files.tar.gz

@LDavidFr
Copy link

Hello
I have same problem.
You have solution ?

@morrowwm
Copy link
Author

morrowwm commented Jan 26, 2018

No solution. I gave up on the Pi and I am using an ESP8266 with RFM69 as a gateway to ethernet.

@blooem
Copy link

blooem commented Feb 8, 2018

@morrowwm Same problem here, When you say ESP8266 with RFM69 what do you mean?

Thanks,
B

@morrowwm
Copy link
Author

morrowwm commented Feb 8, 2018

It's a LoLin nodeMCU board. I connected the RFM69CW module with a homemade cable.
20180208_091618

@LDavidFr
Copy link

LDavidFr commented Feb 8, 2018

Work for wemos D1 and esp07.

@supershiye
Copy link

I have the same issue. It can send but not receive.

@labaude
Copy link

labaude commented Aug 14, 2018

I am experiencing similar problem within 2 PIs.. It seems I receive the ACK maybe 10% of the time..
Anyone has an idea of the reason why the PI would act as such?

Thanks

@labaude
Copy link

labaude commented Aug 14, 2018

OK, it seems adding 2 milliseconds delay before sending the ACK does the trick for me. (i.e now receive the ACK 100 % of the time).
This delay seem to be used in a few examples cases from the original library.

From the radio1.py line 58 it would look like:

    if radio.ACKRequested():
        print "sending ack..."
        time.sleep(0.002)
        radio.sendACK()

@supershiye
Copy link

supershiye commented Aug 14, 2018 via email

@labaude
Copy link

labaude commented Aug 14, 2018

Actually the trick described above do not work anyore for me after reboot. I'll edit when I'll have finish my investigation.

I am trying to connect 2 RFM69HCW using a RPI 3 B+ and RPI 2 B.

I am using radio1.py and radio2.py exemple sighlty modified. I can get the radio2 to send msg to radio1, which receives it and send the ACK. But I can't get the radio2 to systematically get the ACK back. (i.e sendWithRetry should turn to True and so print ( ack_recieved)). It only print it some time, maybe 1 out of 10...

I am using highpower.

Any idea if I am doing something silly?
Thanks

@supershiye
Copy link

supershiye commented Aug 14, 2018 via email

neilgupta added a commit to Hiome/pyRFM69 that referenced this issue Apr 7, 2019
We no longer call receiveBegin() from inside receiveDone() if no data's
ready. Previously, if interruptHandler triggerred while receiveDone()
was processing, receiveBegin() would wipe out the received data. This
could be mitigated with sleeps between loops to decrease the odds of
such a scenario, but it's far more reliable to just let the user
explicitly call receiveBegin() once they have processed the latest
message. This should fix issue etrombly#29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants