You are here

PSoC Creator News and Information | Cypress Semiconductor

Feb 17, 2017

Theremin with Cypress' PSoC Analog Coprocessor!

Cypress's PSoC Analog Coprocessor MCU has been used to create a Theremin instrument!  

This project was developed by , who is an excellent maker in the Hackster.io community.

So what is a theremin? A theremin is an electronic musical instrument that does not require direct physical contact on the instrument, it uses proximity sensors to detect a nearby physical object, such as your hand.

The CY8CKIT-048 PSoC Analog Coprocessor Pioneer Kit and CY8CKIT-024 kit were used to develop the theremin instrument.

For the implementation, Cypress' best-in-class CapSense® is used to drive the proximity sensors on the CY8CKIT-024 board, which allows for distances of up to 10cm,

as well as programmable digital and analog resources within the PSoC MCU to create the tone and pitch for the instrument.

The on-board proximity sensors are used to adjust the tone and volume of the instrument, while the internal Universal Analog Block (UAB) is configured as a 13-bit DAC

for creating digital audio and a Timer/Counter/PWM (TCPWM) is used to create the desired tone for the instrument.

 

For more details on the project,  check out the PSoC theremin creation here!

Feb 16, 2017

Cypress Maker Lab - The burns have healed

This weekend I took the plunge and soldered some headers onto the motor board and the PSoC prototyping kit. I ended up choosing the CY8CKIT-059 for no other reason than I already had one (and had forgotten to order some more). So I was a little worried that I would burn up the chip and look a bit silly while I wait for a replacement. The device on that kit has oodles more CPU power (ARM Cortex-M3) and peripheral resources then I am going to need but is still only $10.

 

It is fair to say that I am not a natural "solderist". But I did actually manage not to set anything on fire or lose any flesh. I watched a video on the Adafruit site and read some how-to sites. The smart move would then be to practice a few times but let's be realistic - if I was smart I would not be doing this. The Adafruit guy said the joints should look like tiny Herschey's Kisses… Mine do not look like that. His are like cute, little, slightly concave cones. Mine are a mix of blobs, pancakes and stalagmites.  I won’t show you close up photos of my work - forgive me, it's just too embarrassing - but I will tell you how I used PSoC to prove they were all good!

 

First, I checked the motor. All I wanted to do there was to use a breadboard to wire up power and logic to drive the dog wheels. Here is a picture of how I wired it up.

 

Here are some descriptions of the pins, which are documented in more detail on Adafruit's excellent site.

The power is applied to VMotor because it is protected against wiring up the source backwards. The VM terminal is used as an output for the logic side of the board. In real-life it looked like this. Spinny wheels!

You'll notice that I use the same source to power to the motors and also for the logic. That limits me to 5V or I will start blowing stuff up. I toyed with the idea of having a high voltage source for the motor and a low power choice for the PSoC. But I figured that I am not making a sports dog here - and this test pretty much confirmed that I can get all the speed I need from 4 AA batteries and the PSoC kit is going to only steal a tiny fraction of my total power budget. Oooh, "power budget", doesn’t that sound fancy! Now you might be thinking that 4 AA batteries give me 6V and I am asking for trouble but I solved that quandary with rechargeable batteries. These run at 1.2V and so I am at a nice comfy 4.8V total.

On the logic side I drove one side of each H-bridge high and the other low for full speed operation. I connected AIN1 and BIN2 low and, conversely, AIN2 and BIN1 high so the wheels run in the same direction. The SLP is held high because it is basically an enable pin, which I will figure out how to control from PSoC in the next blog. The FLT is a fault signal that can be generated from the board which I am ignoring for now in keeping with my general devil-may-care attitude!

The next step was checking the PSoC kit. I soldered 12 pins onto both sides of the kit. Two of the pins are for power and ground and the rest are for me to play with. Did I solder them all correctly? Well, clearly not, but did I do it just about well enough that the PSoC runs and the I/Os work? PSoC to the rescue! I thought about writing a program that reads a pin and either lights or extinguishes the LED on the prototyping kit. But running that 24 times would be dull so I created this PSoC Creator schematic, which lets me test 8 pins at a time so I only had to make three versions to test all the pins.

I named the pin components with the physical pins they will be connected to so that I would get the mapping right. I also configured them to have a pull-up resistor so that the NAND gate inputs are driven low when I connect the pin to ground (it’s safer than pulling the pin lower and connecting power). If I connect any pin to ground then the NAND outputs a 0 and the active-high LED turns on. No C program needed. The logic '1' sitting in the place where P2_1 should be is there because that pin is actually wired up the LED, so I am just holding it high (off) and not testing input on that pin. I programmed this into the PSoC kit and verified that I am a soldering superstar in a few seconds. No-one was around to cheer, but I know it was a pretty awesome moment.

 

 

So now I know that I have hardware that works. Next time I shall assemble the dog and get into the actual PSoC design that will drive the wheels at less than full speed…

 

Feb 05, 2017

Cypress Maker Lab - Oh dear, the parts arrived

