Revised thinking on STC chips

I have successfully implemented a few projects on the STC 15F104E, a Chinese 8051 architecture MCU.

STC15fF04EThe chip includes EEPROM, and some flexible extensions to the timers which potentially make it more useful than a standard 8051.

I have previously observed that the documentation is poor, and the programming tool is poor.

The project that led to the latest observations was an attempt to implement RC PWM – ON/OFF switch originally on one of these chips as it contained sufficient resources to suit the application. One of those resources was an +/- edge triggered INT0.

The code worked fine, but for only a short and variable period. Essentially, the the main loop was executing fine, the chip stopped triggering the interrupt service routing for INT0 after a variable time from 10s to 1000s… but it ALWAYS stopped working. Cycle the power and the same thing is observed. Continue reading Revised thinking on STC chips

RC PWM – ON/OFF switch

This article describes a remote ON/OFF switch which uses an RC receiver and adapter chip to convert the RC PWM signal into an ON/OFF output. (Suitable RC transmitters are on hand.)

The immediate application is for remote ON/OFF PTT or KEY of a transmitter for field strength testing at various locations.


Remote control hobbies have long used a multi channel digital proportional protocol for control of planes etc. The simplest multi channel receiver has an independent PWM output for each servo.

The PWM signal is a 1000-2000µs pulse with a repetition rate from about 50Hz up to 500Hz or so, the duration of the pulse conveys the information.


The converter chip is a ATTiny25 MCU with firmware that monitors the PWM stream and provides ON/OFF and OFF/ON output pins. For the immediate application, the ON/OFF (or non inverted) output drives a 2N7000 FET with ‘open collector’ output suited to the PTT and KEY lines of most modern transceivers.

The firmware ignores PWM signals with duration outside the range 900µs to 2100µs, and switches ON at 1600µs, and OFF at 1400µs to provide some hysteresis. If PWM input is lost for 125ms, the output will fail safe OFF.

rcsw01Above is the schematic. The 2N7000 is good for 60V, can handle up to 100mA without a heat sink, and had a body diode to absorb transients if the load is a relay. Continue reading RC PWM – ON/OFF switch

Trial of prototype stand alone GPS logger

An upcoming project calls for a stand alone GPS logger.

The requirement is for a GPS stream that allows correction using RTKLIB, but this trial is of a lesser GPS as proof of concept.


Above, the equipment consists here of a Ublox NEO-6M based GPS module (~A$15 incl on eBay) at left, an Openlogger (~A$15 incl post on eBay) at right, and a 12V-5V converter (~A$7 from Hobbyking) at bottom. The latter is a 5A converter, way overkill, but it was on hand. The GPS module has a 3V regulator on board for the NEO-6M chip.
Continue reading Trial of prototype stand alone GPS logger

OpenLog for TinyTrak – drive test


A drive test of the OpenLog logger collecting raw NMEA data in parallel with the TinyTrak (VHF) was conducted. To maximise the performance of APRS, a fill-in digi / iGate was run at my home. The tracker used a 65W transmitter with quarter wave vertical in the centre of the car roof.

Google Earth googleearth 29/10/2015 , 08:19:01

Above is an overview of the APRS and OpenLog tracks. Click on the image for a scaleable / zoomable view in Google Maps. Continue reading OpenLog for TinyTrak – drive test

OpenLog for TinyTrak

There are a host of factors that contribute to data loss in APRS, to name just some:

  • non-standard / sub-standard / poorly configured digipeaters;
  • defect ridden iGates that lose, duplicate and corrupt packets;
  • poorly configured mobiles;
  • network congestion and interference;
  • unpredictable equipment failures;
  • basic geographical coverage of the network; and
  • dependence on the ionosphere for HF APRS.

This article describes an enhancement to the popular TinyTrak (and its clones) to also capture the GPS stream to an inexpensive local data logger.

The logger does not interfere with normal radio APRS, it coexists with it and creates a properly timestamped fine detail log of positions over a very long time, a log that can be post processed into a range of graphic / map and tabular reports.

Data logger

The datalogger used in an OpenLog. It is a simple logger that writes data to a micro SD card, costs about $A12 (inc post) for the logger and about A$10 (inc post) for a 16GB Class 10 micro SD card. (A slower card could be used, but they aren’t much cheaper.)


Above, the OpenLog data logger.
Continue reading OpenLog for TinyTrak

DIY USB password generator – (USB PRC) enhanced #1

This article describes an enhancement to the DIY USB password generator, a small USB HID keyboard device that types a password stored in EEPROM automatically when it is attached.


The implementation was on a Digispark ATTINY85 General Micro USB Development Board which was purchased on eBay for a few dollars. The board uses different pin connections to USB to the original. Continue reading DIY USB password generator – (USB PRC) enhanced #1

DIY USB password generator

This article describes an implementation of the DIY USB password generator. It is a small USB HID keyboard device that types a password stored in EEPROM every time it’s attached.

Digispark01The implementation was on a Digispark ATTINY85 General Micro USB Development Board which was purchased on eBay for a few dollars.

The board uses different pin connections to USB to the original, and requires a hardware jumper from D+ (PB4) to INT0 (PB2).

In the process of changing the code, I updated the V-USB driver. That necessitated quite a few changes to source code.

The updated code was compiled, and tested just fine.

Changed / updated code (includes hex):





I bought a USBTiny AVR programmer on eBay for about A$8 posted.

HOT NEW Usbtinyisp AVR ISP Programmer FOR Arduino Bootloader MEAG2560 UNO R3 | eBay - Mozilla Firefox firefox 06/08/2015 , 08:24:12


Above, the seller’s pic of the package.

It is almost always the case that the ISP headers on the programmer use the standard pinout published by Atmel, and in that case the supplied ISP cables need to be pinned pin for pin, ie pin 1 to pin 1 etc.

If you look carefully at the pic, the key is towards the top of the pic which means pin 1 on the right hand plug is towards the viewer and pin 1 on the left hand plug is away from the viewer. The cable does not connect pin 1 to pin 1, and as a consequence the package did not work.


There is more than one way to connect these plugs, and above is one way that does connect pin 1 to pin 1, and the cable and USBTiny work. Though the seller has been told of this defect, he continues to sell the item with the pic of the defective cable.

One wonders how many thousands of these things are and will be sold with this defect.


A tale of two USB-RS232 adapters

There are a number of USB-RS232 adapters available, among them Silabs, FTDI, Prolific and WCH.

The Silabs CP series adapters have been reliable but not very widely used.

The Prolific adapters are, well, prolific… but given their major compatibility problems and poisoned drivers, they are not a good choice.

FTDI was a good choice until they distributed through Microsoft Windows Update their device poisoning trick to disable chips they thought counterfeit… though they seemed to have backed away from that action.

The new kid on the block is an adapter by Chinese company WCH, chips that appearing in lots of low cost devices, eg Arduino Nano clones with WCH adapters instead of FTDI selling for around A$3+ on eBay whereas the FTDI equipped Nanos are more like A$12.

This article compares the WCH  CH340G and  FTDI FT232RL.

2USBRS232Above are two inexpensive adapters for Arduino boards, the upper one is FTDI based at A$8 each (inc post), and the lower one WCH based at 3 for $3.60 (inc post). Continue reading A tale of two USB-RS232 adapters