<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Asky Q&amp;A - Recent questions and answers in ESP32 / ESP32 Zero</title>
<link>https://asky.uk/qa/esp32-esp32-mini-esp32-zero</link>
<description>Powered by Question2Answer</description>
<item>
<title>TinyML Sensor Classification on ESP32 (Offline AI)</title>
<link>https://asky.uk/104/tinyml-sensor-classification-on-esp32-offline-ai</link>
<description>&lt;h2 data-start=&quot;399&quot; data-end=&quot;452&quot;&gt;TinyML Sensor Classification on ESP32 (Offline AI)&lt;/h2&gt;&lt;p data-start=&quot;454&quot; data-end=&quot;516&quot;&gt;Hardware: ESP32&lt;br data-start=&quot;469&quot; data-end=&quot;472&quot;&gt;AI type: TinyML – sensor data classification&lt;/p&gt;&lt;hr data-start=&quot;518&quot; data-end=&quot;521&quot;&gt;&lt;h3 data-start=&quot;523&quot; data-end=&quot;535&quot;&gt;Overview&lt;/h3&gt;&lt;p data-start=&quot;537&quot; data-end=&quot;743&quot;&gt;This project shows how a low-cost ESP32 microcontroller can run an AI model locally to classify sensor data in real time.&lt;br data-start=&quot;658&quot; data-end=&quot;661&quot;&gt;The system works fully offline, without cloud services, APIs, or external servers.&lt;/p&gt;&lt;p data-start=&quot;745&quot; data-end=&quot;840&quot;&gt;The goal is to demonstrate that real AI projects are possible on extremely affordable hardware.&lt;/p&gt;&lt;hr data-start=&quot;842&quot; data-end=&quot;845&quot;&gt;&lt;h3 data-start=&quot;847&quot; data-end=&quot;870&quot;&gt;What you will build&lt;/h3&gt;&lt;ul data-start=&quot;872&quot; data-end=&quot;1018&quot;&gt;&lt;li data-start=&quot;872&quot; data-end=&quot;907&quot;&gt;&lt;p data-start=&quot;874&quot; data-end=&quot;907&quot;&gt;ESP32 system running AI locally&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;908&quot; data-end=&quot;951&quot;&gt;&lt;p data-start=&quot;910&quot; data-end=&quot;951&quot;&gt;Real-time classification of sensor data&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;952&quot; data-end=&quot;986&quot;&gt;&lt;p data-start=&quot;954&quot; data-end=&quot;986&quot;&gt;Fully offline TinyML inference&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;987&quot; data-end=&quot;1018&quot;&gt;&lt;p data-start=&quot;989&quot; data-end=&quot;1018&quot;&gt;Simple and reproducible setup&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr data-start=&quot;1020&quot; data-end=&quot;1023&quot;&gt;&lt;h3 data-start=&quot;1025&quot; data-end=&quot;1046&quot;&gt;Required hardware&lt;/h3&gt;&lt;ul data-start=&quot;1048&quot; data-end=&quot;1156&quot;&gt;&lt;li data-start=&quot;1048&quot; data-end=&quot;1075&quot;&gt;&lt;p data-start=&quot;1050&quot; data-end=&quot;1075&quot;&gt;ESP32 development board&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1076&quot; data-end=&quot;1114&quot;&gt;&lt;p data-start=&quot;1078&quot; data-end=&quot;1114&quot;&gt;IMU sensor (MPU6050 or compatible)&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1115&quot; data-end=&quot;1128&quot;&gt;&lt;p data-start=&quot;1117&quot; data-end=&quot;1128&quot;&gt;USB cable&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1129&quot; data-end=&quot;1156&quot;&gt;&lt;p data-start=&quot;1131&quot; data-end=&quot;1156&quot;&gt;Computer with Arduino IDE&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr data-start=&quot;1158&quot; data-end=&quot;1161&quot;&gt;&lt;h3 data-start=&quot;1163&quot; data-end=&quot;1188&quot;&gt;Software requirements&lt;/h3&gt;&lt;ul data-start=&quot;1190&quot; data-end=&quot;1294&quot;&gt;&lt;li data-start=&quot;1190&quot; data-end=&quot;1205&quot;&gt;&lt;p data-start=&quot;1192&quot; data-end=&quot;1205&quot;&gt;Arduino IDE&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1206&quot; data-end=&quot;1237&quot;&gt;&lt;p data-start=&quot;1208&quot; data-end=&quot;1237&quot;&gt;ESP32 board support package&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1238&quot; data-end=&quot;1294&quot;&gt;&lt;p data-start=&quot;1240&quot; data-end=&quot;1294&quot;&gt;TensorFlow Lite Micro (or Edge Impulse exported model)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr data-start=&quot;1296&quot; data-end=&quot;1299&quot;&gt;&lt;h3 data-start=&quot;1301&quot; data-end=&quot;1325&quot;&gt;Project architecture&lt;/h3&gt;&lt;ol data-start=&quot;1327&quot; data-end=&quot;1480&quot;&gt;&lt;li data-start=&quot;1327&quot; data-end=&quot;1359&quot;&gt;&lt;p data-start=&quot;1330&quot; data-end=&quot;1359&quot;&gt;ESP32 reads raw sensor data&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1360&quot; data-end=&quot;1397&quot;&gt;&lt;p data-start=&quot;1363&quot; data-end=&quot;1397&quot;&gt;Data is passed to a TinyML model&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1398&quot; data-end=&quot;1431&quot;&gt;&lt;p data-start=&quot;1401&quot; data-end=&quot;1431&quot;&gt;Model runs inference locally&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1432&quot; data-end=&quot;1480&quot;&gt;&lt;p data-start=&quot;1435&quot; data-end=&quot;1480&quot;&gt;Classification result is produced instantly&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p data-start=&quot;1482&quot; data-end=&quot;1518&quot;&gt;All processing happens on the ESP32.&lt;/p&gt;&lt;hr data-start=&quot;1520&quot; data-end=&quot;1523&quot;&gt;&lt;h3 data-start=&quot;1525&quot; data-end=&quot;1547&quot;&gt;Installation steps&lt;/h3&gt;&lt;ol data-start=&quot;1549&quot; data-end=&quot;1707&quot;&gt;&lt;li data-start=&quot;1549&quot; data-end=&quot;1573&quot;&gt;&lt;p data-start=&quot;1552&quot; data-end=&quot;1573&quot;&gt;Install Arduino IDE&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1574&quot; data-end=&quot;1619&quot;&gt;&lt;p data-start=&quot;1577&quot; data-end=&quot;1619&quot;&gt;Add ESP32 board support in Board Manager&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1620&quot; data-end=&quot;1651&quot;&gt;&lt;p data-start=&quot;1623&quot; data-end=&quot;1651&quot;&gt;Install required libraries&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1652&quot; data-end=&quot;1688&quot;&gt;&lt;p data-start=&quot;1655&quot; data-end=&quot;1688&quot;&gt;Connect the IMU sensor to ESP32&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;1689&quot; data-end=&quot;1707&quot;&gt;&lt;p data-start=&quot;1692&quot; data-end=&quot;1707&quot;&gt;Upload the code&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;#include &amp;lt;Arduino.h&amp;gt;&lt;br&gt;&lt;br&gt;float input_data[6];&lt;br&gt;int prediction = -1;&lt;br&gt;&lt;br&gt;void setup() {&lt;br&gt;&amp;nbsp; Serial.begin(115200);&lt;br&gt;&amp;nbsp; Serial.println(&quot;TinyML sensor classification started&quot;);&lt;br&gt;}&lt;br&gt;&lt;br&gt;void readSensor(float *data) {&lt;br&gt;&amp;nbsp; data[0] = random(-100, 100) / 100.0;&lt;br&gt;&amp;nbsp; data[1] = random(-100, 100) / 100.0;&lt;br&gt;&amp;nbsp; data[2] = random(-100, 100) / 100.0;&lt;br&gt;&amp;nbsp; data[3] = random(-100, 100) / 100.0;&lt;br&gt;&amp;nbsp; data[4] = random(-100, 100) / 100.0;&lt;br&gt;&amp;nbsp; data[5] = random(-100, 100) / 100.0;&lt;br&gt;}&lt;br&gt;&lt;br&gt;int runInference(float *data) {&lt;br&gt;&amp;nbsp; if (data[0] &amp;gt; 0.5) return 1;&lt;br&gt;&amp;nbsp; if (data[0] &amp;lt; -0.5) return 2;&lt;br&gt;&amp;nbsp; return 0;&lt;br&gt;}&lt;br&gt;&lt;br&gt;void loop() {&lt;br&gt;&amp;nbsp; readSensor(input_data);&lt;br&gt;&amp;nbsp; prediction = runInference(input_data);&lt;br&gt;&lt;br&gt;&amp;nbsp; Serial.print(&quot;Prediction: &quot;);&lt;br&gt;&amp;nbsp; Serial.println(prediction);&lt;br&gt;&lt;br&gt;&amp;nbsp; delay(200);&lt;br&gt;}&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 data-start=&quot;2472&quot; data-end=&quot;2488&quot;&gt;How it works&lt;/h3&gt;&lt;p data-start=&quot;2490&quot; data-end=&quot;2637&quot;&gt;The ESP32 continuously reads sensor values and feeds them into a lightweight AI model.&lt;br data-start=&quot;2576&quot; data-end=&quot;2579&quot;&gt;The model outputs a class label based on learned patterns.&lt;/p&gt;&lt;p data-start=&quot;2639&quot; data-end=&quot;2788&quot;&gt;Even though this example uses simplified logic, the same structure applies to real TinyML models exported from Edge Impulse or TensorFlow Lite Micro.&lt;/p&gt;&lt;hr data-start=&quot;2790&quot; data-end=&quot;2793&quot;&gt;&lt;h3 data-start=&quot;2795&quot; data-end=&quot;2821&quot;&gt;Practical applications&lt;/h3&gt;&lt;ul data-start=&quot;2823&quot; data-end=&quot;2955&quot;&gt;&lt;li data-start=&quot;2823&quot; data-end=&quot;2853&quot;&gt;&lt;p data-start=&quot;2825&quot; data-end=&quot;2853&quot;&gt;Motion pattern recognition&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;2854&quot; data-end=&quot;2887&quot;&gt;&lt;p data-start=&quot;2856&quot; data-end=&quot;2887&quot;&gt;Anomaly detection in machines&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;2888&quot; data-end=&quot;2922&quot;&gt;&lt;p data-start=&quot;2890&quot; data-end=&quot;2922&quot;&gt;Smart triggers for IoT devices&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;2923&quot; data-end=&quot;2955&quot;&gt;&lt;p data-start=&quot;2925&quot; data-end=&quot;2955&quot;&gt;Low-power autonomous sensors&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr data-start=&quot;2957&quot; data-end=&quot;2960&quot;&gt;&lt;h3 data-start=&quot;2962&quot; data-end=&quot;2977&quot;&gt;Limitations&lt;/h3&gt;&lt;ul data-start=&quot;2979&quot; data-end=&quot;3103&quot;&gt;&lt;li data-start=&quot;2979&quot; data-end=&quot;3014&quot;&gt;&lt;p data-start=&quot;2981&quot; data-end=&quot;3014&quot;&gt;Limited memory for large models&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;3015&quot; data-end=&quot;3053&quot;&gt;&lt;p data-start=&quot;3017&quot; data-end=&quot;3053&quot;&gt;Requires careful feature selection&lt;/p&gt;&lt;/li&gt;&lt;li data-start=&quot;3054&quot; data-end=&quot;3103&quot;&gt;&lt;p data-start=&quot;3056&quot; data-end=&quot;3103&quot;&gt;Lower accuracy compared to large cloud models&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-start=&quot;3105&quot; data-end=&quot;3159&quot;&gt;These limitations are part of embedded AI engineering.&lt;/p&gt;&lt;hr data-start=&quot;3161&quot; data-end=&quot;3164&quot;&gt;&lt;h3 data-start=&quot;3166&quot; data-end=&quot;3180&quot;&gt;Conclusion&lt;/h3&gt;&lt;p data-start=&quot;3182&quot; data-end=&quot;3374&quot;&gt;This project proves that AI does not require expensive hardware or cloud infrastructure.&lt;br data-start=&quot;3270&quot; data-end=&quot;3273&quot;&gt;With ESP32 and TinyML, useful intelligent systems can be built entirely offline and at very low cost.&lt;/p&gt;&lt;p data-start=&quot;3376&quot; data-end=&quot;3440&quot;&gt;AI without millions is not theory — it is practical engineering.&lt;/p&gt;&lt;p data-start=&quot;3376&quot; data-end=&quot;3440&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://makeradvisor.com/wp-content/uploads/2020/05/ESP32-Development-Boards-Review-and-Comparison.jpg&quot; style=&quot;height:338px; width:602px&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description>
<category>ESP32 / ESP32 Zero</category>
<guid isPermaLink="true">https://asky.uk/104/tinyml-sensor-classification-on-esp32-offline-ai</guid>
<pubDate>Mon, 15 Dec 2025 21:50:22 +0000</pubDate>
</item>
<item>
<title>How to build a Mini FPV Piaggio P.180 Avanti Replica with ESP32</title>
<link>https://asky.uk/92/how-to-build-a-mini-fpv-piaggio-180-avanti-replica-with-esp32</link>
<description>&lt;p&gt;This guide will walk you through the step-by-step process of building a compact, lightweight FPV-capable replica of the Piaggio P.180 Avanti aircraft. The build focuses on using inexpensive components like foam (e.g., styrofoam or depron), brushed motors, an ESP32-CAM module for FPV, and basic control via coil actuators or dual-motor thrust vectoring. The aim is to create a functional, minimalist FPV plane using microcontrollers and camera modules that can be controlled via a smartphone.&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://i.ibb.co/jkzDQtCM/foam-fun.png&quot; style=&quot;height:866px; width:866px&quot;&gt;&lt;/p&gt;&lt;hr&gt;&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Introduction&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Materials and Components&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Airframe Design and Construction&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Electronics Integration&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Motor and Actuator Setup&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;FPV System Configuration&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Power Supply and Battery Mounting&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Weight Optimization&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Testing and Calibration&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Flying and Controls&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Future Upgrades&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Safety Notes&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr&gt;&lt;h2&gt;1. Introduction&lt;/h2&gt;&lt;p&gt;The Piaggio P.180 Avanti is an Italian twin turboprop aircraft known for its unique canard configuration and rear-mounted pushing propellers. In this miniature foam replica, we aim to capture its basic shape and unique look while enabling real-time FPV control.&lt;/p&gt;&lt;p&gt;Goals:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Lightweight foam airframe (&amp;lt; 70g total)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;ESP32-CAM FPV streaming to phone&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Basic two-channel control (e.g., rudder + elevator or dual motor thrust)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Simplified build with minimal parts&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2&gt;2. Materials and Components&lt;/h2&gt;&lt;h3&gt;Electronics:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;ESP32-CAM&lt;/strong&gt; (for FPV stream)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;ESP32 Dev Module / RP2040 with ESP8285&lt;/strong&gt; (for control logic)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;DRV8833&lt;/strong&gt; motor driver&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;2x brushed motors (6 mm or 7 mm)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;2x 65 mm propellers&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;LiPo Battery&lt;/strong&gt;: 3.7V 300–500 mAh&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Coil actuators x2&lt;/strong&gt; (optional, for canards or rudder)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Frame and Structure:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Foam board / depron / insulation foam / foam trays&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Carbon rods or skewers&lt;/strong&gt; (for reinforcement)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hot glue, UHU Por, or foam-safe CA glue&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Utility knife, ruler, pencil&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Optional:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mobile app for viewing ESP32-CAM stream (e.g., MJPEG Viewer)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Voltage regulator (if needed for ESP32/Camera)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2&gt;3. Airframe Design and Construction&lt;/h2&gt;&lt;p&gt;The P.180 Avanti layout includes a forward canard, mid-fuselage wing, and rear pusher propeller(s). We&#039;ll approximate this layout using lightweight foam.&lt;/p&gt;&lt;h3&gt;Fuselage:&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Cut a fuselage body (approx. 25–30 cm long) with a rounded nose.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Hollow out or layer foam to leave space for electronics.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Reinforce the fuselage with a carbon spar.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Wings:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Mid-wing of approx. 20–25 cm span, slightly swept back.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Add dihedral for stability.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Canards:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Small forward-mounted canards (5–7 cm span)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Controlled via coil actuator or fixed angle.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Mounting:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Leave compartment for battery and microcontroller access.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Design for easy access to the ESP32-CAM for angle adjustments.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2&gt;4. Electronics Integration&lt;/h2&gt;&lt;h3&gt;Wiring Layout:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Power the ESP32-CAM and controller via the same LiPo battery (regulated if needed).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Connect motor outputs to DRV8833, and control inputs to the microcontroller.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;If using coil actuators, connect via GPIOs with transistor drivers.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Placement:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Place heavy components (battery, motor) as close to the center of gravity (CG) as possible.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Mount camera facing forward through a small cutout.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2&gt;5. Motor and Actuator Setup&lt;/h2&gt;&lt;h3&gt;Option A: Twin motor thrust control&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Mount two motors on the rear of the fuselage in pusher configuration.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Vary motor speeds for turning (differential thrust).&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Option B: One motor + coil actuators&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Use a single pusher motor.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Add two coil actuators to move canards or rudder/elevator.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;DRV8833 can drive both brushed motors and coil actuators.&lt;/p&gt;&lt;hr&gt;&lt;h2&gt;6. FPV System Configuration&lt;/h2&gt;&lt;p&gt;ESP32-CAM can broadcast live video over Wi-Fi.&lt;/p&gt;&lt;h3&gt;Steps:&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Flash the ESP32-CAM with MJPEG streaming sketch.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Connect to its Wi-Fi access point with a smartphone.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Open MJPEG stream in a browser or app.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Mount the camera module in the front of the plane.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr&gt;&lt;h2&gt;7. Power Supply and Battery Mounting&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Use a 3.7V 300–500 mAh LiPo battery.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Keep it centered for balance.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;If necessary, use a buck/boost regulator for 5V components.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Estimated power usage:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Motors: ~1–2A each under load&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;ESP32-CAM: ~200–250 mA during streaming&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Control board: ~100 mA&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2&gt;8. Weight Optimization&lt;/h2&gt;&lt;p&gt;Target total weight: 50–70 grams&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Use the lightest possible foam.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Avoid long wires; keep layout compact.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Consider 6 mm brushed motors over 7 mm.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Use one motor if thrust is sufficient.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Remove unused camera features (e.g., flash LED).&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2&gt;9. Testing and Calibration&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Test each electronic component before embedding it.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Balance the plane on its CG point (roughly 1/3 wing chord).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Calibrate motor thrust to ensure liftoff is possible.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Stream FPV video and verify quality and latency.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr&gt;&lt;h2&gt;10. Flying and Controls&lt;/h2&gt;&lt;h3&gt;Control Methods:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Use ESP32 to control motors via Wi-Fi or preprogrammed logic.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Use a Bluetooth joystick or mobile app (optional).&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Launch tips:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Hand-launch in calm wind.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Keep first flights short.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Monitor FPV stream and battery.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2&gt;11. Future Upgrades&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Add gyro for stabilization (MPU6050 or similar)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Add GPS for telemetry&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Use larger battery or solar cell for more endurance&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Integrate OTA updates for ESP32&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Add full servo-based control surfaces&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2&gt;12. Safety Notes&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Always fly in an open area.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Avoid flying near people or animals.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Check battery and propellers before every flight.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Monitor temperatures and ensure ESP32 doesn’t overheat.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;p&gt;This build is a fantastic mix of creativity, electronics, and aerodynamics. It proves that even microcontrollers and foam can achieve functional FPV flight. The result is a charming, functional miniature replica of the Piaggio P.180 Avanti.&lt;/p&gt;&lt;p&gt;Let your mini Avanti soar!&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Download code &lt;a rel=&quot;nofollow&quot; href=&quot;http://asky.uk/Downloads/drone_full_code.rtf&quot;&gt;&lt;strong&gt;HERE&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
<category>ESP32 / ESP32 Zero</category>
<guid isPermaLink="true">https://asky.uk/92/how-to-build-a-mini-fpv-piaggio-180-avanti-replica-with-esp32</guid>
<pubDate>Sat, 19 Jul 2025 11:13:44 +0000</pubDate>
</item>
</channel>
</rss>