De Arduino Internet Gizmo (20 / 22 stap)

Stap 20: Hoe de software werkt


The Arduino gizmo software draait op de kleur veranderende LEDs, dan gaat in een lus lezen van RFID-tags, waardoor de LED's op de top van gizmo race in kringen als een tag wordt gelezen, en stuurt de gegevens naar de PC.  Een overzicht van de onderdelen van de programma's volgt - er zijn gedetailleerde opmerkingen in de code die elke regel verklaren.  Het programma wordt weergegeven in de eerste drie diagrammen.

  • Lijn 8 kan het programma de SoftwareSerial-bibliotheek die wordt gebruikt om te communiceren met de RFID reader gebruiken
  • Regels 10-16 definiëren de pinnen van de Arduino gebruikt door het programma
  • Regels 18-23 definiëren de variabelen die worden gebruikt door het programma
  • Lijnen 28-36 uitgevoerd wanneer de Arduino is eerst ingeschakeld of op beginstand zetten.  Deze code schakelt de kleur veranderende LED circuit, initialiseert de verbinding met de PC en de RFID-kaartlezer en initialiseert de LED's op de top van de gizmo.
  • Lijnen 41-71 zijn de hoofdlus van het programma.  Deze lus wordt uitgevoerd totdat de Arduino is uitgeschakeld of op beginstand zetten.  Het eerste wat gedaan in de lus is te controleren of de RFID-lezer heeft het lezen van alle gegevens en of de gegevens lezen geeft het begin van een tag.  Als dat zo is:
    • Lijnen 44-53 worden gegevens gelezen van de RFID-lezer totdat de tag is volledig gelezen.
    • Lijnen 55-63 sturen de gegevens naar de PC.  Drie datum worden verzonden: de graaf van tags gelezen tot nu toe, het tijdstip waarop de tag is gelezen, en de label-ID die is gelezen.  De graaf en de tijd niet worden gebruikt door het programma op de PC maar zijn er voor debugging doeleinden en zijn handig als u wilt deze code gebruiken voor andere projecten Arduino RFID.
    • Lijnen 64-68 tijdelijk de RFID-kaartlezer uitgeschakeld, maakt de LED's op de top van de gizmo race rond en vervolgens slaapplaatsen voor een korte tijd.  De RFID-lezer is weer ingeschakeld en het programma lussen terug naar de top.
  • Lijnen 74-88 zijn een subroutine dat maakt de LED's op de top van gizmo in de juiste volgorde verlichten en te lijken racen rond in cirkels. De ingang aan de subroutine is het aantal keren om te racen rond en het het aantal milliseconden dat elke LED verlicht.
  • Een subroutine waarmee initialiseert de pinnen voor de LEDs en zet ze als output pinnen zijn lijnen 90-98.

Het Python gizmo programma draait op de PC en lussen wachten op gegevens wordt verzonden door de Arduino.  Wanneer gegevens worden ontvangen, wordt het programma worden de ID van de tag in een tabel te vinden van de bijbehorende website opgezocht.  Als de label-ID in de tabel, het programma gebruikt een Python library "webbrowser" geroepen om een nieuw tabblad openen in de standaardbrowser op de PC en de webpagina laadt.  Als de browser niet loopt, zal "webbrowser" starten.  Als de label-ID is niet in de tabel, de programma's een HTML-bestand gemaakt en wordt een foutbericht weergegeven met de label-ID en toont dat in een nieuw tabblad in de browser.  Een voorbeeld is weergegeven in de laatste afbeelding.  Het programma wordt weergegeven in de vierde, vijfde, zesde en zevende diagrammen.  Een overzicht van programma volgt:

  • Lijnen 12-15 importeren de bibliotheken voor het maken en het schrijven aan dossiers, communiceren met de Arduino, parseren van de gegevens verzonden van de Arduino en beheersing van de webbrowser.
  • Lijnen 20-34 zijn de tabel (woordenboek in Python termen) gebruikt om de label-id koppelen aan websites.  Elke regel heeft de tien karakter RFID tag-ID en een HTTP-koppeling naar de website.  Merk op dat de eerste tag "" voor het webadres Quit heeft.  Als deze tag wordt gelezen, vervolgens eindigt het programma.  Nieuwe tags kunnen worden toegevoegd door het dupliceren van de laatste regel en de label-ID te vervangen door de nieuwe tag en zetten in de website die u voor de tag wilt.
  • Lijn 37 bepaalt welke COM-poort die wordt gebruikt om te communiceren met de Arduino.  Dit is de dezelfde COM-onderdeel dat wordt gebruikt door de Arduino ontwikkeling software te laden het gecompileerde programma in de Arduino.  U moet veranderen zodat deze overeenkomen met uw systeem.
  • Lijn 42 is de naam van het bestand dat wordt gemaakt wanneer een onbekende tag is gelezen.  Dit bestand wordt gemaakt in de map waar u Python geïnstalleerd.  In mijn geval was het "c:\Python27".
  • De pySerial bibliotheek lijnen 45-54 gebruiken om te verbinden met de Arduino.  Berichten zullen worden weergegeven in het venster van de Python die aangeeft of de verbinding is gemaakt of niet.
  • Lijn 56 controleert of de verbinding geslaagd is. Als de verbinding tot stand is gebracht, blijft verwerking anders dat het programma zal eindigen.
  • Lijn 58 stelt een variabele die is gebruikt om te bepalen of een dubbele tag is gelezen.  Het idee is om te voorkomen dat dezelfde website in de browser worden geopend als de RFID-lezer gebeurt om te lezen van de tag meerdere keren wanneer deze boven de lezer geplaatst.
  • De "pySerial" bibliotheek lijnen 62-63 gebruiken om te lezen van de data van de Arduino.
  • Lijn 66 controleert als data gelezen is.
  • Lijnen 68-74 gebruik de bibliotheek van de "shlex" te breken van de gegevens van de Arduino in drie delen: de graaf, de tijd en de label-ID.
  • Lijnen 76-78 een functie aanroepen om te zoeken op de website op basis van de label-ID. De website in de Python en de label-ID worden weergegeven in het consolevenster van de Python voor foutopsporing.
  • Lijnen 81-82 controleren om te zien als dit is de speciale code die wordt gebruikt om te stoppen met het programma en dus, wordt het programma afgesloten voor de lus en het programma eindigt.
  • Regel 86 gecontroleerd om te zien of de tag lees net hetzelfde als de vorige.  Als dat zo is, wordt het terug naar de top.
  • Lijn 87 gebruikmaakt van de bibliotheek "webbrowser" om te beginnen de browser als niet actief en open vervolgens een nieuw tabblad voor de website.
  • Regel 88 slaat de tag net gelezen om te voorkomen dat dubbele sites wordt weergegeven.  Het programma wordt dan terug om te wachten op een ander label.
  • Lijnen 90-104 zijn de functie die wordt gebruikt om te zoeken van de websites die zijn gekoppeld aan de label-ID:
    • Regel 93 controleert om te zien of de label-ID in het woordenboek
    • Lijn 94 retourneert de website als de label-ID in het woordenboek was.
    • Lijnen 98-100 bouwen de HTML voor het foutbericht voor de onbekende tag.
    • Lijnen 101-103 de "sys" bibliotheek kunnen maken van een HTML-bestand, de HTML-code te schrijven naar het bestand en sluit het bestand.  Als het bestand gebeurt reeds bestaan, wordt de HTML-code in het bestand overschreven door de nieuwe HTML-code.
    • Lijn 104 retourneert de naam van het bestand.  Terug in het hoofdprogramma, zal de webbrowser open dit bestand in plaats van een website en het foutbericht weer.
  • Lijnen 107-111 kunnen u dit programma starten vanaf de opdrachtregel en passeren in de naam van de COM-poort als een parameter in plaats van het programma wijzigen.  Zie de volgende stap voor meer informatie over hoe dit te gebruiken.

Ik heb de software met een verscheidenheid van web-browsers getest: de "webbrowser" bibliotheek werkt prima met Firefox, Safari en Internet Explorer.  Het werkt niet goed met Opera.

Gerelateerde Artikelen

Eenvoudige Internet Gizmo

Eenvoudige Internet Gizmo

ik publiceerde onlangs een instructable genaamd de "Arduino Internet Gizmo" die combineert een RFID-kaartlezer, een Arduino en een bos van LEDs en andere componenten te maken van een apparaat dat gebruikmaakt van RFID kaarten naar favoriete webp
Arduino Internet gecontroleerde bureaulamp

Arduino Internet gecontroleerde bureaulamp

dit is een kleine project ik deed mijn bureaulamp controle over het internet.Stap 1: BenodigdhedenEen linux-webserver met PHP, een arduino, een relais en bepaalde andere onderdelen.Stap 2: Upload uw code aan de arduinoDe volgende code uploaden naar j
Arduino Internet Time Client

Arduino Internet Time Client

UPDATE! 11/15/2015Toegevoegd een WiFi en oplaadbare batterijoptie (stap 10).UPDATE!Toegevoegd 12h / 24h-switch en standaard / Daylight Savings Time schakelaar! Zie stap 7 & 8.Heb je ooit wilde een klok die nauwkeurige tijd tot een officiële tijdsbron
Arduino Internet (zonder Wifi Shield)

Arduino Internet (zonder Wifi Shield)

In dit instructable ik ga u laten zien hoe je arduino verbinding met het internet, er zijn vele manieren om dit te doen. Men gebruik maken van een Ethernet-shield, maar haar vast en niet erg convinent te gebruiken, op de tweede is het wellicht de bes
Arduino Internet gecontroleerde Led van

Arduino Internet gecontroleerde Led van

HalloIn dit project i 'm going to control leidde's via een webpagina's. U kunt uw browser openen en beheren van de led.De code die verleend wanneer geüpload en met het internet verbonden maakt het een webserver in uw LAN en u gewoon gebruik maken van
Arduino via internet toegang hebben tot

Arduino via internet toegang hebben tot

Dit instructable is gewoon een poging om je arduino verbinden met internet. Er zijn zoveel vergelijkbaar instructables die je vertellen hoe hetzelfde te doen, dit is iets meer gedetailleerde versie, die ik dacht zou kunnen helpen beginners zoals ik.
IPhone gecontroleerde Internet PC robot met behulp van arduino

IPhone gecontroleerde Internet PC robot met behulp van arduino

Arduino Internet PC robot gecontroleerd met behulp van iphone SPY Webcam robot op laptop wiel met behulp van Processing taal + arduino... Software - door Francisco Dias
Arduino Nano met WIZ550io = gemakkelijk Internet

Arduino Nano met WIZ550io = gemakkelijk Internet

Ik hou van de Arduino Nano - het is een mooi compact maar volledig functionele versie van de Arduino Uno. Echter, toen ik ging naar het verbinden met internet alle die netjes en opgeruimd kleinheid verdwenen onder de grote volledige formaat ethernet-
Steampunk ESP8266 Internet verbonden klok met behulp van de Arduino IDE

Steampunk ESP8266 Internet verbonden klok met behulp van de Arduino IDE

Wat u krijgt wanneer een ring NeoPixel, een goedkope Arduino Wifi aan boord en een laser cutter in een stoom-Punk-Sedan lopen?Een modieuze Steampunk ontworpen Internet verbonden klok met behulp van de ESP8266 chip en de Arduino IDE natuurlijk!Hier is
Internet Arduino gecontroleerd T-Slot XY tabel

Internet Arduino gecontroleerd T-Slot XY tabel

dit is een belachelijk makkelijk (in termen van macht hulpmiddel te gebruiken - zie hieronder) manier om een lagere precisie XY tabel.  Met de brede beschikbaarheid van T-Slot extrusies op Amazon en Ebay, en met behulp van eenvoudige huis verbetering
Internet Controlled Arduino (geen Ethernet-shield)

Internet Controlled Arduino (geen Ethernet-shield)

Ethernet schilden zijn een heleboel plezier, maar zij kunnen duur zijn. In dit project zal ik u tonen hoe om te controleren uw Arduino vanaf elke computer die is verbonden met het internet, zonder gebruik te maken van een Ethernet-shield. Dit project
Zet uw Arduino in een Internet-provider

Zet uw Arduino in een Internet-provider

leren hoe zet je Arduino in een AVR In systeemprogrammeur. Hierdoor zal je branden bootloaders op nieuwe chips of programma AVR's zonder een bootloader.Stap 1: materialenOm te beginnen u het volgende nodig:* Arduino (ik zal worden met behulp van de U
Bouw je Robot Internet gecontroleerde Video-Streaming met Arduino en Raspberry Pi

Bouw je Robot Internet gecontroleerde Video-Streaming met Arduino en Raspberry Pi

< the Instructable en de code zijn klaar. Geniet van! Laat een reactie met je feedback! >Ik ben (aka LiquidCrystalDisplay / Itay), een 14 jaar oude student van Israël leren in de Max Shein Junior High School voor geavanceerde wetenschap en wiskunde.
Xmas-box: Arduino/ioBridge internet gecontroleerde Kerstverlichting en muziek show

Xmas-box: Arduino/ioBridge internet gecontroleerde Kerstverlichting en muziek show

mijn xmas-box project bestaat uit een internet gecontroleerde Kerstverlichting en muziek show. Een kerstlied kan aangevraagd worden on-line die vervolgens in een wachtrij zetten en speelde in de volgorde waarin die zij werden gevraagd. De muziek word