Inhoudsopgave:

Eenvoudig radarsysteem van Magicbit - Ajarnpa
Eenvoudig radarsysteem van Magicbit - Ajarnpa

Video: Eenvoudig radarsysteem van Magicbit - Ajarnpa

Video: Eenvoudig radarsysteem van Magicbit - Ajarnpa
Video: Intelligente lichtregelsystemen 2024, Juli-
Anonim

Deze tutorial laat zien hoe je een eenvoudig radarsysteem maakt met behulp van een HC-SR04-sensor en Microbit-ontwikkelbord met verwerking en Arduino IDE's.

Benodigdheden:

  • SG90 Micro-servomotor
  • Overbruggingsdraden (generiek)
  • Breadboard (generiek)
  • Magicbit
  • USB-A naar micro-USB-kabel
  • Ultrasone sensor - HC-SR04 (algemeen)

Stap 1: Verhaal

In deze tutorial zullen we leren hoe je een eenvoudig radarsysteem kunt maken met behulp van Magicbit core dev board. Voor dit doel gebruiken we de HC-SR04 ultrasone sensor en voor het weergeven van gegevens gebruiken we de verwerkingsomgeving. Laten we beginnen.

Stap 2: Theorie en methodologie

Laten we eerst bespreken hoe dit werkt. Het principe is heel eenvoudig. Eerst draaien we onze sensor continu rond de verticale as in een bereik van 180 graden. Tijdens die beweging nemen we de gegevens over de afstand tot het dichtstbijzijnde object van de ultrasone sensor onder elke hoek. Voor dit proces gebruiken we Magicbit core board. Daarna moeten wij de verbinding met de verwerkingsomgeving tot stand brengen voor het tonen van onze gegevens. Daarom gebruiken we een serieel communicatieprotocol met een geschikte baudrate. Vervolgens ontwerpen we onze radarsysteeminterface met behulp van verwerkings-IDE. In die IDE configureren we onze seriële communicatie om realtime gegevens via serieel te krijgen. Dus we communiceren in realtime met Magicbit en tonen de gegevens die van Magicbit naar de verwerkende IDE worden verzonden.

Stap 3: Hardware-installatie

apparatuur installatie
apparatuur installatie
apparatuur installatie
apparatuur installatie

Voor dit project hebben we voornamelijk drie hardwarecomponenten gebruikt. Ze zijn Magicbit, servomotor en ultrasone sensor. De verbinding tussen al deze onderdelen is weergegeven in bovenstaande figuur.

Ultrasone sensor gebruikte 3,3 v voor het opstarten. Daarom hebben we de rechter onderste poort van het Magicbit-bord gebruikt om de ultrasone sensor op Magicbit aan te sluiten. Maar servomotor wordt gebruikt 5V voor een goede werking, daarom hebben we de linker onderste poort gebruikt om de servomotor met Magicbit te verbinden. In dit geval gebruiken we de Magic bit servo connector module. Maar als je die module niet hebt, kun je drie jumperdraden gebruiken om 5V naar 5V, Gnd naar Gnd en signaalpin naar 26-pins op magicbit te verbinden.

Nadat we het circuit hebben gebouwd, moeten we een klein mechanisch onderdeel bouwen. stel de enkelzijdige servoconnector in op de servomotor met behulp van een kleine moer. Bevestig vervolgens de sensor op die connector met behulp van een L-vormige beugel of op de juiste manier. Na het hele systeem hebben we het op breadboard gefixeerd. Maar u kunt een ander oppervlak gebruiken om servo en Magicbit te monteren.

Stap 4: Software-installatie

Software-installatie
Software-installatie
Software-installatie
Software-installatie

De softwarekant is een beetje ingewikkeld. Voor een goed begrip kunt u de volgende links raadplegen voordat u verder gaat met het volgende deel.

magicbit-arduino.readthedocs.io/en/latest/

hello.processing.org/editor/

Laten we eens kijken naar Arduino IDE-code en hoe die code werkt.

Voor het aansturen van servo gebruiken we ESP32 servo-bibliotheek. Deze bibliotheek is bijna opgenomen in Magic Bit Board Manager in Arduino IDE. Om met ultrasone sensor om te gaan, gebruiken we newPing-bibliotheek. Deze is te downloaden via de volgende link.

bitbucket.org/teckel12/arduino-new-ping/do…

Download het zip-bestand en ga naar tools>bibliotheek opnemen>Zip-bibliotheek toevoegen in Arduino. selecteer nu uw gedownloade zip-bestand van de nieuwe pinbibliotheek. Voor communicatie met verwerking gebruikten we seriële communicatie met een baudrate van 115200. Dit is de meest geschikte frequentie voor ESP32. Vanuit elke hoek sturen we onze gegevens naar de computer met behulp van dit protocol. Afstand tot het dichtstbijzijnde voorobject vanaf de sensor, draairichting en draaihoek worden in deze gegevens opgenomen. Met behulp van twee for-lussen draaien we onze servo in twee richtingen. Tijdens een rotatie van één graad hebben we vier keer seriële gegevens verzonden. De reden daarvoor kunt u begrijpen in de uitleg van een deel van de verwerking.

Nu is het tijd om naar de verwerkingsomgeving te kijken. Dit is op Java gebaseerde programmeersoftware. We kunnen een schets van ons programma in deze schets schrijven in de verwerking van IDE. We kunnen ook visuele output genereren door ons programma uit te voeren. U kunt ook uitvoer als 2D- en 3D-objecten nemen. Niet alleen dat, dit kan worden gebruikt voor beeldverwerking en nog veel meer dingen.

In de verwerkingsschets ontwerpen we eerst onze gegevensweergave-interface met behulp van eenvoudige grafische functies. Aan het begin van de code brengen we onze seriële communicatie tot stand door seriële bibliotheken op te nemen. In de setup-functie moet je iets veranderen aan de hand van welke USB-poort je hebt gebruikt om Magicbit met de computer te verbinden. u kunt uw poort controleren met behulp van Arduino IDE wanneer u de Arduino IDE instelt om de code te uploaden. Wijzig vervolgens de naam van de com-poort in het setup-gedeelte in de verwerkingsschets. wanneer de seriële gegevens beschikbaar zijn, wordt de Serialvent-functie automatisch geactiveerd. Daarom is de belangrijkste logica van de code opgenomen in een seriële gebeurtenis om te voorkomen dat de hoeken en gegevens ontbreken. wanneer nieuwe gegevens beschikbaar zijn, tekenen we een lijn in het scherm volgens onze hoek. Als er op dat moment geen object wordt gedetecteerd, is de volledige lijn groen gekleurd. Zo niet, dan is een deel van de lijn rood afhankelijk van de afstand van de sensor tot het object. Ook de overeenkomstige draairichting tekenen we nog eens 200 lijnen in de buurt van die lijn met afnemend niveau van groene kleur. tussen elke Main hebben we 0.25 graden verschil. Daarom krijgen we 4 metingen tegelijk van Magicbit in elke graadrotatie. Hierdoor kunnen we prachtig hand in scherm zoekend maken.

Nadat de code volledig is geüpload naar magie en het hardwaregedeelte is ingesteld, opent u de verwerkings-IDE en voert u de code uit door op de knop Uitvoeren te klikken. Nu heb je een heel eenvoudig radarsysteem.

U kunt de codes naar wens aanpassen wat u wilt weergeven.

Stap 5: Problemen oplossen

Verwerkingsschets wordt niet uitgevoerd.

  • Wacht even. Omdat de opstarttijd afhankelijk is van de prestaties van uw pc en GPU.
  • Controleer of het seriepoortnummer correct is op de verwerkingsschets.
  • Controleer of de USB-verbinding correct is bevestigd.
  • Controleer de verbinding tussen ultrasone sensor en Magicbit.
  • Open de seriële monitor en controleer of de gegevens van Arduino komen. Zo niet, dan is het probleem uw Arduino-code of uw USB-verbinding.

Servo werkt niet.

  • Controleer of de USB-verbinding correct is bevestigd.
  • Controleer de bedrading.
  • Controleer of de servo in goede staat is.

Stap 6: Arduino-code

#erbij betrekken

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing-sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include //include servo library int distance; Servo RadarServo; void setup() { Serial.begin(115200); RadarServo.attach(26); // Bepaalt op welke pin de servomotor is bevestigd vertraging (3000); } void loop() {// roteert de servomotor van 15 naar 165 graden for(int i=0;i<=180;i++){ RadarServo.write(i); vertraging (50); distance = sonar.ping_cm();// Roept een functie op voor het berekenen van de afstand gemeten door de ultrasone sensor voor elke graad for(int j=0;j0){ break; } Serieel.print(i); // Stuurt de huidige graad naar de seriële poort Serial.print(", "); // Stuurt een toevoegingsteken direct naast de vorige waarde die later nodig is in de Processing IDE voor het indexeren van Serial.print(j); // Stuurt de huidige graad naar de seriële poort Serial.print ("*"); Serieafdruk(1); // Stuurt de afstandswaarde naar de seriële poort Serial.print ("/"); // Stuurt een toevoegingsteken direct naast de vorige waarde die later nodig is in de Processing IDE voor het indexeren van Serial.print(distance); // Stuurt de afstandswaarde naar de seriële poort Serial.print("."); // Stuurt een optelteken direct naast de vorige waarde die later in de Processing IDE nodig is voor indexering } } // Herhaalt de vorige regels van 165 tot 15 graden for(int i=180;i>=0;i--){ RadarServo.schrijf(ik); vertraging (50); afstand = sonar.ping_cm(); for(int j=75;j>=0;j-=25){ if(i==180 && (j==75 ||j==50 ||j==25)){ ga verder; } Serieel.print(i); // Stuurt de huidige graad naar de seriële poort Serial.print(", "); // Stuurt een toevoegingsteken direct naast de vorige waarde die later nodig is in de Processing IDE voor het indexeren van Serial.print(j); // Stuurt de huidige graad naar de seriële poort Serial.print ("*"); Serieafdruk(-1); // Stuurt de afstandswaarde naar de seriële poort Serial.print ("/"); // Stuurt een toevoegingsteken direct naast de vorige waarde die later nodig is in de Processing IDE voor het indexeren van Serial.print(distance); // Stuurt de afstandswaarde naar de seriële poort Serial.print("."); // Stuurt een optelteken direct naast de vorige waarde die later nodig is in de Processing IDE voor indexering } }

}

Aanbevolen: