Skip to main content

Messages

This section allows you to view all Messages made by this member. Note that you can only see Messages made in areas you currently have access to.

Messages - Markus Gritsch

3
Project logs / Re: RC Boat with NRF24L01+ and Arduino
You could try the following:

In nRF24_multipro.ino define a second servo object around line 36 so that it reads:

#include <Servo.h>
Servo servo;
Servo servo2;

Around line 158 attach some appropriate free pin to this second servo object

    servo.attach( 2 );
    servo2.attach( <yourPinHere> );

Then in Bayang.ino around line 209 use the pitch/yaw/throttle variable to write a value to servo2:

        servo2.write( pitch / 1023.0 * 180 );
4
Project logs / RC Boat with NRF24L01+ and Arduino
Hi,

I and my little son built a small electric boat from a kit. However, the kit only offered turning on the motor with a switch, and let the boat cruise wherever fortune it may take.

I thought why not improve it a bit by adding some RC capability. I had some left over toy quad copter remote controls, and decided to use them by building the receiver side out of an 3 $ Arduino mini knock off and the popular NRF24L01+ chip.

[attachment=3]
rcgroups.com forum user bikemikem added some receiver functionality [1] to the popular nrf24-multipro project by goebish [2]. I made some small adjustments, and the final firmware is attached to this post.

The wiring between the Arduino and the NRF board is shown below.  The motor is PWM driven with some random FET, and the whole thing is powered by some old phone battery underneath the connection board.  A single servo is used for steering.

[attachment=1]
The "Bayang" protocol is used by a lot of different models.  The following picture shows a few:
* Eachine H8 Mini (top left)
* Bayangtoys X9 (top right)
* Floureon H101 (bottom left)
* Devo 7E with Deviation [3] and NRF module

[attachment=2]
Here is a short YouTube video: https://youtu.be/VLFMQFPwuEg

Have fun,
Markus

[1] https://github.com/bikemike/nrf24_multi ... 4_multipro
[2] https://github.com/goebish/nrf24_multipro
[3] http://www.deviationtx.com/
5
Project logs / Re: ESP8266 Wireless SID Project
[quote author="bl4rk"]Am I doing something very wrong to arrive at these numbers?[/quote]

No, but the numbers can vary quite a bit. If you have a look at "Fanta in Space" using ACID 64 again, you will see that it has an update rate of 15639 Hz. Further, ACID 64 does not simply send the register values and that's it. To be cycle exact, it also adds the clock count (i.e. timestamp) when a specific value should be written to a specific register. This also adds some overhead.

Since data transfer rate can vary, you should buffer the data coming from ACID 64 and write the SID registers according to the included timestamps at the precise moment. Maybe you should have a look at the ACID 64 network protocol.

Cheers,
Markus
6
Project logs / Re: ESP8266 Wireless SID Project
[quote author="bl4rk"]The SID needs a 1MHz clock and I thought that since the ESP is clocked at 80MHz that this would be easy. I can't get the GPIO to toggle that fast though, it seems to be limited to a couple hundred KHz when using the Arduino IDE. [/quote]

Since you also sent me a PM about this, I will try to give my 2 cents here, but don't expect too much :)

Bit-banging the I/O lines to get a 1 MHz  clock is definitely not the way to go. Even if you could achieve 1 MHz (which you can't) there would be no time to do anything else.

In my SID player project over here viewtopic.php?f=56&t=2197 I used a counter of the PIC32 together with output compare which toggles a pin at 985248 Hz (PAL) or 1022727 HZ (NTSC). I don't know if the ESP8266 has such a pheripheral.

Another thing to investigate is the maximum sustained data rate you can stream to the ESP8266 over WiFi. Some digi-tunes like 'Fanta in Space' or 'Pollycracker' require 100+ kByte/s sustained data rate.

Cheers,
Markus
7
Project logs / Re: Bubble Display Alarm Clock
Google for "MSP430G2452" and you see it's a microcontroller from TI, which needs to be programmed to do anything, of course. Google for "MSP430 LaunchPad" to find a very inexpensive programmer for it. TI offers a free Ecplipse based IDE called "Code Composer Studio".
8
Project logs / Re: Hybrid SID Player
Hi,

currently ACID 64 does not allow configuring host and port. It just uses localhost:6581, which works for jsiddevice.exe and also the Python script I use to send the network data to the serial port for my hardware player.

Some time ago I suggested to Wilfred Bos that it would probably make sense to make the host and port configurable. Maybe you tell him about your project, and that you would need them being configurable. I found him being very helpful and nice.

Cheers,
Markus

P.S.: And post back about your progress implementing it on an ESP8266 :)
9
Project logs / Re: USB Volume Knob
Due to the added weight in the base and well as in the rotating part, turning the knob feels very solid and satisfying ;)

[attachment=2]
[attachment=1]
The firmware (attached below) smoothly cycles the LEDs through all colors in about one minute.  On activation (turning the knob to change the volume, pressing it to mute/unmute the sound), the volume knob briefly flashes brightly white and fades back to the current color.  Temporal dithering is done to prevent intensity steps being visible, especially at lower intensity values.

