Full complement bearings



I have some long term projects that will require high speed ball bearing, related to jet engines. This is very slow because I lack a lot of tools. I recently acquired a Proxxon MF70 mill, but I still lack a lathe, though I will get progress in this project too in the next months.

Last week while discussing on twitter with @nixie_guy, we had a look at Youtube videos made by Igor Negoda (Игорь Негода, youtube, instagram), where he is doing exactly what I will need to do (relevant video at the end of the article, to avoid spoilers :p). This guy is awesome, he built a fully working miniature jet engine from bare metal stock (beware, many jet projects on youtube are crappy toys, they only spit flames when fed with compressed air but will not sustain combustion/rotation, which is a joke), and flew it in a model plane, that he also made from scratch.

What is a ball bearing

Do your google homework !

A bearing is a device that can support a rotating shaft, allowing it to spin without (or with less) friction. There are many sorts or bearings, for a jet engine we are interested in deep groove ball bearings, that will support high radial loads (forces directed perpendicular to the rotating axis), and low/moderate axial loads (forces directed along the rotating axis).

A deep groove ball bearing has two cylindrical races with a groove, and a set of balls that run in these grooves. The balls are constantly kept separated by a cage made of steel, brass, or polymer. Without the cage, the bearing would fall apart because there are not enough balls to fill the space (the goal is to reduce friction).

A 608 bearing (very usual, used in all roller blades and scooters and skateboards) has an outer diameter of 22mm, an inner diameter of 8mm, a thickness of 7mm and 7 balls measuring 5/32th of an inch (or 3.96875 mm, yes, it seems that even metric bearings have kept imperial ball sizes).

A smaller usual bearing is the 623, OD 19mm, ID 6mm, thickness 6mm, 7 balls measuring 1/8″ (3.175 mm).

Note: it seems that finding the size and count of balls used in ball bearings is not so easy, here is a good doc (National Precision Bearings) that lists the number and size of balls for a great number of usual ball bearings (and a local mirror)

Ball bearings “became popular” during the recent “fidget spinner” frenzy, but despite this I could not find a lot of interesting information on high performance bearings.

What is a full complement ball bearing?

A full complement bearing is a bearing with no ball cage, and as a consequence has more balls. In fact, the race is full of balls. This has multiple consequences:

  • Balls will touch each other when the axle rotates, which means there is potentially more wear of balls, since the contact point between each balls move at twice the rotation speed of balls. That’s why this construction is more common with ceramic bearings, and less common with steel bearings, that wears faster. There are also “hybrid” bearings, with steel races and Silicon Nitride balls.
  • No friction from the cage: the balls have more freedom to move.
  • Can handle more radial AND axial constraints (eg, a typical 608 bearing has 11 balls instead of 7)
  • Can handle a much higher speed (good for turbines!)
  • Has much less play, it runs more accurately
  • Less easy to manufacture on automated lines
  • Less serviceable, balls are not easy to remove

How to build one

Tools: small flat screwdriver, various hand tools, some large flat container to make sure you dont loose small balls

The first step is to acquire two similar normal ball bearings (here, 623) and disassemble them:

  • Remove the dust side covers
  • Remove the cages (they are usually in two parts, clipped together, but large bearings cages can use rivets)

Remove ball cages

  • Group all the balls on one side of the race

  • Disassemble the races and balls, sometimes a little force is required, sometimes it comes off without warning

You will notice that the balls in a normal bearing use around half of the race space. This is normal and required for easy manufacturing.

Clean the grease from the races and the balls with some absorbing paper.

Now we will modify the race to allow insertion of more balls.

The trick is to grind a canal on the side of the races to allow more balls to be pushed there, while avoiding too much perturbations to the races.

Measure your balls, then find a small cylindrical dremel corumdum or silicon carbide grinder of a similar or just bigger size. For a 608 bearing, balls are 5/32 of an inch, or 3.96mm. Choose a 4mm grinding tool. Smaller bearings will have balls 1/8 of an inch, or 3.17mm. Choose a 3.5mm tool.

Note: You can change the size of a bigger grinding tool with a diamond tool used to dress grinding wheels. That’s cheap on ebay. Here is a 5mm ball tool reduced to a 4mm rounded cylinder:

