We propose a methodology for autonomous aerial navigation and obstacle avoidance of micro aerial vehicles (MAVs) using non-linear model predictive control (NMPC) and we demonstrate its effectiveness with laboratory experiments. The proposed methodology can accommodate obstacles of arbitrary, potentially non-convex, geometry. The NMPC problem is solved using PANOC: a fast numerical optimization method which is completely matrix-free, is not sensitive to ill conditioning, involves only simple algebraic operations and is suitable for embedded NMPC. A C89 implementation of PANOC solves the NMPC problem at a rate of 20 Hz on board a lab-scale MAV. The MAV performs smooth maneuvers moving around an obstacle. For increased autonomy, we propose a simple method to compensate for the reduction of thrust over time, which comes from the depletion of the MAV's battery, by estimating the thrust constant.