Tuesday, April 26, 2022 - 13:05 ">  •  By Jeff Tranter  •  Raspberry Pi, ARM
Let's continue our blog series on ARM assembly language by drilling down into some of the basic ARM machine language instructions. Instruction Formats and Addressing Modes ARM instructions accept from zero to three (and occasionally more) operands. An optional S suffix can be added to indicate that the result should affect the flags in the status register. Most source operands can be a register or immediate data and the destination register can usually be the same as a source register. The most basic instruction is MOV (for move) and takes the form MOV dest, src. Here are some examples:…
Tuesday, April 26, 2022 - 13:03 ">  •  By Jeff Tranter  •  Raspberry Pi, ARM
For many decades writing software in high-level languages has been the norm, and more recently even low-end microcontrollers are almost exclusively programmed in languages like C and C++. Of course, the native language of processors is machine code, and ultimately all programs need to run as native machine code (with some rare exceptions like processors that can directly run Java byte codes). While you can write code in machine language (or more often, the slightly higher level assembly language), there are many compelling reasons not to do this, most notably that it is not…
Tuesday, October 5, 2021 - 12:51 ">  •  By Jeff Tranter  •  Raspberry Pi
It's been a while since I updated you about the raspberry Pi ecosystem so the time is right for a fresh look at recent developments. The big announcement this year was the release of the Raspberry Pi Pico microcontroller. It is a different class of device from other Raspberry Pi single board computers, and represents a new market segment for the Raspberry Pi Foundation. So far this USD$4 device has been wildly successful and there is already a significant number of other third party boards designed around the RP2040 chip that was designed by the Raspberry Pi Foundation, as well as add-ons…
Wednesday, April 7, 2021 - 14:21 ">  •  By Jeff Tranter  •  Python, IoT
Python is one of the most popular and fastest growing programming languages. It is the recommended language on the Raspberry Pi platform (where Pi is a reference to Python Interpreter) and is increasingly used on desktop applications. The Qt Framework, for example, has an officially supported Qt for Python that allows developing Qt-based applications entirely in Python. For hardware platforms with limited resources, like a microcontroller, you would think that a language like Python would not be a viable option — but that is exactly what MicroPython is for. In this post I…
Monday, March 15, 2021 - 16:31 ">  •  By Jeff Tranter  •  IoT, Raspberry Pi
In this post I'll discuss the new offering from the Raspberry Pi Foundation, the Raspberry Pi Pico. It is an interesting product that combines two technologies of great interest: the Raspberry Pi and microcontrollers. What is a Microcontroller? A selection of microcontrollers ICS is currently running a blog series on microcontrollers. Part 1 offers a good overview of what microcontrollers are and how they are reshaping product development. A microcontroller is significantly different from a general purpose computer like a desktop, laptop, or even the Raspberry Pi…
Wednesday, January 6, 2021 - 14:05 ">  •  By Jeff Tranter  •  embedded systems, Linux
After a hiatus of more than a year, I wanted to pick up this blog series and cover another GPIO library available on Linux. Since the last time I wrote on this topic, this library has become more widely supported and available on platforms like the Raspberry Pi, so the time was right to explore it further. I mentioned in an earlier blog post that the GPIO sysfs interface was being deprecated in favor of a new GPIO character device API. In this blog post we'll look at libgpiod, a C library and tools for interacting with the Linux GPIO hardware. And yes, it is a library and not a daemon…
Wednesday, July 8, 2020 - 16:26 ">  •  By Jeff Tranter  •  Raspberry Pi
It's been some time (over two years!) since I've blogged about recent happenings on the Raspberry Pi project. Even eight years after the initial launch, the project continues to move ahead with new hardware releases and software development. And it continues to sell, with over 30 million units shipped by the end of 2019. I'd like to review a few noteworthy items of interest to Qt and embedded software developers. New Hardware Releases The most recent big hardware release was the Raspberry Pi 4 in June of 2019 which sports a Broadcom Quad-core Cortex-A72 64-bit processor that…
Wednesday, July 31, 2019 - 16:03 ">  •  By Jeff Tranter  •  Raspberry Pi, embedded systems
To facilitate hands-on labs for GPIO programming in our embedded training classes, ICS designed a small board that connects to a Raspberry Pi (or compatible) computer's GPIO connector and provides some simple functions for experimenting with GPIO programming. The functions provided are: Red, green, and yellow LEDs, which can be individually turned on or off. A pushbutton whose status can be read. A socket for a DHT11 or DHT22 temperature/humidity sensor. A connector for an FTDI USB-to-serial adaptor, which provides access to the serial port/console. It is compatible with the the…
Friday, July 19, 2019 - 12:51 ">  •  By Jeff Tranter  •  C++, Linux
My last post, part 4 in the GPIO Programming series, showed some ways to program GPIO from Python. Python offers a number of advantages as a programming language including a short learning curve, no need for compilation, and the availability of many add-on modules. However, true compiled languages like C or C++ can offer some advantages in embedded applications, such as higher performance. Because you are working closer to the level of the hardware you don't have to worry about what a JIT compiler or interpreter might be doing. If desired, you can look at the compiler's generated code or…
Friday, June 28, 2019 - 13:15 ">  •  By Jeff Tranter  •  Embedded, Python
In this blog post we'll look at how to control Raspberry Pi GPIO pins from the Python programming language using two different modules: Rpi.GPIO and Gpiozero. A Bit About Python Python [1] is an interpreted, high-level, general-purpose programming language that has been around since 1991. It is currently one of the most popular and fastest growing programming languages. The "Pi" in Raspberry Pi standards for "Python Interpreter," reflecting the fact that this is the recommended language on the platform. A nice feature of Python is that, being an interpreter, you can type in and try…
Tuesday, June 18, 2019 - 15:50 ">  •  By Jeff Tranter  •  embedded systems
In this blog post we'll look at basic GPIO control using the sysfs interface provided by the Linux kernel. We won't need to do any programming as we can do this from shell commands. I'll show some examples that will work on the Raspberry Pi platform. Background As we'll see in future installments of this blog series, there are different ways to access GPIO hardware from programs, but sysfs is a simple one that is supported by the Linux kernel and makes the devices visible in the file system so we can experiment from the command line without needing to write any code. For simple…
Monday, June 17, 2019 - 13:27 ">  •  By Jeff Tranter  •  Raspberry Pi, embedded systems
In part 2 of our series on GPIO programming, we look at the hardware capabilities of the Raspberry Pi's GPIO interface. As you probably know, the Raspberry Pi is a family of low cost single-board computers developed primarily for education by the non-profit Raspberry Pi Foundation. To date over 25 million units of this $35 computer have been sold.  The current models of Raspberry Pi and Raspberry Pi Zero have a 40-pin header connector that provides access to the GPIO pins and some other signals. The header provides access to 26 GPIO pins as well as 5V, 3.3V, ground, and some…
Monday, June 3, 2019 - 14:06 ">  •  By Jeff Tranter  •  embedded systems, Qt
Editor's note: This 2019 blog series, among ICS' most popular,  has been updated (December 2022) to ensure the content is still accurate, relevant and useful.   This blog launches Integrated Computer Solutions' (ICS) new series on GPIO programming. GPIO, or General-Purpose Input/Output, is a feature of most modern embedded computer hardware and a key component of many embedded systems. In this series, I'll cover this important aspect of embedded programming, with a mix of  theory and practical programming examples. In this first installment I'll present an…
Friday, June 22, 2018 - 09:36 ">  •  By ICS Development Team  •  Raspberry Pi, gamification
Thinking of building large gameshow-like interactive experiences? Want to use your Raspberry Pi to talk to your computer? Interested in integrating custom controllers with your games? If so, this blog is you. We were tasked with creating an interactive experience — a Plinko-like game — for attendees to play at a trade show. It was a pretty cool project. We're sharing this walk-through so you can build your own. But first, let's get this out of the way: what exactly is Plinko? Ever seen The Price is Right? Plinko is one of the show's most popular games. In the physical game,…
Thursday, May 17, 2018 - 09:05 ">  •  By Jeff Tranter  •  Raspberry Pi
It's been more than six months since my last update, perfect time to review some of the recent happennings in the Raspberry Pi ecosystem. The biggest news was the launch of the Raspberry Pi 3 Model B+, announced appropriately on "Pi Day," March 14, 2018. An incremental update to the Pi 3 Model B, it adds some features requested by customers and takes advantage of some new hardware improvements. As compared to the Raspberry Pi 3 Model 3, the B+ features a CPU clock speed increase from 1.2 to 1.4 GHz. It uses the same 64-bit quad-core ARM Cortex-A53 CPU, but can run a little faster due to new…
Wednesday, July 26, 2017 - 16:35 ">  •  By Jeff Tranter  •  Raspberry Pi, Raspberry Pi Zero W, Qt, Raspbian
Since my last update there have been some new happenings in the Raspberry Pi community. Here's a look at a few of the most significant events. Raspberry Pi Zero W [Photo credit: raspberrypi-spy.co.uk] In late February 2017 the newest Raspberry Pi model was announced: the Raspberry Pi Zero W. Though similar to the previously released Raspberry Pi Zero, the W model adds WiFi and Bluetooth functionality. The retail price is US$10, higher than the $5 Raspberry Pi Zero, but still significantly less expensive than the $35 Raspberry Pi 3 Model B. I recently purchased one, along…
Thursday, August 18, 2016 - 10:45 ">  •  By Jeff Tranter  •  Qt, Raspberry Pi, Bluetooth
While much attention has been focused on the built-in WiFi hardware, the Raspberry Pi 3 (1) also ships with on-board support for Bluetooth. Bluetooth is a wireless technology for exchanging data over short distances using 2.4 GHz radio signals. When running the recommended Raspbian Linux distribution, the Raspberry Pi uses the standard Linux Bluetooth software stack called BlueZ (2). Qt's Bluetooth module (3) on the Linux platform also supports BlueZ, which means that it works on the Raspberry Pi. Following the procedure in my recent blog post (4) to build Qt will provide support for…
Thursday, July 14, 2016 - 13:36 ">  •  By Jeff Tranter  •  Yocto, Raspberry Pi, Qt, QML, bitbake
Yocto(1) is a software framework for embedded Linux systems. We've looked at it in previous blog posts(2). It forms the basis of many embedded Linux distributions, including The Qt Company's boot2qt that is part of their commercial product Qt For Device Creation(3). Knowledge of Yocto is a very desirable and marketable skill to have for anyone working with embedded systems. While you can use emulators that run on a desktop Linux system, there is no substitute for experience with a real embedded board. Yocto supports a number of embedded hardware platforms, one of the most popular being…
Thursday, May 12, 2016 - 13:56 ">  •  By Jeff Tranter  •  Raspberry Pi, Bluetooth, Qt
It has been just over four months since my last blog post on the Raspberry Pi (1). Since then, the project has continued to move forward and I thought it was appropriate to write a new update. The Raspberry Pi 3 Raspberry Pi 3 (image credit: Tech Radar) In my last blog post I covered the Raspberry Pi Zero, which offers similar functionality to the Raspberry Pi 2 at the ridiculously low cost of 5 dollars. Shortly after that blog was written, the Raspberry Pi Foundation announced the Raspberry Pi 3 Model B. This third generation version of the device offers a faster 1.2 GHz 64-bit quad-…
Monday, April 11, 2016 - 13:40 ">  •  By ICS Development Team  •  IoT, Raspberry Pi, MRAA, Embedded
The Raspberry Pi (1) is one of the more popular low-cost computers on the market. It has an ARM CPU, hardware video acceleration, RAM, SD card mass storage, and almost everything that a regular desktop computer has to offer at a fraction of the size and cost. It also has a set of GPIO (General Purpose Input-Output) pins which permit you to connect sensors to it to perform tasks such as measuring the temperature or checking whether plants need to be given more water. MRAA (2) is a library from Intel that simplifies the logic for connecting to different sensor pins. It allows you to program…
Tuesday, December 22, 2015 - 11:41 ">  •  By Jeff Tranter  •  Raspberry Pi, Pi Zero, touchscreen, Qt, QML
My last blog post on the Raspberry Pi was written last April, when I covered the release of the Raspberry Pi 2. Since then, a number of things have happened in the Raspberry Pi ecosystem and I thought it was an appropriate time for another update. Here is a list of some of the events that, in my opinion, were of interest or were significant over the past few months. Price Cut Despite the release of the newer Raspberry Pi 2, the Raspberry Pi 1 model A+ and B+ continue to be sold. In May, as a result of production optimizations, the price of the Raspberry Pi 1 model B+ was decreased…
Thursday, April 16, 2015 - 15:50 ">  •  By Jeff Tranter  •  Qt, QML, Raspberry Pi, Embedded
The Raspberry Pi 2 computer, released in February 2015, is the latest generation of Raspberry Pi hardware. It is a significantly faster machine than the original Raspberry Pi, with a new Broadcom BCM2836 system on a chip that has a quad-core ARM Cortex A7 CPU running at 900 MHz. The GPU is a VideoCore IV dual-core GPU, the same as on the original Raspberry Pi. RAM has been increased from 512 MB to 1 GB, and the number of USB ports from two to four. The video support is unchanged, although the composite video output is now provided via a 3.5mm TRRS jack that also provides audio out, rather…
Tuesday, December 23, 2014 - 11:56 ">  •  By Jeff Tranter  •  Qt, Embedded, 2014, IVI, Raspberry Pi, OpenGL
As the year draws to a close, I thought it would be good to take a look back at some of the major events of the Qt world in 2014. Qt is now on a regular schedule of two major releases per year. We saw Qt 5.3.0 (1) come out in May and Qt 5.4.0 (2) in December. More minor releases occur, as needed, between the major releases. Qt 4 continues to see maintenance releases with a Qt 4.8.6 (3) coming out this year, and a 4.8.7 release planned in the first quarter of 2015. As announced at Qt Developer Days, Qt 4 will be officially supported for one more year. If the experience of Qt 3 is any…
Wednesday, November 26, 2014 - 10:38 ">  •  By Jeff Tranter  •  Raspberry Pi, Qt, Wayland, Maynard, Embedded
Since my last blog about the Raspberry Pi in August, there have been a number of interesting new developments and the Raspberry Pi project has continued to move ahead. As expected, the new Raspberry Pi Model A+ was released. With the Model A+, the Raspberry Pi Foundation has been able to achieve a price reduction over the $25 Model A, with a suggested retail price of only $20. Like the Model A, it has 256MB of RAM, 1 USB port and no built-in Ethernet. Like the model B+, it features a 3.5mm TRRS jack providing composite video and audio output, uses a MicroSD card for storage and has more GPIO…
Monday, January 27, 2014 - 13:25 ">  •  By Jeff Tranter  •  Embedded, Camera, Raspberry Pi
Introduction In this post we'll look at the Raspberry Pi camera module, a low cost hardware module that supports still picture and video recording and is the first official hardware add-on for the Raspberry Pi. We'll also look at the camera's features and specifications, how to set it up and examine the software that supports it. This post is based on a lightning talk I gave at Qt Developer Days 2013, updated with some additional information since then. Learn more about Programming with Qt for Embedded Devices with ICS Training Camera Details Since 2012, the Raspberry Pi…
Monday, November 25, 2013 - 10:05 ">  •  By Jon Trulson  •  Qt, Wayland, Raspberry Pi, Embedded
This document will explain how to build Qt 5.2.0 beta1 and QtWayland for Raspberry Pi (http://www.raspberrypi.org/). The procedure will likely work with the Qt 5.2.0 release candidate and final release, once they become available. There are a variety of HOWTOs and other documents on the web on how to build one or the other – this document will attempt to walk you through each step. As Qt and QtWayland are constantly under development, this document may not be precisely up to date going into the future. For a good overview of Wayland, see the Wayland wiki page here . We will build Qt 5.2.0…
Friday, May 17, 2013 - 08:46 ">  •  By ICS Development Team  •  Raspberry Pi, Embedded
This is a HOW TO guide for building Qt 5 for the Raspberry Pi, and building and deploying Qt 5 apps using Qt Creator. This guide will be using Raspbian "Wheezy", a Debian based distro designed for the Raspberry Pi. This guide also assumes the use of Linux or UNIX on the workstation side. Note: Throughout this guide the symbol "$" denotes a command prompt on the host workstation, and "pi$" denotes a command prompt on the target Raspberry Pi. Getting started Downloads You will need the following downloads: The latest Raspbian "Wheezy" version of Debian Linux [2013-02-09] http://www.…
Wednesday, January 30, 2013 - 12:35 ">  •  By Jeff Tranter  •  Qt, Raspberry Pi, PhoneGap, Cordova
This week was another slow week as many people were off part of the week due to New Year's or extended holidays. PhoneGap, recently renamed to Apache Callback, is now being renamed as Apache Cordova. There is discussion on the mailing list about where the code repositories will reside. It may be on github or the Apache git or both. There are also discussions on what Wiki to use. We're waiting for the dust to settle before we can commit any code changes. On the Qt mailing list, release plans for Qt 5 are starting to shape up. To meet the goal of a release for this…