ARDUINO using BotBoarduino & GSM Shield

Hey :wave:,

I want to add 2 shields on my Arduino Uno R3 :

I’ll connect 2 servos and 1 laser distance sensor on the BotBoarduino.

Is there a specific order for shields ? BotBoarduino on top of the GSM shield ? GSM shield on top ?
I have a 9V wall adapter power supply for the arduino. is it enough ?

Both my sensor and my servos expect about 5V.
How much power will deliver the BotBoarduino shield if the arduino is supplied by my 9V wall adapter?

Should I expect any pin conflict (on Arduino’s headers) from this configuration ?

thanks for you help :slight_smile:

Well, for starters, the BotBoarduino is a full microcontroller board (based on the Arduino Duemilanove design), not a shield.

The schematic for the RB-Mkf-03 seems to indicate the shield uses pins D0, D1, D7, D8, D9 (see top left corner of schematic):

You can place the shield directly on a BotBoarduino and you should have no issue using them together.
Since it uses pins D0/D1, you may have to remove the shield when trying to program the BotBoarduino (depending on if those prevent proper programming or not).

As mentioned above, since the BotBoarduino is not a shield the only possible/logical order is the GSM shield on top of the BotBoarduino. The Arduino Uno R3 has no place in the setup, at least not directly.

Well, it is enough voltage wise. Just make sure it can product enough current, too. Try and get one that can provide at least 500 mA to make sure you have enough for both the Arduino and the shield.

If you are RC servomotors, make sure to provide to them a different power source through the BotBoarduino’s second voltage input (and change the jumper on the related IO pins). Most RC servomotors allow for 4.8-6.0 V DC, so I recommend using a 6.0 V DC power source. Since servomotors can easily use 1 A or more of current, I would consider using a 6 V DC capable of at least 3 A.

Leave all the pins associated with the shield and your sensor to 5 V DC. Place your RC servomotors on a block of pins by itself and change the jumper to match your second power supply (the BotBoarduino has two power rails, exactly for this purpose!).

See answer above. Most likely not with so little sensors… unless you are using I2C for the sensor? If so, you’ll have to use a software version of the peripheral to control your sensor (not really an issue if functioning as an I2C controller without too many other interrupts/processes going on simultaneously).

I hope this info helps! Feel free to reply with more questions if you have any and good luck with your project! :slight_smile:

Sincerely,

4 Likes

Hey :wave:,

thank you for your reply :yum:.

I am not sure I understand how you read the schematic for the RB-Mkf-03.
Apart from that, I fully understood your answers.
To summarize, with this configuration:

  • I would need to find a 6V power supply for the botboarduino with a current of at least 3A.
    Do you have any battery suggestions ?
  • I don’t need any arduino since botboarduino is already an arduino on it self.
  • I might have pin conflicts, while programming or if I use I2C for my sensor.

:world_map:
The purpose of this project is to build a LIDAR (3d scanner using a Laser distance sensor). This Lidar would be gathering data from a fixed position with the help of 2 sevros (link).
The gathered data will then be computed into a single value.
This value will be sent to the blynk platform (IoT platform) through the GSM shield.

The scenario will be loaded on the botboarduino and will run endlessly. (We won’t use any remote control. The goal is to display the data on blynk.)
:world_map:

From your answers I found other issues:

  • My sensor (Laser distance sensor) will be using I2C. (link)
    My sensor and my servos will be working simultaneously.
    when sending data through GSM, the GSM shield will be the only one working.
    Can I use I2C bus or should I use another method to control my laser sensor ?

  • I am not sure I have enough space between the botboarduino and the shield to pin my servos.
    Is there anything I can do about this ?

  • I am not experienced with electronics, should I avoid using a botboarduino ? do you suggest I start with an arduino ?

I although have a configuration with an arduino and three shields :

Is this configuration better ?

thank you for your help :smiling_face_with_three_hearts:

1 Like

No problem! Glad you seem to find it helpful! :slight_smile:

Well, luckily, it is a skill you can train… :smiley:
Here are some random resources I found that may be helpful (in no particular order):
https://learn.sparkfun.com/tutorials/how-to-read-a-schematic/all



https://www.circuitbasics.com/how-to-read-schematics/

Spot on! :slight_smile:

The typical battery I’d recommend for that kind of purpose would be something like the RB-Sta-08. It is an NiMH battery pack of 6 V DC with 2800 mAh capacity, which means it could deliver about 2.8 A for one hour. Of course, since you will be only using a small LIDAR on two small servomotors… you most likely won’t be using anywhere near that much so it will most likely last you a few hours.

I’d recommend to get two of whatever battery solution you choose to get. That way you can use one while you charge the other. As for chargers, this charger [RB-Ten-02] could be a good option for this battery pack.

When I started reading that sentence I thought: “Hey, I should link to that blog post I made a while back!”. Seems like you already found it! :stuck_out_tongue:

This data is effectively 2 angles and a distance/radius (3D spherical coordinates). How do you encode this in a single value?

Neat!

Seems like a good plan!

Well, the sensor also has a PWM output that can be used. The pulse returned is proportional to the last distance measured. But, it is also slower to use. Instead, I’d recommend to use a software implementation of the I2C. Since you are using only one peripheral and your device is the controller it won’t be an issue. This means you can use any 2 pins of your choice for the I2C signal instead of the hardware interface, which is on two specific pins on the Arduino.

You can read more about doing this here and here.

Simply buy some header spacers! :smiley:
I have another blog post where I do this to stack two Wheatstone bridge shields together. RB-Spa-928 and RB-Fee-27 still seem to exist and have stock so you could use those.

The goal of the BotBoarduino is to provide an Arduino that is easier to power/use RC servomotors. Since you are going to be using only 2 servomotors (and with low power at that!) you can probably just use a regular Aaduino and be fine, especially if you already have it but don’t have the BotBoarduino purchased already.

Why the motor shield? Please note the RC servomotors have their own internal controllers. You just need to provide them with VCC, GND and a signal (to control the position).

Happy to assist! Feel free to reply with more questions or comments as needed and I’ll when I can. :slight_smile:

3 Likes

thanks for your reply :yum:.

Thanks. How do you deduce pins used by the shield from this image :

How convenient :joy:. I’m in good hands then :partying_face:!
So we are both french haha
“scharette” I should have guess that already

Well, basically I am going to compute the retrieved data into a volume (so a single value) using Canopy height model.
The displayed data on blynk will show a volume evolution.

It looks practical :ok_hand:.

Well I have both so I just want to use the simplest way.

okay, so I should be able to make my project work with an Arduino and the GSM shield right ?

For the laser sensor I can use the I2C protcol since I only need 2 digital pins to make it work. I can run my servos with 2 analog pins. And I need ground and 5V pins for my servos and my sensor.

I did some research and I found out that you can drain as much as 500mA with the arduino USB port.
my laser needs about 100 mA (according to data sheet), and each servo needs 150mA (I not sure I properly understood the data sheet do you agree on the required current for each servo ?)
However, I can’t find any information regarding the current for the GSM shield. I believe it’s negligible, being a shield it should work properly on its own. Indeed, the GSM shield runs when none of the other compents will be running. Except the arduino of course which drains about 25mA white running some code.
So I should be able to supply enough power to each component when powered from the USB port.
what do you think ?

Last thing but not least, the laser data sheet state that we have to use 680μF electrolytic capacitor between ground and power pins.
On this blog they used a 1000uF capacitor.
Do I really need it to be exactly 680uF ?

Merci encore ! :smile:

1 Like

In this case, you see all the pins of the Arduino labelled in grey.
Where there are green lines, this indicates a connection between those pins and a pin of the shield’s components.

For example, on shield pin 6, also known as D5.,there is no green line attached therefore not connected.
But, on shield pin 8, known as D7 (and PD7/PWM in AVR/ATmega terms), there is a green line labelled STXD, indicating its function in the shield.

En effet! :smiley:

Good plan then.

Indeed.

Connecting RC servomotors to the BotBoarduino is probably a bit easier due to both the triple pin headers and also the dual power rails (one for digital, one for servos) from the screw terminals.

Just use those I2C software-based library.

