When I showed my 60 NeoPixel LED clock prototype to my daughter and her girlfriend, and they both wanted to have one right away :-). Well, that clock was just a proof of concept, with lots of temporary wiring. So I decided this week-end to beautify it and to make it look nice and clean(er). There is nothing like a week-end project with adding a few more LEDs and features :-).
When I started this blog back on February 1st 2012 with a ‘hello world‘ post, I did not know where and how this well end up. WordPress.com (the host of this blog) counted 1862 views in that first month. 30 months later (time is flying by!), views they are beyond 100k every month! Thanks to you all for commenting and liking posts, which is very encouraging. And there was one suggesting made recently which I would like to address:
It always takes longer than expected: actually 4 weeks from the first board out of the reflow oven (“First New Zumo Board out of the Reflow Oven“), until I have it working on the Pololu chassis. But now I have a mobile Robot with WiFi, GPS, Bluetooth, nRF24L01+ and all the stuff I have dreamed off 🙂
The wired Ethernet connectivity works out of the box with the Freescale RIoT board :-). But to make it more ‘IoT’ capable, a WiFi connection would be a big plus. The element14 site did not tell which WiFi dongles are supported, and a thread in the element14 forum on that topic has not really provided much information. With some risks I decided to order the Wi-Pi WiFi dongle which seems to be popular in the Raspberry Pi community (thus that Wi-Pi name?). And as I anyway have a Raspy, my thinking was that if it does not work with the RIoT board, I still can use it with the Raspy 🙂
I understand the challenges of board vendors: they produce many boards, and typically they have an early/first firmware version on it. And when that board gets shipped to customers, that firmware typically is old and outdated :-(. Same for the RIoT board I have received: I was desperately trying some advanced features, only to realize that the firmware on the board is an older one from this year. So time to update the Android on that board.
Sometimes I have source files in my project which I do not want to get compiled (or excluded from build). Because as I’m using the ‘managed make’, all source files matching certain extensions (like *.c) are automatically included into the build.
To exclude a file from build, I right-click on it to get to the properties. There I can select a check box to have it excluded from the build:
This gallery contains 9 photos.
This week-end tour with the motor bike was down to Italy and back through the alps. And it started with nice weather conditions:
At the university we have several projects with internet connectivity running. Yes, there is a hype around IoT, and in my view many false perceptions around this what it could or should be. Anyway, for these projects in many cases the Raspberry Pi boards are used, and I use a model B board of the Raspy too. I’m very happy with the Raspy, but I wanted to explore different options, so I ordered a RIoT board two weeks ago. When I looked at it the first time, I was thinking that this board could be a better (although larger) board than the Raspberry Pi one: more USB, more GPIO, micro-SD card, more processing power:
Well, then this week the new Raspberry Pi B+ came out: more USB, more GPIO, but same processing power as the standard B model.
After the problems with level shifters (see “First Adafruit NeoPixel Blinks with the FRDM Board“) I received the ordered 74HCT245N. Put it on a bread board, wired it up, … only to find out that the device gets very hot… turned off power, and realized that had the device put in with a wrong orientation 😦 oh darn! That’s why I always order things like that in quantities of 3 or more :-). Corrected the mistake, and things are running (or blinking) again 🙂
For my boot loaders I need the functionality that I can keep memory ranges from being erased while downloading the rest of the application. P&E provides a GDB server which interfaces with their probes (P&E Universal Multilinks, Tracelinks, …) and as well with the OpenSDA present on many of the Freescale evaluation boards. In CodeWarrior there is an option for ‘Advanced Programming Options’ which allows to preserve memory of the microcontroller FLASH (see “Programming part of flash“). However, that option or button is not present in the Eclipse version of the P&E GDB server (e.g. in Kinetis Design Studio). So how can I preserve some areas of FLASH in Eclipse with GDB?
LEDs are getting smarter these days. An amazing example are the WS2812(B) or ‘NeoPixels’ from Adafruit: RGB LEDs with a built-in constant current controller and shift register! With a single wire data wire hundreds of RGB LEDs can be controlled. Exactly what I need for a project I had in mind for a very long time. So I ordered a bunch of different LEDs from Adafruit to experiment. Exactly the right thing on dark and rainy week-end. And the result is, well: bright and colorful 🙂
I have used the ‘classic’ CodeWarrior IDE for years, before I moved over to Eclipse some years ago. And as with any IDE or tool switch, things are different in the ‘new world’. In summary, I don’t want to go back anyway, and Eclipse is my development tool of choice now. But from time to time I get challenged about something like “hey, this was possible in the previous tool, so how can I do the same in Eclipse?”. As a fan of Eclipse, this then gets my attention as I feel that Eclipse can do it, and it can do it better. 😉
So what about this one: In CodeWarrior the project view lists code and data size for each source file:
I admit: I’m sometimes a lazy person. In my projects, I only needed one ‘disk drive’ with the FatFS Processor Expert component: either a SD card or a USB MSD drive. But a reader of this blog wanted to use FatFS with multiple drives: using it with an SD card and a USB MSD drive. And actually FatFS does support this, I just had no need for it, thus I did not add anything special for it. But that reader let me think that I better add Multi-Drive support. Even if I do not need it now, that could be very handy in the future 🙂
I had great plans for this Saturday: to work on really cool project. But as so many times, things turned out to be different. Maybe you have read my recent posts about printf()? A colleague wanted to use that article to the same thing with the Kinetis Design Studio on the FRDM-K64F board. I used the FRDM-KL25Z board, so I expected this to work out of the box for him too. Well, turned out that I was wrong about this, and my Saturday was used for debugging and googling about a printf() problem 😦
While things work as expected for the FRDM-KL25Z (ARM Cortex-M0+) and using the standard GNU GCC ARM Embedded from the launchpad, the application traps on the K64F (ARM Cortex-M4F) in
initialise_monitor_handles() with KDS:
Working in an engineering domain of electrical engineering and computer science, female engineers are clearly the minority, at least in my country. For example the ETH Zurich has less than 30% female students. The US National Science Foundation had published articles on that subject: Interestingly, 70% of young girls are interested in math and science, but they lose that interest afterwards.
The Freescale Kinetis Design Studio (KDS) V1.0.1 beta is using a different GNU ARM toolchain than the ARM Inc. supported one on launchpad (GCC ARM Embedded). Additionally, KDS is using newlib 1.19 and newlib-nano 1.0, while there just has been a new release of the GCC ARM Embedded a month ago with the 4.8.4 update 2 release in June this year. So how to upgrade KDS to the latest and greatest GCC ARM Embedded?
In “Semihosting with Kinetis Design Studio” I’m using the debugger with semihosting to output text with
printf(). But how to use a physical serial connection instead?
This post is about how to enable and use
scanf() with GNU ARM libraries. I show it both for the Freescale Kinetis Design Studio (KDS) and for stock Eclipse Kepler with the GNU GCC ARM Embedded (launchpad) toolchain and libraries. The principles are the same, just the details are different ;-).