The Olimex PIC32-Pinguino micro Review

PIC32-PINGUINO
The Olimex PIC32-Pnguino with it's large DIP form factor

Specs:

  • Manufactured by Olimex
  • Price ~$25 USD
  • Pic32MX440F256H 32 bit Microchip MCU
  • 256K of Flash, 32K of RAM
  • Built in microSD slot
  • Operating at 80 Mhz
  • USB On-the-go
  • Geared for Pinguino IDE

First Thoughts:

I haven’t used this product very extensively yet so some shortcomings are awesome points may be missed. I have played with it for a couple of days though and read through most of the libraries and documentation. This product is from Olimex in Bulgaria and to be honest, I’m a bit of a fan of Olimex. Olimex has built some interesting devices such as the DuinoMite and you can really tell that these guys really like what they do. They spend the time and effort to make the boards as good as possible.

Anyways, some thoughts about this board. It’s a pretty neat little board for both prototyping and perhaps even fitting it in to a product. It has a small form factor and would happily fit into a larger board for use in a larger product. The built in microSD port and the USB otg interface allows for some neat things to be made. The pinguino IDE isn’t too bad either. The libraries are reasonably complete and the device works quite reliably with the software as I encountered no bugs or glitches and programs worked as expected.

Pros:

  • Small form factor
  • .1 dip pinout which is good for breadboarding
  • Good price for a 32 bit device like this
  • Well built
  • UEXT port for other Olimex peripherals is a nice choice
  • Fast!

Cons:

  • Uses small ICSP port which you must buy from Olimex. I know it’s done for size and not simply to sell a cable but it’s still a bit of a drag.
  • DIP width is too wide to fit on a single breadboard, you’ll need to use two breadboards and straddle it over them.
  • UEXT connector is taller than everything else on the board. Not a huge issue but most people won’t use the UEXT connector and the header could interfere inside an enclosure.
  • like with most 32 bit processors, the pins are not 5V. some of the pins may be 5V tolerant but this simply comes with the territory.

Final Thoughts:

I like the stuff that Olimex builds. They give a shit about what they make and it shows. This type of device is pretty good for almost anyone with a reasonable amount of skill wishing to prototype anything you would normally do with an Arduino. For the price, you can’t beat these guys. In order to get ahold of one you can go through Mouser or look at the Ebay distributor (olimexery). Olimex themselves seems to sell it but they don’t seem to have a slick store setup to do purchasing.

Building a quadrature generator with a PIC10F222

I need to start my new project with my digital RTJ gage and in order to do so I need to use the quadrature decoder chip LS7166. I could use the actual encoder I’m going to use for the project but it is large and unwieldy so I decided to build a generator for it.

The concept is simple, have a knob that produces no waveform in the middle of it’s stroke and as the pot deviates from the center, the speed of the signal increases also changing direction based on which side the knob id turned to. I couldn’t use a PIC10F200 much to my chagrin because it doesn’t have an ADC module built in, the PIC10F222 does however. It still works within my concept of low-end mcu’s doing valuable jobs since they’re still only 55 cents in quantity, from digikey of all places.

Overall, it’s a pretty simple design.

  • GP3 -> unconnected
  • GP2 -> Channel B out (Digital output)
  • GP1 -> Channel A out (Digital output)
  • GP0 -> 10k Potentiometer in (Analog in)

Dead simple. I did program a bit of a dead spot in the middle so that one can stop the quadrature from advancing quite easily. I put 2 LEDs on it to indicate that it is in fact working. Anyways, here’s the source (again it’s in Oshonsoft BASIC)

10f222 quadrature src.zip

I didn’t bother drawing up a circuit diagram since it’s such an easy circuit but here’s an additional image if you’re really curious. keep in mind that the board I’m using is Stripboard (aka Veroboard) so the traces run along one direction

Now for the fun challenge of making a simple serial interface MCU to the LS7166.

The underrated PIC10F200 (and 202/204/206 as well)

Sitting around looking through my collection of parts during a brief stint of illness I came across my stash of 30 or so PIC10F200’s. These were my entry into the world of microcontrollers. Granted I wasn’t very good at electronics (and probably still not very good) and I found the lowest end microcontroller i could in order to understand them on a more fundamental basis. I found all of the peripherals on other microcontrollers to be a distraction and complicating factor from what I wanted to learn.

