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
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.)
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.
since I really like using LiFePO4 AA and AAA batteries in some of my projects [1][2][3], I finally gave in and built a dedicated charger for them.
Previously I used a lab power supply to mimic the constant current/constant voltage charging curve, which worked also fine. But after seeing Patrick Van Oosterwijck nifty LiFePO4wered/USB™ [4], I thought it would be a bit more convenient to charge these batteries using USB.
[attachment=2] Since Patricks PCB is OSHW [5], I made a few quick modifications to fit my needs: * Changed the Micro-USB connector to a Mini one, because I happen to have these connectors in my parts bin, and also because I have more Mini-cables lying around. * Replaced the solder bridging jumper pads by a regular jumper connector so I can switch between high and low charging current depending on whether I charge an AA or AAA battery. * Changed the resistors which select the charge current to values I had readily available. (Jumper open: 185 mA for AAA batteries, jumper closed: 525 mA for AA batteries.) * Got rid of the long PCB extension where the battery holder is soldered to reduce the PCB cost ($2.90 for three boards from OSH Park). * Changed the USB-breakout header to contain VUSB (5V) instead of VBAT.
Soldering the 3x3 mm DFN-10 package was done by first tinning the pads, placing the chip, and then heating the board from the bottom with a heat gun. The remaining SMD parts were soldered conventionally with a regular iron.
Here is a picture of it charging an AA battery:
[attachment=1] Please find my modified EAGLE files attached.
I built a prototype for a WiFi controllable LED light, using the popular ESP8266 module running the NodeMCU firmware [1]. To allow controlling the WS2812B LEDs from Lua, I extended the firmware with a bit of C code [2].
Hi, after successfully controlling some WS2812B LEDs using SPI on a Micro Python board [1], I thought it would be nice to do the same using my Bus Pirate [2].
[attachment=5] There are some excellent articles [3][4] which explain in detail, that the timing requirements to drive these LEDs are not as strict, as widely rumoured.
Here is a screenshot of the 0 (short) and 1 (long) pulses generated by the Bus Pirate captured using my Logic Pirate [5]:
[attachment=4] The pulses for 0 are 250 ns long, the pulses for 1 are 875 ns long. The frequency at which the pulses are sent is 400 kHz.
The color pattern on the LEDs is animated and the update rate exceeds 60 FPS:
[attachment=3] Please find the Python script I hacked together attached.
recently some vintage bubble displays popped up at various places [1][2], so I felt the urge to build another bedside table alarm clock, this time a really tiny one, roughly the size of an AAA battery:
[attachment=4] Since I already built two previous alarm clocks [3][4], the build was straight forward. Here is the simple schematic:
[attachment=3] Here the parts used:
[attachment=2] And here how the wiring was done:
[attachment=1] Please find the source code attached.
I wrote a quick Python script to communicate with an SSD1306 driven OLED connected to a PC with a Bus Pirate. The script uses the Bus Pirates raw SPI mode and manages to update the little screen slightly faster than 10 times per second.
being inspired by ch00ftech's QR clock [1] I made my own variation of this nice idea: A PIC32 decodes the time signal from a DCF77 [2] receiver, calculates a QR code containing this time information, and displays it animated at 30 FPS on a ST7735R LCD. Without a radio signal the QR code is being displayed in b/w. A nice plasma effect is added when it locks to the DCF77 signal.
I built a small digital picture frame, which automatically rotates itself into portrait or landscape orientation, depending on the picture displayed.
[attachment=5] I connected a 2.4" LCD with a resolution of 320x240 pixels which I got from ITead to a PIC32MX120F032B using the PICs Parallel Master Port (PMP) peripheral. The display is setup to work in 8-bit mode, so using the PMP was a bit tricky, but I managed to get two 8-bit writes out of a 16 bit transfer by connecting the appropriate pins to two 1N4004 diodes and a pull-up resistor leading to a logical OR for the nWR signal.
[attachment=4] [attachment=3] The LCD breakout board also has an SD-card slot on its back. The file system is accessed by using FatFs and an MMC-driver which I modified to support software SPI. I did this because although this PIC32 has Peripheral Pin Select (PPS), it is not possible to use any of the hardware SPI pheripherals together with the PMP.
The perfboard is held and rotated by a conventional RC servo. After rotating, the PIC32 cuts off the power to the servo to prevent it from making annoying humming noises.
[attachment=2] [attachment=1] The Python script to convert JPEG images into an easy to read RAW format is also included. The script basically resizes the images, applies a gentle sharpening-filter, and does some Floyd-Steinberg dithering to reduce the color space to 16 bit (RGB 565). It also adds the information whether the image should be displayed in portrait or landscape orientation.
The PIC32 directly writes the image data to the display, and by syncing the line currently written with the hardware scrolling offset of the display driver chip, one can achieve a nice sliding transition between the images.
To give the device a nice looking finnish, I sprayed a piece of acrylic glass with some black paint and hot-glued it to the LCD board.
I successfully compiled the ASAP (Another Slight Atari Player) library [1] for a PIC32MX795F512H. ASAP emulates a 6502 CPU and the famous POKEY sound chip [2] used for example in the ATARI 400/800 and XL/XE 8-bit computers. To say it with Wikipedia's words: POKEY's sound is distinctive :)
About 60 tunes (worth about 2.5 hours of music) taken from ASMA (Atari SAP Music Archive) [3] are included and stored in the PICs flash memory. D0 is the left and D1 the right PWM channel.
being inspired by another project of ChaN [1] I decided to build my own music box. The theory is described in detail on ChaN's page, so I won't repeat it here. Instead of an ATtiny, mine uses a PIC32 and has therefore enough processing power to play up to 64 notes simultaneously:
[attachment=5] As a case I used a pair of cheap active speakers for the very competitive price of 3.50 €. They can be seen here together with the breadboarded circuit:
[attachment=4] Since I wanted to fit everything inside the speaker-case, the soldered circuit is quite minimalistic:
[attachment=3] [attachment=2] Here the inside of the case can be seen without and with my circuit installed:
[attachment=1] [attachment=0] A video of the device in action is available on YouTube: http://youtu.be/dt3rpgWyKno
Please find the source code attached to the next post, as there seems to be a limit of 6 attachments per posting.