Blog in English (Helton Eduardo Ritter) Arduino Project #00005 - NRF24l01 4 Channel relay + manual buttons Well, this project is a "continue" of the project #00004 NRF24l01 to Serial Port module. The idea is pretty simple as always, but the devil is on the details.

I hang a 4ch low trigger solid state relay to an Arduino Nano, 1 NRF24l01 to accept commands to turn on and off a given channel, and 2 push buttons to operate the "device" manually. As there is no display in it, I added 2 LED`s that helps the user to know the channel he is turning on/off. It`s all in a box with a 5v power supply.

Here is the Arduino sketch.


- NRF24l01 is connect in standard way to Arduino, like in here.

- The LED that indicates ON/OFF status of a given channel is on PIN 4. It has a 220ohms resistor on it.

- The LED that indicates the current channel (blinking 1x to ch1, 2x to ch2, 3x to ch4 and 4x to ch4) is on PIN 3. Also 220ohns resistor here.

- A push button to turn ON/OFF a given channel is on A2. There is a 2.2 KOhms on it as Arduino documentation says.

- Another push button to "walk" from CH1 to CH4 and back to CH1 is on PIN A1. Also 2.2KOhms resistor.

- The 5v power supply connects to Raw and GND.

- Relay Channels are on PINS 10,9,6 and 5.

A huge improvement in the transmission and receiving of  the commands was the add of a 10uF electrolytic capacitor on GND and VCC of the NRF module.

And, as I`m pretty nob in 3d designing and printing, I added pieces of PVC to secure the top of the box of the case.

Also, I`m dumping here an basic idea of flow in node-red, so basically now I can control this relay via NRF and on my regular wifi network via MQTT, it`s just write the "command" in the topic (this will enter on Serial Port, and transmitted via NRF).

For test reasons, during the development of it I created an "spanner" hat keeps "choosing" one channel and asking it to turn ONN/OFF. Also asks for "status". Here is the code (just and Arduino connected to an NRF module).

Things around the web that helped me:

- Interference from NRF on my Wifi, since both use 2.4ghz, and in my case, they are both about 30cm close to each other.

Sat, 22 Sep 2018 23:24:00 +0000
Arduino Project #00004 - NRF24l01 to Serial Port module on Orange Pi One Node-Red, and make an smartphone App for controlling them... or even building custom remote control!?

The only possible answer is that they must communicate to a central "node" (mqtt broker in my case), send status to this node, and receive commands from it. In my case, I plan to use my Orange Pi One for this function; it has already node-red and mosquitto installed.

The simpler but in my point of view, not the best solution, would be hang up an NRF20l01 directly to the Orange Pi One, since it provides 3.3v logic level pins (this solutions seems to be widely used). 

The inconvenient I see here is that you have to install and configure a lot of unwanted and complicated software, and it`s so easy to mistake the pinout if for some reason you need to unplug it / and plug it again later. What I will do is simply communicate via a serial port, no software needed, and since the module in connected via USB, you can just plug it in another board.

Anyway, if you intend to do so (NRF24l01 direct to the Orange Pi board), the pinout and connections is as the following:

And here the NRF24l01 connections to many boards.


The connections should looks like here in my attempt (just tested, not continued this idea)

Well, let`s build our module!

First you need to create something to send data. I used an arduino nano on a small breadboard, a BME280 sensor, a 0.96" oled display to show the last message sent, and sure an NRF24l01 module. Arduino code is here.

Here is the NRF connections and pinout. Note that IRQ is not connected (not used).

I know that each module can send and receive data, but for sake of simplicity I did just one way (board with the sensor sending, and the module for Orange Pi receiving).

And here is the connections for the display, and for the BME280 sensor. Note that both are i2c, just that the sensor is 3v only,  and the display might be connected on 3v or 5v, I opted for 5v.

The module that will be plugged via USB will be even simpler than the sender. It`s all of it, but without the sensor.

Ok, now is just solder everything according to the connections (sorry for my bad skills on it).

And test it:

Now, since my soldering dont look very good, I also added a layer of hot glue to make sure that any cable won`t lose from the board.

Since it`s connected on the USB, the arduino will show it in ttyUSB0 probably. In this example (here is the code) it`s reading from NRF24l01 and displaying on the oled and also printing on the Serial Port. Read what`s coming is simple like this.

Well, concept tested and working!

What to do next in this project?
- Software needs a lot of fixes, and also when writing to the serial port, make it send to NRF24.
- Change the display to show the last message sent and the last received.

Arduino lib to work with the NRF24l01 module -

More about the NRF24l01 module -

Update 2018-09-22

My solder skills just killed me, and the display was not working anymore. So I decided to make it simpler. Just an Arduino Nano and an NRF module as receiver & transmitter connected to the serial. By the way, I wrote a better version of the code that runs in the Arduino, also I`m adding bellow my flow in the Node-Red. Simple right!? Whatever came in Serial (Radio to Serial) I re-transmit on MQTT topic, and whatever came in another MQTT topic, i write to the Serial, and as consequence to the Radio.

Sun, 02 Sep 2018 22:16:00 +0000
Program an Arduino pro-mini 5v 16mhz with a CP2102 USB to TTL without DTR pin (CP2102 with 5 pins) Well, this is a short tip, mostly for me to remember. Arduino IDE should be configured as bellow.

And connections are so:

CP2101 +5v ->  Arduino VCC
CP2101  GND ->  Arduino GND
CP2101 RX ->  Arduino TX
CP2101 TX -> Arduino RX

CP2101 3v -> Not connected (would be instead of +5v if it were an 3.3v pro-mini, the one with 8mhz)

As this model of CP2102 USB to TTL adapter don`t have an DRT pin, we hold the reset button on Arduino when sending, keep it hold during "compiling", and release as soon "uploading" appear on the IDE. LED`s on the adapter should blink, and the code now lives on your Arduino board.

Sat, 16 Jun 2018 01:30:00 +0000
Arduino Project #00003 - TV output via RCA cable, arduino Nano and Uno Very easy project to do! Takes just cables, RCA connector and 2 resistors (1k and 470 ohm).

The only trick is the "TVoutfonts". When you just add the zip file to the Libs, on compiling it will error on #include <fontALL.h>. You have than to enter the libs folder of the TV Out, and copy the TVoutfonts to the root of the libs, same level as "arduino-tvout-master". 

Let`s go to the connections.

Arduino PINToComments
91k ohm 9 and 7 are pwm pins
7470 ohmI used an 330 ohm. Worked fine.
GNDdirect to GND of the RCA

Here is my result:


Sun, 03 Jun 2018 15:17:00 +0000
Arduino Project #00002 - LCD 16x2 LCM1602B and temperature sensor with NTC thermistor In this project I developed a simple temperature sensor using an NTC thermistor, and 1k resistor and an LCD display. For the display I followed the same as in this tutorial, just adjusting to the pinout of my display that is not 1-16, but "14-1,15,16".

Notice that a sensor like the KY-013, is just an NTC thermistor with the appropriate resistance, you don`t need to measure and know the internals. For understanding how to build a sensor like this, I used this tutorial and this another one.

Just the thermoresistor connections is like that:

The reading of the value is via A0 - please adjust resistance according to the NTC, both must be the same.

So let`s go to the display connections:

Arduino PIN
The most references recommend to add a 200ohm resistance or a 10k potentiometer.
I tried, and the display was to faded, so I connected direct to GND.
Check datasheet of your display if you can do it too.
This is the PIN for the cleareance/contrast of the text in the display, it`s also possible
to adjust it via an PWM pin.




Not connected

Not connected

Not connected

Not connected




16 and 17 is the back-light, so you might also want to adjust it`s insensitivity via a potentiometer

And here is the source code:

Resources and references:

Another tutorial with the same display module (in Portuguese) - my copy - Original

LCM1602B display datasheet - my copy

Looks like the same display, I`m not sure, but anyway, this datasheet here is more complete - my copy - Original

Sun, 03 Jun 2018 00:19:00 +0000
Arduino Project #00001 - IR controlled LED`s - prototype for a moving robot car

This post is just a dump of the results of my first Arduino project. Here is the result.

Pinout connections (configurable on the source file, but this is the default) :

