Over time, we have built several Arduino based weather stations, real-time clocks, dataloggers and a dozen of projects based on Nokia 5110 LCD display. For today’s tutorial, we will merge all that we have learned from each of those tutorials and we will build a datalogger with a display that allows you to select different ways of viewing the data, a line graph or a bar chart, etc.
The idea behind today’s project is to show how real-time data can be plotted and displayed on the Nokia 5110 LCD. The project will also look at the development of a menu through which the user can select the different kind of plots/graphs to view the data.
At the center of today’s project is the Nokia 5110 LCD Display. The Nokia 5110 LCD is one of the most popular LCD display among makers. It was originally developed for use as a screen for cell phones and was used in lots of mobile phones during the ’90s. The display uses a low power CMOS LCD controller/driver, the PCD8544, which drives the 84×48px graphics display. In a normal state, the display consumes about 6 to 7mA which makes it quite ideal for low power devices. We have published quite a number of tutorials on this display that might help you understand how to drive it. Today’s use of the display will be to show that it can be used to plot real-time data and how different kind of graphs can be displayed on it.
Asides the Nokia 5110 LCD, we will use a DHT11 temperature and humidity sensor, DS3231 real-time clock, a rotary encoder, and an Arduino pro mini. The DHT11 will serve as the source for the data to be logged as it will measure temperature and humidity data from the environment and push to the display. The DS3231 will be used to generate a timestamp for the data and rotary encoder will be used to navigate through the menu that we will create on the LCD. All of these components will be driven by the cheap and tiny Arduino Pro Mini.
Nokia 5110 LCD based Arduino Datalogger with Menu – [Link]
FM radio transmitters and receivers are one of the projects that fascinated a lot of people and drove them to become makers. The lure of being able to deploy your own radio station, or build your own surveillance(-like) devices was what encouraged most of us to build our first fm transmitter or receiver. Nowadays, microcontrollers help simplify and add a lot of functions to analog projects that’s why for today’s tutorial, we will look on how you can build an Arduino based FM radio receiver using the TEA5767 FM radio and an Arduino Nano.
At the heart of today’s project is the cheap TEA5767 FM radio module. This module comes with all the components required to build a FM radio receiver, all on board. The module is based on the TEA5767GH which is a single-chip, electronically tuned, FM stereo radio for low-voltage applications with fully integrated Intermediate Frequency (IF) selectivity and demodulation. Through an I2C interface, the module can be connected to a microcontroller to digitally control its tuning frequency and other characteristics, giving room for opportunities to digitize some of its operations. It comprises of two headphone jacks, one of which is for connection to an headphone/speaker while the other is for connection to the antenna which usually comes with the module.
Arduino FM Radio Receiver with TEA5767 and a Nokia 5110 LCD display – [Link]
This compact Infrared robot controller is based on Arduino Nano and L298 H-Bridge. The Nano shield can be used in various DC Motor driver applications using infra-red remote control or speed controller using trimmer potentiometer and direction control with help of slide switch. The board can drive two small size DC-Motors with current rating up to 1A each. Board also has jumpers to drive single DC Motor up to 2A. Additional 10K trimmer potentiometer and slide switch provided for DC Motor speed and direction control. The L298 IC mounted under the PCB so board can be mounted on heat sink directly in horizontal position. Screw terminal provided to connect motors. Circuit requires 7-18V DC , close the Jumper J-5V to power up the Arduino Nano. Close J1, J2, J3, J4, J5, jumpers for single motor operations.
InfraRed Robot Controller Shield For Arduino Nano – [Link]
The Raspberry Pi 4 was announced a while back and it surpassed the expectations of many, with many new features from its dual-core, Cortex-A-72 processor at 1.5GHz to the modern communication ports among several other upgrades. We published an announcement about it a few weeks ago but on this article we will take it a little bit further.
The Raspberry Pi 4 was announced a while back and it surpassed the expectations of many, with many new features from its dual-core, Cortex-A-72 processor at 1.5GHz to the modern communication ports among several other upgrades. We published an announcement about it a few weeks ago but on this article we will take it a little bit further.
With features as impressive as those possessed by the Raspberry Pi 4, I couldn’t bear to not take a look at the components under it, everything powering up the Raspberry Pi 4 and the source of its new features. For today’s article, we will examine the capacities of the new Raspberry Pi 4 and the components/design consideration, making it all happen.
Raspberry Pi 4 – A Look Under the Hood and How to Make most of it – [Link]
Since it’s inception the Arduino IDE has demonstrated the desire to support all kind of platforms, from Arduino clones and variations of different manufacturers to third party boards like the ESP32 and ESp8266. As more people get familiar with the IDE, they are beginning to support more boards that are not based on ATMEL chips and for today’s tutorial we will look on one of such boards. We will examine how to program the STM32 based, STM32F103C8T6 development board with the Arduino IDE.
The STM32 board to be used for this tutorial is none other than the STM32F103C8T6 chip based STM32F1 development board commonly referred to as “Blue Pill” in line with the blue color of its PCB. Blue Pill is powered by the powerful 32-bit STM32F103C8T6 ARM processor, clocked at 72MHz. The board operates on 3.3v logic levels but its GPIO pins have been tested to be 5v tolerant. While it does not come with WiFi or Bluetooth like the ESP32 and Arduino variants, it offers 20KB of RAM and 64KB of flash memory which makes it adequate for large projects. It also possesses 37 GPIO pins, 10 of which can be used for Analog sensors since they have ADC enabled, along with others which are enabled for SPI, I2C, CAN, UART, and DMA. For a board which costs around $3, you will agree with me that these are impressive specs.
Programming STM32 Based Boards with the Arduino IDE – [Link]
Since it’s inception the Arduino IDE has demonstrated the desire to support all kind of platforms, from Arduino clones and variations of different manufacturers to third party boards like the ESP32 and ESp8266. As more people get familiar with the IDE, they are beginning to support more boards that are not based on ATMEL chips and for today’s tutorial we will look on one of such boards. We will examine how to program the STM32 based, STM32F103C8T6 development board with the Arduino IDE.
Blue Pill Board
The STM32 board to be used for this tutorial is none other than the STM32F103C8T6 chip based STM32F1 development board commonly referred to as “Blue Pill” in line with the blue color of its PCB. Blue Pill is powered by the powerful 32-bit STM32F103C8T6 ARM processor, clocked at 72MHz. The board operates on 3.3v logic levels but its GPIO pins have been tested to be 5v tolerant. While it does not come with WiFi or Bluetooth like the ESP32 and Arduino variants, it offers 20KB of RAM and 64KB of flash memory which makes it adequate for large projects. It also possesses 37 GPIO pins, 10 of which can be used for Analog sensors since they have ADC enabled, along with others which are enabled for SPI, I2C, CAN, UART, and DMA. For a board which costs around $3, you will agree with me that these are impressive specs. A summarized version of these specifications compared with that of an Arduino Uno is shown in the image below.
Comparing the Blue Pill with Arduino Uno
Based on the specs above, the frequency at which Blue pill operates is about 4.5 times higher than an Arduino UNO, for today’s tutorial, as an example on how to use the STM32F1 board, we will connect it to a 1.44″ TFT display and program it to calculate the “Pi” constant. We will note how long it took the board to obtain the value an compare it with the time it takes an Arduino Uno to perform the same task.
Required Components
The following components are required to build this project;
As usual, all the components used for this tutorial can be bought from the attached links. The power bank is however only needed if you want to deploy the project in a stand-alone mode.
Schematics
As mentioned earlier, we will connect the STM32F1 board to the1.8″ ST7735 based colored TFT Display along with a push button. The push button will be used to instruct the board to start the calculation.
Connect the components as shown in the Schematics below.
To make the connections easy to replicate, the pin to pin connections between the STM32 and the display is described below.
Go over the connections once again to be sure everything is as it should be as it tends to get a little bit tricky. With this done, we proceed to set up the STM32 board to be programmed with the Arduino IDE.
Setting up the Arduino IDE for STM32
As with most boards not made by Arduino, a bit of setup needs to be done before the board can be used with the Arduino IDE. This involves installing the board file either via the Arduino Board manager or downloading from the internet and copy the files into the hardware folder. The Board Manager route is the less tedious one and since the STM32F1 is among the listed boards, we will go that route.
Start by adding the link for the STM32 board to the Arduino preference lists. Go to File -> Preferences, then enter this URL ( http://dan.drown.org/stm32duino/package_STM32duino_index.json ) in the box as indicated below and click ok.
Now go to Tools -> Board -> Board manager, it will open a dialogue box with a search bar. Search for STM32F1 and install the corresponding package.
The installation procedure will take a few seconds. After that, the board should now be available for selection under the Arduino IDE board list.
Code
The code will be written the same way we’d write any other sketch for an Arduino project, with the only difference being the way the pins are referenced.
To be able to easily develop the code for this project, we will use two libraries which are both modifications of standard Arduino Libraries to make them compatible for the STM32. We will use the modified version of the Adafruit GFX and the Adafruit ST7735 libraries. Both libraries can be downloaded via the links attached to them.
As usual, I will be doing a short breakdown of the code. We start the code by importing the two libraries that we will use.
Next, we define the pins of the STM32 to which the CS, RST, and DC pins of the LCD are connected.
#define cs PA2
#define rst PA4
#define dc PA3
Next, we create some color definitions to make it easy to use colors by their names in the code later instead of by their hex values.
// Color definitions
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
Next, we set the number of iterations we want the board to go through along with the refresh duration for the progress bar to be used.
#define ITERATIONS 500000L // number of iterations
#define REFRESH_TFT 7500 // refresh bar every 7500 iterations
#define ACTIVATED LOW
With this done, we create an object of the ST7735 library which will be used to reference the display all through the entire project. We also indicate the pin of the STM32 to which the pushbutton is connected and create a variable to hold its state.
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
int percent = 0;
int progress = 1;
const int buttonPin = PB9;
int buttonState = 0;
With this done, we move to the void setup() function.
We start by setting the pinMode() of the pin to which the pushbutton is connected, activating an internal pull-up resistor on the pin since the pushbutton connects to ground when pressed.
Next, we initialize serial communication and the screen, setting the background of the display to black and calling the printUI() function to display the interface.
Serial.begin(9600);
tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab
tft.fillScreen(ST7735_BLACK);
printUI();
}
Next is the void loop() function.
The void loop function is quite simple and short, thanks to the use of libraries/functions.
We start by reading the state of the push button. If the button has been pressed, we remove the current message on the screen using the removePressKeyText() and draw the changing progress bar using the drawBar() function. We then call the start calculation function to obtain and display the value of Pi along with the time it took to calculate it.
If the pushbutton is not pressed, the device stays in Idle mode with the screen demanding that a key be pressed to interact with it.
else {
}
Finally, a delay is inserted at the end of the loop to give a bit of time before sketch “loops”.
delay(10);
}
The remaining part of the code are the functions called to achieve the tasks from drawing the bar to calculating the Pi. Most of these functions have been covered in several other tutorials that involve the use of the ST7735 display.
void fillBar(int percent)
{
int counter =60;
percent = map(percent,0,100,5,121);
for(counter = 60; counter<75;counter++)
{
tft.drawFastHLine(5, counter, percent, YELLOW );
}
}
void printUI()
{
tft.setCursor(30,5);
tft.setTextColor(RED);
tft.setTextSize(1);
tft.print("PI BENCHMARK");
tft.setCursor(30,60);
tft.setTextColor(WHITE);
tft.setTextSize(1);
tft.print("PRESS KEY");
tft.setCursor(5,120);
tft.setTextColor(RED);
tft.setTextSize(1);
tft.print("PI:");
tft.setCursor(5,140);
tft.setTextColor(RED);
tft.setTextSize(1);
tft.print("TIME:");
}
void removePressKeyText()
{
tft.setCursor(30,60);
tft.setTextColor(BLACK);
tft.setTextSize(1);
tft.print("PRESS KEY");
}
void drawBar()
{
tft.drawRect(5,60,120,15, YELLOW);
}
void startCalculation()
{
unsigned long start, time;
unsigned long niter=ITERATIONS;
int LEDcounter = 0;
unsigned long i;
float x = 1.0;
float pi=1.0;
Serial.begin(9600);
Serial.print("Beginning ");
Serial.print(niter);
Serial.println(" iterations...");
Serial.println();
start = millis();
for ( i = 2; i < niter; i++) {
x *= -1.0;
pi += x / (2.0f*(float)i-1.0f);
if (LEDcounter++ > REFRESH_TFT) {
LEDcounter = 0;
progress++;
percent = progress*100/(ITERATIONS/ REFRESH_TFT);
fillBar(percent);
}
}
time = millis() - start;
pi = pi * 4.0;
Serial.print("# of trials = ");
Serial.println(niter);
Serial.print("Estimate of pi = ");
String piString = String(pi,7);
String timeString = String(time)+"ms";
Serial.println(piString);
Serial.print("Time: "); Serial.print(time); Serial.println(" ms");
tft.setCursor(40,120);
tft.setTextColor(GREEN);
tft.setTextSize(1);
tft.print(piString);
tft.setCursor(40,140);
tft.setTextColor(GREEN);
tft.setTextSize(1);
tft.print(timeString);
}
The complete code for the project is available below and is attached under the download section.
#include <Adafruit_GFX_AS.h> //https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries/Adafruit_GFX_AS
#include "Adafruit_ST7735.h" // https://github.com/KenjutsuGH/Adafruit-ST7735-Library
//Please note that you need to delete the Adafruit ST7735 library for Arduino if you have it installed, else the
//sketch won't compile.
#define cs PA2
#define rst PA4
#define dc PA3
// Color definitions
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define ITERATIONS 500000L // number of iterations
#define REFRESH_TFT 7500 // refresh bar every 7500 iterations
#define ACTIVATED LOW
#if defined(__SAM3X8E__)
#undef __FlashStringHelper::F(string_literal)
#define F(string_literal) string_literal
#endif
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
int percent = 0;
int progress = 1;
const int buttonPin = PB9;
int buttonState = 0;
void setup(void) {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab
tft.fillScreen(ST7735_BLACK);
printUI();
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == ACTIVATED) {
removePressKeyText();
drawBar();
startCalculation();
}
else {
}
delay(10);
}
void fillBar(int percent)
{
int counter =60;
percent = map(percent,0,100,5,121);
for(counter = 60; counter<75;counter++)
{
tft.drawFastHLine(5, counter, percent, YELLOW );
}
}
void printUI()
{
tft.setCursor(30,5);
tft.setTextColor(RED);
tft.setTextSize(1);
tft.print("PI BENCHMARK");
tft.setCursor(30,60);
tft.setTextColor(WHITE);
tft.setTextSize(1);
tft.print("PRESS KEY");
tft.setCursor(5,120);
tft.setTextColor(RED);
tft.setTextSize(1);
tft.print("PI:");
tft.setCursor(5,140);
tft.setTextColor(RED);
tft.setTextSize(1);
tft.print("TIME:");
}
void removePressKeyText()
{
tft.setCursor(30,60);
tft.setTextColor(BLACK);
tft.setTextSize(1);
tft.print("PRESS KEY");
}
void drawBar()
{
tft.drawRect(5,60,120,15, YELLOW);
}
void startCalculation()
{
unsigned long start, time;
unsigned long niter=ITERATIONS;
int LEDcounter = 0;
unsigned long i;
float x = 1.0;
float pi=1.0;
Serial.begin(9600);
Serial.print("Beginning ");
Serial.print(niter);
Serial.println(" iterations...");
Serial.println();
start = millis();
for ( i = 2; i < niter; i++) {
x *= -1.0;
pi += x / (2.0f*(float)i-1.0f);
if (LEDcounter++ > REFRESH_TFT) {
LEDcounter = 0;
progress++;
percent = progress*100/(ITERATIONS/ REFRESH_TFT);
fillBar(percent);
}
}
time = millis() - start;
pi = pi * 4.0;
Serial.print("# of trials = ");
Serial.println(niter);
Serial.print("Estimate of pi = ");
String piString = String(pi,7);
String timeString = String(time)+"ms";
Serial.println(piString);
Serial.print("Time: "); Serial.print(time); Serial.println(" ms");
tft.setCursor(40,120);
tft.setTextColor(GREEN);
tft.setTextSize(1);
tft.print(piString);
tft.setCursor(40,140);
tft.setTextColor(GREEN);
tft.setTextSize(1);
tft.print(timeString);
}
Uploading Code to the STM32
Uploading sketches to the STM32f1 is a little bit complex compared to standard Arduino compatible boards. To upload code to the board, we need an FTDI based, USB to Serial converter.
Connect the USB to serial converter to the STM32 as shown in the schematics below.
Connect FTDI to STM32
Here is a pin to pin map of the connection
FTDI – STM32
VCC - 5V
GND - GND
Rx - A9
Tx - A10
With this done, we then change the position of the board’s state jumper to position one (as shown in the gif below), so as to put the board in programming mode. Press the reset button on the board once after this and we are ready to upload the code.
On the computer, ensure you select “Generic STM32F103C board” and select serial for the upload method after which you can hit the upload button.
Select the board and set upload method to serial
Once the Upload is complete, change the state jumper to position “0” this will put the board in “run” mode and it should now start running based on the code uploaded. At this point, you can disconnect the FTDI and power the board over its USB. In case the code does not run after powering, ensure you have restored the jumper properly and recycle power to the board.
Demo
With the code complete, follow the upload process described above to upload the code to your setup. You should see the display come up as shown in the Image below.
Press the pushbutton to start the calculation. You should see the progress bar slide gradually until the end. At the end of the process, the value of Pi is displayed along with the time which the calculation took.
The same code is implemented on an Arduino Uno. The result is shown in the image below.
Arduino Speed Test
Comparing these two values, we see that “Blue Pill” is over 7 times faster than the Arduino Uno. This makes it ideal for projects which involves heavy processing and time constraints. The small size of the Blue pill also serves as an advantage here as it is only a bit bigger than the Arduino nano and it can be used in place where the Nano won’t be fast enough.
That’s it for today’s tutorial guys. What will you be building with the Blue Pill? feel free to share along with any questions you might have, under the comment section.
The video version of this tutorial can be watched on youtube.
The Raspberry Pi 4 was announced a while back and it surpassed the expectations of many, with many new features from its dual-core, Cortex-A-72 processor at 1.5GHz to the modern communication ports among several other upgrades. We published an announcement about it a few weeks ago but on this article we will take it a little bit further.
With features as impressive as those possessed by the Raspberry Pi 4, I couldn’t bear to not take a look at the components under it, everything powering up the Raspberry Pi 4 and the source of its new features. For today’s article, we will examine the capacities of the new Raspberry Pi 4 and the components/design consideration, making it all happen.
Raspberry Pi 4 Features
Before we start looking at the components that make up the Raspberry Pi 4, it is probably important to go over some of the features and specs.
Some of the new features include;
SoC – Broadcom BCM2711 quad-core Cortex-A72 (ARMv8) @ 1.5GHz with VideoCore VI GPU supporting OpenGL ES 3.0 graphics
System Memory – 1GB, 2GB or 4GB LPDDR4
Storage – MicroSD card slot
Video Output & Display I/F
2x micro HDMI ports up to 4Kp60 (Currently 1080p60 max. in dual-display configuration, although 2x 4Kp30 is being worked on)
3.5mm AV port with composite video (and stereo audio)
2-lane MIPI DSI display port
Video
Decode – H.265 up to 4Kp60, H.264 up to 1080p60
Encode – H.264 up to 1080p30
Camera – 2-lane MIPI CSI camera port
Audio – Stereo audio via AV port, digital audio via HDMI ports
Connectivity
True Gigabit Ethernet (RJ45)
Dual-band (2.4 GHz/5.0 GHz) 802.11b/g/n/ac WiFi 5
Bluetooth 5.0 BLE
USB – 2x USB 3.0 ports, 2x USB 2.0 ports.
Expansion – Standard 40-pin GPIO header fully backward-compatible with previous Raspberry Pi boards
Dimensions – 85 x 56 mm (same as other model B boards)
Temperature Range – 0 – 50°C
Components Behind the Features
The awesome features written above are a product of several top-notch design considerations and powerful electronic components. We will take a look at some of these electronics components one after the other.
Raspberry Pi 4 Components
1. The SOC (BCM2711)
At the heart of the Raspberry pi, 4 is the Broadcom BCM2711 SOC which is responsible for a good number of the new features on the raspberry pi 4.
The architecture of the BCM2711 is considering an upgrade to the SoCs used n earlier Pi models. It continues the quad-core CPU design of the BCM2837BO (used in the raspberry pi 3 B+) but is based on the high-performing, 64-bit, and Armv8-A architecture based ARM Cortex-A72 processor which was released in 2015 as a successor of the Cortex-A57, which was used in the BCM2837BO.
The design of the Cortex-A72 and its availability as a SIP Cores Licensee makes it suitable for integration with other SIP cores like GPUs and display controllers among others which no doubt aided the implementation of all the other features of the Raspberry pi.
The BCM28711 also features a PCIe link that connects the USB 2 and USB 3 ports, ability to access more memory than previous Pis and separate ethernet controller all leading to a greatly improved GPU feature set with much faster input/output.
Some of the features brought about by the use of this SoC includes;
2x micro HDMI ports up to 4Kp60 (Currently 1080p60 max. in dual-display configuration, although 2x 4Kp30 is being worked on)
3.5mm AV port with composite video (and stereo audio)
2-lane MIPI DSI display port
Video Decoding – H.265 up to 4Kp60, H.264 up to 1080p60
Video Encoding – H.264 up to 1080p30
The BCM2711 chip continues to use the heat spreading technology started with the BCM2837B0, which provides better thermal management but the speed and performance of the chip means it still generates considerably more heat than the BCM2837BO, as such a heat sink will definitely be needed for processing-intensive operations.
2. LPDDR4 RAM
One of the cool thing about the Raspberry pi 4 is the RAM, with 1GB, 2GB and 4GB variety giving different categories of users an adequate cost vs required processing power solution. The Raspberry pi 3 implemented the LPDDR2 but things were kicked off double time in the raspberry pi 4 with the LPDDR4 RAM.
Data Travelling faster in LPDDR4 due to the shorter path as a result of the duo infrastructure
LPDDR stands for Low Power Double Data Rate Random Access Memory which is essentially a low power equivalent of the DDR4 memory which has been in use in most recent High-end computers. It possesses faster memory speed and is low power. Unlike with the DDR4, the LPDDR RAMs come with smaller bit bus which helps it maintain power efficiency even at superb memory speed. Compared with the 10GB/s single-channel die bandwidth of the LPDDR2, the LPDDR4 was redesigned as a 2-channel die, bringing 16 bits and a bandwidth of 17GB/s to each of the channels as such, both channels can be arranged in a dual configuration that pushes the bandwidth to an even greater number.
All of this is what the LPDDR4 brings aboard the Raspberry pi 4. It provides the Pi with an immense processing power for use in computationally intensive operations like Computer Vision which is gradually becoming one of the most popular applications of the raspberry pi.
3. MxL7704
According to Ben Upton, the Raspberry pi 4 was designed to meet the desire of users based on the feedback received. With all the effort made towards improving power management through the pi, one can safely assume that quite a number of that feedback was about power management on the Pi.
The Raspberry pi 4 makes use of the highly integrated MxL7704 power management IC. The MxL7704 comes with an on-board 100mA LDO which provides clean 1.5V to 3.6V power for analog sub-systems, four synchronous step-down buck regulators that provide system, memory, I/O and core power from 1.5A to 4A, an integrated 8-bit ADC with 2 external inputs, and utilizes a conditional sequencing state machine, which according to MaxLinear is “flexible enough to meet the requirements of virtually any processor”. It provides all the key power rails required by the raspberry including the low noise voltage required by the audio circuity of the Pi.
The MxL7704 boast a robust I2C interface through which it receives commands from the Pi’s onboard SoC, for dynamic voltage scaling, PGOOD Routing, sequencing control, and status monitoring, enabling the Pi to save power by dynamically reducing the power to the SoC when the system is in an idle state and push maximum power to it when running at full speed.
4. BCM54213PE
The Raspberry pi 3 B+ was the first attempt to bring Gigabit ethernet to the raspberry pi, but because the USB connection was to the same physical layer as the Ethernet, the maximum speed attainable on the Pi 3 B+ was about 300 Mbps max. To ensure this feature is implemented in its true form, the shared USB + Ethernet bandwidth was severed on the raspberry pi 4 and a “true” Gigabit Ethernet port with a separate Gigabit Ethernet transceiver (BCM54213PE) was implemented.
According to the datasheet, the BCM54213PE is a triple-speed 1000BASE-T/100BASE-TX/10BASE-T Gigabit Ethernet (GbE) transceiver integrated into a single monolithic CMOS chip. it performs all physical-layer functions for 1000BASE-T, 100BASE-TX, and 10BASE-T Ethernet on standard category 5 UTP cable. It is highly integrated and combines digital adaptive equalizers, ADCs, phase-locked loops, line drivers, encoders, decoders, echo cancellers, crosstalk cancellers, and all required support circuitry on the single chip.
The BCM54213PE is fully compliant with RGMII and is signed for reliable operation over worst-case cat 5 cable. It is also capable of negotiating with its link partner to determine the highest possible operating speed, thus allowing the network to which it is connected to dictate the speed of data transfer in the sense that, it can revert to slower speeds if the network to which it is connected is not fast enough.
The full implementation of the Gigabit Ethernet makes the Pi 4 ideal for projects that implements it as a media server, router or that relies one way or the other on good Ethernet bandwidth.
5. VL805
Indicating future transition of all USB ports to USB3.0, the Pi 4 implements 2 x USB 3.0 ports along with 2 x USB 2.0 port which is being controlled by the VL805 chip.
VL805 on the Raspberry Pi 4
According to VIA Labs, VL805 is a USB 3.0 Host controller, which enables a PCI Express equipped platform to interface with USB Super-Speed (5 Gbps), High-Speed (480 Mbps), Full-Speed (12 Mbps), and Low-Speed (1.5 Mbps) devices. The root hub consists of four downstream facing ports enabling the simultaneous operation of multiple peripheral devices. Based on this, the raspberry pi team could migrate all of the USB ports to USB3.0 in the next version without changing the USB controller.
Asides the USB ports, the Pi 4 is powered over a USB-C connection that is capable of delivering up to 3A to Pi thereby solving most of the power issues that the models have been plagued with over the years.
Several elements exist under the hood including the jump to Bluetooth 5.0 and the reduction in BOM due to the use of the PIMC, but we will leave that for another day as I personally believe they are not so critical to performance.
Making the Most of the Raspberry Pi 4
Immediately after the release of the Raspberry Pi 4, dozens of open-source hardware manufacturers began the release several kits, accessories and add-ons to help users of the raspberry pi fully capitalize on its new features.
This section will look at a few add-ons and accessories for the raspberry pi that are worth investing in.
1. Heat Sinks
From the Pi4 benchmark and general usage so far, one of the key things you will need to put the Pi 4 to any meaningful use is a heat sink, due to the amount of heat the new processor generates. While the processor has the ability to self throttle when the temperature gets to a particular level, this still affects the overall experience and reduces the amount of work to which you can put the Pi to. There quite a number of an amazing heat sinks and cooling technologies available to the Pi 4 but one of my favorites so far still remains the ICE Tower CPU Cooling Fan sold by Seeed Studio. If you put the Pi through heavy-duty work, this will be worth your while. Other cheaper type of heat sink/cooling system worth looking at includes the dual cooling fan and this copper heat sink kit.
ICE Tower Cooling Fan
2. Power Over Ethernet(POE) Hat
Power Over Ethernet(POE) was introduced on the Pi 3 B+ and this feature was retained for the Raspberry pi 4. The feature allows you power the raspberry pi via an Ethernet cable connected to a networking device which is capable of sourcing power to the Pi. However, the feature can only be accessed via a “special hat (/shield like we say for Arduino)” known as the POE Hat. If you at any time want to take advantage of the connection via an Ethernet cable to reduce the number of cables connected to the Pi, then you should totally consider the POE Hat.
POE HAT
3. Docker Pi IoT Node
Looking to build some IoT Solution with the Raspberry pi 4? then the Docker Pi IoT node will certainly come in handy. The Docker pi IoT node brings GPS/BDS, GSM and LoRa Communication ability to your Raspberry pi. It comes as a Hat and directly plugs into the pi, making use of only the I2C pins as the communication between it and Pi takes place over I2C. It allows the Pi sends and receive data over LoRa, make calls, send texts, etc over GSM and get real-time location and related NMEA data via GPS.
Docker Pi
4. Raspberry Pi Keyboard and Mouse
One of the key points that were mentioned during the release of the raspberry pi 4 is the fact that it’s capable of comfortably replacing your desktop computer. If this represents your plans for the raspberry pi then you will definitely need a keyboard and mouse for the setup, and there is none better than the official raspberry pi keyboard and mouse.
Raspberry Pi Keyboard and Mouse
5. Raspberry Pi Enclosures
The Raspberry pi 4 has a slightly different form factor compared to the other raspberry Pis, from the 2 mini HDMI ports to the change in position of the Ethernet port, the Raspberry pi 4 will not fit into enclosures for other versions of the Pis. To ensure owners of the raspberry pi 4 have access to protective enclosures, the raspberry pi foundation released the official Raspberry pi 4 enclosure same day as the device. It will provide all the coverings you need to ensure the pi stays dust-free.
Raspberry Pi 4 Case
So, the list can still go on, but for readability, we will stop here. However, I will look into creating another article focused on sharing some of the coolest raspberry pi add-ons out there.
For those who may still look to get your hands on the Raspberry pi, it is currently available in quite a lot of stores online with many stores like Seeed Studio adding different perks, discounts, and add-ons when you buy from them.
That’s it for this article, thanks for reading. Feel free to reach me via the comment section with any questions you might have as regards it.
MTSD1T0AKC7MS-1WTCS – Record, share and enjoy more content with Micron’s c200 microSD UHS-I cards
With 1TB of removable storage, the c200 is the world’s highest-capacity microSD card, designed for 4K HDR video capture/playback and blazing-fast file transfers.
The c200 microSD family is designed as removable storage for consumer cameras, drones, STB, smart phones, game consoles, etc.
Key features
Capacity: 128GB to 1TB
Performance: Optimized for burst performance
Sequential Speed
Reads: up to 100 MB/s
Writes: up to 95 MB/s
Random Speed
Reads: 4000 IOPS
Writes: 2000 IOPS
Speed Class: UHS-I C10, U3, A2, V30
Temperature Range
Operating: –25C to 85C
Storage: –40C to 85C
No more information is available for the Micron microSD card.
Last week, Seeedstudio.com released the first product of the Wio Lite series, the Wio Lite W600, which is a SAM D21 + W600 WiFi development board and it was well received by users. Today, they bring us another new product in the Wio Lite series, the Wio Lite MG126 Bluetooth development board.
Wio Lite MG126 is a cost-effective SAMD21 based development board with the on-board MG126 Bluetooth Module. SAM D21 is an ARM Cortex-M0+ based microcontroller and the MG126 is a 2.4GHz single-mode Bluetooth transceiver module. The same with Wio Lite W600, this board is also compatible with Arduino zero( Used the same Arduino Core SAM D21) and has the same compatible form factor with Adafruit Feather series.
We break out the 3.3V I/O pins of SAM D21, SAM D21 chip has rich I / O resources, including 14 digital pins, 6 analog pins, 1 UART port, 1 I2C port, and 1 ICSP port. More and more boards in Seeed use type C interfaces to supply power and transmit data, so does the Wio Lite MG126. Meanwhile, there is a JST2.0 Li-Po battery port, you can use 3.5V or 4.2V Li-Po battery to power this board.
Features
Arduino Zero Compatible/ Adafruit Feather Compatible
2.4GHz ISM band operation with 2MHz channel spacing
1Mbps air data rate
ultra-low power
Now, let’s talk about the Bluetooth Core, the MG126. MG126 is a 2.4GHz BLE RF transceiver with software configurable registers, embedded packet handling engine. It can work with ultra-low power. The Bluetooth air data rate of MG126 is 1Mbps and MG126 can talks with Arduino core at the speed of 4Mbps via the SPI interface.