Introduction to LoRa – Send data between two Arduino using LoRa

Selecting the right communication protocol is an important part of any IoT project as not being able to communicate with the server/device cloud quickly takes away the “I” in IoT and could lead to the ultimate failure of the project. Several communication protocols exist, from WiFi and Zigbee to 2G, LTE, and even satellite communications, but each of them is usually plagued by one limitation or the other which makes them unsuitable for certain IoT use cases, with the major culprits usually being a tradeoff between range, power, and bandwidth. Semtech, however,  demonstrating an understanding the future of IoT, saw a potential game-changer when they acquired France based Cycleo in 2012. Cycleo had developed a patented wireless communication technology called LoRa, which combined ultra-low power consumption with an effective long-range. Semtech leveraged on the power of the community via a consortium and transformed the technology into one of the key drivers of the current wave of digital transformation being instituted by IoT.

Ra-02 LoRa Module

Using LoRa technology, devices can typically communicate over a range of 13- 20Km with the ability to go as far as 80KM in certain Line-of-sight setups, and as far as several 100s of KM from outer space as demonstrated by FOSSAT and Lacuna. This range achieved at a very low power which makes LoRa more suitable than other communication protocols, for remote, battery-powered IoT devices that are expected to run for months (or years) on a single battery charge.

LoRa compared with other networks

LoRa can be deployed in two major ways:

  • As a Peer to Peer Communication protocol
  • As a Low Power Wide Area Network

Peer to Peer communication allows two devices with LoRa radios to talk to each other in a manner similar to how two Bluetooth devices communicate, with the major difference being the fact that the range increases massively and less power is consumed.

For deployment as a wide area network, LoRa works hand in hand with Protocols like LoRaWAN which its usually confused with. LoRaWAN is a high capacity, Long Range, open, Low Power Wide Area Network (LPWAN) standard, based on LoRa technology and designed for LoRa Powered IoT Solutions by the LoRa Alliance. The standard takes full advantage of all the features of the LoRa technology to deliver services including reliable message delivery, end to end security, location and multicast capabilities to users while ensuring the interoperability of the various LoRaWAN networks world-wide. This is the standard on which platforms like the things network are built.

LoRaWAN Network Architecture

While LoRa started with some level of uncertainty, it has grown into the communication means of choice for almost all types of IoT applications, even those who do not benefit from its low power consumption features due to their plugged-in nature. Several advancements like the outer-space based “Gateway” solution being deployed by FOSSAT and Lacuna is making it clear that it will have more impact on IoT than it currently does.

All of these features and advancements make LoRa an important topic for electronics enthusiasts and over the next two tutorials, we are going to build projects to demonstrate how LoRa can be used as the means of communication in your IoT projects.  The first tutorial, which we will look today, will focus on using LoRa in a peer-to-peer communication mode, while the second tutorial will focus on LoRa as a Wide Area Network.

As a demonstration of LoRa being used for pair to pair communication, today’s project will feature two devices, one configured as a transmitter and the other, as a receiver. The transmitter will obtain temperature and humidity sensor from the environment using a DHT11 sensor connected to an Arduino Nano, and forward the data to the receiver via a Ra-02 LoRa module. For the receiver, we will use an ESP8266 Nodemcu development board with another Ra-02 LoRa Module. The temperature and humidity data sent by the transmitter will be received via the Ra-02 module and displayed on the Arduino IDE’s Serial Monitor.

Ra-02 LoRa Module Pinout

At the end of the tutorial, you would know how to send data between two devices using L0Ra and also how to interface an Arduino and ESP8266 based boards with a LoRa module.

Ready? Let’s go.

Required Components

The following components are required to build this project:

  1. Arduino Nano
  2. Ra-02 868mHz LoRa Module x 2
  3. ESP8266 NodeMCU
  4. DHT11 Temperature and Humidity Sensor
  5. 3.7v Lipo/Li-ion battery(Optional)
  6. Breadboard
  7. Jumper Wires

All of these components can be bought from the links attached. In place of the Arduino Nano, you can choose to use any other Arduino compatible development board. Just take note on how the change in board type affects other parts of the tutorial. The ESP8266 NodeMCU is also being used because we have a lot of them in stock. Feel free to use any other board. For the Ra-02 LoRa module, take note of the specified frequency when purchasing it to ensure it is legal to use that frequency in your country.

Schematics

As mentioned earlier, there are two sides to today’s project; the transmitter and the receiver, this means we will also have two schematics.

Transmitter Schematics 

The transmitter comprises of the DHT11 and the Ra-02 LoRa module connected to the Arduino Nano. The output pin of the DHT11 is connected to a digital pin on the Nano while the Ra-02 is connected to SPI pins of the Nano.  Connect the components as shown in the schematics below;

