blog.jmp.no

Electronics, coding and hacking. And ADD.

A 68k sandwich

2017
7
June

A while back I decided to test SeeedStudio's $4.90 PCB service, and yesterday the boards arrived. Three boards were ordered, and without knowing if anyone of them will work, I'll start off by showing you the most simplest, but most ambitious one.

This is the "68k Sandwich", codename for an experimental board for the Commodore Amiga 500:


(Yes the silkscreen text is a bit off)

The name is from its placement between the Amiga's motherboard and the CPU. It will literally be sandwiched in between.

The board is based around an ATmega128, which will (hopefully) be able to disable the Amiga's CPU and take charge of the hardware alone. I think it's too early to spill the beans completely, but I can point out the unpopulated USB port and let you wonder what my plans are. I'm sure most of you will be able to figure it out.

Stay tuned.

Cooling the Orange

2017
9
May

I recently got my hands on an Orange Pi Zero, a Raspberry Pi Zero alternative, if you're unfamiliar with it. What I noticed, though, is the OPi's CPU gets hot. So hot that it would crash under heavy load. At first I tried passive cooling with a few stick-on-sinks, and they helped, but I decided to take it one step further and built this:


I drilled a hole in the case and attached the smallest 5v fan I could find on eBay. The fan can be a bit noisy at times, so I decided to control it with a switching PNP transistor, hooked up to pin PA11 and crammed everything inside the small case. This simple Python script is started in rc.local and runs in the background indefinitely:

#!/usr/bin/python

from pyA20.gpio import gpio
from pyA20.gpio import port
from time import sleep

gpio.init()
gpio.setcfg( port.PA11, gpio.OUTPUT)

while 1:
    with open( "/sys/devices/virtual/thermal/thermal_zone0/temp" ) as f:
        content = f.readlines()

    temp = int(content[0])

    if temp >= 50:
        gpio.output( port.PA11,gpio.LOW )

    if temp < 45:
        gpio.output( port.PA11, gpio.HIGH )

    sleep(5)

As you can see, when the CPU's internal temperature exceeds 50 degrees celcius, the fan is switched on. I have a hysteria of 5 degrees, so it will not switch off again until the temperature is less than 45 degrees celcius. This was tested using the cpuburn tools that really, really stress the CPU.

And, hey, I'm as surprised as you are: it actually works very well; when the fan starts running, the CPU temperature drops a few degrees in a matter of seconds.

I may not need this too often, but it was a fun (and cute) build. Besides, what's cooler than being cool? Ice cold!

Another C64FC run

2017
15
March

At last another batch of PCBs have arrived, and this time they're yellow. Not quite the lemon-ish tint I expected, but I suppose the shade is a tad retro and may complement the C64 well. I have PCBs and parts for 10 boards in total, four of them have been reserved already. This means I have 6 left - interested? Read on.


This will probably be the last run I do on the C64FC boards.

Price? I guess 25 euros per board is as cheap as it gets. There's no markup for me, and most parts have been sourced from China's shadiest back alleys. If you would rather have a blank PCB and get the parts and do the soldering yourself, you can have one for 3 euros a piece. Shipping not included.

Be warned that the current software only runs on Mac OS X and Linux. This means that if you are a Windows user you'll have to be creative.

If you're interested, let me know in the comments and we will get in touch.

EDIT: SOLD OUT. That went faster than expected. Those of you who have expressed interest will be notified shortly. To protect your privacy, the comments left here will not be visible.

Let's go radio

2017
9
February

In late November 2016 I became a licensed amateur radio operator. The reason I got the license was to learn more about the black magic behind radios; antennas, radio waves, frequencies, bandwidths. How to transmit, how to receive, what to do and not. Being able to play around on the air, legally, is a huge bonus. I've learned a metric tonne about stuff I hardly knew anything about.

My official callsign is LB5SH (have fun keying that one), but I still don't have much radio equipment to play with, other than a handheld 8W Baofeng GT-3TP. It's good enough to get in touch with the nearby repeaters.

I have ordered a 100W amplifier kit and will soon buy an X-50 Diamond high-gain low-WAF antenna to put on my roof. With a little luck I'll be able to play without the use of repeaters soon. I'm damned to 2m and 70cm bands, since HF is pretty much a no-go due to the physical limitations where I live.

Anyway, why am I telling you this? Well, yesterday I transferred my first homemade data packet on the air. To me that was an adrenaline kick. It didn't do much, it wasn't useful, but it worked, and that was a milestone. An APRS (Automatic Packet Reporting System) packet was generated in software on my PC, sent via the radio, via two local digipeaters and then eventually ended up on aprs.fi. This was a test to make sure that my "synthetic" waveforms were A-OK, so I can render something similar on a microcontroller later.

Now to port the code to an AVR or something and see if that works...

GERP 2016

2016
6
September

This weekend we, iNSANE, attended GERP 2016, an annual Amiga party held in Skövde, Sweden. We made a small 40k intro for the compo and got 3rd place.


The demo was coded pretty much from scratch in two days. On Friday I wanted to see if I could make the "3D rasters" (which you can see in the 2nd part of the demo), and they turned out so well I had to make a production out of it.

In case you're curious, here's some background info on the parts:

Part 1: Seesaw scroller with zooming checkerboard. The Z rotations and distortions on the scroller is the product of combining tech-tech and sinus scroller, both moving in a seesaw pattern. The zooming checkerboard is animated from a single image, where each line is stretched down the screen. Rasterbars are alternated down the screen in a similar fashion to make the checkerboard pattern.

Part 2: 3D rasters. Maybe there's a simpler ways to make these, I don't know. I started off with a simple 3D vector routine, stripped the X and Y rotations and was left with Z only. The calculations are now so heavily optimized that I cannot read it myself anymore. The values from the Z rotation are then used to select a line from a triangle bitmap, and that's what you see on the screen. The background starfield are sprites, and the logo on top is a 3 bitplane (8 colors) bitmap.

Pouët link: http://www.pouet.net/prod.php?which=68095

Add to Google