Recent Posts

Pages: [1] 2 3 ... 10
Support / Re: arm-none-eabi-g++: error: core/syscalls.c.o: No such file or directory
« Last post by tolson on August 23, 2017, 03:24:35 PM »
I don't know why, or if this is repeatable.

The issue went away when I un-checked in the Preferences...
Aggressively cache compiled core

Support / Re: arm-none-eabi-g++: error: core/syscalls.c.o: No such file or directory
« Last post by tolson on August 23, 2017, 02:54:21 PM »
Hi biomurph,

Did you get this syscalls.c.o error resolved?

I am seeing the same thing occasionally on Arduino 1.8.3 and Simblee 1.1.2 and 1.1.3.

Hopefully somebody from RF Digital with inside information can comment.

Support / SimbleeOff
« Last post by Wayne on August 22, 2017, 09:18:04 AM »
Ok, I'm trying to achieve something that maybe I can not.

What I have found out that the use of SimbleeOff() does not really require the Simblee_pinWakeCallback() to work.
Providing you have Simblee_pinWake setup, the SystemOff() still functions.  I have tested this and it works just fine.

I'm using the old if(digitalRead(button)) with a normal callback function.
In the callback function I send my bluetooth stuff and when the button goes LOW, reset the pinWake and do the SystemOff() (My test is Normal LOW and HIGH is active.

I have no SystemOff() in the loop..  Only in the voids. 
In the loop I have the if statements to test the digital inputs as stated above.

Now I need to test 2 buttons at once and perform 2 BT signals.
One of the buttons is ,, well let me explain the buttons I have
buttonA is Save  This send just a simple character lets say S
buttonB is Mode and this lets say is M
buttonC is High Level X-Ray and just say its H
And buttonD is X-ray and lets just say X

These buttons can function as a singular item  Press Save, sends S, Press Mode and Mode and sends M and the others the same, HLF (HLX) send H and likewise X-Ray sends X.
This all works and it works well.  When the buttons are release, the current draw goes to 400na...4ma 

One feature that is needed is to do a Save while doing an X-ray.  So while X-ray is press, pressing the Save will need to send S along with X.
Likewise, if doing the High Level one, pressing Save I need to send the S as well as H.

I'm working currently with the H and S part and I see I can have the S sent, but it is not every time.

The 400na is the plus I do not want to loose it.
I can if requested post the complete program if needed. or parts.

Like I said its a WIP for me with my very limited knowledge of programming (just enough to get in trouble).
Videos/Guides/Tutorials / Re: Instructables - Quick Start from the FirstBuild Team
« Last post by Wayne on August 21, 2017, 07:01:37 AM »
For IDE, use the latest..  Arduino IDE
Follow the online or PDF instruction. or look up 
Special characters I don't understand.. But you could get an answer.
The product is new.. just a few years old and I'm sure it will last for sometime.  I think they have put some effort into the product to not to have it go away in a year or so. The RFDUINO is still here.
I'm in the mist of prototyping as well but has come to the point that we had to get outside engineers to help with my workload.
No royalties as far as I know.  The IDE and libs are for the product and are free.
Maybe the FCC ID might be needed to be somewhere. My product will not only be used in the US, but Canada, Europe, Australia and Japan off hand.  So we will be doing FDA and UL stuff.

People here will help you out greatly on the project you are doing.
I'm not the best programmer for Arduino, so I look here for help and from Simblee as well.
Videos/Guides/Tutorials / Re: Instructables - Quick Start from the FirstBuild Team
« Last post by Alpha007 on August 19, 2017, 02:10:22 AM »
Since latest Simblee libraries is available can someone let us know which Arduino IDE version would be better for programming Simblee? Also how to install Simblee inside the Arduino board manager?
Can someone also clarify how to connect Simblee with an Android app (not the usual Simblee for Mobile App) with custom UUID and characteristics?
How many years of support will be there for Simblee this is question is necessary since we are prototyping using Simblee?
And if we incorporate Simblee in our product do we need to pay any royalty?
Support / Re: Simblee getting input voltage
« Last post by Wayne on August 18, 2017, 12:43:45 PM »
Hi Tolson,

Yup exactly what I'm getting..  Depends on what the simblee is doing.. My case, I read the values and lite an led if the voltage is around 2.1 volts or less (1.8 is the min for simblee) and I
send this date divided by 4 to the receiver and multiply it by 4.. So a little difference here.

I'm using Simblee Off routine.. So the current draw is 4na (confirmed when asleep) and wakes up pretty fast.
Support / Re: Simblee getting input voltage
« Last post by tolson on August 18, 2017, 09:37:24 AM »
Has anyone fix the wide range of differences?

Hi Wayne,

Are you getting these variations. Of so, then not. If not, then so. I guess.

On a project I am using the above on, I am getting 4mV differences. All depends on battery load at moment of test.
Support / Reading Battery with out DC-DC converter.. (Battery use only)
« Last post by Wayne on August 18, 2017, 08:08:41 AM »
Figured I asked after looking over the forum.
I have decided to drop the DC-DC converter that is used to supply the Simblee with 3.3v while on batteries...  Used it for powering LEDs etc.
But the trade off of being in ULP and the device proved that it would draw around 10ma or more in idle and goes up as the batteries sour.

So I'm now using just using batteries (2 AA's) to power the Simblee and knowing that the Simble stops around 1.8volts, I need to do a warning (LED) to have batteries replaced (2.2v or so).
The warning will be a red led on the sender (Footswitch) and on the receiver.  The receiver will store the  last condition to display if power off and on again and will update when fresh batteries are installed.

