This page has deprecated and will be archived. Please go to [[https://www.bitcraze.io/]]. ====== Adding a buzzer ====== This guide shows how to add a piezo buzzer to a Crazyflie 2.0 prototype deck and control it using the parameters from the Crazyflie Python client. ====== What you need ====== For this hack you will need: * Soldering iron * Piezo buzzer * [[projects:crazyflie2:expansionboards:proto|Crazyflie 2.0 prototype deck]] * [[projects:crazyflie2:expansionboards:breakout|Crazyflie 2.0 breakout deck]] (optional, just needed for testing different buzzers) * Some wire ====== Building ====== To get extra volume out of the buzzer we will use differential-drive using PWM on two pins, each connected to one terminal of the buzzer. This will give a -3V to 3V swing instead of 0-3V between on/off. The buzzer should be connected to the [[projects:crazyflie2:expansionboards:index|TX2/RX2 pins on the expansion header]] which also has PWM functionality using TIM5 channel 3/4. 1) Try out different buzzers using the Crazyflie 2.0 breakout deck and a few wires {{:misc:hacks:cf2_proto_board_buzzer_2.jpg?direct&200|}} {{:misc:hacks:cf2_proto_board_buzzer_1.jpg?direct&200|}} 2) Select a buzzer to solder to a Crazyflie 2.0 prototype deck using a few wires {{:misc:hacks:cf2_buzzer_material.jpg?direct&200|}} {{:misc:hacks:cf2_buzzer_proto_bottom_1.jpg?direct&200|}} {{:misc:hacks:cf2_buzzer_proto_bottom_2.jpg?direct&200|}} {{:misc:hacks:cf2_buzzer_proto_top_1.jpg?direct&200|}} 3) Attach the prototype deck with the buzzer to the Crazyflie 2.0 with the male headers in the box {{:misc:hacks:cf2_buzzer_proto_top_2.jpg?direct&200|}} {{:misc:hacks:cf2_buzzer_proto_top_3.jpg?direct&200|}} ====== Firmware ====== In order to do fun things with the buzzer there needs to be some firmware. The firmware can be found on the [[https://github.com/bitcraze/crazyflie-firmware/tree/dev-buzzer|dev-buzzer branch]] in the Crazyflie 2.0 repo on GitHub. Build the firmware and flash it. The buzzer is implemented in a similar fashion as the [[projects:crazyflie2:expansionboards:ledring|LED-ring deck]]. Using a parameter you can set the current effect of the buzzer. Below is a list of the parameters that are interesting. ^ Parameter ^ Comment ^ | buzzer.effect | Sets the current effect (max buzzer.neffects - 1) | | buzzer.melody | Set the current melody (needs buzzer.effect = 2) | | buzzer.freq | Set static frequency (needs buzzer.effect = 0) | | buzzer.radio | Set the duty cycle (in 8 bits) for the PWM (should be 127) | ^ Effect ID ^ Comment ^ | 0 | Static tone/ratio | | 1 | Alarm | | 2 | Play a melody (selected by buzzer.melody) | | 3 | Frequency varies with pitch (when above 5 or below -5 degrees) | Have a look in the [[https://github.com/bitcraze/crazyflie-firmware/blob/dev-buzzer/modules/src/buzzer.c|modules/src/buzzer.c]] file for adding new melodies and effects. ====== Result ====== [[https://vine.co/v/OViKTETHt99|Vine]] (enabling the sound is a good idea :-) )