Author Topic: ATC goes down infinite?  (Read 3574 times)

MrGlasspoole

  • NewMember
  • *
  • Posts: 35
  • Country: de
ATC goes down infinite?
« on: March 09, 2016, 06:18:52 AM »
Hi,

i need to say first that this is a clone. But i will order a Moteino in the future to support you ;)
It's a Pro Mini with RFM69W and DS18B20.
I had it working with Nano's 50cm apart on breadboard but did not make a long range test because
the RFM12B's did work through the whole house over 3 floors.

So i did build the thing with a 3.3V/8MHz Pro Mini and uploaded the same code i used on the Nano.
I took him to the other end of the house and it worked for 3 minutes >:(
So i did another one on breadboard because maybe my soldering is wrong or whatever...
But same behavior so i checked the serial console and ATC is going crazy...
Wild fluctuations:
Code: [Select]
no:2,tmp:22.50,mV:3246,rssi:-90 - ACK sent.
no:2,tmp:22.50,mV:3246,rssi:-72 - ACK sent.
no:2,tmp:22.37,mV:3246,rssi:-74 - ACK sent.
no:2,tmp:22.31,mV:3246,rssi:-77 - ACK sent.
no:2,tmp:22.19,mV:3246,rssi:-79 - ACK sent.
no:2,tmp:22.12,mV:3246,rssi:-80 - ACK sent.
no:2,tmp:22.06,mV:3246,rssi:-99 - ACK sent.
no:2,tmp:21.94,mV:3246,rssi:-98 - ACK sent.
no:2,tmp:21.87,mV:3246,rssi:-77 - ACK sent.
no:2,tmp:21.81,mV:3246,rssi:-98 - ACK sent.
no:2,tmp:21.75,mV:3246,rssi:-98 - ACK sent.
no:2,tmp:21.69,mV:3246,rssi:-94 - ACK sent.
no:2,tmp:21.62,mV:3246,rssi:-74 - ACK sent.
no:2,tmp:21.56,mV:3246,rssi:-94 - ACK sent.
no:2,tmp:21.44,mV:3246,rssi:-92 - ACK sent.
Also i did set "enableAutoPower" to minimum -85 :o

After no more receiving (pulling the plug and putting it back in did not bring back anything in the receiver) i did a reset on the
receivers console and got three more lines before it stopped again:
Quote
The frequency is 868 Mhz, Kenneth!
RFM69_ATC Enabled (Auto Transmission Control)

no:2,tmp:12.44,mV:3352,rssi:-91 - ACK sent.
no:2,tmp:12.69,mV:3362,rssi:-91 - ACK sent.
no:2,tmp:11.81,mV:3382,rssi:-128 - ACK sent.
So it looks like ATC goes down until there is no more power?
But i did set minimum -85?
Also i thought -100 is minimum?

So here is the code. I did comment out some power saving stuff to make sure that's not the problem.

Transceiver (8MHz Pro Mini):
Code: [Select]
// RFM69W sender with ACK and encryption and Automatic Transmission Control
// Temp sensor with DALLAS DS18B20

#include <RFM69.h> // https://www.github.com/lowpowerlab/rfm69
#include <RFM69_ATC.h> // https://www.github.com/lowpowerlab/rfm69
#include <SPI.h> // Comes with Arduino IDE
#include <OneWire.h> // https://github.com/PaulStoffregen/OneWire
#include <DallasTemperature.h> // https://github.com/milesburton/Arduino-Temperature-Control-Library
#include <JeeLib.h> // https://github.com/jcw/jeelib

ISR(WDT_vect) { Sleepy::watchdogEvent(); } // Interrupt handler for JeeLabs Sleepy power saving

/**************************************************************
* RADIO SETUP                                                 *
**************************************************************/
#define NODEID        2 // Unique for each node on same network
#define NETWORKID     204 // The same on all nodes that talk to each other
#define GATEWAYID     1
#define FREQUENCY     RF69_868MHZ // Frequency of the hardware version of the radio module
#define ENCRYPTKEY    "M>9L+4*t[m#Dv\5b" // Exactly the same 16 characters/bytes on all nodes!
#define ENABLE_ATC    // comment out this line to disable AUTO TRANSMISSION CONTROL

#define ACK_TIME      20 // Number of milliseconds to wait for an ack
#define RETRY_PERIOD  5  // How soon to retry (in seconds) if ACK didn't come in
#define RETRY_LIMIT   5  // Maximum number of times to retry

/**************************************************************
* CONNECTIONS                                                 *
**************************************************************/
const byte ONE_WIRE_BUS = 3; // DS18B20 Temperature sensor is connected on D3
const byte ONE_WIRE_POWER = 4; // DS18B20 Power pin is connected on D4

/**************************************************************
* MISC SETUP                                                  *
**************************************************************/
#define SERIAL_BAUD   115200 // Set serial speed
#define DEBUG         1 // Set to 1 for serial port output

OneWire oneWire(ONE_WIRE_BUS); // Setup oneWire instance to communicate with any OneWire devices.
DallasTemperature sensors(&oneWire); // Pass oneWire reference to Dallas Temperature.

#ifdef ENABLE_ATC
  RFM69_ATC radio;
#else
  RFM69 radio;
#endif

/**************************************************************
* DATA STRUCTURE TO BE SENDE                                  *
**************************************************************/
typedef struct {
  int nodeId; // Store this nodeId
  float temp; // Temperature reading
  int vcc; // Battery voltage
} Payload;
Payload theData;

/**************************************************************
* SEND PAYLOAD DATA                                           *
**************************************************************/
static void rfwrite() {
  radio.receiveDone();
  if (radio.sendWithRetry(GATEWAYID, (const void*)(&theData), sizeof(theData), RETRY_LIMIT, ACK_TIME)) {
    if (DEBUG) {
      Serial.print("ACK received! ");
      Serial.print("Sending ");
      Serial.print(sizeof(theData));
      Serial.println(" bytes... ");
      Serial.flush();
    }
    radio.sleep(); // Put radio to sleep
    } else {
      if (DEBUG) {
        Serial.println("No ACK response!");
        Serial.flush();
      }
      //Sleepy::loseSomeTime(RETRY_PERIOD * 1000); // If no ack received wait and try again
    }
}

/**************************************************************
* READ BATTERY VOLTAGE                                        *
**************************************************************/
long readVcc() {
//  bitClear(PRR, PRADC); ADCSRA |= bit(ADEN); // Enable the ADC
  long result;
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);  // For ATmega328
  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Convert
  while (bit_is_set(ADCSRA,ADSC));
  result = ADCL;
  result |= ADCH<<8;
  result = 1126400L / result; // Back-calculate Vcc in mV
//  ADCSRA &= ~ bit(ADEN); bitSet(PRR, PRADC); // Disable the ADC to save power
  return result;
}

