The WORKBENCH part 1

(Jeff Uk) #483

Re 404 nice idea but in UK by time added to basket it changed to a discount of £2.89 - ~$4.04 vs a price of $4.04…and then £4.72 shipping! However optimising # of units bought - works not just for 1off but tried 5x, 8x, 10x etc - it worked for multiple x discount and so 8off looks a good # to buy compared with buying via Farnell/Mouser/Digi representing a 20-35% discount on the bundle - if anyone wants to play with any of these :wink:


it’s the thought that counts :sunglasses:

(Jeff Uk) #485

Agree :slight_smile: but its the experience that lasts :smile:

…keep the bargains coming… :wink:

(Jeff Uk) #486

Actually just gave it a go - put money where mouth is! Its the way the numbers fall but ordering 5off it did come out as £2.89 each…with the 4.72 shipping across 5 its ok…but then the dreaded VAT… :frowning: Will have a play with them later in the month and let you know how they look…:wink:


Looks like these push button switches (but caps are not included).


think you are right :sunglasses:


setting up antenna tests

aaargh… I took screenshots from the app, probably with an wrong resolution and now the most important data on the right side is missing :sunglasses:wasted a few hours


my first steps with platformIO are not very succesfull…
I can compile ‘blink’ but not upload it to an arduino nano :roll_eyes:

(chaolue) #491



Is only needed with the Adafruit client/server test. Adafruit’s examples are based on the RadioHead RFM9X library examples. Someone correct me if I’m wrong, I assumed HPD13/A were just copies of the HopeRF RFM95/W?

For TTN-ABP examples the LMIC lib handles the sleeping of the radio so the direct sleep of the radio is unnecessary.

Here’s the Adafruit client code with my additions for sleep:

// Feather9x_TX
// -*- mode: C++ -*-
// Example sketch showing how to create a simple messaging client (transmitter)
// with the RH_RF95 class. RH_RF95 class does not provide for addressing or
// reliability, so you should only use RH_RF95 if you do not need the higher
// level messaging abilities.
// It is designed to work with the other example Feather9x_RX

#include <SPI.h>
#include <RH_RF95.h>
#include "LowPower.h"

/* for feather32u4 */
#define RFM95_CS 8
#define RFM95_RST 4
#define RFM95_INT 7