Barc, the robot dog, arrived the other day. Well Barc in pieces really. I got the car kit and the motor board and some assorted bits I do not yet know if I need. Things like a solderless breadboard and some breakable header pins (that's break-apart-able, not breakable by the way).  I already have some PSoC prototyping kits which will be great for this project because they are small and I can use it with the breadboard. I started by unpacking the car kit.

Adafruit Mini Robot Rover Chassis Kit - 2WD with DC Motors

My first surprise was the total lack of assembly instructions. I had braced myself for an evening of inserting tab A into slot G plus a lot of frustration and swearing. Maybe I have just bought too much flat-pack furniture in my time? But it turns out there really was no need for instructions. You would really have to struggle to get this wrong. There are online videos at Adafruit which are good - but they really just reassure you that you are doing things in a sensible order, as opposed to explaining a tricky assembly process.

It broke down into four steps. First, I attached the motors to the main body of the car, each motor requiring a pair of nuts/bolts to fix them securely onto the cut-outs on the side of the car. Next, I slid the tires over the wheel rims, pushed them onto the motor spindles, and attached them with a bolt. At that point you can just bolt on the front caster wheel and you have a serviceable base for your robot. There is also an "upper deck" that you can attach to the main body of the car with a few bolts and a pair of metal holdy-uppy things (sorry, I do not know the real word for these inch-long bits of metal - but they hold up the second story so holdy-uppy things seems as good a name as any). Note that the picture, above, does not show the holdy-uppers or the screws that go with them, but they are included in the kit.

Barc from below, showing the motors fixed to the chassis

Barc from the side, showing the upper deck

The whole process took about an hour. It would have been ten minutes if I were not simultaneously watching sport on TV, snacking on hummus dip, and could be bothered to find my glasses. I do not actually NEED glasses, you understand, I just use them when I want to see things. So, yes, you can assemble this thing with your eyes (almost) closed. The only step that was not completely obvious was that the bolts for the motors and wheels are different. The wheel bolts have a tiny flange on them to hold the wheel securely. But this is not a real complaint, I think I just wanted an excuse to use the wonderful word "flange". Try saying flange without really over-emphasizing the "ange" part. It's impossible!

Now, of course, we start getting into the difficult part - the actual engineering thing. The plan is pretty simple. I shall drive the motors to move him around  from the PSoC and use either PIR sensors or CapSense proximity detection to figure out when a friendly human is nearby. When he "smells" a distant hand, Barc shall bound forward to say hello. Get too close and he will back off (possibly growling if I have time to add a buzzer).

PSoC Prototyping Kit with programmer and breadboard-friendly pinout

The next step is to fix legs onto the PSoC kit and the motor board, then put them on the breadboard and wire them together. I'm going to have to break out a soldering iron, and they scare me. Once at high school, a long, long time ago, I tried to solder something. I think it was a guitar amplifier because that is what kids made back then. It was a miserable experience that ended in total failure. I just do not have an affinity for it and I am pretty sure I am going to have a similar experience this time.

But there is no backing out now. Next time I shall post the humiliating results of my soldering exploits and see if I can make the wheels turn…

 

Jan 30, 2017

Cypress Maker Lab - Barc, the Robot Dog

I did a very silly thing last week. I committed to making a new demo for the Cypress Maker Lab at Embedded World (Nuremberg March 14-16). At these shows we do live demonstrations of how to build embedded applications like robotics and IOT. The live part is easy. We get good attendance at our shows and have some laughs with the crowds (and sometimes upset the neighbors a little bit). The tricky part is that I said I would create the new demo from scratch - and I really don't know how to do it.

IOT Expert, Alan Hawse, waving his arms at people at Electronica 2016

For the last couple of shows I have shown a robot car following a line of electrical tape. It works great - and I've blogged here and there about how to manage the array of photoelectric sensors - but the car was a one-off build and I am tired of following lines. Oh yeah, I also drove the car off the table at the last event and the less said about that the better.

My new robot needs to be tougher and a bit more interactive. A bit more fun to play with. I want some awareness and personality. I want a robot dog! And since I am "Building Another Robot Car" I shall call him Barc! Barc is going to be able to detect your presence and follow you. Or back off if you scare him by getting too close to his nose.

I shall build Barc with off-the-shelf parts from the usual maker sites and a PSoC prototyping kit. I am not about to 3D-print a dog's head for the "car" though so I will buy a bare-bones robot kit. I have chosen the Mini Robot Rover Chassis Kit https://www.adafruit.com/product/2939 from Adfruit. This kit comes with the chassis, motors, wheels and battery pack, which should minimize the amount of stuff I don’t know I need yet. Yes, he will be a wheeled dog - you don't see many of those. The kit does not have the microcontroller board or H-bridge motor controller or any sensor add-ons though, which is good, because those are the parts I want to build using the unique capabilities of PSoC.

So, the order has been placed. I've never done this kind of thing before. The boss is expecting a dog. I need to learn how to solder…

Jan 20, 2017

PSoC Creator 4.0 Update 1 Released!

Users of the Cypress Update Manager will already have been notified of this but we just released an update to the PSoC Creator 4.0 release. It is a small update – the tool itself is unchanged – but we added three new Components.

For BLE the big change is an update to the software stack. There is a section in the Component datasheet that details all the changes. In addition to that are a number of other updates, including the Automation IO profile, a software interface to HCI with three new functions and an application callback event, and security updates like a strict pairing option that allows the device to use specified security settings during pairing or to reject a pairing request if the security requirements are not satisfied.

The CapSense update improves support for gestures and the emulated EEPROM adds an error check for attempts to write to the last row of flash memory.

In addition, all related code examples were updated to accommodate changes to these Components.

If your Update Manager does not prompt you to install this software you can download the installer program from cypress.com/products/psoc-creator-integrated-design-environment-ide.

ALL CONTENT AND MATERIALS ON THIS SITE ARE PROVIDED "AS IS". CYPRESS SEMICONDUCTOR AND ITS RESPECTIVE SUPPLIERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY OF THESE MATERIALS FOR ANY PURPOSE AND DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THESE MATERIALS, INCLUDING BUT NOT LIMITED TO, ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL PROPERTY RIGHT. NO LICENSE, EITHER EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, IS GRANTED BY CYPRESS SEMICONDUCTOR. USE OF THE INFORMATION ON THIS SITE MAY REQUIRE A LICENSE FROM A THIRD PARTY, OR A LICENSE FROM CYPRESS SEMICONDUCTOR.

Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms and Conditions of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms and Conditions of this site. Cypress Semiconductor and its suppliers reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.