/**************************************************************
* SETUP                                                       *
**************************************************************/

byte pin[] = {5, 6, 7, 8, 9}; // Array of unused digital pins
byte pinCount = sizeof(pin) / sizeof(pin[0]); // Count unused digital pins

void setup() {
  radio.initialize(FREQUENCY,NODEID,NETWORKID);
  radio.encrypt(ENCRYPTKEY);

  #ifdef ENABLE_ATC
    radio.enableAutoPower(-85);
  #endif
 
  radio.sleep(); // Put radio to sleep

//  PRR = bit(PRTIM1); // Only keep timer 0 going
 
//  ADCSRA &= ~ bit(ADEN); bitSet(PRR, PRADC); // Disable the ADC to save power

  sensors.setResolution(12); // Set sensor resolution

  // Output setup
  pinMode(ONE_WIRE_POWER, OUTPUT); // Set power pin for DS18B20 to output
  for (byte i = 0; i < pinCount; i++) {
    pinMode(pin[i], OUTPUT);    // Set unused digital pins as output
    digitalWrite(pin[i], LOW);  // Set unused digital pins state to low
  }
 
  startupTasks(); // Run tasks
}

void startupTasks() {
  if (DEBUG) {
    char buff[50];
    Serial.begin(SERIAL_BAUD); // Open serial communications and wait for port to open
    while (!Serial) {;} // Wait for serial port to connect
    sprintf(buff, "\nThe frequency is %d Mhz, Kenneth!", FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915);
    Serial.println(buff);
    #ifdef ENABLE_ATC
      Serial.println("RFM69_ATC Enabled (Auto Transmission Control)\n");
    #endif
  }
}


void loop() {

  digitalWrite(ONE_WIRE_POWER, HIGH); // Turn DS18B20 on

  //Sleepy::loseSomeTime(5); // Allow 5ms for the sensor to be ready
  delay(5); // The above doesn't seem to work for everyone (why?)
 
  sensors.begin(); // Start Dallas Temperature library
  sensors.requestTemperatures(); // Get the temperature
  theData.temp=(sensors.getTempCByIndex(0)); // Read first sensor
 
  digitalWrite(ONE_WIRE_POWER, LOW); // Turn DS18B20 off

  theData.nodeId = NODEID;
  theData.vcc = readVcc(); // Get battery voltage

  rfwrite(); // Send data via RF

  Sleepy::loseSomeTime(5000);
}

MrGlasspoole

  • NewMember
  • *
  • Posts: 35
  • Country: de
Re: ATC goes down infinite?
« Reply #1 on: March 09, 2016, 06:19:11 AM »
EDIT start
I made another Nano on breadboard and it works. ATC is stable between -50~55.
I'm missing something special i have to do on 8MHz?
EDIT end

2nd EDIT
One Pro Mini is now running since a half hour without hiccups.
I was on my way to check the fuses and thought if i already have the connection to the Mega i write the bootloader.
So after that it runs - i will see if that fixed it. I don't know what the china man did put on there. Is there a way to find out?
Too bad i already have two soldered and need to take them apart now to access the SPI :-(
2nd EDit end

Receiver (16MHz Nano):
Code: [Select]
// RFM69 receiver/gateway with ACK and encryption and Automatic Transmission Control
// Passes through any wireless received messages to the serial port & responds to ACKs

#include <RFM69.h> // https://www.github.com/lowpowerlab/rfm69
#include <RFM69_ATC.h> // https://www.github.com/lowpowerlab/rfm69
#include <SPI.h> //comes with Arduino IDE (www.arduino.cc)

/**************************************************************
* RADIO SETUP                                                 *
**************************************************************/
#define NODEID        1 // Unique for each node on same network
#define NETWORKID     204 // The same on all nodes that talk to each other
#define FREQUENCY     RF69_868MHZ // Frequency of the hardware version of the radio module
#define ENCRYPTKEY    "M>9L+4*t[m#Dv\5b" // Exactly the same 16 characters/bytes on all nodes!
//#define IS_RFM69HW    // Uncomment only for RFM69HW! Leave out if you have RFM69W!
#define ENABLE_ATC    // comment out this line to disable AUTO TRANSMISSION CONTROL

#define ACK_TIME      20 // Number of milliseconds to wait for an ack
#define RETRY_PERIOD  5  // How soon to retry (in seconds) if ACK didn't come in
#define RETRY_LIMIT   5  // Maximum number of times to retry

/**************************************************************
* CONNECTIONS                                                 *
**************************************************************/

/**************************************************************
* MISC SETUP                                                  *
**************************************************************/
#define SERIAL_BAUD   115200 // Set serial speed
#define DEBUG         1 // Set to 1 for serial port output

#ifdef ENABLE_ATC
  RFM69_ATC radio;
#else
  RFM69 radio;
#endif

/**************************************************************
* DATA STRUCTURE                                              *
**************************************************************/
typedef struct {
  int nodeId; // Store this nodeId
  float temp; // Temperature reading
  int vcc; // Battery voltage
} Payload;
Payload theData;

/**************************************************************
* SETUP                                                       *
**************************************************************/

byte pin[] = {3, 4, 5, 6, 7, 8, 9}; // Array of unused digital pins
byte pinCount = sizeof(pin) / sizeof(pin[0]); // Count unused digital pins

void setup() {
  radio.initialize(FREQUENCY,NODEID,NETWORKID);
  radio.encrypt(ENCRYPTKEY);
  #ifdef IS_RFM69HW
    radio.setHighPower(); //only for RFM69HW!
  #endif

  // Output setup
  for (byte i = 0; i < pinCount; i++) {
    pinMode(pin[i], OUTPUT);    // Set unused digital pins as output
    digitalWrite(pin[i], LOW);  // Set unused digital pins state to low
  }
 
  startupTasks(); // Run tasks
}

void startupTasks() {
  if (DEBUG) {
    char buff[50];
    Serial.begin(SERIAL_BAUD); // Open serial communications and wait for port to open
    while (!Serial) {;} // Wait for serial port to connect
    sprintf(buff, "\nThe frequency is %d Mhz, Kenneth!", FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915);
    Serial.println(buff);
    #ifdef ENABLE_ATC
      Serial.println("RFM69_ATC Enabled (Auto Transmission Control)\n");
    #endif
  }
}

void loop() {
  if (radio.receiveDone()) {
    if (radio.DATALEN != sizeof(Payload)) {
      Serial.print("Invalid payload received!");
    } else {
      theData = *(Payload*)radio.DATA; //assume radio.DATA actually contains our struct and not something else
      Serial.print("no:");
      Serial.print(theData.nodeId);
      Serial.print(",tmp:");
      Serial.print(theData.temp);
      Serial.print(",mV:");
      Serial.print(theData.vcc);
      Serial.print(",rssi:");
      Serial.print(radio.RSSI);
    }
   
    if (radio.ACKRequested()) { // When a node requests an ACK, respond to the ACK
      //byte theNodeID = radio.SENDERID;
      radio.sendACK();
      Serial.print(" - ACK sent.");
    }
    Serial.println();
  }
}
« Last Edit: March 09, 2016, 06:16:11 PM by MrGlasspoole »

TomWS

  • Hero Member
  • *****
  • Posts: 1929
Re: ATC goes down infinite?
« Reply #2 on: March 10, 2016, 04:29:38 PM »
@MrGlasspoole, I didn't see anywhere in your code where you enable ATC to do anything to adjust your transmit level.  After the radio setup, you should have something like:
Code: [Select]
  radio.enableAutoPower(-69);  //<=== NEW method! Enables auto transmit power control with a targetRSSI of -69dB

Tom


MrGlasspoole

  • NewMember
  • *
  • Posts: 35
  • Country: de
Re: ATC goes down infinite?
« Reply #3 on: March 10, 2016, 09:36:24 PM »
Ok it still does not work. It works better with the new bootloader because before sometimes i had
3 lines of "print" in a row. It was working for 30 minutes and then again:
Code: [Select]
no:3,tmp:14.50,mV:3362,rssi:-86 - ACK sent.
no:3,tmp:14.50,mV:3362,rssi:-100 - ACK sent.
no:3,tmp:14.50,mV:3362,rssi:-99 - ACK sent.
no:3,tmp:14.50,mV:3362,rssi:-97 - ACK sent.
no:3,tmp:14.50,mV:3362,rssi:-96 - ACK sent.
no:3,tmp:14.44,mV:3362,rssi:-95 - ACK sent.
no:3,tmp:14.44,mV:3362,rssi:-94 - ACK sent.
:(

Code: [Select]
  #ifdef ENABLE_ATC
    radio.enableAutoPower(-85);
  #endif
Is there in the sender code. From reading here you don't do it on the gateway because this one talks to multiple
others who are all in another range?

TomWS

  • Hero Member
  • *****
  • Posts: 1929
Re: ATC goes down infinite?
« Reply #4 on: March 11, 2016, 07:28:48 AM »
Is there in the sender code. From reading here you don't do it on the gateway because this one talks to multiple
others who are all in another range?
That is what I do.  The Gateways are powered from the mains (in different ways), need to reach all nodes, and don't need to save power by reducing TX power.  However, even in my mains powered nodes I use ATC because I don't want to create unnecessarily strong signals.

I generally use a targetLevel of -69 as a reliable target that doesn't waste too much power.

That your code behaves for a period of time and then acts odd makes me wonder if it isn't something else.  Since you added code (ATC library) and it fails, perhaps you are running out of heap memory and overrunning some of your variables.  This is relatively easy to do on a processor with such small amount of RAM.

Also, from a debugging perspective, on the sender side there are two ATC methods you can use:
Code: [Select]
   Serial.print("My TX level:"); Serial.print(radio._transmitLevel,DEC);     // prints the current transmit level used by this sender
   Serial.print(", my RSSI:");   Serial.println(radio.getAckRSSI(),DEC);    // prints this sender's RSSI acked back from the receiving node (Gateway)

Tom

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6620
  • Country: us
    • LowPowerLab
Re: ATC goes down infinite?
« Reply #5 on: March 11, 2016, 08:59:25 AM »
Tom,
I think a target of -80 to -90 should be acceptable. When I use -85 what I find is that half the time the node does not receive the ACKs (to be able to adjust _transmitLevel) although the gateway/receiver does receive the packets and sends the proper ACKs.
So I'm thinking there should be a mechanism on the node to determine when sendWithRetry fail and increase power.
Something like this:

Code: [Select]
//=============================================================================
//  sendWithRetry() - overrides the base to allow increasing power when repeated ACK requests fail
//=============================================================================
bool RFM69_ATC::sendWithRetry(uint8_t toAddress, const void* buffer, uint8_t bufferSize, uint8_t retries, uint8_t retryWaitTime) {
  uint32_t sentTime;
  for (uint8_t i = 0; i <= retries; i++)
  {
    send(toAddress, buffer, bufferSize, true);
    sentTime = millis();
    while (millis() - sentTime < retryWaitTime)
    {
      if (ACKReceived(toAddress))
      {
        return true;
      }
    }
  }
  if (_transmitLevel < MAXTXLEVEL) _transmitLevel++;
  return false;
}

TomWS

  • Hero Member
  • *****
  • Posts: 1929
Re: ATC goes down infinite?
« Reply #6 on: March 11, 2016, 05:36:37 PM »
Tom,
I think a target of -80 to -90 should be acceptable. When I use -85 what I find is that half the time the node does not receive the ACKs (to be able to adjust _transmitLevel) although the gateway/receiver does receive the packets and sends the proper ACKs.
So I'm thinking there should be a mechanism on the node to determine when sendWithRetry fail and increase power.
Something like this:

Code: [Select]
//=============================================================================
//  sendWithRetry() - overrides the base to allow increasing power when repeated ACK requests fail
//=============================================================================
bool RFM69_ATC::sendWithRetry(uint8_t toAddress, const void* buffer, uint8_t bufferSize, uint8_t retries, uint8_t retryWaitTime) {
  uint32_t sentTime;
  for (uint8_t i = 0; i <= retries; i++)
  {
    send(toAddress, buffer, bufferSize, true);
    sentTime = millis();
    while (millis() - sentTime < retryWaitTime)
    {
      if (ACKReceived(toAddress))
      {
        return true;
      }
    }
  }
  if (_transmitLevel < MAXTXLEVEL) _transmitLevel++;
  return false;
}
Yes, good point.

I agree that a heuristic to optimize TX power is possible and might be important to some people, but it might be getting into diminishing returns.  I'd rather have a reliable connection so that I only have a predictable single TX every wake cycle in order to keep the overall power cost down.  IMO 2X transmissions over tens of milliseconds is more expensive compared to a single TX at 10dbm higher power.  However, each of us has our own priorities so this approach might be useful to somebody.  Thanks for pointing it  out.

Tom

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6620
  • Country: us
    • LowPowerLab
Re: ATC goes down infinite?
« Reply #7 on: April 04, 2016, 12:23:04 PM »
I've just added a change to the ATC lib to allow the mote dialing power up when it can't get the ACK through. Without this change, a lower threshold would effectively lockup the end mote. You may want to try this or increase your ATC threshold.

MrGlasspoole

  • NewMember
  • *
  • Posts: 35
  • Country: de
Re: ATC goes down infinite?
« Reply #8 on: November 28, 2016, 11:17:30 AM »
Ok, i have now time to tinker again.
I still have problems. I tried the Struct_send/receive example.
On the receive side i have a HW and i did uncomment
Code: [Select]
radio.setHighPower();
and on both sides i did set RF69_868MHZ.
The receiver does not receive much. From 100 send's i receive ~20 and the RSSI has sometimes -128.
Also i get "nothing" all the time.

Receive:
Quote
Listening at 868 Mhz...
SPI Flash Init FAIL! (is chip present?)
[99]  [RX_RSSI:-100] nodeId=99 uptime=8 temp=91.23 - ACK sent. Pinging node 99 - ACK...nothing
[99]  [RX_RSSI:-53] nodeId=99 uptime=3000 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-51] nodeId=99 uptime=6000 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-51] nodeId=99 uptime=7200 temp=91.23 - ACK sent. Pinging node 99 - ACK...nothing
[99]  [RX_RSSI:-52] nodeId=99 uptime=2101 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-52] nodeId=99 uptime=7200 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-52] nodeId=99 uptime=13201 temp=91.23 - ACK sent. Pinging node 99 - ACK...nothing
[99]  [RX_RSSI:-51] nodeId=99 uptime=17401 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-50] nodeId=99 uptime=29401 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-51] nodeId=99 uptime=41400 temp=91.23 - ACK sent. Pinging node 99 - ACK...nothing
[99]  [RX_RSSI:-128] nodeId=25443 uptime=12211712 temp=-0.00 - ACK sent.
[99]  [RX_RSSI:-49] nodeId=99 uptime=50700 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-50] nodeId=99 uptime=59701 temp=91.23 - ACK sent. Pinging node 99 - ACK...nothing
[99]  [RX_RSSI:-49] nodeId=99 uptime=66000 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-50] nodeId=99 uptime=72001 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-128] nodeId=25443 uptime=18969600 temp=-0.00 - ACK sent. Pinging node 99 - ACK...nothing
[99]  [RX_RSSI:-50] nodeId=99 uptime=80101 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-50] nodeId=99 uptime=82200 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-50] nodeId=99 uptime=88201 temp=91.23 - ACK sent. Pinging node 99 - ACK...nothing
[99]  [RX_RSSI:-51] nodeId=99 uptime=97501 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-50] nodeId=99 uptime=100501 temp=91.23 - ACK sent.
[99]  [RX_RSSI:-50] nodeId=99 uptime=102600 temp=91.23 - ACK sent. Pinging node 99 - ACK...nothing

Send always:
Quote
Sending struct (10 bytes) ... nothing...

I also tested the TxRxBlinky and from 50 button pushes i receive ~5...

Note/Gateway i only receive this after letting it run for 2 minutes:
Quote
Listening at 868 Mhz...
SPI Flash MEM not found (is chip soldered?)...
RFM69_ATC Enabled (Auto Transmission Control)
#[1][2] 123 ABCDEFGHIJKLMNOPQRS   [RX_RSSI:-32] - ACK sent. Pinging node 2 - ACK...nothing
#[2][2] 123 ABCDEFGH   [RX_RSSI:-51] - ACK sent.
#[3][2] 123 ABCDEFGHIJKLMNOPQRSTUVWX   [RX_RSSI:-53] - ACK sent.
And i can't comment out #define ENABLE_ATC because the i get the error:
Quote
Gateway.ino: In function 'void loop()':
Gateway:207: error: 'Blink' was not declared in this scope


I don't understand what I'm doing wrong.

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6620
  • Country: us
    • LowPowerLab
Re: ATC goes down infinite?
« Reply #9 on: November 28, 2016, 12:34:57 PM »
I would double check settings, ensure you really have a HW, match frequency with hardware, make sure your ID is unique etc.
Then get latest libs, check your code.

Quote
I don't understand what I'm doing wrong.
If you would share your sketch maybe someone can look it over.