The one option I'm using is the one posted long ago.. by mkay

analogReference(VBG); // Sets the Reference to 1.2V band gap           
analogSelection(VDD_1_3_PS);  //Selects VDD with 1/3 prescaling as the analog source
int sensorValue = analogRead(1); // the pin has no meaning, it uses VDD pin
float batteryVoltage = sensorValue * (3.6 / 1023.0); // convert value to voltage

But the data differs as it is reporting.

If not, I will stay with this and just trigger the LED using it.

I do like the 400na draw in Simblee OFF .. And the fast response when active.

And I see that if you have the serial connected, it causes resets..
Support / Re: Simblee getting input voltage
« Last post by Wayne on August 18, 2017, 07:46:52 AM »
Has anyone fix the wide range of differences?

Simblee For Mobile / Re: SimbleeForMobile two screens
« Last post by Stanley on August 16, 2017, 10:56:13 PM »
Thank you Anderson. That worked.

Now I have another problem. When I tried to put two images and two random number on Screen 1 only, by the time I switch to Screen 2, the Simblee will crash itself. Could anyone help me?  Thanks in advance.

The following is my codes.

#include <SimbleeForMobile.h>

#include "heart6_png.h"
#include "ss_jpg.h"

int toScreen2ButtonID;
int toScreen1ButtonID;
int currentScreen;

 * Traditional Arduino setup routine
 * Initialize the SimbleeForMobile environment.