/* for feather m0  
#define RFM95_CS 8
#define RFM95_RST 4
#define RFM95_INT 3

/* for shield 
#define RFM95_CS 10
#define RFM95_RST 9
#define RFM95_INT 7

/* for ESP w/featherwing 
#define RFM95_CS  2    // "E"
#define RFM95_RST 16   // "D"
#define RFM95_INT 15   // "B"

/* Feather 32u4 w/wing
#define RFM95_RST     11   // "A"
#define RFM95_CS      10   // "B"
#define RFM95_INT     2    // "SDA" (only SDA/SCL/RX/TX have IRQ!)

/* Feather m0 w/wing 
#define RFM95_RST     11   // "A"
#define RFM95_CS      10   // "B"
#define RFM95_INT     6    // "D"

/* Teensy 3.x w/wing 
#define RFM95_RST     9   // "A"
#define RFM95_CS      10   // "B"
#define RFM95_INT     4    // "C"

// Change to 434.0 or other frequency, must match RX's freq!
#define RF95_FREQ 915.0

// Singleton instance of the radio driver
RH_RF95 rf95(RFM95_CS, RFM95_INT);

void setup() 
  pinMode(RFM95_RST, OUTPUT);
  digitalWrite(RFM95_RST, HIGH);

  while (!Serial);

  Serial.println("Feather LoRa TX Test!");

  // manual reset
  digitalWrite(RFM95_RST, LOW);
  digitalWrite(RFM95_RST, HIGH);

  while (!rf95.init()) {
    Serial.println("LoRa radio init failed");
    while (1);
  Serial.println("LoRa radio init OK!");

  // Defaults after init are 434.0MHz, modulation GFSK_Rb250Fd250, +13dbM
  if (!rf95.setFrequency(RF95_FREQ)) {
    Serial.println("setFrequency failed");
    while (1);
  Serial.print("Set Freq to: "); Serial.println(RF95_FREQ);
  // Defaults after init are 434.0MHz, 13dBm, Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on

  // The default transmitter power is 13dBm, using PA_BOOST.
  // If you are using RFM95/96/97/98 modules which uses the PA_BOOST transmitter pin, then 
  // you can set transmitter powers from 5 to 23 dBm:
  rf95.setTxPower(23, false);

int16_t packetnum = 0;  // packet counter, we increment per xmission

void loop()
  Serial.println("Sending to rf95_server");
  // Send a message to rf95_server
  char radiopacket[20] = "Hello World #      ";
  itoa(packetnum++, radiopacket+13, 10);
  Serial.print("Sending "); Serial.println(radiopacket);
  radiopacket[19] = 0;
  Serial.println("Sending..."); delay(10);
  rf95.send((uint8_t *)radiopacket, 20);

  Serial.println("Waiting for packet to complete..."); delay(10);
  // Now wait for a reply
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
  uint8_t len = sizeof(buf);

  Serial.println("Waiting for reply..."); delay(10);
  if (rf95.waitAvailableTimeout(1000))
    // Should be a reply message for us now   
    if (rf95.recv(buf, &len))
      Serial.print("Got reply: ");
      Serial.print("RSSI: ");
      Serial.println(rf95.lastRssi(), DEC);    
      Serial.println("Receive failed");
    Serial.println("No reply, is there a listener around?");



  //USBDevice.detach(); doesn't work on 32u4
  // Disable USB clock
  // Disable USB PLL
  PLLCSR &= ~_BV(PLLE); 
  // Disable USB
  USBCON &= ~_BV(USBE); 

  // ATmega32U4 sleep
  LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);  

  // Reattach USB to have Serial working again

Let me know how you get on…


PlatformIO now and then has some quirks than can sometimes be a real pita.
PlatformIO dynamically installs packages when needed and that is exactly where it can give problems (also with updates).
Sometimes it helps to temporarily disable anti-virus.

Some (other tips):

Two examples of platformio.ini files:

This one for Heltec Wifi LoRa 32

platform = espressif32
board = heltec_wifi_lora_32
framework = arduino

upload_speed = 921600
monitor_baud = 115200

lib_deps =

and this one for Things UNO

platform = atmelavr
board = leonardo
framework = arduino

monitor_baud = 115200

lib_deps =

monitor_baud sets the serial monitor speed
upload_speed sets the upload speed

with lib_deps you define the libraries you want to use (per project), these will be automatically downloaded to the project’s .piolibdeps directory. (No need to use global libraries and no need to manually download libraries, unless they are unknown in the PlatformIO Registry).

You cannot upload a sketch when the serial monitor is running (this is different from Arduino IDE).
If serial monitor is running, close it before uploading a (new) sketch.

(I use PlatformIO with Visual Studio Code, not with Atom).


well… not

I changed one thing in my basic sleeptest, first disable the usb before sending the 32U4 to sleep :sunglasses:
but you are talking about the LoRa otaa example while I am talking LoRaWAN, so off course I don’t use radiohead lib but LMIC.
So how you get that low current is still a mystery to me …


good one… will try

  • nope … tried some other ‘solutions’ and decided to stick with my old combo arduino IDE / sublime text

(chaolue) #495


I would think that your basic sleep test code will not see low power usage if you don’t bring up the radio then put it to sleep - via RadioHead or some other library that controls the radio.

As I said above I was able to replicate the same power usage as the Adafruit/RadioHead example above using the LMIC TTN-ABP example.

For instance using this example but adding the USB detach code before sleeping should show the same low power usage.


good point… will test that to

  • nope… and I don’t see it, there is only one solution left and just move on for now



playing with WIRECAST 8 - wow cool app !

(Ebreyit) #498

Have you played with OBS Studio


NO… looks good and open source ! tnx :sunglasses:

(Ebreyit) #500

I used to use Wirecast but found OBS works much smoother. especially if you have the right hardware for offloading (Intel CPU with quicksync, nvidia or newer AMD GPU).


I’m not into 'live streaming video… but I see possibilities in connection with our LoRaWAN hobby :sunglasses:


I’m happy… blink is working :sunglasses: 328PB

powerled removed and deepsleep with standard lowpower lib.
this MCU have more interfaces… don’t know if everything is switched of now :roll_eyes:


what if I attach a RN2483A… then it could run the TTN lib :thinking: