Inhoudsopgave:

Machine Watcher bouwen - Ajarnpa
Machine Watcher bouwen - Ajarnpa

Video: Machine Watcher bouwen - Ajarnpa

Video: Machine Watcher bouwen - Ajarnpa
Video: Ik HAAT knutselen! 2024, November
Anonim
Build Machine Watcher
Build Machine Watcher
Build Machine Watcher
Build Machine Watcher

Het uitgangspunt voor dit project was om aan een concreet project te werken om het een en ander te leren over microcontrollerborden.

Het oorspronkelijke idee was om een fysiek object te maken dat een Continuous Integration System (VSTS|Azure DevOps) kon bewaken en fouten in de software-build kon rapporteren. Vanwege veiligheidsproblemen van de IT-afdeling werd mij geweigerd een "niet-standaard" apparaat rechtstreeks op het bedrijfsnetwerk aan te sluiten.

Ik eindigde met architectuur getoond in bovenstaande afbeelding. De uitvoeringsworkflow kan worden samengevat als:

Een Windows-bureaubladtoepassing scant (pull) VSTS-builddefinities. Het analyseert de resultaten van de build en stuurt vervolgens een opdracht naar het fysieke apparaat dat een kleine geanimeerde reeks uitvoert voordat de rode of de groene vlag wordt weergegeven.

Stap 1: Benodigde onderdelen

De volgende lijst vat alle benodigde items samen:

  • 1 Arduino UNO R3 (https://store.arduino.cc/usa/arduino-uno-rev3).
  • 1 Uitbreidingsschild (https://www.dfrobot.com/wiki/index.php/IO_Expansion_Shield_for_Arduino_V7_SKU:DFR0265).
  • 2 XBee S1-modules (https://www.adafruit.com/product/128).
  • 1 XBee explorer-dongle (https://www.sparkfun.com/products/11697).
  • 2 continue servomotoren 5VDC met bevestigingsaccessoires (https://www.parallax.com/sites/default/files/downloads/900-00008-Continuous-Rotation-Servo-Documentation-v2.2.pdf).
  • 1 9VDC voeding.
  • 3 LED's.
  • 3 weerstanden 220 Ohm.
  • thermo intrekbare mouw.
  • 1 drukknop.
  • 10KΩ pull-weerstand voor de pull-up.
  • 100nF condensator.
  • elektrische draden.
  • stripboard (voor de montage van de knop)
  • 5mm hout (50x50cm).
  • houten stok vierkant profiel 5x5 mm (1m).
  • karton.
  • 10 X schroef 2 mm diameter.
  • 4 schroef 5mm diameter.
  • sterke magneet.
  • draaimodule. Ik hergebruikte het interne bewegende deel van een knipperlicht. je kunt zetten wat je wilt. Je moet er alleen voor zorgen dat de 2 mobiele delen vrij kunnen bewegen zonder elkaar aan te raken.

Stap 2: De doos bouwen

De doos bouwen
De doos bouwen

Eigenlijk kun je een doos hebben in welke vorm je maar wilt. De belangrijkste dingen om over na te denken voordat u begint, is waar de bewegende delen zullen zijn en om ervoor te zorgen dat ze vrij kunnen bewegen zonder elkaar aan te raken. Een ander punt is waar ga je het apparaat neerzetten? Ik eindigde met een magneet (sterke) om het op een metalen steun te plakken. als je dezelfde box wilt bouwen, kun je de instructies volgen in het bestand box_drawings.pdf.

In dat geval hoef je alleen maar alle verschillende stukken uit te snijden, de gaten voor de servomotoren, de LED's, de knop en de schroeven te maken en tenslotte alle delen aan elkaar te lijmen. Als het eenmaal droog is, een beetje schuren en wat kleur.

De twee vlaggen zijn gemaakt van wat rood en groen karton. Om de vlaggenmast op de servomotoren te bevestigen kunt u gebruik maken van de meegeleverde montage onderdelen bij aankoop.

Stap 3: Arduino-installatie

Arduino-configuratie
Arduino-configuratie

De items die zijn aangesloten op het Arduino-uitbreidingsbord zijn:

  • D2 PIN: de drukknop.
  • D4 PIN: de LED om aan te geven dat het systeem AAN is.
  • D5 PIN: de LED om aan te geven dat we een cyclus uitvoeren.
  • D6 PIN: de LED om aan te geven dat het apparaat een nieuw bericht heeft ontvangen.
  • D9 PIN: het PWM-pulssignaal voor de servomotor die de gyro bedient.
  • D10 PIN: het PWM-pulssignaal voor de servomotor die de vlag behandelt.
  • XBee Socket: één ZigBee-module.

Het bovenstaande schema laat zien hoe alle items op het bord zijn aangesloten.

Voor de LED's zijn de weerstand en de draden er direct op gelast (let op de polariteit). Alles wordt dan verpakt in een thermo-intrekbare hoes.

Voor de drukknop zijn alle onderdelen (knop, weerstand en condensator) direct op een klein satelliet-stripbordje gelast. Het stripboard wordt dan direct vastgezet met twee schroeven (2 mm)

De servomotoren werken op 5V stroom en kunnen dus rechtstreeks op de Arduino worden aangesloten. Als u die met een hogere spanning (12V) gebruikt, moet u een andere laag voor de voeding toevoegen.

Voor de XBee-modules kunnen ze, zodra ze zijn geconfigureerd om met elkaar te praten (zie volgende sectie), rechtstreeks op de stopcontacten worden aangesloten.

Opmerkingen: De LED's en de drukknop kunnen rechtstreeks op de Arduino-pinnen zijn aangesloten, omdat dit intern de benodigde zekerheden kan implementeren. Ik deed het gewoon op de oude manier omdat dit aspect niet erg duidelijk voor mij was.

Stap 4: Software - XCTU

Software - XCTU
Software - XCTU

Zoals hierboven vermeld, moeten de twee XBee-apparaten worden geconfigureerd om samen te praten. Om dat te doen, moet u de speciale X-CTU-software van DIGI gebruiken. U hoeft deze configuratiestap slechts één keer uit te voeren. volg de procedure beschreven in het bestand xbee_configuration.pdf.

Zodra de configuratie is voltooid, kunt u elke module op hun socket aansluiten. Eén op de USB/seriële converter en één op het Arduino-uitbreidingsbord.

De USB/Serial-converter zou automatisch moeten worden herkend door Windows 10. Als dit niet het geval is, moet u het stuurprogramma mogelijk handmatig installeren

Opmerking:

Het gebruik van XBee-modules voor een basis seriële communicatie is een beetje overkill. Toen ik aan het project begon, slaagde ik er niet in om eenvoudige seriële communicatieapparaten te vinden die gemakkelijk bruikbaar waren op Windows 10 (stuurprogrammaproblemen). Het was ook een gelegenheid om een paar dingen te leren over

Stap 5: Software - Arduino Sketch

Software - Arduino Sketch
Software - Arduino Sketch

Om de Arduino te programmeren, gebruiken we de IDE die toegankelijk is vanaf de officiële website.

De logica van het programma is vrij eenvoudig, het luistert gewoon op de standaard seriële poort van het bord naar enkele letters ('a', 'b', …). Als het ontvangen teken overeenkomt met een bekend commando, speelt een subfunctie de overeenkomstige reeks af.

De 2 belangrijkste nuttige commando's zijn succesanimatie ('a') en foutanimatie ('b').

Om wat meer met de box te kunnen spelen (of debuggen) zijn er enkele extra commando's die uitgevoerd kunnen worden. Zij zijn:

  • 'o': forceer de AAN-LED om AAN te zijn
  • 'p': forceer de AAN-LED om UIT te zijn
  • 'q': forceer de LED voor nieuw bericht om AAN te zijn
  • 'r': forceer de LED voor nieuw bericht om UIT te zijn
  • 's': forceer de Cyclus-LED om AAN te zijn
  • 't': forceer de Cyclus-LED om UIT te zijn
  • ‘u’: activeer de servomotor van de gyro
  • ‘v’: activeer de servomotor van de vlag.

Naast het seriële commando is er een subroutine (handlePushButton) die wordt geactiveerd wanneer de drukknop op het apparaat wordt ingedrukt. In dat geval wordt de fout- of succesanimatie automatisch afgespeeld. Met deze functie kan worden gecontroleerd of het fysieke apparaat correct is gemonteerd.

De code van de Arduino-schets staat in het enkele bestand bsldevice.ino. U kunt het rechtstreeks uploaden met behulp van de IDE.

Stap 6: Software - Desktoptoepassing

Software - Desktoptoepassing
Software - Desktoptoepassing

Het doel van de desktop applicatie is om de Microsoft Azure DevOps (voorheen VSTS) website te monitoren en te detecteren of een Build Definition succesvol of fout is. Elke keer dat een build is voltooid, bepaalt de desktoptoepassing de status van de build en stuurt het bijbehorende commando ('a' of 'b') naar de seriële poort (COMx).

Na het starten van de applicatie is de eerste actie het selecteren van de juiste com-poort waarop de ZigBee-module is aangesloten. Om de poort te bepalen kunt u de Windows Device Manager gebruiken (onder Poorten (COM & LPT sectie)). De verbinding met Azure DevOps wordt automatisch gedaan bij het opstarten met behulp van de referenties van de huidige gebruiker. U kunt elk vooraf gedefinieerd commando ook handmatig verzenden met behulp van de keuzelijst aan de rechterkant.

Alle bronnen zijn gegenereerd met de professionele editie van Visual Studio 2017. Het vereist. NET Framework 4.6.1. Deze versie van Framework verdient de voorkeur om de verbinding/authenticatie met de VSTS-website te vergemakkelijken.

gebruiken:

  • download het archief bslwatcher_sources.zip.
  • Pak het uit op je schijf.
  • Lees how_to_build.txt-bestand voor details over de build.

Stap 7: Eerste start

Er zijn twee belangrijke dingen om in gedachten te houden bij het starten van de box:

1- Het systeem kan op geen enkele manier zelf weten waar de vlaggen zijn. Het systeem gaat ervan uit dat bij het opstarten de groene vlag omhoog is.

2- Bij het opstarten van het Arduino-bord mag er niets bewegen. Omdat we continue servo's gebruikten, is de nulpositie standaard ingesteld op 90 in het schetsbestand. Als een servomotor begint te draaien of geluid maakt. het kan zijn dat u de nulpositie opnieuw moet definiëren. Om dat te doen, hoeft u alleen maar de potentiometer af te stemmen in het kleine gaatje aan de zijkant van de servomotor.

www.arduino.cc/en/Referentie/ServoWrite

cmra.rec.ri.cmu.edu/content/electronics/boe…

Stap 8: Conclusie

Dit kleine apparaatje rapporteert fysiek de status van uw Continuous Integration System.

Aangezien de "intelligentie" in de desktop-applicatie zit, kunt u de box gebruiken om andere software of processen (mail, een temperatuursensor…) te bewaken. U hoeft alleen maar toegang te hebben tot een andere API en te beslissen wat "goed" of "slecht" is. Als u geen rode en groene conventiekleuren gebruikt, kunt u zelfs de betekenis van het "bericht" wijzigen.

Verbeteringen kunnen ook aan de box zelf worden aangebracht:

  • Gebruik een batterij.
  • Gebruik een ander communicatieprotocol.
  • Voeg sensoren toe om te weten welke vlag bovenaan staat.

Ik hoop dat je dit project interessant vond.

Bedankt om tot hier te lezen.

Stap 9: Bijlage

Enkele van de links die zijn gebruikt om dit project te maken:

Arduino-website:

DIGI-website:

XCTU-software:

Sommige informatie gebruikt van anderen:

arduino.stackexchange.com/questions/1321/se…

stackoverflow.com/questions/10399400/best-w…

www.mon-club-elec.fr/pmwiki_reference_ardui… (in het Frans)

jeromeabel.net/

MSDN-website in het algemeen:

docs.microsoft.com/en-us/dotnet/framework/…

Aanbevolen: