A review of the LoPy microcontroller

In an effort to stay current with microcontrollers, I recently picked a new MicroPython enabled device, the LoPy. Like the ever popular NodeMCU ESP8266, it is capable of utilizing many different components and gadgets. However, to LoPy comes with MicroPython installed so flashing the device isn’t necessary to write projects in Python.

The LoPy board is produced by PyCom which is based out of the United Kingdom and was released towards the end of 2016. It is more powerful and feature-rich than the NodeMCU which drives the price up over the ESP8266 boards. It also requires the use of an expansion board to build projects. Ok, requires might not be entirely accurate, strongly recommended might be better. Fortunately, the expansion board can be used with PyCom’s other products as well.

LoPy Specs

The LoPy comes with 512kB of RAM, versus 160kB for the ESP8266. It can handle up to four times as much flash memory (4MB) as well and uses the Espressif ESP32 chipset. All of that opens things up for larger IoT projects. One really cool and interesting feature with the LoPy is the addition of a LoRa radio frequency system in addition to the other radio system

This little board has three different radio systems on it.

  • LoRa
  • WiFi (802.11 b/g/n 16Mbps)
  • Bluetooth, both Bluetooth Classic and Bluetooth Low Energy (BLE)

The device accepts, and in fact, in the case of LoRa requires the use of external antennas, there are connectors for one WiFi antenna and one LoRa antenna. The use of the external antennas yields some impressive distances for operating ranges. For WiFi the range is a reported 1km and for LoRa, in perfect conditions as a network node the range is specified as 40km.

PyCom LoPy Device

It provides support for a variety of security and hash/encryption methods such as TLS/SSL. For power, it takes 3.3V – 5.5V of input and with the expansion board easily connects to power with a USB connection. Additionally, it also allows for a battery to be connected for powering the device away from a USB connected computer.

LoRa

I am going to assume that most people are familiar with WiFi and Bluetooth technologies in general terms. I will also assume that most people are not familiar with LoRa, so let’s spend a little time discussing it.

At a high level, LoRa is designed as part of a moderate range wireless network called Low Power Radio Wide Area Network (LoRaWAN). The focus of LoRaWAN is to provide IoT devices a standard and seamless communication system to communicate between IoT devices covering large areas. In a LoRaWAN network data is sent digitally from one node to a neighboring node. If that node is not the data’s final destination, it is forwarded on until the final destination is reached. This final destination is often a gateway connection to the Internet allowing for global reach.

Most of us in the developed world are used to very high speeds when it comes to network access. For example, I just tested my internet speed and had just over 48 Mbps for download speed at 6 Mbps for upload. LoRaWAN can only dream of these speeds. LoRaWAN tends to max out around 50 Kbps, yes, that’s a K there. Under 0.5 Kbps is common on the slow end. This may send chills down your leg at first glance, but really, what types of data are typically sent with an IoT device? Most applications are sending basic sensor data and not streaming video or audio.

LoPy LoRa settings

As most of us are painfully aware, there are global forces at work when it comes to management of things like radio waves. The same holds true for the frequencies on which LoRa operates.

Region Frequency in MHz
North and South America, Australia and New Zealand 915 MHz
Europe 868 MHz

You will need to configure the LoPy to utilize the proper frequency. This is accomplished through updating the firmware (a good practice anyway) with a selection of the country. Fortunately, these frequencies and devices fall under the category of low-power transmitters in the ISM band and don’t need to be licensed.

Wrap Up

The features, power requirements, and radio capabilities make the LoPy a very interesting IoT device. Especially for those that want to be able to utilize a flavor of Python to build their projects. In fact, the LoPy would be a great candidate for nodes in a mesh network. I’ll talk about the idea of a mesh network in a future post.

I hope that this brief overview of the LoPy has shown some interesting features. Perhaps it will expand the possibilities for your IoT projects. The capability to use a LoRaWAN network to cover long distance communications is particularly intriguing.


Follow me on Twitter @kenwalger to get the latest updates on my postings on MicroPython and IoT and let me know what you are building with MicroPython.

Facebooktwitterredditlinkedinmail

Overview of MongoDB’s BaaS offering: MongoDB Stitch

One of the challenges many developers have is keeping up with backend processes. Things like data security, service integrations, and code for data manipulations can take up a lot of time and resources. As a result, many have made a move to utilize a Backend as a Service (BaaS). If you have an application backed by MongoDB there is a new Baas option available, MongoDB Stitch.

