Ever since I received my PSOC 4 Pioneer kit from Cypress I have wanted to play with this little mixed-signal Programmable System-on-Chip (PSOC) developer board. I love developer boards, providing that they are priced in a way to entice me to not only open my wallet but also make time in a busy schedule. I think my kit was free after winning a swag bag from Adafruit that they themselves obtained at the Open Hardware Summit and gave away on their weekly streamcast. Ultimately it was the invitation to beta test datasheet.net which also was included in that pile of swag that led to my getting involved with Hackaday.
What is Programmable System On Chip?
So what is a PSOC 4? A quick summary is that it’s based on an ARM Cortex reduced instruction set processor (RISC) and is somewhat capable of supporting shields based on the Arduino footprint, and it also uses a bright red PCB that I have come to associate with a Sparkfun PCB. What doesn’t show is the fact that this programmable system on chip has programmable analog function blocks in addition to programmable digital logic blocks. There is also some supporting input/output circuitry such as a multicolored LED and a capacitive touch sensor directly on the PCB.
This is an intriguing amount of programmability, so much so that Newark/Element 14 highlighted a “100 projects in 100 days” event on it.
Enter the IDE
Over the years I have had to create or install many Integrated Development Environments (IDE) that linked hardware to software. Knowing that you had to, and how to, implement an IDE was part of being an engineer. Nowadays with the Arduino type environment the user has an IDE pretty much as soon as they click on the executable which I find to be one of the best aspects of the genre. It was so quick in fact that I was able to get my teenaged son into writing his first program even before he remembered to do massive eye-rolls and make sounds of utter disdain. He did give up however, just shy of learning how to have the Arduino make sounds of disdain on his behalf.
How ’bout that 2048 game? Pretty addictive, huh? Almost as addictive as embedded systems are, at least if you’re [Andrew]. Armed (pun intended) with a Nucleo F4 and a Gameduino 2 shield, he decided to have a go at making an embedded version of the popular tile pusher web game.
If you’re unfamiliar with the Nucleo boards from STMicroelectronics, check out our post on the Nucleo family from a couple of months ago. The Gameduino 2 shield ships with a 4.3″ touchscreen driven by an FT800 GPU EVE. [Andrew] wrote his own driver for it and his blog post goes into great detail about its programming model and the SPI read, write, and command functions he wrote. Full code is available from [Andrew]’s repo.
He started by generating a blank screen based on clues found in the Gameduino 2 source. Pretty soon he had rendered a rectangle and then a full 2048 board. A minor difference between [Andrew]’s creation and the original is that his always creates new tiles as ‘2’ while the web game cranks out the occasional ‘4’.
We were unable to embed [Andrew]’s gameplay videos, but you’ll find two on his blog.
The Teensy 3.x series of boards are amazing pieces of work, with a tiny, breadboard-friendly footprint, an improbable amount of IO pins, and a powerful processor, all for under $20. [Karl Lunt] loves nearly all the features of the Teensy 3, except for one: the Arduino IDE. Yes, the most terrible, most popular IDE in existence. To fix this problem, [Karl] set up a bare-metal development environment, and lucky us, he’s chosen to share it with us.
[Karl] is using CodeBench Lite for the compiler, linker, assembler, and all that other gcc fun, but the CodeSourcery suite doesn’t have an IDE. Visual Studio 2008 Express is [Karl]’s environment of choice, but just about every other IDE out there will do the same job. Of course a make utility will be needed, and grabbing the docs for the Freescale K20 microcontroller wouldn’t be a bad idea, either.
The end result is [Karl] being able to develop for the Teensy 3.X with the IDE of his choice. He was able to quickly set up a ‘blink a LED’ program with the new toolchain, although uploading the files to the Teensy does require the Teensy Loader app.
Today [Bunnie] is announcing the launch of the Novena Open Laptop. When we first heard he was developing an open source laptop as a hobby project, we hoped we’d see the day where we could have our own. Starting today, you can help crowdfund the project by pre-ordering a Novena.
The Novena is based on the i.MX6Q ARM processor from Freescale, coupled to a Xilinx Spartan 6 FPGA. Combined with the open nature of the project, this creates a lot of possibilities for using the laptop as a hacking tool. It has dual ethernet, for routing or sniffing purposes. USB OTG support lets the laptop act as a USB device, for USB fuzzing and spoofing. There’s even a high speed expansion bus to interface with whatever peripheral you’d like to design.
You can pre-order the Novena in four models. The $500 “just the board” release has no case, but includes all the hardware needed to get up and running. The $1,195 “All-in-One Desktop” model adds a case and screen, and hinges open to reveal the board for easy hacking. Next up is the $1,995 “Laptop” which includes a battery control board and a battery pack. Finally, there’s the $5000 “Heirloom Laptop” featuring a wood and aluminum case and a Thinkpad keyboard.
The hardware design files are already available, so you can drool over them. It will be interesting to see what people start doing with this powerful, open computer once it ships. After the break, check out the launch video.
Imagine a machine that [Anderson Silva] could throw a punch at, that would locate his fist in real time and move a punching pad to meet his moving fist. How would you do it? Kinect? Super huge sensor array? Sticking charm? What if we told you it could be done with two electret microphones, an Arduino, and a Gumstix? Yeah, that’s right. You might want to turn your phone off and sit down for this one.
[Benjamin] and his fellow students developed this brilliant proof of concept design that blocks incoming punches for their final project. We’ve seen boxing robots here before, but this one takes the cake. The details are sparse, but we’ve dug into what was made available to us and have a relatively good idea on how they pulled off this awesome piece of electrical engineering.
[Akhil] and his wife recently finished their WakeUp Light project. As the name suggests, this kind of morning alarm uses light to wake you up in the morning. The main constraints when starting this relationship-strengthening adventure were cost, ability to work with any table lamp, and having a simple but effective control interface, all while keeping all the design open. The created platform (put in the wooden box shown above) is built around a Stellaris Launchpad (ARM Cortex M4 based) and uses an AC dimmer circuit found in this instructable. For our readers interested in those, [Akhil] mentions two very interesting articles about their theory of operation here and here.
An Android application has been made to set up all the alarm parameters, which uses the phone’s Bluetooth to communicate with the (well-known) HC-05 Bluetooth transceiver connected to the Launchpad. For safety, the current design also includes an LM4876 based audio amplifier connected to the microcontroller’s PWM output. The next revision will integrate a Digital to Analog Converter and an SD-Card slot for better quality and music diversity. A presentation video is embedded after the break and you can find the official repository at GitHub.
If you haven’t heard of the Sieve of Eratosthenes then you really need to work your way through Project Euler. That’s where I first learned about this method of finding prime numbers. You begin with a list of all numbers, find a prime, then remove all multiples of that prime from the list. The real trick with doing it on a microcontroller is to figure out how to store a large list of numbers in a limited space. The gist of my method was to use a boolean array (I call it a bit-packed array but that may be the wrong way of saying it). The details are found in my project linked at the top.
‘Why?’ is almost always the wrong question to ask around here. But in this case, I did this because I wanted to try out the Bit Banding functionality of the ARM core. These chips have alias addresses that map to a single bit in the SRAM and also some of the peripheral registers. This allows read or write access for a single bit using a single instruction. Turns out that one side effect of 32-bit architecture is having addresses to burn.