Now, we have to grind a cylindrical slot in the outer race, anywhere. I have used my Proxxon mill, but a handheld Dremel tool will work, too. On this image we can see my 3.5mm silicon carbide tool:Don’t grind too much, or the race will be damaged and the balls will not slide perfectly in the groove. This is absolutely critical! I made this mistake and had to discard the deep milled outer race. Also, after grinding, make sure to remove every bit of metallic dust from the races and… from everywhere!

On this image, the front ring is OK, but the back one was too heavily ground, and prevented balls from rolling at high speed. The difference is very subtle.

To help you vizualise, here is a CAD image of an OKAY cut:Balls can still slide in the races.

But this cut is too deep, it reaches the center of the race and will interfere with ball movements.Each time a ball reaches this point, it will not be guided anymore in the main race, and will hit the ground slot.

Here is a bad cut in real life:

Next, we have to mill a similar slot in the inner race (the hub). You can clamp the hub in a screw for easy handling. Again, don’t grind too much or the balls will hit the slot and won’t roll properly. The one seen below is rather deep, still okay.

Now we have to reassemble the bearing. It’s easier said than done, and you will let the balls fall a few times before finding a working method! Holding the two races concentric in your fingers, you have to fit 6 balls, one at a time, preventing the others from falling. Magnets can help, but I did not do it to avoid skicky balls. It can be done with a bit of patience. Try to keep the two ground slots aligned and in the top part of the assembly. Using a small screwdriver, push all 6 balls together opposed to the slots. Now it should be close to impossible to fit more balls, except one in the space formed by the two slots. Put a seventh ball here. The assembly should not fall apart and look like this:

This ball now has to go in the races. But it will not do that easily: if it does, that means you drilled the slots too deep, and the bearing will not run smooth. You can use a light hammer and a cylindrical tool with a small recess to push the ball in its race.

Here is a video showing an insertion: This one is WAY too easy, I was doing this on the race visible above, which has a too deep slot!

Fortunately, this deep slot also allowed me to remove all the balls from the modified bearing, which should not be possible if the assembly is well made.

When I redid this on a ring with a shallower slot, I had to use a real hammer instead of the handle of a screwdriver.

Use the same process to fit as many balls as possible, this means 11 balls in a 608 or 623 bearing. At each new step, make sure the bearing rolls correctly, align the slots, insert a ball, push it in the races with the hammer and tool. Here is an intermediate step:

And voila! A full complement bearings with 11 balls! If you worked well, you can now test the bearing by sliding it on a finger, you will notice that rotation lasts much longer than with a normal bearing. Nice fidget spinner!

If the reassembled bearing does not run smooth, there are several possible causes:

  • Dust in the races: A bearing hates dust. Especially homemade bearings with no dust shields!
  • Ball insertion slots are too deep and prevent the balls from rolling: game over, you have to identify which slot is bad and cut another one in another ring (remember, we had to disassemble two bearings, you’re lucky!)

If you plan to use this bearing in a real device, it has to be lubricated. High load prefers grease, high speed prefers oil. The balls will stick and the bearing will not run for a long time when launched with a finger.

Now there are some more details to understand!

High speed rotation tweaks

If you intend to use this bearing for a high speed application, it will not be possible. The milled slot in the rotating race will create an imbalance, that will be source of vibrations. At 200000rpm, this is not acceptable and may destroy the bearing and the device using them.

But there is an easy solution: Mill TWO slots, diagonally opposed. Do that as precisely as possible. I can do it with my proxxon mill and a rotary table. The goal is to remove the same amount of metal on both sides so the center of inertia is exactly on the rotating axis and no vibration can happen.

This is why you can see two slots, not one, on the bearing modified in the previous section.

Igor Negoda milled an opposite slot with a dremel hand tool and found this solution not quite accurate, so he used another solution, both more complex and more radical. He mounted the inner race ring on a mandrel in his lathe, and ground one full side of the race enough to get ALL balls in the race at once, but not enough so they will fall apart, Then, he installs the balls in the outer race in a holder, and presses the inner race with his mill.

Now let’s have a look at the master in his workshop