A short video can be seen here: https://www.youtube.com/watch?v=r7PtrN89fg4

And as always, have fun!
Markus
10
Project logs / Re: USB Volume Knob
After everything was soldered together

[attachment=5]
I also wanted the base of the knob to be more heavy.  I experimented with some kind of self made mold

[attachment=4]
but the results turned out to be less than optimal

[attachment=3]
[attachment=2]
So I settled on some lead from a shot gun round, which the kind guy from a local hunting equipment store sold me by opening the round for me :)

[attachment=1]
Pouring a lot of super glue on top of it fixes everything in place.

[attachment=0]
11
Project logs / USB Volume Knob
After having been inspired by this Instructable [1] I also wanted to make a nice looking volume knob to attach to my computer.

It uses the TrinketHidCombo library [2], but on a Digispark board, to have one more I/O pin which I use to drive a WS2812 LED ring.  The code to bit bang the LEDs was taken from one of Josh's excellent articles on WS2812 LEDs [3].  I also experimented with other WS2812 libraries (NeoPixel, light_ws2812, FastLED), but they consumed either quite a lot of flash, or prevented the USB part from functioning.

Curiously the fuse setting of my purchased board were set to use the NRES pin as reset instead of an additional I/O line, so I installed the ArduinoISP example on a spare Arduino UNO to set the fuse bits to the correct values:
[tt:]C:arduino-1.6.5-r2hardwaretoolsavrbinavrdude -C C:arduino-1.6.5-r2hardwaretoolsavretcavrdude.conf -v -p attiny85 -c stk500v1 -P COM7 -b 19200 -U lfuse:w:0xf1:m -U hfuse:w:0x5f:m -U efuse:w:0xfe:m[/tt:]

I also like the Micronucleus bootloader [4] approach taken by the Digispark, which I replaced by the micronucleus-1.11-entry-jumper-pb0-upgrade.hex which gets rid of the 5 second delay when plugging the device in, but requires pressing the button when connecting to the computer to enter bootloader mode.  (This requires that the push button of the rotary encoder is connected to PB0.)

[1] http://www.instructables.com/id/Digispa ... e-Control/
[2] https://github.com/adafruit/Adafruit-Tr ... etHidCombo
[3] http://wp.josh.com/2014/05/13/ws2812-ne ... know-them/
[4] https://github.com/micronucleus/micronucleus/tree/v1.11

As an enclosure I found a small cream tin made from plastic:

[attachment=5]
I dremeled away part of the PCB to get its USB micro connector closer to the outside.:

[attachment=4]
Hot glue holds everything together:

[attachment=3]
The LED ring

[attachment=2]
neatly fits inside the enclosure and is also held in place by a bit of hot glue:

[attachment=1]
To give the moving part of the knob a more solid feeling, I added some big washers inside it:

[attachment=0]
14
Project logs / Re: PIC24 Bedside Table Alarm Clock
Some more pictures.

Prototyping on a bread board:

[attachment=3]
Since the filling of the 7 segment display is concave,

[attachment=2]
it leaves enough room to place the common anode MOSFETs beneath it:

[attachment=1]
Who needs an ICSP connector when using a PDIP package :)

[attachment=0]
15
Project logs / PIC24 Bedside Table Alarm Clock
Another year, another clock, but for the first time for my alarm clocks [1][2][3] I am not using an MSP430 but a PIC24 instead.  Standby current is with 5.5 µA only slightly higher than that of my MSP430 based ones.  Time keeping is done using the RTCC pheripheral, which I also used for the first time.

It can be seen in action in this YouTube video: https://youtu.be/I8K4sLvQby4
Friendly green digits :)

And of course it has a LiFePO4 battery on its back, being charged every few years using my new USB charger [4].

A photo transistor is also included to dim the display in the dark.  Much nices to the eyes when checking what time it is in the middle of the night.

Here's a picture from the front side:

[attachment=3]
And here is the wiring on the back side:

[attachment=2]
A crude schematic:

[attachment=0]
As always, please find the source code attached.

Have fun,
Markus

[1] viewtopic.php?f=56&t=2126
[2] viewtopic.php?f=56&t=2784
[3] viewtopic.php?f=56&t=6592
[4] viewtopic.php?f=56&t=7467

( ! ) Fatal error: Uncaught exception 'Elk_Exception' with message 'Please try again. If you come back to this error screen, report the error to an administrator.' in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
( ! ) Elk_Exception: Please try again. If you come back to this error screen, report the error to an administrator. in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
Call Stack
#TimeMemoryFunctionLocation
10.01862461904session_write_close ( )...(null):0
20.01902593520ElkArte\sources\subs\SessionHandler\DatabaseHandler->write( )...(null):0
30.01902594296Database_MySQL->query( ).../DatabaseHandler.php:119
40.06432733048Database_MySQL->error( ).../Db-mysql.class.php:273