Schematics for Transmitter

To make the connection easy to follow, a pin-pin description is provided below;

Ra-02 – Arduino Nano

DiO0 - D2
RST - D9
Nss - D10
MOSI - D11
MISO - D12
SCK - D13
GND - GND
3.3V - 3.3V

DHT11 – Arduino Nano

VCC - 5v
GND - GND
D0 - D3

Go over the connections to ensure everything is as it should be before moving to the next section.

Receiver Schematics

The receiver comprises of the ESP8266 and the Ra-02 LoRa module. Connect them as shown in the schematics below:

To make the connection easy to follow, a pin-pin description is provided below;

Ra-02 – NodeMCU

DiO0 - D2
RST - D1
Nss - D8
MOSI - D7
MISO - D6
SCK - D5
GND - GND
3.3V - 3.3V

Go over the receiver connections also to be sure everything is as it should be.

With both schematics implemented either on a breadboard or on a protoboard, we are now ready to write the code for the project.

Code

As mentioned during the introduction, the goal for today’s project is to send data between two devices (One configured as a transmitter and the other as a receiver) using LoRa. Thus, just like we did with the schematics, we will also split the code into two: Transmitter Code and Receiver Code.

Transmitter Code

The idea behind the code for the transmitter is simple. We obtain the environment’s temperature and humidity data using the DHT11 temperature and humidity sensor and broadcast the data over LoRa to our receiver with an Identity key which ensures the data is only delivered to our receiver.

To reduce the amount of work required to develop the code for our transmitter, we will use a couple of libraries including; the well built LoRa library by Sandeep Mistry along with the DHT library from Adafruit. The LoRa Library comes with a number of functions that make it easy to send and receive data with the LoRa module, while the DHT library makes it easy to interact and extract readings from the DHT11 sensor. Both libraries can be installed via the Arduino Library Manager or downloaded and installed via the links attached to them.

The code for the transmitter is based on the LoRa Sender example located in the LoRa Library, with slight modifications like the addition of a sync word which ensures only the designated receiver with the key receives the message.

To do a quick breakdown of the code, we start by including the libraries that will be used.

#include <SPI.h>
#include <LoRa.h>
#include <DHT.h>

Next, we declare the pins of the Arduino to which the DHT is connected, specify the type of DHT we are using, and create an instance of the DHT library using both parameters.

#define DHTPIN D4                                                           // what digital pin we're connected to
#define DHTTYPE DHT11                                                       // select dht type as DHT 11 or DHT22
DHT dht(DHTPIN, DHTTYPE);

Next, we create a variable called “counter” which will be used to track the number of messages that have been sent to track if it was all delivered or some were lost.

int counter = 0;

With that done, we move to the void setup() function. We start the function by initializing serial communication, so we can use the Serial Monitor for debugging purposes.

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Sender");