I did not invent a lot here, I merely interpreted his actions and tried to replicate them with my own means. So here is Igor’s last video (in russian with crappy subtitles) where he presents his own technique: dual dremel slots, and, finally, the lathe method!


Have fun, and post videos and pictures, in comments and in twitter, if you attempt such a build!

Future plans are coming, I have SiN balls in the mail!

Reverse engineering the Aspen Mini orange sensor


The mini orange pump and its “secondary reservoir” with the sensor wire

I want to use an Aspen mini orange pump to circulate cooling water in a Liebig condenser (it may or may not work, I dont know yet). But these pumps are just made to remove AirCon/HVAC condensates, and so they are driven by a separate water level sensor (the little transparent box).

This sensor uses a buoy with a magnet, it starts the pump when the level of water rises to a limit, and stops the pump when the level returns to normal. There is an extra high level to signal an error condition.

I need to operate the pump continuously, without this sensor or reservoir. No information about the sensor was available online, so I had to disassemble it for analysis.

The sensor is fully potted in beige epoxy, itself contained in a cylindrical plastic tube. On the pump side, the wire has a RJ11 plug with 6 contacts. The potting was quite painful to remove, but @skywodd on twitter suggested heating (I used a small lighter-like torch), and it worked quite well to soften the epoxy without damaging the internal components too much.

First efforts with a wood chisel
After most of the potting was removed

So after the potting is removed, we just find 3 hall sensors with a common power supply, and no other component, not even a decoupling capacitor. The sensors are in a SIP-3 package and have a 337 marking, which suggested the AH337 from Diodes Inc. The datasheet indicates quite a old component, the marking and package matches. The AH337 is a hall switch with an open drain output, which suggests that some simple mechanical switches to the ground are enough to use the pump.

Here are some measures I did: The supply voltage seems to be quite high at 22V DC (yellow wire, brown is ground), and the two “start” wires (red and orange) have a pull-up to this voltage. The “stop” (green) signal does not (maybe the pullup appears only when the pump is running and the stop signal is usable, I did not check). A simple ground pulse on the red or orange wire starts the pump, and a ground pulse on the green wire stops the pump.

Now I can continue my other projects.

A Simple Noise Generator

When I cannot make progres on my “official” projects, I like to try new things, experiment new techniques with simple devices (some complete posts on my other projects will come soon).

After some talks on the Electrolab hackerspace Mailing list, I had the idea to try random number generators. I came across this idea after realizing that good “really random” numbers are of extreme importance for online security, as they are used in SSL, GPG, and lots of other security algorithms.

There are two random number generator categories:

  • Deterministic or pseudo-random number generators
  • Non-deterministic or true random number generators

Pseudo Random Number Generators (PRNG)

With a PRNG, one get new random numbers from algorithms, batch after batch, by applying a given cryptographic primitive to the previous generator output. These generators can rely on encryption (AES, DES) or hashing (SHA, MD5) or other methods. Another method does not use cryptograpy but simple linear congruence relations (usually introducting specific constant values, and a modulo operation with a prime number). What these generators achieve is “deep bit mixing”, and all the mixing operations are based on the initial value used in the algorithm, the seed.

For every seed entered in the algorithm, it will produce a (hopefully) different, but unique, mixed sequence. Using twice the same seed will produce twice the same sequence, hence the deterministic name. The current system time in milliseconds is a classical seeding mechanism, since it will be different at each call, difficult to predict, and never repeat.

With well-chosen algorithms, the numbers (or stream of bits) produced usually have good randomness characteristics. But it is sometimes difficult to prove that the random sequence will never repeat, and that the bits faithfully represents a random variable with correct statistical properties. And in all cases, the produced bits only depend on the seed, which is not often desirable, since an attacker may control this seed and gain the ability to repeat the “random” sequences.

True Random Number Generators (TRNG)

