Come Get Your Mux!

via SparkFun: Commerce Blog

Welcome, everyone! This week we're starting off with a new version of the SparkFun Qwiic Mux Breakout, now with a new pass-through connector enabling daisy-chain capabilities. Next up is a new SparkX Qwiic Refrigeration Sensor using the ZMOD4450, which could be especially useful if you have some abandoned leftovers in your work fridge! To end the week we have a new version of our Raspberry Pi Zero W Camera Kit, the Pimoroni Automation HAT Mini, and an updated SIK Guidebook. First, though, we wanted to bring you some info about our newest digital event:

Summer activities canceled? Welcome to SparkFun Summer Camp! We’ve got your classic camp fun covered online – with an electronics twist. Check out our activity schedule, and let’s have some fun! Our first week starts with e-textile projects and sales, week two is GPS, week three robotics, and week four machine learning.

Now onto our new products!

Pass-through for multiple daisy-chain possibilities!

SparkFun Qwiic Mux Breakout - 8 Channel (TCA9548A)

SparkFun Qwiic Mux Breakout - 8 Channel (TCA9548A)

BOB-16784
$11.95

Do you have too many sensors with the same I2C address? Put them on the SparkFun Qwiic Mux Breakout to get them all talking on the same bus! The Qwiic Mux Breakout enables communication with multiple I2C devices that have the same address, making it simple to interface with. The Qwiic Mux also has eight configurable addresses of its own, allowing for up to 64 I2C buses on a connection. To make it even easier to use this multiplexer, all communication is enacted exclusively via I2C, utilizing our handy Qwiic system.


SparkX Refrigeration Gas Sensor - ZMOD4450 (Qwiic)

SparkX Refrigeration Gas Sensor - ZMOD4450 (Qwiic)

SPX-16677
$39.95

The ZMOD4450 gas sensor from Renesas is a unique Refrigeration Air Quality Sensor designed to measure gases emitted by food ripening or rotting: ethlyene, amines and volatile sulfur compounds. The sensor can measure Ethylene (C2H4), Trimethylamine (C3H9N) and Dimethy sulfide (C2H6S) in air with up to ±10% repeatability, and with additional calibration using a known organic compound, can be accurate to ±15%. With the ZMOD4450 you can finally quantify that funky smell coming from your refrigerator.


SparkFun Raspberry Pi Zero W Camera Kit

SparkFun Raspberry Pi Zero W Camera Kit

KIT-16327
$66.95

The SparkFun Raspberry Pi Zero W Camera Kit provides you with a pan/tilt camera controlled via a Raspberry Pi Zero W. This kit consists of parts that are easy to assemble and program, expanding the Raspberry Pi Zero W's IoT capabilities and highly tailored accessibility to the Pi Camera Module. With the Zero W camera kit, you will be able to create homemade motion-activated security systems, webcam interfaces for streaming, or monitoring stations for any number of projects and adventures. After just a few steps you'll be set up in no time with your very own remote camera system!


Pimoroni Automation HAT Mini

Pimoroni Automation HAT Mini

DEV-16822
$24.95

The Pimoroni Automation HAT Mini is perfect for home automation projects, giving your greenhouse intelligent sprinklers, scheduling your fish feeding, or controlling low-voltage lighting systems. The Automation HAT Mini is equipped with a relay, three buffered inputs, three outputs, and three analog inputs, all of which are 24V-tolerant. Last but not least, the HAT has a beautiful 0.96" full-color IPS LCD to display the status of your systems.


SparkFun Inventor's Kit Guidebook - v4.1a

SparkFun Inventor's Kit Guidebook - v4.1a

BOK-15884
$4.95

The full-color SparkFun Inventor's Kit Guidebook V4.1a contains step-by-step instructions with circuit diagrams and hookup tables for building each project and circuit. Full example code is provided, new concepts and components are explained at point-of-use, and troubleshooting tips offer assistance if something goes wrong. Once you make your way through all of the example circuits you will have a much better grasp on programming electronics!


That's it for this week! As always, we can't wait to see what you make! Shoot us a tweet @sparkfun, or let us know on Instagram or Facebook. We’d love to see what projects you’ve made!

Never miss a new product!

comments | comment feed

New keyboards for Portugal, Norway, Sweden, and Denmark

via Raspberry Pi

It feels like just yesterday that we released the Raspberry Pi keyboard and hub to the world. Well, it turns out it’s been more than a year, and time really has flown for the next stage of this project, which brings four new language/country options: Portugal, Norway, Sweden, and Denmark. They’re available to buy now from Raspberry Pi Approved Resellers.

Raspberry Pi keyboards

The keyboard and hub has been a great success, with many users adopting our Raspberry Pi red and white colour scheme for their setup. As well as this satisfying uptake of the keyboard on its own, we’ve also sold tens of thousands of Raspberry Pi Desktop Kits which include a keyboard, alongside the official mouse, Beginners Guide and, of course, a Raspberry Pi.

Raspberry Pi official keyboard
If I say so myself, it’s quite a cool-looking desktop setup, with the boxes and cables all colour-coordinated.