batch of 10f200's
My little batch if PIC10F200's, I got more in tubes

Nowadays, delving into 32bit architectures and whatnot, I’ve forgotten about the little MCU’s. Thinking about it they’re still incredibly useful in a myriad of circumstances. Only costing 59 cents or 30 cents at volume, and running at 4Mhz internally these have an amazing range of uses.

Consider the lowest end of the low end, the 10F200. Now it only has 256 words (12-bit wide instructions) and 16 bytes of RAM. It has 3 I/O and one input only pin. Now in a world of Arduinos and large pin count microcontrollers running at 40+Mhz , it may seem like this thing has no use but I beg to differ.

Today I was tinkering around with the little unit today and I was recalling some of the things I imagined I could do with the limited hardware. So today I wanted to see how well it could produce sound. Now this little thing is trivial for most MCU’s, simply output an appropriate square wave. My goal though was to produce a warble and program it in a C compiler. This was very easy and achievable.

The little sound circuit
The little sound circuit I was working on... using a LM2904 for amplification.

Now, granted, it’s not a very complicated circuit, but I found it to work admirably. The compiled code took up only 36% of the ROM and 38% of the RAM. That’s with 2 16 bit counters and an 8 bit function variable. it also used delay functions. Of interest to note though, I tried using floats, no go, the libraries filled up the ROM like boom!

Anyways, here are some used I dreamed up for the PIC10F200 over the years. They are mostly in support roles but I think they’re equally as useful as any other role within a project, especially given the MCU’s small footprint and low price. The applications I’ve thought up are as follows, keep in mind we only have 3 IO and one input.

  • A dice game: I actually created a prototype of this some time ago based on the idea that this would be my business card. It was simply a set of multiplexed LED’s (six in total) on a PCB that would show like the face of a dotted die. one input was used and the other three were for the IO. Bringing the IO to an input mode would turn off the leds.
  • Two button debouncing: Using a microcontroller for debouncing has been my favorite way to debounce inputs on a button. By using an internal count on the MCU you can simulate a charging/discharging capacitor and provide threshold values to simulate a ‘dead zone’
  • A little robot: Using the two output for motor control and the two inputs for sensing, you could potentially make a simply robot. the only problem with it may be the limited ROM for logic routines, but I suppose that’s the challenge.
  • Timer Lamp: The 10f200 has just enough IO for two buttons and two outputs (I = On/off, I=Timer function, O= LED out, O=Relay for lamp). my old project with a timer lamp was done with a PIC16F505 (a limited MCU in its own right) but the 10F200 would’ve done the job quite admirably.
  • Dimmers on AC lamps: This example is used by microchip extensively to promote the device, it is one of the many uses of this device.
  • Sound generation: Like I did today, it seems like a pretty worthwile use of the chip. Cheap and easy. small size also helps with the surface mount varieties.
  • One-wire wake up: You could use it as a separate node to watch a data line for signalling on the one-wire protocol. I have used this to fire up LED’s in a specified pattern and duration. With the SOP package tou can solder it directly to the LED and data line in a bizzaro single package.

Anyways, the uses are endless for such a limited but inexpensive device. I have no idea why such a limited device captivates my imagination but perhaps it’s the small size that makes it interesting and uncomplicated design and use.

So, for your troubles of reading a wall of text. Here’s a neat photo of an old diode for your perusal.

Neat picture of a diode
A bonus picture of an old school diode. Gotta love the little spring inside holding the junction together.

New Viscometer Board

Well, my design finally came to fruition from AP Circuits and I can say I’m quite pleased with the results. The overall appearance of it is really nice, for me at least.

Interestingly enough, I had some problems and made some mistakes. I ties the power regulator input into the motor – terminal… weird. Also, I didn’t tie AVdd high, or to anything.

Remember, programming a pic, remember these things

  • Use caps across power
  • tie ALL Vss and Vdd to their respective rails
  • tie AVss and Avdd to their respective rails

I kept ketting a “Error programming at address 0x000000” error and it turned out to be the Avdd was disconnected.