ArduinoToAdditional comments
D2Anode of the right LED indicatorconnect the cathode to GND 
D3Anode of the left LED indicatorconnect the cathode to GND
D4Anode of the forward LED indicatorconnect the cathode to GND
D5Anode of the backward LED indicatorconnect the cathode to GND
D6Anode of the stop LED indicatorconnect the cathode to GND
D8OUT of the IR receiverconnect VCC to +5v
connect GND to GND
5Vbreadboardconnect to the +5v of the IR
GNDbradboardconnect the cathodes of the LED`s
and the GND of the IR

Attention to the IR pinout. If for some reason you exchange and connect VCC to D8 in Arduino, the "signals" just don`t came. IR receiver is just like a regular LED, has it`s polarities. Bellow some of the most common modules.

This project works fine also passing the 3.3v to the breadboard, since the only thing that receives it is the IR anode, all the rest receives the + direct from the digital pins.

Source code on Github:

Main reference for doing it:

Thu, 31 May 2018 22:23:00 +0000
Configure wifi dongle to auto connect on boot for Orange Pi PC running Armbian minimal This was the first free weekend with my Orange PI PC. It has network connection, but no Wifi built in. The cool of this board (in my way of thinking) is that you can run complex software, and connect to an Arduino board on it. So instead of having a limited/small/simple program running on Arduino, you can basically use Arduino just as a bridge between the SBPC and the hardware. You can develop in a much high-level, and even though have hardware access.

The problem I found resides on communication (imagine an robot running with a cable connected). I shall better have ordered a board with Wifi built int. By now, I have a D-Link USB dongle. So how to make it use it and automatically connect to some wifi?

Well, using Armbian, I first thought in using the easy assistant that comes with, the armbian-config.

It works right out of the box! Just connect you dongle, go to the appropriate menu, enter Wifi credentials and be happy. It`s a pity that I does not continue this way in the next reboot.

In the next reboot, the wifi keeps down, no IP assigned, no nothing, and even worst, if you enter in armbian-config again, the section to configure wifi disappear. There is an alternative command nmtui. You will be able there to activate and re-configure stuff.  The problem is that it just works if you cable is connected. If eth0 is down, the mntui don`t work, and there is no way to configure your wifi.

Well, I discovered that armbian-config & nmtui were messing the wifi files, and that there is another command to manage it all. Just had to burn the image again in my SD card, cause this other command were not working giving the mess in the wifi configuration files.

Get Wifi status

nmcli radio wifi

Turn wifi on or off

nmcli radio wifi <on|off>

List available access points(AP) to connect to

nmcli device wifi list

Refresh previous list

nmcli device wifi rescan

Create a new connection to an open AP

nmcli device wifi connect <SSID|BSSID>

Create a new connection to a password protected AP

nmcli device wifi connect <SSID|BSSID> password <password>

Running this, all worked fine, also in the next reboot (you don`t need to run the commands never again), also when connecting and disconnecting the dongle with the Orange Pi PC on.

Here is all references I used.