MrGlasspoole

  • NewMember
  • *
  • Posts: 35
  • Country: de
Re: ATC goes down infinite?
« Reply #10 on: November 28, 2016, 01:17:37 PM »
Sometimes its to rip out hair.
Since 5 Minutes it is running. Not my code I'm testing with the examples.
I removed the one "HW" and used a "H" and it worked.
Then i was on my way to take the Thinkpad to another room so i disconnected the wall wart and connected
the breadboard supply to the Thinkpad with some USB cable and it stopped working.
Back to wall wart and it was working again. So changed the USB cable and it worked from the USB port.
Before that i had this cable on the other side (Workstation/RF69 Sender)...
I don't know why but it seems like this cable does not deliver the power so the serial monitor starts then puts out a little bit
and the it stops working.

I need to buy a bunch of good USB cables.
Its not the first time i have a problem with cable with ferrite from a phone that makes problems.
Somebody knows good breadboards that are not to expensive? The cables in this Chinese boards are so loose.
The ones from 3M are really expensive.

I will test now and hopefully it works.

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6620
  • Country: us
    • LowPowerLab
Re: ATC goes down infinite?
« Reply #11 on: November 28, 2016, 01:39:44 PM »
So china doesn't come so cheap after all huh ...  :-\

I removed the one "HW" and used a "H" and it worked.
What exactly do you mean by that? What is H?

