BeyonDuino is an Arduino based DIY-friendly hardware platform with a multitude of on-board peripherals, and can be used to perform experiments starting the beginner level and ‘beyond’. The BeyonDuino has all the essential elements of a standalone microcontroller platform. After being programmed using an external USB-to-Serial converter, the board only requires a USB based power supply to operate. The entire ecosystem is designed as a single sided PCB which can easily be fabricated by DIY enthusiasts using the inexpensive Toner Transfer Method.
The Arduino has become a popular and user-friendly development platform for makers, electronics enthusiasts and students. But, the Arduino board, by itself, is extremely limiting in terms of the peripheral devices available on board. Even though the capabilities of the Arduino can be expanded using Shields, it adds restrictions in terms of form factor as well as the ability and compatibility in connecting multiple shields. Another way to interface peripherals to the Arduino can be through simple breadboarding, but that is a highly error prone and unscalable thing to do.
Not just that, one of the biggest highlights of the BeyonDuino ecosystem is that it charts out very clearly the basic concepts of building a microcontroller system starting from chip up by elaborating the concept of interfacing between various peripherals, in hardware. In contrast, most of the Arduino based systems tend to eliminate this aspect by presenting Arduino in a seemingly easy to use wrapper that inherently takes care of all the low level nitty-gritty like reset, bootloading interface, etc. While the later approach is many times beneficial and can result is a small ramp up time for the user, it does not help when one has to design independent systems.
The development of the BeyonDuino was inspired by these issues and has resulted in an Arduino compatible platform that is equipped with a carefully selected set of peripheral devices that not only enhance the learning experience for beginners of the Arduino ecosystem but also allow more experienced users to explore various interesting projects ideas.
All the PCBs that make up the BeyonDuino ecosystem and the purpose they serve.
BeyonDuino Controller Board
A distinctive feature of the BeyonDuino is the assortment of peripherals available on board. Unlike traditional Arduino boards, which only have a single user LED on board, the BeyonDuino is equipped with various digital and analog peripherals. The selection of on board peripherals is intended to enhance the understanding of the capabilities of the ATMega328 microcontroller without the need to setup elaborate connections on a breadboard or to use a variety of shields. Each of the on board peripherals aids the user in understanding how other devices of a similar nature can be interfaced with the Arduino. A list of on-board peripherals, along with the corresponding Arduino pin it is connected to, is shown in Table 2.1.
|RGB LED – Red||3||PWM Capable|
|RGB LED – Green||5|
|RGB LED – Blue||5|
|User Switch 1||2||Interrupt Capable (INT1)|
|User Switch 2||16/A2||Digital Capability on Analog Pins|
|DHT11 Sensor||8||Pulled Up|
|Potentiometer||A3||Available on Connector also|
|I2C Data (SDA)||A4||EEPROM and RTC connected to I2C Bus. Also available on connector|
|I2C Clock (SCL)||A5|
|RTC Alarm||2||Interrupt Capable (INT1)|
MyFi is a breakout board for the FTDI FT232RL which is a USB to Serial bridge IC. It can be used to program the target board as well as communicate by UART for Serial Monitor, in case of Arduino like boards. It has four signal lines and two lines for providing power supply (VCC and GND). It works on two voltage logic levels particularly +3.3 V and +5V. The four signal lines are RX, TX, RTS/DTR and CTS. The RTS and DTR are on the same line. The DTR pin is used to auto-reset the target board while uploading sketch/HEX code. RTS pin is an output and CTS pin is an input. RTS pin should be connected to the CTS pin of the target device. Similarly, CTS should be connected to RTS of the target. It has three LEDs on the breakout board namely TX, RX and Power-on LED that blinks when serial data is sent or received.
Drivers for MyFi are available at http://www.ftdichip.com/Drivers/VCP.htm.
The Display + I/O Expansion Board adds a 16×2 character LCD, 5 navigation buttons and a buzzer to the BeyonDuino. All of these push buttons are connected to a single analog input pin of the microcontroller. A buzzer is also present, and is connected to one of the PWM pins of the microcontroller.
The BeyonDuino can be used to program any AVR microcontroller using the ArduinoISP Sketch available in the Arduino IDE. Once this sketch is uploaded to BeyonDuino, the 10-pin connector can be used to program any AVR microcontroller using the ISP protocol. This feature comes in handy when trying to program the Arduino bootloader on a fresh ATMega328 chip. A 6-pin USB-to-Serial connector is provided on the board to program the chip using the Arduino bootloader.
- Hello LED – Turn LED on.
- Hello LED – Turn LED on for a second and then off.
- Hello LED – Flash LED at an observable rate.
- Hello LED – Flash LED at a rate such that the LED appears always on. Estimate the onset of the rate when the LED appears to stay on.
- Detect source of reset – Red LED for POR. Green LED for user reset.
- Hello Switch – Read switch (switch to be pressed and released) to toggle LED continuously.
- Hello Switch – Read switch to increase LED flash rate. Understand persistence of vision.
- Hello Time – Read how many switch press occurred in a 10 second window (Green LED is ON for the duration). Then pulse red LED (1 second on, 1 second off) for those many switch presses.
- Using the switch and the three LEDs of the RGB LED, play ‘Rock-Paper-Scissors’.
- Generate ‘Flickering Candle’ effect on a single color of the RGB LED. Use LFSR based random number generator for the flickering effect.
- Generate a more realistic warm yellow color ‘flickering candle’ effect using the RGB LED. Use LFSR based random number generator for the flickering effect.
- Toggle the LED every second using Timer interrupt.
- Hello PWM – Software PWM.
- Hello PWM – Hardware assisted PWM.
- Hello PWM – ‘Apple’ style LED ‘breathing’.
- Hello Intensity – Use the potentiometer to change the red LED intensity from 0 to maximum in 256 steps.
- Hello Color – Use the switch to select the LED and then the potentiometer to set the intensity of that LED and thus create your own color from amongst 16 million colors.
- Read the ADC value of the voltage divider involving the LDR. Print the value on the serial monitor.
- Use the LDR and estimate a threshold for the LDR value and use that to turn the RGB LED on, to simulate an ‘automatic porch light’.
- Use the thermistor to estimate the temperature and print the raw value on the serial monitor.
- Using two known temperature values, read the thermistor output and then fit a curve for exact temperature as listed in reference 1.
- Place a 50-ohm (1W rating) resistor in close proximity to the thermistor. Connect the 50-ohm resistor to the +5V supply voltage and ground pins (available in the nearby 10 pin box header). This will raise the thermistor at a higher than ambient temperature. Now blow air on the thermistor and estimate the drop in the temperature by plotting the response on the serial monitor. Use the rate change of temperature to create a ’birthday blowout candle’ using the RGB LED.
- Read the temperature and humidity values using the DHT sensor and print on the serial monitor.
- Connect the LCD I/O Board and print ‘Hello World’ on the LCD.
- Use the buzzer and play a stored message in Morse code.
- Program the RTC and use the navigation switches on the LCD I/O board to initialize the time and then display the time. Turn the system off and turn it on again after a while and ensure that the on-board battery helps maintain correct time on the RTC.
- Use the navigation switches to set an alarm on the RTC and when the alarm condition is satisfied, turn the buzzer on in a creative way. Assign switches for snooze and stop functions.
- Use the on-board eeprom to store the temperature min and max values together with a time stamp.
- Use the on-board eeprom to store temperature values every 15 minutes with a time stamp. Upon pressing the user switch, stop recording data and display the data on the LCD or serial monitor.
- Using the navigation switches for input and LCD for output display and buzzer for sound alerts, play ‘Rock-Paper-Scissors’ as a two-player game.
- Use the UART to USB bridge (MyFi Board) to communicate with the PC and print LDR/Thermistor/RTC values on the PC screen.
- Connect two BeyonDuino boards using a 3-pin cross cable (to connect TxD, RxD and Gnd). Pressing switch S1 on one board should toggle the Red LED (of the RGB LED) on the other board and vice-versa.
- It is possible to use the 16×2 LCD as a graphics LCD also. Program the LCD and plot the temperature reading on it in a strip-chart recorder format.
- Two player color-conundrum game where a player sets the composite color on his RGB LED using his pot (three times, once for each primary color) and then the other player has to match that color on his LED. The two boards are connected to each other using a 3-pin serial cable (TxD, RxD and Gnd).
- Rock-Paper-Scissors using two BeyonDuino boards connected with a serial cross cable.
- Rock-Paper-Scissors using two BeyonDuino boards communicating with each other using two BT modules.
- Color Conundrum using two BeyonDuino boards communicating with each other using two BT modules.
Additional Add-on Boards
- SD Card + Audio Out + Mic In
- 4 digit 7 segment display + Switches + 1 Analog (2 1/2 digit multimeter)
- L298 Motor Driver + 1 Servo Motor + 1 Current Sense
- I2C expansion board
- 74HC595 shift register using SPI bus