Sun, 27 May 2018 21:21:00 +0000
Raspberry PI 3 - Using a small microSD card to boot from USB drive Raspberry is so fun that you might like me end up out of microSD`s! Especially big and fast ones. Than come the diabolic question: What happens when you want to experiment something new? Choose one of your precious images/microSDs to destroy?

Well, the idea here is have an small (nowadays useless) microSD card (mine is just 1GB), and use it to "redirect the boot" to the USB drive. Instead of booting and running everything from the SD card, it will just read it, and goes to the USB drive and from there continue the boot and run the system. You might even use and External Hard Drive if you want! 

My setup:

- 1 small-slow-old-1GB microSD card - To read and redirect the boot-up to USB.

- 1 USB flash drive 16GB - Where the actual system that I want to run resides.

The procedure is quite simple.

Using Ecther, I wrote an small image in my 1GB microSD. I`m using DietPI, it`s about 87Mb download, and installation fit in my small microSD (although if you run it, it will complain that you need at least 500Mb free).

Again using Echer, I wrote Ubuntu Mate 5GB image in my USB drive. This is the system I actually want to run. Choose your favorite flavor here.

Well, plug back the small microSD, it will show you the boot partition. First and important, backup cmdline.txt. This is the file we gonna change.

Now that the backup is done, open cmdline.txt and change where it boot from. Original it will have something like in the image bellow.

Change it to /dev/sda2. Save. Eject the microSD card.

Plug the flash drive in the USB, and the microSD card in the slot. Power it on! It will read the microSD and boot from USB. Done.

Notice almost at the bottom of the image where it shows "Set hostname to <DietPi>". So it started the boot from microSD.

A bit later! voilá! Now you have it!

Sun, 15 Apr 2018 17:51:00 +0000
Full Linux desktop on Chromebook - SNOW BARA NA-J 0453 / Samsung XE303C12-ad1br I own a Chromebook for let's say 3 years now? At the time I was doing a specialization course in another city, and each weekend I was taking the Underground train, things ware complicated in my area, and I was so afraid (of being stolen) to carry with me my expensive Mac Book Pro. So I decided to buy a really cheap Notebook. I found out that a Chromebook ware enough for what I needed at the time. Deal done for R$ 650,00.

Here is what I bought. The first Chromebook model sold in Brazil.

Happens that I gave up of that course, and my Chromebook ends up being pretty convenient for daily usage, as well for when I travel. It's serves for basic usage as it does for some quick work, although for it, we need to install stuff like Team-viewer, RDP Client, access some remote environment like Eclipse Che and so on. Remember that it's web focused.

The utility though, can be  extended from "pure web applications" to traditional Linux apps, like Gimp, Inkscape ... and sure, full command-line stuff. 

Here is how do it.

1 - Enable developer mode

With the Chromebook powered and on,  reboot it in recovery mode pressing:

ctrl + esc + reload + power

Once rebooted, it will beep and warn you that there is no OS present and bla bla bla...

press ctrl + d, enable the developer mode, follow instructions there (pressing enter to confirm).

This will erase all your disk, and do the stuff.

2- Download Crouton

Go to and download it to your Downloads folder

3 - To install a full Linux

I'm installing it here full, with user interface, and xiwi to be able to run it in a chrome tab or windows, instead of having to switch to one or other environment. Sure, depending on your usage, you might want just the command line basic stuff. Check out Crouton on github, read the alternatives there.

Ctrl+Alt+T -> to open crosh (Chrome OS developer shell), like a terminal in a tab. 

shell -> to enter the standard Linux shell

And than run the installation itself

sudo sh ~/Downloads/crouton -r xenial -t xfce,xiwi

This will install a full Linux with xfce interface.

Almost at the end it will ask you a name for a user and password.

4 -  Install the Chromium OS 'crouton integration' extension

So, this xiwi is basically a tunnel, that instead of sending the image from X11 direclty to screen, send's it to be "captured" by something else. This "something else" is this extension. Imagine a VNC, or Team-viewer. It listen's, and when have "stream" available, it connects to it.

crouton integration extension

5- Usage

Press ctrl + alt + t will open crosh tab, from where you enter the shell, and start the graphical interface. I find useful "pin the tab" after it, and leave it. 

Here is when the extension comes in action, you might see in the console some attempts to connect, and then, the user interface will poup-up (in full screen by default). To leave full-screen, press F11 or the dedicated key on your keyboard.

Well, it's just a window. You can just minimize, or even close the window (the desktop will still running, you than just reconnect from the icon of the extension in the Chrome browser).

To really close the Desktop running, shut it down, or logoff from it.

Fri, 30 Mar 2018 16:09:00 +0000
Translation - Sail - Awolnation

This is how I show my love
É assim que eu mostro meu amor
I made it in my mind because
Eu o fiz em minha mente
Blame it on my ADD baby
culpa da minha TDA baby

This is how an angel dies
É assim que um anjo morre
Blame it on my own sick pride
culpe isso ao meu orgulho doentio
Blame it on my ADD baby
culpe isso a minha TDA baby

Sail, sail
Navegue, navegue
Sail, sail, sail
Navegue, navegue, navegue

Maybe I should cry for help
Talvez eu devesse chorar por ajuda
Maybe I should kill myself (myself)
Talvez eu devesse me matar (eu mesma)
Blame it on my ADD baby
Culpe a minha TDA baby

Maybe I'm a different breed
Talvez eu seja de uma raça diferente
Maybe I'm not listening
talvez eu não esteja escutando
So blame it on my ADD baby
então, culpe a minha TDA baby

Sail, sail
Navegue, navegue
Sail, sail, sail
Navegue, navegue, navegue

La la la la la la, la la la la la la
la la la la la la, la la la la la la

Sail, sail
Navegue, navegue
Sail, sail
Navegue, navegue
Sail, sail
Navegue, navegue
Sail, sail, sail
Navegue, navegue, navegue

Sun, 14 Jun 2015 21:42:00 +0000
I`m back to youtube! Running like a crazy! Yeah! Thanks dear subscribers!
Happened that maybe 2 of them subscribed to my channel. But... people all around Brazil started doing it! And by now, 2 years latter, with no new video since September 2012 I`m with about 650 subscribers! Awesome gorgeous fucking crazy stuff!! Thank you guys!! Very very thank you!

Amazing is the numbers! people already spent 2979h (almost freaking 3k hours) watching my videos. This things and also a willing to get some money with ads got me back to producing. Yeah, I`ll do something good again. My plan is to cover a good set of tools, frameworks and programming languages. I`m not sure with witch one I`ll start. The thing I`m sure is that I`ll do it in English (and transcript to English), and then write subtitles to Portuguese, German and Spanish. Maybe French in a near future.