A TRNG relies on a physical phenomenon to produce random values. Some examples include:

  • Voltage across a (high-value) resistor: this is thermal noise
  • Analog to Digital converter noise – conversion uncertainty (this method is used in the FST-01 and the NeuG project)
  • Avalanche and Tunneling noise in a PN juction (diode, transistor) in breakdown conduction mode
  • Atmospheric noise produced in the ionosphere, can be acquired by an FM radio receiver tuned between stations (this is the method used by the random.org website, (which I don’t like it because it can be attacked by transmitting signals on the tested frequency, which has to be kept secret. Of course alterations in randomness will be detected, but this amounts to a denial of service attack)
  • etc.

These generators usually rely on an analog core. A Schmidt Trigger gate can be used to produce a digital data stream with randomly spaced edges. A simple microcontroller will then be able to sample this signal, and deal with it in software.

It is then necessary to:

  • Cancel any generator bias with a “cleaning” algorithm such as the Von Neumann one, that will get raw random bits in pairs, and discard pairs where both bits are equal. This means that the data throughput of such a generator is not constant.
  • Make sure that the random properties of the signal are enforced. Mean, variance, autocorrelation, stuck bits and repeated patterns have to be checked for in real time.
  • Emit data in a usable format (usually a serial data stream)

Some conclusions can be drawn:

  • One has to make sure of the quality of the noise to get sufficiently random numbers
  • The random data throughput is not unlimited! But many RNG can be coupled to used to increase it.

A first device

To apply these concepts, I decided to start with a small basic project : a noise generator. Lots of designs are available on the web, I decided to use a P-N transistor juction, just like this one:

Noise Generator Schematic
Noise Generator Schematic. Source: David Eather, Silicon Chip Online, 2005 ( http://archive.siliconchip.com.au/cms/A_103659/article.html )

Yes, the collector is not connected! This isn’t a mistake! Only the B-E junction of this transistor is interesting. It is biased at 12V, which is over the maximum VBE voltage from the datasheet. This does not destroy the transistor, but produces avalanche and tunneling conduction, which amounts to noise. A simple diode could have been used, but it would have required a much higher voltage, since diodes are designed to sustain high reverse voltages.

Here is a picture of the build:

Noise generator #1
Noise generator #1 – Photo by Sebastien F4GRX

This is one of the simplest circuits I’ve ever built.

For the 2N2222A, the VBE max is 6V, so 12V are enough to produce noise from the BE junction. The generated noise has a 1V peat-to-peak amplitude, which is a correct value for injection into my PC sound card. When listening to that signal, one will hear the classic “psssshhhh” hum, just like the signal between 2 radio stations. Here is a spectrum diagram produced by Audacity:

Generated noise (linear frequency scale)
Generated noise (linear frequency scale)

All audio frequencies are present in this signal, which is a characteristic of “white” noise, just like white light contains all wavelengths. In the high frequencies, I’m suspecting a decrease of amplitude due to filters in my soundcard, and in the low frequencies, we see a lower amplitude, probably caused by interstage capacitors and the soundcard DC-block, however there are a few peaks. Here is the same spectrum with a log horizontal scale, which produces a zoom on the lowest frequencies:

Generated noise - Log frequency scale
Generated noise (Log frequency scale)

All is not so good! All of these peaks are multiple of 50Hz, which is the mains frequency here. So I’m picking up noise from the power supply! The unconnected collector transistor lead may also be picking signals.

This is very bad for random signals, because this basically means that my random data is mixed with a few pure sinusoidal signals, which means that a part of the signal repeats itself every 20 ms. This repetition is easily noticed on an autocorrelation plot, which characterizes similarity of a signal with a delayed version of itself:

Autocorrelation Plot for the generated noise
Autocorrelation Plot for the generated noise

According to the autocorrelation plot, this signal is not random at all. This is just a very noisy sinusoidal signal!

Here is what I plan to do for the future of this project:

  • Shielding the noise generation transistor so that the collector lead does not pick up ambient signals. Also, shielding the whole generator so that no part of the device picks up noise too.
  • Use a battery to power the generator, and do more measures, to check that the 50Hz noise really comes from the power supply.
  • Optimize inter stage capacitors to make sure the noise bandwidth is as wide as possible
  • Add strong power supply filtering to cut off external influences. This will be a very,very low pass filter, with a series association of a low value resistor (in fact, as high as possible to avoid heat, provide sufficient voltage to the transistor, while keeping the filter cutoff frequency as low as possible) and a choke inductance, followed by several bypass capacitors to the ground, in a paralle association of multiple components from picofarads to hundred microfarads.

To conclude, this was a fun experiment. I feel that some simple optimizations will bring me a clean noise generator, that will be able to enter the construction of a reliable true random number generator. I have lots of ideas, but for the moment, 3D printing is calling me!

Update Sep 19, 2013:

Jon remarked that the sound card acquisition could be the cause of the 50Hz Signal, so I made a new recording with audacity, with the same noise generation device attached, unpowered. Here is the result:

Signal résiduel de la carte son
Signal résiduel de la carte son

Yes, that’s a very nice and strong 50 Hz hum 😀 The harmonics are generated by a combination of this signal with the noise generator. Time to drop this sound card if I want to continue serious measurements… Thank you, Jon!

Photo by Sebastien F4GRX

Some packages received !

Aaaand it’s done. I have it. I received my eShapeOko. The only thing now that prevents me from mounting it is the threading of makerslide holes; this will be done on tuesday evening by my very good ham friend F1BHY. Many thanks to him, I’m very grateful for its dedication for his friends.

Pièces eShapeOko
eShapeOko parts

I also received new TRF7970 samples from TI. These are using QFN packages, and it’s quite complex to solder them properly the first time. Last time, I added too many solder paste and I ended up with components floating in a sea of fused solder. I could remove most of the surplus solder, but I fear that these components are short-circuited between the package and the PCB (only X-ray analysis could confirm that), and if they are not, I fear that I fried them with the hot air rework station.

These components will take place on a SeeedStudio board, which has tinned traces. With my previous experience soldering these components, I now believe the small solder quantity already present on the board is enough to solder the components correctly. All I need is flux, which I did not have before.

When it compares to QFN, soldering TQFP packages (for the ARM chip) is a piece of cake 😀

Now that I have a machine to work on, I’ll update you more often. Please note that I also started a build log at the ShapeOko forum. This forum is really interesting and contains a lot of wisdom, interesting upgrades and information about what to do and avoid. One of the most interesting mod is the replacement of the normal Z-axis screw by an “acme screw” with a trapezoidal screw profile. This sort of screw has a larger pitch, so the Z moves can be accelerated, which has a positive influence on the global speed of the machine (the Z axis limits the achievable speed on all other axes).

[eShapeOko] First motor steps!

In the last days, I spent all my free time on my CNC project, on the road to a 3D printer. I realized that the eShapeOko would not have enough room on the Z-axis to allow me to print big 3D objects, so I will continue on this project with the CNC goal in mind, and then, I will consider the 3D printer I build out of it as a “repstrap” (bootstrap printer) to build a full reprap later. Here is a list of items that I already marked as “done”. I still have a Project sheet to track my actions, and all goes as planned. Here is the planning as of August 25.

  • I received the stepper motors.
  • I ordered and received the stepper drivers from Pololu (model DRV8825).
  • I got back the Arduino Nano i had lent to @hugokernel .
  • I managed to compile the grbl firmware for the atmega328, then to upload it in an arduino (that was easy, but I had never done that before. Thanks to @Skywodd and others on Twitter for their precious advice!
  • I completed the wiring for the driver board.

And to complete this electronics step, I tested the board on Sunday afternoon. The board works as expected, no glitch, no wiring error. And the motors are now spinning in response to g-code commands! Here is a small action video of the board:

Not very sexy, but you can see the putty interface to grbl via serial port, the motors accelerate, spin, and slow down. I wired everything on a veroboard (pads and holes), so the wiring process was very fluid, with plenty of space to lay out copper tape for power buses and wirewrap wire for logic signals. I still have room for the spindle controller (just a big MOSFET I think).

Well, that means I’m ready to control a 3-axis CNC! I still had time this afternoon, so I added a second hand Lantronix serial-to-network bridge, so that I can connect to the board via Ethernet. This will be very useful given the position of my CNC in my lab. This also means that any computer in the house will be able to command the CNC, even without a short USB link.

eshapeoko controller recto
Controller board, comoponent size.

eshapeoko controller wiring side
Controller board, solder side. I used copper tape and AWG30 wirewrap wire.

One last important thing: the Pololu modules HAVE TO be tuned for the correct current. When they ship, the variable resistor is in its default position with a taper at 50%, which means a 1.7 Volt reference voltage, which translates into a 3.5 A chopping current. This is too high for most motors, and without the 2A fuses on each one, I would not have known it, with a risk to burn both motors and drivers.

[Project] My CNC / 3D Printer

Okay, the circuits for the NFC module have been sent to SeeedStudio, thanks to them for their efficient and good service: they still remember after one year that they had forgotten to send me a part, and just added that free of charge to my order!

Before the PCB come back, I have a little free time. In the train, instead of playing with kicad, I can make progress on my ebook for french beginners, but I also want to start a big project, something that will be very useful for me in the next years:

I need a 3D printer.

No, what I really need is a CNC router.

No, really, I can’t make my mind.

So both it will be.

I have choosen the eShapeOko. This is a good platform, not so expensive, quite robust with the correct options, and universal. I will be able to convert it from router to 3D printer, to laser cutter, to anything I want, by just swapping the spindle. I will start with a dremel tool, but I’ll then build an extruder and a laser head.

I’m aware that it’s a big project. At the Electrolab Hackerspace, I see lots of people spending a lot of time to ajdust their printers before they can print anything serious. I know that a lot of work is waiting for me.

But that’s okay, with my DIY ambitions, robotics, and such, having a rapid prototyping tool at home will be invaluable. I will choose all the good options available with the eShapeOko kit, so that I get the most robust machine. I want to be able to work wood, plastics, and maybe aluminium, even if this requires the minimum speed.

I’m also ready to make this machine available to my maker friends that need to print and route things. I’m not ready for that yet, but I know that giving a hand to my friends is what I want to do.

Here is what I will buy after I get my birthday present (:D) :

  • eShapeOko kit with options: double x axis, double y drive, extended length, nema23 motors
  • 4 nema23 motors (now ordered)
  • Pololu motor drivers hooked to an arduino to run grbl
  • A Raspbery might be introduced somewhere.
  • The spindle will start with my current dremel tool, that will be ok for wood carving and cutting.
  • A work table, probably 50×60 cm, made with thick wood and everything required to store the unused spindles and accessories.
  • A plexiglas case, to prevent the dust from going everywhere in our flat. And a vacuum cleaner port…

This setup will allow me to cut and drill MDF boards, which is the target number one.

Later, I will pursue target no. 2: 3D printing, which will require a lot of additional work and parts:

  • hotplate
  • extruder with mounting option that will fit where the spindle goes. I plan to hook it to the main Z rail. I will probably ask some help to my friends at Electrolab.

I already have additional ideas: a more powerful spindle to mill aluminium, gearboxes to increase motor torque and resolution, I will have more!

Of course I will share all the next steps with you here. Let’s get to work!

[Project] Hackable NFC module

NFC (Near Field Communication) is a contactless communication technology used for almost all contactless things, transit cards and (recent) contactless bank chip cards to Nabaztag rabbit tags. The radio signal is modulated on a 13.56 MHz carrier, which is an ISM band, just like the wifi 2.4 GHz or sub-GHZ 433.92 MHz. Apart from NFC, this frequency is used for RF plasma technologies, used in Physics, semiconductors industries, etc.

I noticed a lack of hackable and usable NFC devices.

The only one I know is OpenPCD, which uses an NXP contactless frontend, without NFC capabilities. This project is therefore an experimental contactless card reader, with hackable firmware and card emulation capablities (at least, the datasheet says so).

I recently noticed the TRF7970A from Texas Instruments, which is not only able to work just like the NXP chip (card reader mode or “initiator” in NFC slang), but also to use the “peer to peer” and “target” modes, with possible card emulation. The chip is packaged in a damn small QFN, but it’s really worth evaluating, because of its availability and functions. An evaluation board is available from TI, but 1) I don’t like canned evaluation kits, 2) it’s quite expensive and3)  its antenna is not really suited for card emulation. So I’m building my own board.