Next, we initialize the DHT as well as the LoRa module specifying the frequency as 868MHz since that is the ISM frequency band supported by my LoRa radio and allowed in my country. If the initialization of the LoRa module fails, the code is suspended in a perpetual while loop, but if successful, we wrap up the void setup() function by setting a unique communication key (Syncword) and also set the power of the Lora radio to the maximum.

  
  dht.begin();     //initialise DHT11

  if (!LoRa.begin(868E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
  LoRa.setSyncWord(0xF3);
  LoRa.setTxPower(20);
}

Ensure the frequency you enter corresponds to that of your LoRa module and also be sure it is lawful to use that particular frequency for a project like this.

Up next, is the void loop() function. We start the function by obtaining temperature and humidity data from the environment using the DHT11 and storing them in variable T and H respectively. If the reading fails, we display a fail message and return.

void loop() 
{
  float h = dht.readHumidity();                                              
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {                                                
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

Next, we use the LoRa.beginPacket() function to indicate the beginning of a packet,  print the temperature and humidity data as part of the packet, along with the counter variable so we can keep track of the messages. then use the LoRa.endPacket() function to indicate the end of the packet and send broadcast it to the receiver.

LoRa.beginPacket();
LoRa.print("Data:");
LoRa.print(counter);
LoRa.print("> ");
LoRa.print("Temperature: ");
LoRa.print(t);
LoRa.print(" ");
LoRa.print("humidity");
LoRa.print(h);
LoRa.endPacket();

Increment the counter and delay for 5000ms to give the module some time before the next data is sent. This goes on and on in the loop() continuously streaming temperature and humidity data from the environment to the LoRa Receiver.

 counter++;

  delay(5000);
}

The complete code for the LoRa transmitter is provided below and also attached under the download section.

#include <SPI.h>
#include <LoRa.h>
#include <DHT.h>
#define DHTPIN D4                                                           // what digital pin we're connected to
#define DHTTYPE DHT11                                                       // select dht type as DHT 11 or DHT22
DHT dht(DHTPIN, DHTTYPE);

int counter = 0;

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Sender");
  
  dht.begin();     //initialise DHT11

  if (!LoRa.begin(868E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
  LoRa.setSyncWord(0xF3);
  LoRa.setTxPower(20);
}

void loop() 
{
  float h = dht.readHumidity();                                              
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {                                                
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }
  Serial.print("Sending packet: ");
  Serial.println(counter);
  // send packet
  LoRa.beginPacket();
  LoRa.print("Data:");
  LoRa.print(counter);
  LoRa.print("> ");
  LoRa.print("Temperature: ");
  LoRa.print(t);
  LoRa.print(" ");
  LoRa.print("humidity");
  LoRa.print(h);
  LoRa.endPacket();

  counter++;

  delay(5000);
}

Receiver Code 

For the receiver, our goal is simply to capture the packet being sent by the transmitter and display it on the serial monitor. To reduce the code complexity, we will use the same LoRa library we used in the transmitter sketch. To do a quick run-through of the code, we start, as always, by including the libraries that will be used.

#include <SPI.h>
#include <LoRa.h>

Next, we define the pins of the Nodemcu to which the NSS, RST and DIO0 pins of the LoRa module are connected. You will notice we didn’t do this for the transmitter sketch? this is because we used the predefined Library’s predefined pins which are usable on the Arduino Nano but not so on the ESP.

//define the pins used by the transceiver module
#define ss D8
#define rst D1
#define dio0 D2

Next, we move to the void setup() function. We start by initializing the serial communication so we can use the Serial Monitor to view incoming data from the receiver.

void setup() {
  //initialize Serial Monitor
  Serial.begin(9600);
  while (!Serial);
  Serial.println("LoRa Receiver");

Next, setup the LoRa module by using the setPins() command to inform the library of the pin configuration to be used.

//setup LoRa transceiver module
LoRa.setPins(ss, rst, dio0);

Next, we initialize LoRa communication with the begin() command. just like we did for the transmitter, ensure that the frequency you use as the argument for the begin() function should be that of your radio and lawful to use it in your country.

//replace the LoRa.begin(---E-) argument with your location's frequency 
  //433E6 for Asia
  //866E6 for Europe/Africa
  //915E6 for North America
  if(!LoRa.begin(868E6)) {
    Serial.println(".");
    while (1);
  }

To wrap up the void setup() function, we set the sync word to match that of the transmitter and we print a message on the serial monitor to indicate everything that setup is complete.

   // Change sync word (0xF3) to match the receiver
  // The sync word assures you don't get LoRa messages from other LoRa transceivers
  // ranges from 0-0xFF
  LoRa.setSyncWord(0xF3);
  Serial.println("LoRa Initializing Complete!");
}

Next, we write the loop() function. We start the function by creating a variable to hold the received data and the size of the packet received which will be zero/false if no packet is received.

void loop() 
{

  String LoRaData; 
  int packetSize = LoRa.parsePacket();

Next, we use an “if” statement to check if a packet has been received, if yes, the data is read using the LoRa.readString() function and stored in the variable we created earlier.

if (packetSize) 
{
  // received a packet
  Serial.print("Received packet '");

  // read packet
  while (LoRa.available())
  {
    LoRaData = LoRa.readString();

The read data is then displayed on the serial monitor along with the RSSI which is an indication of the signal strength and may be useful for debugging your transmission power.

     Serial.print(LoRaData); 
    }

    // print RSSI of packet
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
    
   }
}

The complete code for the transmitter is provided below and also attached under the download section.

#include <SPI.h>
#include <LoRa.h>

//define the pins used by the transceiver module
#define ss D8
#define rst D1
#define dio0 D2

void setup() {
  //initialize Serial Monitor
  Serial.begin(9600);
  while (!Serial);
  Serial.println("LoRa Receiver");

  //setup LoRa transceiver module
  LoRa.setPins(ss, rst, dio0);
  
  //replace the LoRa.begin(---E-) argument with your location's frequency 
  //433E6 for Asia
  //866E6 for Europe/Africa
  //915E6 for North America
  if(!LoRa.begin(868E6)) {
    Serial.println(".");
    while (1);
  }
   // Change sync word (0xF3) to match the receiver
  // The sync word assures you don't get LoRa messages from other LoRa transceivers
  // ranges from 0-0xFF
  LoRa.setSyncWord(0xF3);
  Serial.println("LoRa Initializing OK!");
}

void loop() 
{

  String LoRaData; 
  int packetSize = LoRa.parsePacket();
  if (packetSize) 
  {
    // received a packet
    Serial.print("Received packet '");

    // read packet
    while (LoRa.available())
    {
      LoRaData = LoRa.readString();
      Serial.print(LoRaData); 
    }

    // print RSSI of packet
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
    
   }
}

Demo

Connect the Arduino Nano to your computer and upload the transmitter sketch to it. Ensure to select the right board type and comport before uploading. After that, connect the Nodemcu too and upload the receiver sketch to it. Ensure to also switch the board type and select the right com port.

After uploading the sketches, you can decide to leave both devices connected to your computer or disconnect the transmitter device and power it using a power bank or battery leaving just the receiver. With the receiver still connected to your computer, open the serial monitor. You should see the temperature and humidity data from the transmitter being displayed on the Serial Monitor.

That’s it!

While today’s tutorial was a demonstration of peer-peer LoRa communication, the main joy of IoT is when you can get the data to server/device cloud and perform analysis that could lead to the extraction of value-adding insights as such, we will create a second part to this tutorial which will show how to get the data being received to the cloud.

LT8228 – 100 V Bidirectional Buck or Boost DC/DC Controllers with Protection

Analog Devices’ controllers enable full functional safety if one of the batteries fail by forcing the other battery to take over

Analog Devices’ LT8228 100 V bidirectional buck or boost DC/DC controllers provide sustainable power in hybrid and electric vehicle (EV) critical non-drive train subsystems by controlling 48 V and 12 V batteries with bidirectional capabilities allowing for power source redundancy. These controllers also enable full functional safety if one of the batteries fails by forcing the other battery to take over allowing the vehicle to function properly, avoiding potential catastrophic results.

Features

  • Automatically determines the direction of power flow or the direction can be externally controlled
  • Provides a step-down output voltage when in buck mode or a step-up output voltage when in boost mode
  • Input and output voltage can be set as high as 100 V
  • Two error amplifiers, one for boost mode and the other for buck mode, with separate compensation pins
  • 38-lead TSSOP package

The LT8228 automatically determines the direction of power flow, or the direction can be externally controlled. Input and output protection MOSFETs protect against negative voltages, control inrush currents, and provide isolation between terminals under fault conditions such as shorts in the switching MOSFETs. In step-down mode, protection MOSFETs prevent reverse current. In step-up mode, the same MOSFETs regulate the output inrush current and use an adjustable timer circuit breaker to protect themselves.

Simplified Schematic

The LT8228 implements bidirectional input and output current limiting as well as independent current monitoring. Masterless, fault-tolerant current-sharing allows LT8228 chips to work in parallel and to be added or subtracted while maintaining current sharing accuracy. Internal and external fault diagnostics and reporting are available via separate pins (FAULT and REPORT). Each LT8228 regulates to the average output current, thus eliminating the need for a master controller. When an individual LT8228 is disabled or in a fault condition, it stops contributing to the average bus, making the current sharing scheme fault-tolerant. The LT8228 sits in a 38-lead TSSOP package.

The LT8228 controller provides a step-down output voltage when in buck mode or a step-up output voltage when in boost mode. The input and output voltage can be set as high as 100 V. In applications such as battery backup systems, the bidirectional feature allows the battery to be charged from either a higher or lower voltage supply. When the supply is unavailable, the battery boosts or bucks power back to the supply.

To optimize transient response, the LT8228 has two error amplifiers, one for boost mode, the other for buck mode with separate compensation pins. The controller operates in discontinuous conduction mode when reverse inductor current is detected for light load conditions.

890nm 6-Element Photodiode Array features low leakage current

TT Electronics/Optek’s photodiode array features a high-temperature SMD chip carrier and low leakage current.

TT Electronics/Optek Technology’s OPR2100 device is a six-element photodiode that is designed to meet the needs of motor encoder applications. Designed specifically for industrial encoder applications, the OPR2100 features a high-temperature SMD chip carrier, a wide operating temperature range, and a low leakage current that can withstand extreme operating conditions. These devices have an opaque chip carrier that encloses six individual chips, which are mounted on isolated cathode contacts to allow external connection in any desired configuration. The opaque polyimide package shields the photodiodes from stray light and can withstand multiple exposures to the most demanding soldering conditions, while the gold-plated wraparound solder pads provide exceptional storage and wetting characteristics.

Features

  • Six-pin photodiode array
  • High-temperature chip carrier
  • Closely matched responsivity between elements
  • Choice of low or high speed
  • Easily mountable in any configuration
  • Suitable for harsh industrial operating condition

Applications

  • Motor encoder applications
  • Industrial encoder applications

Datasheet: www.ttelectronics.com

Nexperia Releases its 0.57 mili-Ohm Product in LFPAK56 Packaging

Nexperia announced the release of its lowest-ever RDS(on) power MOSFET, the PSMNR51-25YLH, exhibits a value of 0.57mΩ at 25V. Based on NextPowerS3 technology, this performance doesn’t compromise other parameters such as maximum drain current (ID(max)), Safe Operating Area (SOA), or gate charge QG.

Features

  • 100% avalanche tested at I(AS) = 190 A
  • Optimized for low RDSon
  • Low leakage < 1 μA at 25 °C
  • Low spiking and ringing for low EMI designs
  • Optimized for 4.5 V gate drive
  • Copper-clip for low parasitic inductance and resistance
  • High-reliability LFPAK package, qualified to 175 °C
  • Wave solderable; exposed leads for optimal solder coverage and visual solder inspection

Nexperia’s PSMNR51-25YLH MOSFET offers a maximum drain current rating up to 380 Amps, especially important in motor control applications where motor-stall can result in very high current surges for short periods. The device is packaged in LFPAK56, Nexperia’s 5mm x 6mm Power-SO8 compatible package, with a copper-clip construction that absorbs thermal stresses.

www.nexperia.com

PicoScope 4-Channel 16GHz Sampler-Extended Real-Time Oscilloscopes

The PicoScope 9404-16 brings very high-speed performance at less than half the cost of other traditional benchtop solutions with four high-resolution 12-bit channels driven by up to 5TS/s (0.2ps) equivalent-time sampling

Saelig Company, Inc. has introduced the PicoScope 9404-16 SXRTO, a 16GHz sampler-extended real-time oscilloscope which extends the range of a preceding  5GHz model. Designed to analyze repetitive or clock-derived signals, it features four high-resolution 12-bit channels driven by up to 5TS/s (0.2ps) equivalent-time sampling (ETS). The wide-band inputs can accurately measure transitions as fast as 22ps, pulses down to 45ps wide, and permits clock performance and eye diagram analysis of up to 11Gb/s gigabit signals (to third harmonic). In addition, the real-time broadband sampling modes can support analysis for other common RF signals such as wireless frequencies of 900MHz, 2.4 and 5.5GHz and upwards.  Pico’s SXRTO instrument architecture reduces the cost of broadband time-domain sampling for repetitive signal or clock-related applications.

In contrast to “sampling oscilloscopes”, the ETS technique supports trigger and pre-trigger capture and the familiarity, convenience and ease of real-time oscilloscope operation. Pico’s SXRTO technology seamlessly transitions to single-event, real-time waveform capture at sampling rates at and below 500MS/s.  Both sampling modes capture to memory of 250,000 samples (single channel).  This is particularly valuable for the capture of slower system signals, modulation envelopes, and repeating pulse or data patterns, for example.

This USB-controlled PicoScope 9404-16 is supplied with PicoSample 4 software. A free touch-compatible GUI controls the instrument and presents waveforms, measurements and statistics on an attached PC display. There is full support for available Windows display resolutions, allowing the inspection of waveform detail or presentation of measurements, for example on 4k monitors or projection, or across multiple monitors.

A wide range of automated and user-configurable signal integrity measurements, mathematics, statistical views and limits test facilities are included for validation and trending of pulse and timing performance, jitter, RZ and NRZ eye diagrams. Industry-standard communications mask tests such as PCIe, GB Ethernet and Serial ATA are included as standard.  PicoConnect® 900 Series gigabit and microwave passive test probes are recommended for use with the 9404, offering a range of bandwidths, division ratios and AC and DC coupling for diverse applications. The PicoScope 9404 has an active SMA interface to support future configurations and accessories on this product architecture.

The 9404-16 is compact enough to place on a workbench in close proximity to a device under test.  Made by Pico Technology, Europe’s award-winning test and measurement manufacturer, the PicoScope 9404-16 16GHz oscilloscope is available now from Saelig Company, Inc. their USA technical distributor.

ST-5S Smart Tweezers™ for On-board L/C/R Measurements and PCB Testing

This intelligent measurement tool is a new type of handheld LCR meter that can quickly test, identify, and measure board-mounted surface-mount and leaded devices without the need to remove them from a circuit board.

Saelig Company, Inc. has introduced the ST-5S Smart Tweezers™ for on-board inductance, capacitance, and resistance measurements and PCB testing.  The ST-5S tweezers are a valuable solution for quickly testing and identifying surface mount devices, as well as for troubleshooting complex electronic PCBs. Its unique mechanical and electronic design combines a pair of precise gold-plated tweezers and a digital LCR meter in compact, lightweight, battery-powered instrument.  Smart Tweezers™ automatically detects L, C, or R measurements and selects the correct measurement range and test frequency for high accuracy readings. Component type, value, and more detailed component analysis, such as Z and ESR, are all displayed on the instrument’s OLED display.

Surface mount devices are very small and have no wire leads, making it more difficult to test and identify SMDs than conventional leaded components. Smart Tweezers™ also gives users an easy way to sort tiny, loose components. Precise tips reliably contact even the smallest SMD components and take measurements from board-mounted devices. Smart Tweezers™ can also be used to test conventional components with wire leads that may not be long enough to insert into conventional test terminals. The integrated, insulated measurement head allows the operator to use one hand (left or right) for measurements to simplify probe placement tasks.

The ST-5S is for built for professional engineers since it comes with a NIST-traceable calibration certificate. The ST-5S allows users to change the test signal (with 0.5 and 1.0 Vrms), as well as variable tolerances of 1%, 5%, 10%, and 20%. This device also performs continuity and diode testing and shows active and reactive impedance component readings on the display.   A feature that saves time for users is that a semi-automatic offset subtraction feature automatically removes parasitic readings after set-up. The ST-5S is controlled by joystick-like navigation; pushing the button directionally will change the test mode, test signal, etc., and pressing the joystick directly opens a menu to allow more customized measurements and features such as changing the screen orientation.

Swiss-made by Ideal-Tek, a recognized leader in precision handheld assembly tools, ST-5S Smart Tweezers™ are available now from Saelig Company, Inc. their USA technical distributor.

M100PFS – PolarFire RISC-V SoC-FPGA Module

The M100PFS is based on the PolarFire SoC FPGA architecture by Microsemi and combines high-performance 64-bit RISC-V cores with outstanding FPGA technology. The platform integrates a hardened real-time, Linux capable, RISC-V-based MPU subsystem on the mid-range PolarFire FPGA family, bringing low power consumption, thermal efficiency and defence grade security to embedded systems.

The RISC-V CPU micro-architecture implementation is a simple 5 stage, single issue, in-order pipeline that doesn’t suffer from the Meltdown and Spectre exploits found in common out-of-order machines. All five CPU cores are coherent with the memory subsystem allowing a versatile mix of deterministic real time systems and Linux in a single multi-core CPU cluster.

Block Diagram

Features:

  • Microsemi PolarFire SoC FPGA
      • MPFS025T
        23KLE, 68 math blocks, 4x SERDES 12.5Gbit/s, 2x PCIe root port/end point
      • MPFS095T, available on request
        93KLE, 292 math blocks, 4x SERDES 12.5Gbit/s, 2x PCIe root port/end point
      • MPFS160T, available on request
        161KLE, 498 math blocks, 8x SERDES 12.5Gbit/s, 2x PCIe root port/end point
      • MPFS250T
        254KLE, 784 math blocks, 16x SERDES 12.5Gbit/s, 2x PCIe root port/end point
  • Quad 64-bit RV64GC cores, 667 MHz
  • 64-bit RV64IMAC monitor core, 667 MHz
  • Processor I/O
    • 2x Gigabit Ethernet
    • 1x USB 2.0 OTG
    • 1x MMC 5.1 SD/SDIO
    • 2x CAN 2.0 A and B
    • Execute in place Quad SPI flash controller
    • 5x multi-mode UARTs
    • 2x SPI, 2 I2C
    • RTC, GPIO
    • 5x watchdog timers
    • timers
  • Processor to FPGA Interconnect
    • 2 64-bit AXI4 processor-to-fabric interfaces
    • 3 64-bit AXI4 fabric-to-processor interfaces
    • 1 32-bit APB processor-to-fabric interface
  • 1/2/4 GByte LPDDR4 RAM dedicated to the HMS
  • 1/2/4 GByte LPDDR4 RAM dedicated to the FPGA
  • 32 Mbit NOR Flash
  • 4 – 64 GByte eMMC memory
  • Clock distribution
  • default configuration:
    • Gigabit Ethernet
    • UART
    • CAN
    • SPI
    • I²C
    • USB
  • single 3,3V supply
  • size 74mmx42mm
  • 2 x Samtec QSH-090-01-F-D-A board-to-board interconnect

Schedule & Availability

The M100PFS are currently under development, first boards are to be expected appr. in Q3/2020

5V/2A Synchronous DC-DC Converter IC Evaluation Kit

The MAX17662BEVKITB# evaluation kit (EV kit) from Maxim Integrated Products provides a proven design to evaluate the MAX17662B high-efficiency, synchronous step-down dc-dc converter. The EV kit provides 5V/2A at the output from a 6.5V to 36V input supply.

Applications are expected to include base station power supplies, distributed supply regulation, general-purpose point-of-load, high-voltage single-board systems, industrial control power supplies, wall transformer regulation, and so on.

The switching frequency of the EV kit is preset to 500kHz for optimum efficiency and component size. The EV kit features adjustable input under-voltage lockout, adjustable soft-start, open-drain active-low RESET signal.

The EV kit also provides a good layout example, which is optimized for conducted, radiated EMI, and thermal performance.

Hot Plug-In and Long Input Cables

The MAX17662BEVKITB# PCB layout provides an optional electrolytic capacitor (C6 = 47μF/50V). This capacitor limits the peak voltage at the input of the MAX17662B when the dc input source is “hot-plugged” to the EV kit input terminals with long input cables. The equivalent series resistance (ESR) of the electrolytic capacitor dampens the oscillations caused by interaction of the inductance of the long input cables, and the ceramic capacitors at the buck converter input.

Summary of Key Features

  • Operates from a 6.5V to 36V Input Supply
  • 5V Output Voltage
  • Delivers Up to 2A Output Current
  • 500kHz Switching Frequency
  • Enable/Undervoltage Lockout Input, Resistor- Programmable UVLO Threshold
  • Adjustable Soft-Start Time
  • Open-Drain Active-Low RESET Output
  • Overcurrent and Overtemperature Protection
  • Proven PCB Layout
  • Fully Assembled and Tested
  • Compliance with CISPR22(EN55022) Class B Conducted and Radiated Emissions

Electromagnetic Interference

Compliance to conducted emissions (CE) standards requires an EMI filter at the input of a switching power converter. The EMI filter attenuates high-frequency currents drawn by the switching power converter, and limits the noise injected back into the input power source. The MAX17662BEVKITB# has designated footprints on the EV kit for placement of EMI filter components. Use of these filter components results in lower conducted emissions, below CISPR22 Class B limits. Cut open the trace on L2 before installing conducted EMI filter components.

The MAX17662BEVKITB# PCB layout is also designed to limit radiated emissions from switching nodes of the power converter, resulting in radiated emissions below CISPR22 Class B limits.

Air Velocity Sensors With Digital I2C Output for Thermal Management and Filter Monitoring Applications

Posifa Technologies announced the new PAV3000 series of economical, high-performance air velocity sensors with digital I2C output and a surface-mount footprint for thermal management and filter monitoring in even the most space-constrained locations. Unlike thermistor-based solutions, the PAV3000 has a MEMS sensor core that is minimally affected by ambient temperature changes and which provides instant real-time feedback on proper air flow at critical locations.

Air velocity data perfectly complement temperature information to provide the best insight into thermal efficiency. Because the PAV3000 helps identify areas that require unusually high air flow to maintain stable temperatures, layouts for rack enclosures with air cooling – such as those found in data centers – can be modified to reduce cooling demands for increased energy savings. In applications such as HVAC systems, air velocity measurements can be used to determine when filters need to be replaced. This ensures hardware is adequately protected during heavy use, and it allows customers with light usage requirements to benefit from extended change intervals.

Key Specifications and Benefits:

  • Digital I2C output
  • Compact, robust surface-mount package
  • Solid-state sensing core
  • No moving parts
  • Eliminates the need for a surface cavity or fragile membrane
  • Resistant to clogging and pressure shock
  • Feature Posifa’s third-generation thermal flow die
  • Measure air velocity at 7 m/s (PAV3005V) and 15 m/s (PAV3015V)
  • Extremely fast response times of 125 ms typical
  • Excellent repeatability of 1 % FS
  • High accuracy of 5 % FS
  • Supply voltage from 5 VDC to 5.5 VDC
  • Supply current of 20 mA
  • Operating temperature range of -25 °C to +85 °C temperature range

PAV3000 series devices feature Posifa’s third-generation thermal flow die, which uses a pair of thermopiles to detect changes in temperature gradient caused by mass flow. The result is excellent repeatability of 1% FS and an accuracy of 5% FS. The solid-state thermal isolation structure on the sensor die eliminates the need for a surface cavity or the fragile membrane used in competing technologies, making the sensor resistant to clogging and pressure shock.

Measuring air velocity at 7 m/s (PAV3005V) and 15 m/s (PAV3015V), the PAV3000 series devices offer extremely fast response times of 125 ms typical in a compact, robust package. The air velocity sensors feature a 12-bit digital output, 3.3 V supply voltage, and supply current of 13 mA.

Samples and production quantities of the PAV3000 series air velocity sensors are available now.

Seeed’s Odyssey – STM32MP157C SBC features cortex-A7 and M4 processor

Odyssey-STM32MP157C  joins τηε growing list of SBCσ developed by SeeedStudio. It comprises a baseboard device called the NPi-STM32MP157C and an SoM device based on an STMicroelectronics’ Arm Cortex A7/M4 hybrid SoC called the SOM-STM32MP157C.

SeeedStudio explains that it’s choice of the Cortex-A7 processor comes from it being a very energy efficient applications processor as it was designed to provide rich performance for high-end wearables, and other low-power embedded and consumer applications. It provides up to 20% more single-thread performance than the Cortex-A5 and provides similar performance to the Cortex-A9.

The device also embeds a Cortex -M4 32-bit RISC core operating at up to 209 MHz frequency. Cortex-M4 core features a floating-point unit (FPU) single precision which supports Arm single-precision data-processing instructions and data types. The Cortex-M4 supports a full set of DSP instructions and a memory protection unit (MPU) which enhances application security.

It provides an external SDRAM interface supporting external memories up to 8-Gbit density (1 Gbyte), 16 or 32-bit LPDDR2/LPDDR3 or DDR3/DDR3L up to 533 MHz.

The STM32MP157C also embeds a 3D graphics processing unit (Vivante – OpenGL ES 2.0) running at up to 533 MHz, with performances up to 26 Mtriangle/s, 133 Mpixel/s

The device offers two ADCs, two DACs, a low-power RTC, 12 general-purpose 16-bit timers, two PWM timers for motor control, five low-power timers, a true random number generator (RNG), and a cryptographic acceleration cell. The devices support six digital filters for external sigma-delta modulators (DFSDM) and also features standard and advanced communication interfaces

Some features include:

Core

  • 32-bit dual-core Arm Cortex-A7
    – L1 32-Kbyte I / 32-Kbyte D for each core
    – 256-Kbyte unified level 2 cache
    – Arm NEON™ and Arm TrustZone
  • 32-bit Arm Cortex-M4 with FPU/MPU with up to 209 MHz (Up to 703 CoreMark)
  • Memory Features
    – External DDR memory up to 1 Gbyte
    – up to LPDDR2/LPDDR3-1066 16/32-bit
    – up to DDR3/DDR3L-1066 16/32-bit
    – 708 Kbytes of internal SRAM: 256 Kbytes of AXI SYSRAM + 384 Kbytes of AHB SRAM + 64 Kbytes of AHB SRAM in Backup domain and 4 Kbytes of SRAM in Backup domain
    – Dual-mode Quad-SPI memory interface
    – Flexible external memory controller with up to 16-bit data bus: parallel interface to connect external ICs and SLC NAND memories with up to 8-bit ECC
  • Secure boot, TrustZone peripherals, active tamper
  • Cortex-M4 resources isolation
  • Power Management Features
    – 1.71 V to 3.6 V I/Os supply (5 V-tolerant I/Os)
    – POR, PDR, PVD, and BOR
    – On-chip LDOs (RETRAM, BKPSRAM, DSI 1.2 V, USB 1.8 V, 1.1 V)
    – Backup regulator (~0.9 V)
    – Internal temperature sensors
    – Low-power modes: Sleep, Stop, and Standby
    – LPDDR2/3 retention in Standby mode
    – Controls for PMIC companion chip
  • Total current consumption down to 2 µA (Standby mode, no RTC, no LSE, no BKPSRAM, no RETRAM)
  • Clock Management Features
    – Internal oscillators: 64 MHz HSI oscillator, 4 MHz CSI oscillator, 32 kHz LSI oscillator
    – External oscillators: 8-48 MHz HSE oscillator, 32.768 kHz LSE oscillator
    – 6 × PLLs with fractional mode
  • General-purpose input/outputs
    – Up to 176 I/O ports with interrupt capability
    – Up to 8 secure I/Os
    – Up to 6 Wakeup, 3 tampers, 1 active tamper
  • 2 bus Interconnect matrices
    – 64-bit Arm AMBA AXI interconnect, up to 266 MHz
    – 32-bit Arm AMBA AHB interconnect, up to 209 MHz
  • 3 DMA controllers to unload the CPU
  • 48 physical channels in total
  • 1 × high-speed general-purpose master direct memory access controller (MDMA)

Odyssey is currently available for sale on Seeed Studio, Digi-Key and Mouser. More information on the board and its features can be found on Seeed’s Github page.

TOP PCB Companies