For one of the last big projects at my university, me and some colleagues took on the challenge to create a self playing piano also called the PianoPlayer. The PianoPlayer is a stand-alone module that can be placed on any acoustic piano and uses MIDI to play the 88 keys and controls the sustain pedal with a seperate pedal motor module.
MIDI to solenoid
Pressing the keys on the piano is done with 88 solenoids. Each solenoid is responsible for one key of the piano. With the use of PWM it’s also possible to introduce velocity which gives the PianoPlayer a human feel. The timing of the keys and the velocity is determined via the MIDI protocol. The MIDI data is processed with the Arduino development environment. The goal is that any device that can output MIDI data to the PianoPlayer (like a keyboard or a computer with a MIDI interface), can play the piano it is placed on.
To control all solenoids from one tiny microcontroller, six PCBs (Printed Circuit Board) will be made which contains the analog circuitry to power each solenoid with 48 volts. On each of the six PCBs is also an isolated digital segment which consists of secret switching logic.
Pianos have a pedal which is called the sustain pedal. This pedal makes sure that any pressed key will ring until the pedal is lifted. To automatically control this pedal, a windscreen wiper motor is customized both electrically and mechanically.
The PianoPlayer is still in development and is planned to be finished in June 2018. The PianoPlayer is already able to:
– Play 10 keys through MIDI
– Control the sustain pedal through MIDI
In my journey of learning everything about PCB design I often find myself looking at PCBs on the internet or those that are laying around in my room. When observing them I sometimes spot mistakes or odd things of which I think are remarkable because the company behind it is so big.
In this post I will discuss the things I saw when looking at the Arduino Mega PCB. I marked the spots with red circles or squares. (Click the image for a larger view).
Mistakes and oddities
First of all the PCB is full of 90 degree angles and bad impedance matching. Datalines are all kept thight to make it aesthethically pleasing, while it introduces alot of capacitive and inductive crosstalk.
It’s quite visible that they chose to place vias only at places where there is no silkscreen. The board has a lot of empty space but still they cramp all these vias together.
Also the crystal oscillator for the ATMEGA2560-16AU seems to be placed very closely to what seems to be a power line. There might be some filtering on that line, but why place the crystal oscillator so far away from the IC?
Got comments or know why certain design choices were made? Leave your thoughts down below!
Image source: Reichelt Elektronik
Some users with an average internet connection found out after a while that when Windows 10 starts downloading updates, the internet stops working in games, browsers and even on other devices connected to the same router. The problem lies with a Windows service called Delivery Optimization that has been introduced in Windows 10. In this post I’ll be showing possible solutions to the problem.
Disabling the service through firewall
- Press the Windows key on your keyboard
- Type “Allow a program through Windows Firewall” and click the search result
- Scroll through the list of apps and deselect the checkbox in front of “Delivery Optimization”
- Press OK and you’re done
Disabling the service by enabling metered connection
- Press the Windows key on your keyboard
- Type “Manage wi-fi settings” and click the search result
- Click on the connection you are currently having
- Scroll down and enable “Set as metered connection”
Wait about 10 seconds and see how Delivery Optimization slowly stops taking up bandwidth.
More solutions will be added when I find them
Square FM is a simple schematic I designed a while ago which exists of a triangle wave oscillator (U1A) and a square wave oscillator (U1B). The triangle wave is oscillating at a low frequency so you might call it the LFO. The squarewave oscillator is oscillating in a wide range so might as well call it the VCO (while it is actually current controlled).
The LFO is fed into the VCO by a potentiometer (R1) that allows you to set the depth of the frequency modulation. With R2 you can set the frequency of the LFO and with R3 you can set the frequency of the VCO.
Change the value of C1 and/or C2 to change the range of the VCO and LFO respectively. Using the CD40106 from different companies might yield different results.
1. CD40106 x1
2. 10k pot x3
3. 100nF cap x1
4. 1uF cap x1
5. 47uF cap x1
6. Speaker x1
Owners of the M-Audio Fast Track (see picture) and who updated their PC to Windows 10 (might also be happening with Windows 8), experience frequent Blue Screens Of Death that occur randomly.
The occurence of this BSOD might de daily or weekly but it will always be the same error code:
The Fast Track was one of the most versatile audio cards out there that was able to multihost. This means that the program (like a DAW) does not claim the audio card. When the audio card IS claimed (like pure ASIO4ALL cards), it is not possible to work in your DAW and stream a video on Youtube at the same time. This is highly annoying when you want to cover a song or want to play along a piano tutorial.
To get your Fast Track back in business this is what you have to do:
- Remove your current Fast Track drivers
- Go to the AVID driver page
- Download the drivers from November 14, 2005 (second-last on the page)
- Install these drivers
Your Fast Track will work as it always did but there are a few important things to keep in mind:
To multihost you first have to open the DAW you want to use, and then all the other programs. Let’s say you want to play guitar to your favorite youtube video, then you open the DAW, select the M-Audio driver and after that is done, you open your browser.
I am currently using the Fast Track for a few months with these older drivers, and everything works like a charm BUT I had one occassion in which I got the same BSOD as with the newest drivers. For me this is totally worth it because I went from a BSOD a day to a BSOD a half year.
I hope this guide helped you with your BSOD headaches
We got the assignment from the university to make something innovative with a delta robot. This could be anything as long as it was not a simple pick and place robot. After quite some brainstorming we figured it would be a cool idea to make a robot that could print various shapes with pancake batter. The idea originated from videos where people draw with different colored batter on a cooking plate and when flipping over the pancake, it would reveal Barack Obama or Mario.
Delta robots are robots that use three arms simulteneously to move a platform in a 3D space (X, Y and Z). By writing smart programs it is possible to move the platform to very specific locations within this 3D space. When attaching a claw or electromagnet to this platform, it is possible to pick up stuff and place them somewhere else in the 3D space. These robots are used alot in factories where PCBs (Printed Circuit Board) are made and assembled or in factories where unsorted batches of stuff have to be sorted.
It took about 8 weeks (of which 2 fulltime) to finalize the pancake printer. The printer was capable to print a regular pancake, a square pancake and a star pancake. As WOW factor we added a wireless controller so pancakes could be made manually over a distance of about 20 meters.
I remember the first time I got ‘blink’ to work on my Arduino Uno. I never knew a blinking LED could be this exciting. But that was just the start!
In this course I’d like to take complete Arduino beginners by the hand and walk through everything you need to know to start engineering with an Arduino platform.
What you will need
Setting up the Arduino
Download the latest software from the Arduino website. Install the Arduino IDE (Integrated Development Environment).
Attach the Arduino to your computer with the USB A/B cable and wait for the drivers to install. Windows will notify you when this is done.
Testing your setup with blink sketch
Open up the Arduino IDE. You will see the following screen:
Check if under Tools > Ports the Arduino is present and select it. Now go to File > Examples > 01.Basics and choose blink. The code (sketch) will be loaded into the IDE.
In the topleft corner are the verify (left) and upload button (right).
When pressing the verify button, the code will be checked on mistakes and errors. When pressing the upload button this will also happen but when the code is alright, it will be uploaded to the connected Arduino platform. If the code contains errors and mistakes, then they will be visible in the black box at the bottom of the IDE. This black box is called the console. When the verification fails, the code wont be uploaded to the Arduino Board.
Press the upload button and wait a few seconds. While the code is being uploaded to the Arduino board, you will see some LEDs blink and text flash in the console. When this stops, you will see that one LED is blinking slowly on the Arduino Board.
Now we know your setup is working and your Arduino Board isn’t faulty.