By RTFMing all reference documentations from TI, I was able to develop my own evaluation card, in a 5×5 format suitable for SeeedStudio manufacturing.

The first board is an suitable loop antenna with 50-ohm matching circuitry as recommended by the app notes. The components values will be deduced from (magic but provided) formulas, but this requires measuring the antenna inductance using a network analyzer. I will come back to this chapter later.

Schéma antenne
Antenna board schematic

This antenna uses a design by NXP with multiple turns. This allows me to get a very symmetic, low capacity antenna (traces are spaced apart, just follow them!) with the connections on the same side of the loop.

Circuit de l'antenne
Antenna PCB

The second board is the core of the reader. It has a matching section to adapt the NFC driver amplifier to the 50-ohm coax wire to the antenna board, the TRF chip, an SPI link to a Tiva C microcontroller, the same kind as what is used on the Stellaris Launchpad boards. Here are some specs:

  • Texas Instruments TRF7970A NFC frontend
  • UFL Coaxial Connector to the antenna
  • ARM Cortex-M4 Tiva C Series TM4F123 Microcontroller
  • 256k flash
  • 32k RAM
  • Device USB port (OTG not wired, I’ll play with that somewhere else)
  • I2C port (would enable simplified control via another microcontroller)
  • UART
  • JTAG port on 10-pins 1/10″ header (standard ARM pinout)
  • 20 available GPIOs on a 1/10″ pitch header
  • 5V power input, via USB or external supply

