Tutorial: Ultra Low Cost 2.4 GHz Wireless Transceiver with the FRDM Board

For my embedded systems lecture I need a wireless connection to the robot we will develop during that course. So far I have SMAC (IEEE802.15.4) and Bluetooth worked out. But that IEEE802.15.4 (ZigBee) is expensive, and the cheap Bluetooth modules are great for robot-to-host connection, but not for swarm robots which need to communicate to each other. Alex Vecchio (see this post) pointed me to a $2.75 (!) wireless module featuring the Nordic Semiconductor nRF24L01+. Exactly what I needed, with an incredible low price :-).

nRF24L01+ Module Detail

nRF24L01+ Module Detail

Continue reading

Hacking the Heating System for Cooling – Geothermal Drilling with extra Benefits

Summer finally has arrived in Switzerland. Yes, I live in a moderate climate zone, but if the outside temperature goes above 28-30° Celsius as these days, then sleeping at night is not that comfortable as it should be in my view. Luckily, I’m in a good constructed house with good insulation, so it takes a few days until it heats up. But I love to keep the temperature below 25° Celsius, especially at night. I do have a heating system which combines geothermal and solar heating. The question is: how can I use it for cooling during hot summer days? The solution: some extra plumbing, a Freescale Tower system and the Freescale FRDM-KL25Z board 🙂

FRDM-KL25Z with Arduino Data Logger Shield

FRDM-KL25Z with Arduino Data Logger Shield controlling Heating/Cooling System

Continue reading

FRDM-KL25Z talks to Android Phone

Ok, I still do not own an Android phone, but I know many readers of this blog do, and there were several questions how to use the FRDM-KL25Z with Android. And here is something exciting I just saw today: Kai Liu posted information how to connect the FRDM-KL25Z with USB OTG (On-The-Go) to Android: FRDM-KL25Z now talks to Android Phone

He published the S19 file so you can try things out. He still needs to organize the sources and decide on how to publish it (I hope it will be available soon).

If you do not own a FRDM-KL25Z RevE, then you need to consider this post about a hardware change: USB host HID demo times out on FRDM-KL25Z with reproduced USB host

Happy Droiding 🙂

USB MSD Host for the FRDM-K20D50M Board

The Freedom boards FRDM-KL25Z RevE and FRDM-K20D50M make it easier to use it as USB Host device, as they come with a special jumper to provide 5V to the USB device, so my earlier ‘hack’ is not needed any more :-). After I had USB MSD Host working for the FRDM-KL25Z, it was much harder to get the USB stack working for the FRDM-K20D50M board, because somehow the example Freescale provided with their USB stack refused to work properly on my board. After debugging it for several nightly hours, I decided to take my working Processor Expert project for KL25Z and added support for the K20. And the good news is: since tonight this is working :-).

FRDM-K20D50M as USB MSD Host

FRDM-K20D50M as USB MSD Host

Continue reading

FreeRTOS Heap with Segmented Kinetis K SRAM

While working on a project for the FRDM-K20D50M, I faced a problem: I was running out of SRAM for my application. The GNU linker reports: “section `.bss’ will not fit in region `m_data'”: 😦

bss will not fit in region m_data

bss will not fit in region m_data

But my device has 16 KByte of SRAM, and I knew I use much less than 10 KByte. So what is the problem? Continue reading

Low Power with FreeRTOS: Tickless Idle Mode

It took me a while to find the time to upgrade to FreeRTOS V7.4.2, but finally it is done :-). What caused me to move from V7.2 to V7.4 is a low power application on the FRDM-KL25Z board. V7.4 comes with two major new features: Queue Sets and Tickles Idle Mode (see this article). The last one if of interest here.

FreeRTOS runs an IDLE task. This one runs when there is no other active task. That task calls an optional Idle task hook which is a perfect place to put the microcontroller into low power mode:

Task T1 Running

Task T1 Running

Continue reading

Using the FRDM-KL25Z as USB Keyboard

I miss my old DELL laptop. Ok, the new one I received from IT services is not bad. It is faster and has a better screen. But I’m not really happy with the new keyboard. With the previous keyboard I was able to do a ‘PrtnScrn’ with a single key press. With the new one I need to press Fn + PrntScrn. And this is impossible to do with one hand:

Impossible to reach Prnt Scrn

Impossible to reach Fn+Prnt Scrn with one hand!

Yes, I have two hands ;-). But many times I need to do ‘print screen’ while having my other hand on the mouse :-(.What else can I do?

Continue reading

5V Generation from V_IN on the Freedom Board RevE

The Freescale Freedom boards like the FRDM-KL25Z feature an Arduino header so I can stack shields on it. Unfortunately, the Freedom board does not generate 5V if not connected to the USB cable. This makes it not possible to be used with many shields like the Adafruit Motor Shield: such shields expect that the Arduino board is providing 5V through the Arduino header (Pin 10 on J9 on the FRDM-KL25Z). So I had to do hardware changes to generate that 5V if I used my board disconnected from USB, e.g. running from batteries through V_IN (pin16 (P5-9V_IN) on the FRDM-KL25Z.

J22 with Capacitors on FRDM-KL25Z RevE

J22 with Capacitors on FRDM-KL25Z RevE

The good news is that the Rev.E of the Freedom FRDM-KL25Z board has now a header J22 to make things easier:

Continue reading

Using the HC-06 Bluetooth Module

After my first post using a Bluetooth module, things have evolved a bit. The challenge with these Bluetooth modules is: they look the same, but having different firmware. I did not fully realize that until I have ordered another bluetooth module from dx.com:

DX.com Bluetooth Module (HC-06)

DX.com Bluetooth Module (HC-06)

That module comes already on a carrier, so I assumed I can use the same driver as for my other module. I was wrong :-(.

Continue reading

Tutorial: Arduino Motor/Stepper/Servo Shield – Part 3: 74HCT595 Shift Register

For many projects, I have one common problem: I run out of I/O pins on my microcontroller :-(. Luckily, I’m not alone, and the industry has created solutions for this kind of problems. One is to use a shift register as the 74HCT595/SN74HC595 which gives me 8 extra output pins. All what I need to spend are are 3 GPIO pins. Not a bad deal: I spend 3 pins and I get 8 (or multiple of it) on return :-).

So why do I say this for this Arduino Motor/Stepper/Servo Shield tutorial? I have asked in this earlier post with a poll for the next topic (relais, motor or command line interface). Right now votes are mostly for relay. But before I can do relay (or DC motor), I need to first cover the 74HCT559. So here we go to have you ready for the next tutorial 🙂

Arduino Motor Shield

Arduino Motor Shield with 74HC595

Continue reading