MrGlasspoole

  • NewMember
  • *
  • Posts: 35
  • Country: de
Re: ATC goes down infinite?
« Reply #12 on: November 28, 2016, 02:54:26 PM »
Sorry i mean "W" = RFM69W

The breadboards where from Amazon and the first order that i realized that they sell from China on Amazon.
Because i did wonder where my order is after 2 weeks.
On eBay you see where stuff comes from and you can filter. But on Amazon you have to click the seller and check where they are.
Before 2-3 years there where no Chinese seller on Amazon here in Germany.

I mean 50$ for a 7.00" x 4.00" breadboard is allot because you need a bunch.
Or 25$ for this one: https://www.amazon.com/3M-923273-I-BREADBOARD-PLASTIC/dp/B005T8VDS6
But I'm more interested in this size: https://www.amazon.com/microtivity-IB401-400-point-Experiment-Breadboard/dp/B004RXKWDQ

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6620
  • Country: us
    • LowPowerLab
Re: ATC goes down infinite?
« Reply #13 on: November 28, 2016, 03:30:19 PM »
I no longer buy certain things from china. A breadboard in particular I would be very skeptical of.
Thinks like headers or simple switches or stuff that could not possibly be faulty (either DOA or just too simple to not function as desired).
I have had bad experiences with chinese USB cables.
It's usually very hard to find a good vendor of a certain more complex product which consistently delivers good quality. Making PCBs in china is one such hurdle.

Anyway sounds like you have more homework/debugging to do on that project.