Schéma frontend NFC
NFC frontend Schematic


PCB Frontend NFC
NFC Frontend PCB

I managed to severely limit the number of PCB traces on the copper side, so that the ground plane is uninterrupted on the whole bottom of the board. This is important for thermal dissipation and noise immunity.

In the next week, I will send both circuits for manufacturing at SeeedStudio, I will have 10 of each. If you are interested to build this project, please ask me, I can sell a set to you if you promise to build it, use it, and not let it collect dust in a drawer…

On the build difficulty side, this board has a TQFP chip (easy to solder) and a QFN one, which is not very friendly. I have access to a hot air station via a friend, that will be very useful to solder the bottom thermal pad. If you’re a hacker, you can solder that with a fine-tip soldering iron.

On the software side, I know that it will take a long time to get a decent reader firmware. I hope to get some help with the coding. I plan to release the software as open source, as well as the hardware, as soon as I have proved that the design works. On the radio side, the Internet is full of interesting documentation.

The low level libs will be based on my current freestella project, that I will publish as well when I start working on this software. At the moment, I have CPU init, GPIO and UART core running fine.

I’ll continue to communicate on this project as it evolves, both here and on twitter.

Now please tell me your thoughts: what would you do with such a device?

Code::Blocks 12.11 Released!

Code::Blocks 12.11 was released yesterday!