Well, follow me!
My Youtube channel:
My Transifex account where the translations will go on:
Sun, 28 Sep 2014 07:35:00 +0000
Hosting changed, AWS was getting freaking expensive! Welcome No, I`m not an affiliate from BlueHost neither am I from Amazon. The thing is, my free tier for one year was great! Having a real full stack Linux virtual machine in your hands at the cloud is great! Sure, when your free year expire, it`s starts to get expensive when you have a simple/for fun/nothing serious website.

My first paying month I did not got too much attention, cause the bill was less than $10. So by inertia, I didn`t changed anything. And so 2 month passed. Days ago, checking my credit cart bills, I sow a good amount no Amazon, and in the past month I didn`t bought any book.

You have the right to thing... but Helton, you have a full machine available in the cloud. Yeah, I do, but I don`t actually need that much. I did the math I saw that each visitor on my site during August 2014 costed me $0.28, for 17 seconds each in average.

Well, I decided to change than to the lowest host option in Now the hosting will cost me for the next 3 years just $3.49 per month.

$ 3.49 - Website Hosting
$ 1.49 Domain - GoDaddy
$ 4.16 Google App`s for work

$ 9.14 my presence on www cost

So, let`s rock! I mean.. let`s www!

Sat, 27 Sep 2014 19:54:00 +0000
It`s all connected! Germany, Três de Maio, Novo Hamburgo, Montenegro, Rede Sinodal de Educação, and me Once she asked me "why a German name" and in another opportunity, implicitly, "where I live". I said Novo Hamburgo, Brazil, but willing to tell her a little bit more. I stopped myself because I realized that I don`t know anything about Novo Hamburgo.

I came to this city at the end of 2012, just, explicitly for a work opportunity. Nothing else. When I say "nothing else" it means that if this job opportunity would be whatever else, I would treat it with the same parameters as I did at that time. Well, during 2013 I worked to a Web Agency company called WT Prime. At the end of 2013 I started in another company called SystemHaus, this one better able to bring me where I want. The point is, the city never was in account of any of this decisions. Maybe that is why I did not knew enough to expand my comment.

I researched, and I found a lot of interesting relations!

Let`s see. Prior to Novo Hamburgo, I studied the last year of my high school, did a technical IT course and my Information Systems Graduation; also worked there as a Web Developer and a Technical Teacher in a education institution called SETREM, in Três de Maio city.

Três de Maio (northwest Rio Grande do Sul) is a city where still not that unusual to listen Hunsrückisch, a German dialect. This dialect came from the German immigrants (from the region of Hunsrück, obviously) that around 1824 came to the region of Montenegro (really close to Novo Hamburgo). Some years latter, this immigrants started to move to the northwest of the the state, for instance. From Montenegro came the couple of my both (father and mother side) great-grandfathers.

So, German name in short: 4 generations ago (me -> father -> grandfather -> great-grandfather, or me-> mother -> grandfather -> great-grandfather)  both family sides ware German residents who moved to Brazil.

Eureka! And there is more. The region of Novo Hamburgo, São Leopoldo, Montenegro.... are called "região do vale dos sinos". SETREM in Três de Maio is a school part of a network called "Rede Sinodal de Educação", this network started here, in Novo Hamburgo and/or Montenegro by those German immigrants who came to Brazil.

Coincidence or not, I`m in a place where in theory I should be used to be. Next step, go live in Germany?