MongoDB allows you to get started at no cost with Stitch, which is always great. At the moment it is backed by MongoDB’s Database as a Service (DBaaS) offering, Atlas. In another post, I discussed Atlas and am excited that these two services are connected.

BaaS Overview

A Backend as a Service approach to development allows mobile and web developers to connect their applications to backend cloud storage and utilize inherent processing capabilities. Further, it provides many common features that users demand from sites and applications. Some of these features are security, user management, push notifications, and social networking integrations.

MongoDB Stitch Benefits

Stitch provides many capabilities for developers to leverage the features inherent in MongoDB along with BaaS concepts. It provides direct access to the database, whether it is already existing or new data, Stitch allows developers to focus on building their application. The backend logic is taken care of and provided. This leads to a faster development cycle.

Stitch takes MongoDB’s data security features even further. It provides functionality such as end user authentication and access control on a per-field basis. For example, if the marketing department doesn’t need access to a customer’s financial information, those fields can be excluded from their access rights. This allows developers and application stakeholders to have confidence that information and services are only available to the proper users.

MongoDB has built Stitch in an open fashion. It provides a single API allowing access to both the MongoDB database as well as other public cloud services. This allows for microservice integration and prevents being committed to a single vendor.

Another terrific benefit is the integration with Atlas. This allows for easy scaling of capacity and performance as an application grows. This is yet another set of duties that don’t need to be managed ourselves. We can allow the details of the backend application and infrastructure to be handled by a team of Dev-Ops folks at MongoDB and can then concentrate on the application itself.

MongoDB Stitch Components

There are three main components of Stitch, pipelines, services, and rules. Services come in two different varieties, MongoDB services, and partner services for integration with services like Amazon S3 or Twilio for messaging. Let’s take a quick look at what these different components do and how they fit into an application.

Services

Services in Stitch allow for application integration and execution of common actions. There are integrations for a variety of third-party (partner) services for such tasks as user authentication through Facebook or Google, Slack, Twilio, and some components of AWS, to name a few. The HTTP Service allows for a MongoDB Stitch application to connect to REST API services. MongoDB has a dedicated service for connecting to Atlas and has some built in pipeline operations.

Pipelines

A Stitch pipeline allows for a sequence of actions to be performed in order by the Stitch services. This is a powerful feature. It allows a series of actions to be defined all through simple JSON syntax.

A pipeline is built in stages, each running in consecutive order. A stage runs and passes the information it generates onto the next stage. For example, you can do a MongoDB aggregation stage from your data and determine which user in the past week had the most likes on your new Snap-o-gram app. That stage could then pass that information to the Twilio Service which could send a text to their phone with this awesome accomplishment.

There are some Built-In Actions for filtering the pipeline input, defining in an explicit way what the output of a stage will be, expression evaluation against input documents, and a project feature, to name a few. Another nice feature MongoDB has provided is the concept of named pipelines. This allows for a designed pipeline to be reused within a Stitch app and referenced by name. A tremendous help for writing code that follows the DRY (don’t repeat yourself) principle.

Rules

The last major component of a MongoDB Stitch is Rules. Rules, as one might guess, allow for a control over the actions a service takes. Rules are designed and written in JSON format, as are pipelines.

One can define a rule for read, write, and validation operations, for example. These can be used at the document level and on down to the field level. Want to prevent a service from reading specific financial data in a document? Write a rule for that. It is a powerful feature of MongoDB Stitch and provides an extra level of security for your data.

MongoDB Stitch Development

Right now there are three different options for developing a Stitch application. Using JavaScript for web applications and for mobile development there are options for Android and iOS. MongoDB has put together some great tutorials and getting started guides.

Wrap Up

The name Stitch comes out of the idea of stitching together the pieces of an application and not from the Disney character in Lilo & Stitch. Given the benefits and features MongoDB Stitch brings to the table, I think it is a very appropriate name. Much like sewing brings all of the pieces of a garment together, MongoDB Stitch does the same thing for your application.

I know that for myself I plan on utilizing this service on my next project.

As with any “pre-packaged” service, one gives up some flexibility and control over your application. However, for being able to retain direct access to your MongoDB database, and the collections and documents it contains, Stitch is a great option. Keep in mind that as of this post, Stitch is still in a beta version. As with any beta product, things may change with the final product.

There are several MongoDB specific terms in this post. I created a MongoDB Dictionary skill for the Amazon Echo line of products. Check it out and you can say “Alexa, ask MongoDB for the definition of authentication?” and get a helpful response.


Follow me on Twitter @kenwalger to get the latest updates on my postings.

Facebooktwitterredditlinkedinmail