It states 150 mA is the minimum when running (i.e.: moving) at no load (which means without weight on the actuator). Therefore, it probably will use more, hard to say how much but maybe up to 350 mA each? Maybe a bit more?

The GSM shield’s module is SIM808, which according to its datasheet the chip uses 869, 922 and 1400 µA.

680 µF or more, basically. The point is to prevent the voltage from dipping during initialization, that’s it.

De rien! :smiley:

3 Likes

thanks for you reply :smiley:.
Since botboarduino seems to be the simplest way, let’s go with it.

How about ADC6 and D14 ? What is the symbols meaning next to these pins ?

Okay, you don’t seem to use any bypass capacitor in your example. Is it hardware integrated to the botboarduino ? Or are current dips negligible with botboarduino ?
In your example, you used the I2C hardware integrated bus right ? I don’t understand with what component the I2C hardware bus would be in conflict in my case? (When the laser sensor is working, servos are working simultaneously.)

If I must use an I2C software-based library, where can I pin my SDA and SCL wires ? Do I have to use a bypass capacitor in this case ?

Capture d’écran 2020-10-24 à 09.58.16
I read the botboarduino hardware infos.

  • I can pin my servos in 6.
  • I select VS power supply in 7.
  • I have to set VS=VL on 13. (I want my servos and my sensor to be supplied with the same power.)
  • I can plug my battery in 15.
  • Will 18 regulate the voltage for my servos and my sensor to 5V regardless of the voltage (bellow 12V) supplied to VS?

Merci de ton aide, tu m’aides beaucoup à avancer !! :grinning:

1 Like

If I remember correctly, the circle indicates an input pin and the triangle inside indicates an active low signal.

Actually, that was due to using one of the very first models (well before PulsedLight was bought by Garmin!). The modern ones need the capacitor for sure! :slight_smile:

I actually was simply tired and misremembered the pinout when answering… :stuck_out_tongue:
The I2C pins (SDA/SCL) are actually not conflicting with anything! This means you can use the default LIDAR-Lite library without issues.

See both answers above. 1) No need for software-base lib. 2) Yes, use the capacitor always!

Indeed, using the block 10/11/12/13 seems like a good idea for your servomotors. Change that block to VS as you indicated. This will provide the power directly from your battery to the motors whereas a setting of 5V (which you should leave for all other pins) will provide a regulated 5V DC to the sensor, shield, etc.

I’ll mention that you do not want your servomotors to go through the voltage regulator (5V DC). This regulator is not meant to drive servomotors and can cause issues if used that way. Instead, use the VS jumper setting for blocks of pins where you use servomotors. Just make sure that block of pins is not shared with things that expect a regulated 5V DC like your sensor or shield. By using the block 10/11/12/13 you should be in the clear.

Concerning the two screw terminal for power sources, VL connects to the regulator and VS connects to the VS power rail. All ICs on the board are driven by a 5V DC regulated from VL. By leaving VS=VL you allow the battery to power both rails (5V and VS). VS is powered directly (good for servomotors, they have their own circuitry inside for it) and VS is powered by the regulator, which itself is powered by VL/VS/your battery.

Therefore, I strongly recommend you use a 6V DC battery pack so that your servo do not receive any damage.
An alternative is to use a higher voltage pack but split the output of the battery:

  1. One output goes through VL. Disconnect the VS=VL jumper. This will feed the higher voltage (< 12 V DC) to the regulator, providing a stable 5V DC to the circuits.
  2. One output goes through a DC-DC regulator and is stepped down to 6V DC. Then, this is fed to VS. That way, your servomotors have the right voltage all the time. If you need recommendations for DC-DC regulators, let me know.

Using this setup is a bit more complex but allows you to use modern LiPo battery packs which are both nicer and more cost effective than NiMH.

Toujours un plaisir! :slight_smile:
Quand j’ai commencé la robotique plusieurs personne m’ont beaucoup aidé aussi, alors c’est ma façon de les remercier! :slight_smile:

3 Likes

thanks for your answer, It was very clear. :ok_hand:

Capture d’écran 2020-10-24 à 09.58.16

  • I can pin my servos in 6.
  • I select VS power supply in 7.
  • I don’t remove the VS=VL jumper .
  • I can use a single battery to supply both my VL and VS screw terminals. I don’t need to regulate the tension delivered to VL since a regulator is already present for logic components. But I need a DC-DC relulator to supply a 5V tension to VS.
    Will this DC-DC regulator do the job ?
    Is there anything in particular I should know to use a DC-DC regulator ?
    You mentioned Lipo batteries, Will this one do the work ?
  • I have a wall adapter that I want to use to supply power to VL & VS. (it delivers about 12V and 1A):

    It should work with the same configuration right ?

Can I program my board while powering VL and VS ?

Thanks a lot :smiley:

1 Like

:+1:

Here’s a confirmation of your confirmation! :slight_smile (see the notes below):

Yes.

Yes, but only the top one (that you have circled in black) next to the 13/12/11/10 block.

No, you have to remove the VL=VS jumper if you intend to provide two different voltages in the screw terminals.
VL will be powered by a battery pack/power supply of 7V DC or more.
VS will be powered by a step down DC-DC converter.
The step down DC-DC converter will be powered by the same battery pack/power supply as VL.

The battery you chose [RB-Hyp-01] is a fine choice with good capacity and the right voltage for this application.
The converter [RB-Dfr-222] sounds like a good choice too. Since it can do at most 25W that should be around 4A if you set it to 6V DC. Definitely more than enough!

Yes! The 12 V DC power supply should be enough since when converter down (either 5V [VL] or 6V [VS]) from 12V it will provide more than 1A. The BotBoarduino (max ~200 mA), GSM stuff (~1-2 mA) from the 2x RC servomotors probably around 500 mA (at most).

Yes, as long as the use of pin 0/1 from the GSM shield does not interfere with the RX/TX operations of programming.

:+1: :robot:

2 Likes

Well I think we’ve got everything sorted out :partying_face:

Regarding the voltage supplied to the servos, the data sheet state a voltage between 4.8V and 6V.
Is there a specific reason why I should supply the maximum allowed voltage ?

Thanks :smiley:

1 Like

:smiley:

That is typical, yes. Some have a range of up-to 7.2V DC. Smarts servos (like the LSS) can go as high as 12V DC!

Torque, speed and efficiency. DC motors provide more torque and speed at higher voltages. They also perform better at their rated voltage than lower. Since these can run as high as 6V DC, it is safe to assume they are rated for that voltage. This means that running them at that voltage will use less current (and less total power) due to higher efficiency.

Also, higher voltages overall means lower current hence less heat and loses inside the feeding wires, coils in the motor, etc. This is the same reason why electrical supply between regions and houses is at a high voltage (reduces line loss).

Therefore, I would typically recommend to use the highest voltage you can in most situations. In the case of RC servomotors, that is nearly always best.

I hope that clears up those last few details!

1 Like

I received my step-down DC-DC regulator : DFR0205.


I have connected both my orginal voltage input and output.
I set the voltage selector to variable and pushed the module enable button.
When I try to adjust the output voltage, nothing happens (input voltage = output voltage).
I’ve although tried to turn the voltage selector to 5V but without success.
Any idea of what I might be missing ?
I don’t use the voltage output interface, is it of any help in my case?

PS: I am using a 13V wall adapter.

1 Like

Yes it is related. This is what you should be doing! :slight_smile:

Also, you can see those details in the schematic of the board:


If you look at the yellow rectangles on the right, you’ll notice that 4 of the 8 “wires” going to those are GND and the other 4 are Vout (coming from the rectified, stablilized output of the onboard regulator). Those are the screw terminal, square socket and the 4 male headers.

The two screw terminals left of those are shown to connect to GND and also Vin, the input to the regulator. Therefore, connecting both your battery or power supply to the “original voltage input” and the BotBoarduino VS to the “original voltage output” will just send your 13 V DC directly to your servos, possibly damaging them instantly (i.e.: be careful!).

In case you didn’t do that already, when connecting new power management circuits (such as power supplies, batteries, regulators, etc.) always disconnect all other electronics and do much probing with a multimeter to ensure that:

  1. All polarities are good before, during and after assembly/power-up tests.
  2. The voltages are what you expect at all the different connection points!

I hope that helps!

1 Like