We made the black and grey set up for users who own a black and grey Raspberry Pi case, but, with four out of five people choosing the red and white variant, it just goes to show what a bit of company branding can do for business!

We’ve found that the US keyboard is the most popular model, with over half our users choosing that option. As a Brit, I prefer the chunkier Enter key of the UK keyboard.

Close-up photo of UK keyboard Enter key
Easy to find

New variants

There is always a demand to support more users with keyboards to match their country and language so, as a second phase, we are announcing keyboards for the following countries:

  • Portugal
  • Norway
  • Sweden
  • Denmark
Photo: Raspberry Pi Portugal keyboard in red and white
The new European Portuguese variant of our keyboard and hub

These new keyboards are available now in red and white, with black and grey options coming soon. They are just print changes from previously released variants, but the devil proved to be in the detail.

For example, we hoped early on that the Portuguese keyboard would suit users in Brazil too, but we learned that Brazilian and European Portuguese keyboard layouts are quite different. Given the differences between UK and US keyboard layouts, this really shouldn’t have surprised us!

There is a very subtle difference between the Norway and Denmark keyboards. I wonder if anyone can spot it?

 

We also discovered that a Finnish keyboard layout exists, but I couldn’t identify any differences between it and the Sweden keyboard. While I don’t speak Finnish, I do speak Swedish – an awesome language that everyone should learn – so I came to these investigations with a bit of relevant knowledge. I found that there are very small changes between different manufacturers, but no consistent differences between Finnish and Swedish keyboards, and ultimately I was guided by what Raspberry Pi OS expects as the correct function for these keyboards. I do hope I am right about these two keyboards being the same… I expect I’ll soon find out in the comments!

Photo: Raspberry Pi Sweden keyboard in red and white
Our new Swedish keyboard. If you know of a way in which a Finnish keyboard should differ from this, please tell us in the comments

We know that many users are waiting for a Japan keyboard variant. We hardly ever talk about new products before they are released, but we’re breaking our rule, in this case, to let you know that we hope to have some news about this very soon – so watch this space!

I’d like to give special thanks to Sherman Liu of Gembird for the new key matrix design, and Craig Wightman of Kinneir Dufort for his patience in designing all the key print revisions.

Happy coding, folks!

The post New keyboards for Portugal, Norway, Sweden, and Denmark appeared first on Raspberry Pi.

DIY MechBoard64

via Dangerous Prototypes

DIY MechBoard64 @ breadbox64.com:

When the MechBoard64 was finally realized and presented on my blog, it soon came clear that a new mechanical keyboard was the missing piece in the creation of a brand new Commodore 64 (…well that and some new keycaps…). As I have no intention to become a Commodore 64 mechanical keyboard manufacturer, I’ve therefore decided to release all information regarding the creation of the MechBoard64 . This includes files for creating the keyboard PCB (Gerber, Excellon, BOM), the keyboard bracket (Illustrator, PDF, bend allowance drawing), 3D printed keycap adapters (.STL), the keyboard stabilizers (dimensions, material) and all miscellaneous parts (cables, screws, nuts, super lube). This way users can make their own keyboards, modify them to accommodate modern day keycaps, make groupbuys or start making batches for everyone to enjoy

Modified printer simplifies home PCB fabrication

via Arduino Blog

In many locations you can get PCBs made fast, cheap, and of very good quality. In Brazil, where Vítor Barbosa lives, this isn’t the case, so he built a “haxmark460” PCB printer to help manufacture circuits at home.

The build modifies a Lexmark E460dn laserjet printer to mark PCBs directly, using an aluminum carrier plate instead of its normal paper feed operation.

An Arduino is utilized to hijack and output printer signals, enabling it to it to work in a much different way than how it was originally designed. The carrier plate, with blank PCB material taped on, is fed into the front and the PCB is pulled through and properly marked by the printer. After a dip in acetone to allow the toner to stick to the copper, the board is ready to etch!

Enginursday: Updating an ESP32 over BLE

via SparkFun: Commerce Blog

There are tons of examples out there that show you how to update your ESP32 Over-the-Air (OTA) using WiFi and transferring a binary file through your router, but what if you aren't near a WiFi router, or simply just don't want to use WiFi on the ESP32 and still want to update your software wirelessly?

This is where this webapp comes in handy. Not only is the app able to flash a binary to your ESP32, but it's also able to tell if you have the most current software, and also what the most current software is that's available for your device based on its hardware version. This app takes much of the guesswork away from an end-user who may be utilizing the easy to use, OTA update. Check out the tutorial below!

New!

ESP32 OTA Updates over BLE from a React Web Application

June 23, 2020

Learn how to flash firmware Over-the-Air using a BLE React WebApp and ESP32

comments | comment feed

Arduino Security Primer

via Arduino Blog

SSL/TLS stack and HW secure element

At Arduino, we are hard at work to keep improving the security of our hardware and software products, and we would like to run you through how our IoT Cloud service works.