Code::Blocks is a very lightweight and easy to use IDE. You can use it with a large number of different compilers. I’m using it daily with:

I’m strongly recommending it to you if you’re in search of something lighter than Eclipse.

You can download it on the project page.

And here is the official forum thread.

Code::Blocks main UI
Code::Blocks main UI


MOD music player on the StelPad

Do you know MOD music?

It’s a lightweight music format, intermediate between sampled/recorded music (MP3, WAVE) and synthetized sounds like what you find on the GameBoy and other old school game consoles. The file contains sampled sequence for each note, and the mod player plays them in sequence according to rules. This avoids a lot of redundancy for similar notes. This sort of music was very successful when computers were not powerful enough to play fully sampled music.

And now, this guy made a MOD player for the stellaris launchpad!

Congrats to Ronen K. !

Source : Hackaday


Something is coming…

These last days I spent a lot of time writing low-level code for the Stellaris Launchpad.

I made progress, I could understand all the details required for the board and CPU startup.

I’m not publishing anything yet, since it’s not even alpha quality. Everything is a mess for the moment, I need to split things in separate files, add comments, etc. But I plan to release my code as soon as possible.

And now, I had to find a real use for this board. I have several ideas for this.

The first step is to get a hardware platform that I can hack to add components, solder, etc.

So here it is. I found a small part of veroboard in one of my drawers, and two in-row connectors, so I hacked a quick vero board booster pack! The total cost is zero, since I already had “everything”.

Here are some pictures, obviously I now have to add components on that 🙂

Veroboard Booster Pack
Vero board booster pack Top view

On the bottom side are the connectors, it’s a bit tricky to solder them, I did it while they were plugged in the board, and I used a flat surface to have them just on the right position while I soldered them.

Veroboard booster pack Bottom view
Veroboard booster pack Bottom view

And now I suggest that you subscribe to the RSS feed to see what I’ll do next.