Tuesday, November 25, 2025 - 16:47 ">  •  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'…
Tuesday, November 25, 2025 - 16:43 ">  •  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 Qt…
Thursday, November 20, 2025 - 13:33 ">  •  By Jeff Tranter  •  Embedded, Camera, Raspberry Pi
IntroductionIn 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 TrainingCamera DetailsSince 2012, the Raspberry Pi Foundation…
Thursday, November 20, 2025 - 09:55 ">  •  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 ModesARM 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:MOV R1,…
Monday, November 17, 2025 - 09:39 ">  •  By Lisandro Pérez Meyer  •  Raspberry Pi
Some carrier boards used with System-on-Modules (SoMs) include an onboard EEPROM (electrically erasable programmable read-only memory) that helps the bootloader identify the correct device tree to load. The catch? That EEPROM often needs to be programmed before the board can even boot, creating a classic chicken-and-egg problem.In this post, I’ll walk through how I solved this using a low-cost Raspberry Pi Pico 2W as an I²C EEPROM programmer, with a little help from AI to speed things up.Two Ways to Flash the EEPROM (and Why One Is Safer)I always recommend that clients include an EEPROM on…
Wednesday, November 12, 2025 - 09:37 ">  •  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 portable…
Wednesday, November 12, 2025 - 09:23 ">  •  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…
Wednesday, November 12, 2025 - 09:21 ">  •  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…
Tuesday, November 11, 2025 - 16:29 ">  •  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…
Tuesday, November 11, 2025 - 16:27 ">  •  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.BackgroundAs 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…
Tuesday, November 11, 2025 - 16:23 ">  •  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…
Tuesday, November 11, 2025 - 16:19 ">  •  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 PythonPython [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 commands…
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,…
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…
Wednesday, January 30, 2013 - 12:34 ">  •  By ICS Development Team  •  Qt, PhoneGap, Raspberry Pi
This week we did some marketing to promote the project. I made a posting to the callback developer mailing list and we put a link to this blog from the ICS web site. Quim Gil of Nokia kindly made a posting to the Nokia Qt blog. I also recorded a podcast with Mark Hatch for the ICS This Week in Qt podcast. All of this effort stimulated some good discussion on the blogs and callback developer mailing list. Based on comments from some of the Qt 5 and WebKit developers, we will need to implement the Web View differently in Qt 5 since the QWebView widget will…
Wednesday, January 30, 2013 - 12:33 ">  •  By ICS Development Team  •  Qt, Cordova, Raspberry Pi, PhoneGap
This week we finished implementing some Cordova APIs (at least for the Qt 4 version). Compass and Accelerometer are done and some of Events was implemented. Notification is done as is most of File support and we are starting work on Contacts and Camera.Note that I am going to start consistently using the name Cordova rather than Callback orPhoneGap for this project.One of the team completed the demo code for the new Qt5 WebView that illustrates passing messages in both directions between the QML JavaScript and WebKit HTML/JavaScript environments. I also wrote a…
Wednesday, January 30, 2013 - 12:32 ">  •  By ICS Development Team  •  Qt, QML, Raspberry Pi, Cordova
Since the last posting we properly set up deployment of Cordova Qt for MeeGo Harmattan (e.g. the Nokia N9 phone). We also got Qt 5 packages including WebKit built for MeeGo Harmattan and tested it on a Nokia N9. Incidently, a big PR1.2 software update rolled out this week for MeeGo Harmattan phones. Both the Qt 4 and Qt 5 versions now use a QML WebView as there is no support for widgets on some mobile platforms. However, Symbian S60 systems may still be using Qt 4.6 which doesn't support QML so it looks like we still need to maintain a widget-based version for these systems. More of the…
Wednesday, January 30, 2013 - 12:31 ">  •  By ICS Development Team  •  Qt, PhoneGap, Raspberry Pi, Cordova
Throughout this project one thing that has been constantly changing has been the source code repositories, both due to several project names changes and with the move to being run as an Apache project. This last week the old repository at http://github.com/cordova/cordova-qt was removed and replaced by the read-only repository at http://github.com/apache/incubator-cordova-qt. The upstream repository is at http://git-wip-us.apache.org/repos/asf?p=incubator-cordova-qt.git. Changes made to the Apache repository get mirrored to github. Developers who are not maintainers can submit pull…
Wednesday, January 30, 2013 - 12:30 ">  •  By ICS Development Team  •  Qt, Raspberry Pi, Cordova
Work has been slowing down somewhat as Qt 5 has been firming up for release. The Qt 5 alpha came out on April 3rd and we tested our code with it. Work is moving ahead for a Qt 5 beta release and then the 5.0.0 final this summer. Qt 4.8.1 also came out and we tested Cordova Qt with it. A 4.8.2 is expected in the next few weeks, indicating that Qt 4 is still actively being developed and is expected to do so for some time until Qt 5 is stable. Realistically I would expect many people to continue to use Qt 4 at least until Qt 5.1 is out, as some of the Qt Quick 2 C++ APIs will not be…
Wednesday, January 30, 2013 - 12:29 ">  •  By ICS Development Team  •  Qt, Cordova, Raspberry Pi
We've recently been running the Cordova tests and making some fixes to get them to run better. We've documented on the Wiki how to run the Cordova tests. See the section "Running Cordova Tests" at this wiki page. We hope to have a demo video up soon showing the tests running on the simulator and Nokia phones. Incidently, the Qt Wiki recently moved from http://wiki.qt-project.org/ to http://qt-project.org/wiki/ The older Wiki will go away at some point. We made a couple more videos showing a preliminary version of Wikipedia Mobile running on Cordova Qt. The…
Thursday, January 3, 2013 - 13:56 ">  •  By ICS Development Team  •  Raspberry Pi, Embedded
About three weeks ago, Nokia arranged for ICS to gain access to the Raspberry Pi board so that we could help with an exploratory open source effort to get Qt working on this platform. That is how I got my chance to hack some code for this amazing board. The idea was to get a bleeding edge version of Qt 5 to run and to experience first hand hardware accelerated QSceneGraph based QML. And indeed bleeding edge it is - but also blazing fast. Now, first things first: We have all by now heard of Raspberry Pi, the newest entry into the world of dessert named geek toys. Actually we are talking real…
Thursday, January 3, 2013 - 13:55 ">  •  By ICS Development Team  •  Raspberry Pi
Good talking to you all at Qt Dev Days Munich. We'll be at Dev Days in San Francisco beginning Nov 29 - hope to see you there!
Thursday, January 3, 2013 - 13:54 ">  •  By ICS Development Team  •  Raspberry Pi, Embedded
Here's a video of my colleague, Roland Krause, demonstrating Qt 5 + Raspberry Pi at Qt Dev Days in Munich. Stop by our booth in San Francisco next week to see it first hand...and for your chance to win one of your very own!
Thursday, January 3, 2013 - 13:52 ">  •  By ICS Development Team  •  Raspberry Pi
As part of the initiative to put Qt 5 on Raspberry Pi, ICS gave away over 70 Raspberry Pi boards to interested developers at Qt Developer Days last week. If you were one of the lucky winners, be on the lookout over the next few days for an email from ICS so you'll know how to go about receiving it once they are available. More details and a video demo are available here: Qt 5 + Raspberry Pi
Thursday, January 3, 2013 - 13:51 ">  •  By ICS Development Team  •  Raspberry Pi
The Raspberry Pi folks report that the first batch of production boards is finally in production. The first 10,000 units should start becoming available around the end of this month. ICS should be getting a number of boards from this first batch which we will distribute among our developers. The people that won boards in our booth at Qt Developer Days should also shortly be receiving vouchers to claim their boards. Ten of the beta boards went up for auction on eBay as a fundraiser for the non-profit Raspberry Pi foundation. The first board sold was bought by an anonymous buyer and donated…
Thursday, January 3, 2013 - 13:50 ">  •  By Jeff Tranter  •  Raspberry Pi, Embedded
The Raspberry Pi boards are now shipping in volume from the distributors and unboxing videos are showing up all over the Internet. If you were one of the winners of a board from ICS you should have received an e-mail today with the details on how to redeem your voucher. If not, check your spam filter (we've had some reports of the e-mails being marked as spam). For the latest developments on Raspberry Pi check the website and for Qt on Raspberry Pi check this Wiki page.
Thursday, January 3, 2013 - 13:49 ">  •  By Jeff Tranter  •  Raspberry Pi
We haven't blogged here for some time, in part because many of the folks at ICS have been very busy planning and preparing for the annual Qt Developer Days conferences in Berlin, Germany and Santa Clara, California. We had some coverage of the Raspberry Pi and Qt at the recent Qt Developer Days in Santa Clara. I gave a presentation on Qt and the Raspberry Pi at the conference (which I also gave in Berlin) and hosted a Birds of a Feather Session on Raspberry Pi. In the ICS booth we were showing a Qt 5-based touchscreen demonstration application running on a number of platforms including the…