The Arduino IoT Cloud‘s security is based on three key elements:

  • The open-source library ArduinoBearSSL for implementing TLS protocol on Arduino boards;
  • A hardware secure element (Microchip ATECCX08A) to guarantee authenticity and confidentiality during communication;
  • A device certificate provisioning process to allow client authentication during MQTT sessions.

ArduinoBearSSL

In the past, it has been challenging to create a complete SSL/TLS library implementation on embedded (constrained) devices with very limited resources. 

An Arduino MKR WiFi 1010, for instance, only has 32KB of RAM while the standard SSL/TLS protocol implementations were designed for more powerful devices with ~256MB of RAM.

As of today, a lot of embedded devices still do not properly implement the full SSL/TLS stack and fail to implement good security because they misuse or strip functionalities from the library, e.g. we found out that a lot of off-brand boards use code that does not actually validate the server’s certificate, making them an easy target for server impersonation and man-in-the-middle attacks.

Security is paramount to us, and we do not want to make compromises in this regard when it comes to our offering in both hardware and software. We are therefore always looking at “safe by default” settings and implementations. 

Particularly in the IoT era, operating without specific security measures in place puts customers and their data at risk.

This is why we wanted to make sure the security standards adopted nowadays in high-performance settings are ported to microcontrollers (MCUs) and embedded devices.

Back in 2017, while looking at different SSL/TLS libraries supporting TLS 1.2 and modern cryptography (something that could work with very little RAM/ROM footprint, have no OS dependency, and be compatible with the embedded C world), we decided to give BearSSL a try.

BearSSL: What is it?

BearSSL provides an implementation of the SSL/TLS protocol (RFC 5246) written in C and developed by Thomas Pornin.

Optimized for constrained devices, BearSSL aims at small code footprint and low RAM usage. As per its guiding rules, it tries to find a reasonable trade-off between several partly conflicting goals:

  • Security: defaults should be robust and using patently insecure algorithms or protocols should be made difficult in the API, or simply not possible;
  • Interoperability with existing SSL/TLS servers; 
  • Allowing lightweight algorithms for CPU-challenged platforms; 
  • Be extensible with strong and efficient implementations on big systems where code footprint is less important.

BearSSL and Arduino

Our development team picked it as an excellent starting point for us to make BearSSL fit in our Arduino boards focusing on both security and performance.

The firmware developers team worked hard on porting BearSSL to Arduino bundling it together as a very nice and open-source library: ArduinoBearSSL.

Because the computational effort of performing a crypto algorithm is high, we decided to offload part of this task to hardware, using a secure element (we often call it a “cypto chip”). Its advantages are:

  • Making the computation of cryptography operations faster;
  • You are not forced to use all the available RAM of your device for these demanding tasks;
  • Allows storing private keys securely (more on this later);
  • It provides a true random number generator (TRNG).

How does the TLS protocol work?

TLS uses both asymmetric and symmetric encryption. Asymmetric encryption is used during the TLS handshake between the client and the server to exchange the shared session key for communication encryption. The algorithms commonly used in this phase are based on Rivest-Shamir-Adleman (RSA) or Diffie-Hellman algorithms. 

TLS 1.2 Handshake flow

After the TLS handshake, the client and the server both have a session key for symmetric encryption (e.g. algorithms AES 128 or AES 256).

The TLS protocol is an important part of our IoT Cloud security model because it guarantees an encrypted communication between the IoT devices and our servers.

The secure element

In order to save memory and improve security, our development team has chosen to introduce a hardware secure element to offload part of the cryptography algorithms computational load, as well as to generate, store, and manage certificates. For this reason, on the Arduino MKR family, Arduino Nano 33 IoT and Arduino Uno WiFi Rev2, you will find the secure element ATECC508A or ATECC608A manufactured by Microchip.

How do we use the secure element?

A secure element is an advanced hardware component able to perform cryptographic functions, we have decided to implement it on our boards to guarantee two fundamental security properties in the IoT communication: 

  • Authenticity: You can trust who you are communicating with;
  • Confidentiality: You can be sure the communication is private.

Moreover, the secure element is used during the provisioning process to configure the Arduino board for Arduino IoT Cloud. In order to connect to the Arduino IoT Cloud MQTT broker, our boards don’t use a standard credentials authentication (username/password pair). We rather opted for implementing a higher-level authentication, known as client certificate authentication.

How does the Arduino provisioning work?

The whole process is possible thanks to an API, which exposes an endpoint a client can interact with.

As you can see in the diagram below, first the Client requests to register a new device on Arduino IoT Cloud via the API, to which the server (API) returns a UUID (Universally Unique IDentifier). At this point, the user can upload the sketch Provisioning.ino to the target board. This code is responsible for multiple tasks:

  • Generating a private key using the ATECCX08A, and store it in a secure slot that can be only read by the secure element;
  • Generating a CSR (Certificate Signing Request) using the device UUID as Common Name (CN) and the generated private key to sign it;
  • Storing the certificate signed by Arduino acting as the authority.

After the CSR generation, the user sends it via the API to the server and the server returns a certificate signed by Arduino. This certificate is stored, in a compressed format, in a slot of the secure element (usually in slot 10) and it is used to authenticate the device to the Arduino IoT Cloud.