That is all for today.
Sat, 07 Jun 2014 15:04:00 +0000
Part of something - Global Translator Community I have been looking for an opportunity like this for a wile. If I check my browser bookmarks certainly I'll find a list of  (mostly) Open Source software that in some moment I thought would be a great idea been part of the translation team.

The thing is. It`s not that easy to enter in one of those teams, they are small, or probably already have a favorite "to Portuguese" translator. If the team does not have one, the amount of things to translate is huge... gigantic.... too much to one person who has e main work.

This time, even not in a Open Source project (Coursera will make even more profit in Portuguese speaking countries now), I managed to enter in a team! And a big team! Wen I say big, it`s more than 10k translators around the world. Chinese, Russian and Brazilians are the biggest.

In somehow, it is against my believes, because I`m openly helping a company to profit more. And I don`t get a pay check from them, and never will. The content they distribute are not Creative Commons, if you want to access you have to subscribe (for free at least you want a accomplishment certificate of the courses you did). In other hand, it is education, and it`s impossible to me to deny a recent professional (really great) experience on the area. I do believe education helps people, education make changes, open eyes; and if I have a chance to help this process... I`m in!

Right now, we are translating "Introduction to Databases", It`s almost done. I`m using about 15~20 mins from Monday to Friday as soon I get back from my lunch until the time I have to start to work (for my main activity) again.

My plan is continue on English to Portuguese until the end of this  "introduction to databases" and then more 3 or 4 courses, and then start translation from German. Let`s see.

Well, I know no one except me read this website/blog whatever... but this milestone is important to me, and (mom) I`m proud of myself.

Mon, 19 May 2014 04:21:00 +0000
Are you getting from Cake bake "Database connection Mysql is missing, or could not be created" on your Mac using Mamp? I will tell you why. It`s because apparently Mac already comes with a PHP command line interpreter. So the PHP you are calling are not the same from Mamp.

Take a look below where I`m on the root folder from my Cake PHP application.
system2:regroup ritter$ ./lib/Cake/Console/cake bake

Welcome to CakePHP v2.4.4 Console
App : app
Path: /Users/ritter/Documents/sites/regroup/app/
Interactive Bake Shell
[D]atabase Configuration
[T]est case
What would you like to Bake? (D/M/V/C/P/F/T/Q)
> m
Bake Model
Path: /Users/ritter/Documents/sites/regroup/app/Model/
Error: Database connection "Mysql" is missing, or could not be created.
#0 /Users/ritter/Documents/sites/regroup/lib/Cake/Model/Datasource/DboSource.php(260): Mysql->connect()
#1 /Users/ritter/Documents/sites/regroup/lib/Cake/Model/ConnectionManager.php(105): DboSource->__construct(Array)
#2 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/Command/Task/ModelTask.php(927): ConnectionManager::getDataSource('default')
#3 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/Command/Task/ModelTask.php(864): ModelTask->getAllTables(NULL)
#4 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/Command/Task/ModelTask.php(954): ModelTask->listAll(NULL)
#5 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/Command/Task/ModelTask.php(203): ModelTask->getName()
#6 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/Command/Task/ModelTask.php(91): ModelTask->_interactive()
#7 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/Command/BakeShell.php(109): ModelTask->execute()
#8 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/Shell.php(434): BakeShell->main()
#9 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/ShellDispatcher.php(207): Shell->runCommand(NULL, Array)
#10 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/ShellDispatcher.php(66): ShellDispatcher->dispatch()
#11 /Users/ritter/Documents/sites/regroup/lib/Cake/Console/cake.php(49): ShellDispatcher::run(Array)
#12 {main}

How to deal with it? Simple: Call the PHP you want, directly, and everything will go smoothly. Have fun codding!

system2:regroup ritter$ /Applications/MAMP/bin/php/php5.4.10/bin/php ./lib/Cake/Console/cake.php bake

Sun, 23 Mar 2014 23:42:00 +0000