void setup() {
  // put your setup code here, to run once:
  Serial.println("Setup beginning");
  SimbleeForMobile.deviceName = "2 Screens";
  SimbleeForMobile.advertisementData = "Sample";

  // use a shared cache
  SimbleeForMobile.domain = "";
  // Begin Simble UI
  Serial.println("Setup completed");
uint8_t text1;
uint8_t text2;
 * The traditional Arduino loop method
 * Enable SimbleeForMobile functionality by calling the process method
 * each time through the loop. This method must be called regularly for
 * functionality to work.

unsigned long lastUpdated = 0;
unsigned long updateRate = 500; // half a second
void loop() {
 unsigned long loopTime = millis();

   if (SimbleeForMobile.updatable && updateRate < (loopTime - lastUpdated))
    lastUpdated = loopTime;
     int hr = random(50,80);
     char buf1[16];
     sprintf(buf1, "%d", hr);
     SimbleeForMobile.updateText(text1, buf1);

     int spo2 = random(95,100);
     char buf2[16];
     sprintf(buf2, "%d", spo2);
     SimbleeForMobile.updateText(text2, buf2);

 * Callback when a Central connects to this device
 * Reset the current screen to non being displayed
void SimbleeForMobile_onConnect()
  currentScreen = -1;

 * Callback when a Central disconnects from this device
 * Not used in this sketch. Could clean up any resources
 * no longer required.
void SimbleeForMobile_onDisconnect()

 * SimbleeForMobile ui callback requesting the user interface
 * Check which screen is being requested.
 * If that is the current screen, simply return.
 * If it is a different screen, create the requested screen.
 * A screen request which is out of range, is logged and ignored.
void ui()

  if(SimbleeForMobile.screen == currentScreen) return;
  currentScreen = SimbleeForMobile.screen;
    case 1:
    case 2:
      Serial.print("ui: Uknown screen requested: ");

 * SimbleeForMobile event callback method     
 * An event we've registered for has occur. Process the event.
 * The only events of interest are EVENT_RELEASE which signify a button press.
 * If the button to open the screen not being displayed is pressed, request
 * to show that screen.
void ui_event(event_t &event)
//  printEvent(event);
  if( == toScreen1ButtonID && event.type == EVENT_RELEASE && currentScreen == 2)
  } else if( == toScreen2ButtonID && event.type == EVENT_RELEASE && currentScreen == 1)

 * Create the first screen.
void createScreen1()
    #define  IMAGE2  5
    #define  IMAGE3  6
  // Portrait mode is the default, so that isn't required
  // here, but shown for completeness. LANDSCAPE could be
  // used for that orientation.
  SimbleeForMobile.beginScreen(YELLOW, PORTRAIT);
  text1 = SimbleeForMobile.drawText(210, 150, "", BLUE, 45);
  SimbleeForMobile.imageSource(IMAGE2, PNG,  heart6_png, heart6_png_len); 
    if(SimbleeForMobile.remoteDeviceType == REMOTE_DEVICE_OS_IOS) {
    SimbleeForMobile.drawText(260, 175,  "BPM", BLUE, 20);
  } else if(SimbleeForMobile.remoteDeviceType == REMOTE_DEVICE_OS_ANDROID) {
    SimbleeForMobile.drawText(270, 248, "BPM", BLUE);
  } else if(SimbleeForMobile.remoteDeviceType == REMOTE_DEVICE_OS_UNKNOWN) {
    SimbleeForMobile.drawText(270, 248, "BPM", BLUE);

 text2 = SimbleeForMobile.drawText(230, 300, "", BLUE, 45);
  //160 470
  SimbleeForMobile.imageSource(IMAGE3, JPG,  ss_jpg, ss_jpg_len); 
  //30 460

    if(SimbleeForMobile.remoteDeviceType == REMOTE_DEVICE_OS_IOS) {
    SimbleeForMobile.drawText(280, 305,  "%", BLUE, 40);
    //230 475
  } else if(SimbleeForMobile.remoteDeviceType == REMOTE_DEVICE_OS_ANDROID) {
    SimbleeForMobile.drawText(280, 305, "%", BLUE);
  } else if(SimbleeForMobile.remoteDeviceType == REMOTE_DEVICE_OS_UNKNOWN) {
    SimbleeForMobile.drawText(280, 305, "%", BLUE);

  int textID = SimbleeForMobile.drawText(80, 60, "Screen 1", BLACK, 40);
  toScreen2ButtonID = SimbleeForMobile.drawButton(100, 200, 100, "Screen 2");

  SimbleeForMobile.setEvents(toScreen2ButtonID, EVENT_RELEASE);

 * Create the second screen.

void createScreen2()


  int textID = SimbleeForMobile.drawText(80, 60, "Screen 2", BLACK, 40);
  toScreen1ButtonID = SimbleeForMobile.drawButton(100, 200, 100, "Screen 1");


  SimbleeForMobile.setEvents(toScreen1ButtonID, EVENT_RELEASE);

 * Utility method to print information regarding the given event
void printEvent(event_t &event)
  Serial.print("  ID: ");
  Serial.print("   Type: ");

  Serial.print("   Value: ");
  Serial.print("   Text: ");
  Serial.print("   Coords: ");
Pages: [1] 2 3 ... 10