Inhoudsopgave:

Hoe u uw eigen WIFI-gateway kunt maken om uw Arduino op een IP-netwerk aan te sluiten? 11 stappen (met afbeeldingen)
Hoe u uw eigen WIFI-gateway kunt maken om uw Arduino op een IP-netwerk aan te sluiten? 11 stappen (met afbeeldingen)

Video: Hoe u uw eigen WIFI-gateway kunt maken om uw Arduino op een IP-netwerk aan te sluiten? 11 stappen (met afbeeldingen)

Video: Hoe u uw eigen WIFI-gateway kunt maken om uw Arduino op een IP-netwerk aan te sluiten? 11 stappen (met afbeeldingen)
Video: Netwerken voor beginners deel 1: Infrastructuur en IP plan 2024, November
Anonim
Hoe maak je je eigen wifi-gateway om je Arduino op een IP-netwerk aan te sluiten?
Hoe maak je je eigen wifi-gateway om je Arduino op een IP-netwerk aan te sluiten?

Zoals zoveel mensen denk je dat Arduino een zeer goede oplossing is voor domotica en robotica

Maar qua communicatie komen Arduino's gewoon met seriële links.

Ik werk aan een robot die permanent verbonden moet zijn met een server waarop kunstmatige intelligentiecode wordt uitgevoerd. Ik heb geprobeerd het RF-netwerk te gebruiken zoals ik gewend ben voor domotica, maar het is niet efficiënt genoeg. Terwijl de robot beweegt, kan ik het Ethernet Arduino Shield niet gebruiken. Arduino Wifi Shield is duur en lijkt mij een oud ontwerp.

Ik had iets nodig dat op een zeer eenvoudige en efficiënte manier gegevens kan uitwisselen met een server.

Daarom besloot ik een Gateway te ontwerpen op basis van de zeer goedkope en energiezuinige ESP8266-microcontroller

Hier vindt u hoe u de elektronische component bouwt en de software downloadt.

Ik heb deze gateway gebruikt voor Domotica en voor Robotic.

Dit maakt deel uit van een wereldwijde domotica-infrastructuur die u hier kunt bekijken

Ik heb nog een instructable gemaakt die een ESP8266-schild gebruikt en solderen vermijdt

Benodigdheden

Ik schreef een andere instructable over dit onderwerp

Stap 1: Hoe werkt het?

Hoe werkt het ?
Hoe werkt het ?

De Gateway is gebaseerd op een ESP8266-module

Deze module is van de ene kant verbonden met de seriële link van de andere kant naar het IP-netwerk met de Wifi.

Het fungeert als een zwarte doos. Datapakketten die van de seriële link komen, worden naar een IP/Udp-poort gestuurd en omgekeerd.

De eerste keer dat u de Gateway inschakelt, hoeft u alleen maar uw eigen configuratie (IP, WIFI …) in te stellen.

Het kan zowel onbewerkte ASCII- als binaire gegevens overdragen (geen HTTP, JSON…)

Het is ontworpen om objecten te verbinden met zelfgemaakte serversoftware die snelle en frequente overdracht van korte gegevenspakketten nodig heeft.

Het is het gemakkelijkst te gebruiken met Arduino Mega die meer dan één UART heeft (bijvoorbeeld Arduino Mega), maar kan ook met een UNO worden uitgevoerd.

Stap 2: Wat zijn de belangrijkste functies?

Meestal is het een zwarte doos die op beide manieren seriële gegevens naar UDP-pakket converteert en verzendt.

Het heeft 3 LED's die de status en het verkeer van de Gateway aangeven.

Het biedt een GPIO die door Arduino kan worden gebruikt om te wachten tot de Gateway WIFI en IP-verbonden is.

Het werkt in 3 verschillende modi die zijn ingesteld met schakelaars:

  • Gateway-modus dat is de normale modus
  • Configuratiemodus die wordt gebruikt om de parameters in te stellen
  • Debug-modus die bedoeld is voor de debug-modus

De meeste parameters kunnen worden aangepast aan uw behoeften.

Stap 3: Bouw van materiaal

Bouw van materiaal
Bouw van materiaal

Bovenop je Arduino heb je nodig

  • 1 x ESP8266-module - Ik kies de MOD-WIFI-ESP8266-DEV van Olimex die ongeveer 5 euro kost en die vrij eenvoudig te gebruiken is.
  • 1 x 5v stroombron
  • 1 x 3.3v vermogensregelaar - ik gebruik LM1086
  • 1 x 100 microfarad condensator
  • 1 x ULN2803 APG-module (kan worden vervangen door 3 x transistors)
  • 8 x weerstanden (3 x 1K, 1 x 2K, 1 x 2,7k, 1x 3,3K, 1x 27K, 1x 33k)
  • 3 x LED (rood, groen, blauw)
  • 1 x Breadboard-printplaat
  • sommige draden en connectoren

Alleen tijdens de bouwstappen heb je nodig:

  • 1 x FTDI 3.3v voor de configuratie
  • Soldeerbout en tin

Voordat u gaat solderen, is het belangrijk om alle componenten op het breadboard in te stellen en te controleren of alles in orde is.

Stap 4: Laten we beginnen met de elektronische op het breadboard

Laten we beginnen met de elektronische op het breadboard!
Laten we beginnen met de elektronische op het breadboard!

De elektronische lay-out is beschikbaar in Fritzing-formaat

Je kunt het hier downloaden de stap 1:

github.com/cuillerj/Esp8266IPSerialGateway/blob/master/GatewayElectronicStep1.fzz

Doe gewoon als schema door op de spanning te letten.

Onthoud dat ESP8266 geen spanning ondersteunt die hoger is dan 3,3v. De FTDI moet worden ingesteld op 3,3v.

Stap 5: Laten we naar de software gaan

Laten we naar de software gaan!
Laten we naar de software gaan!

Laten we beginnen met de Gateway-kant

Ik schreef de code met Arduino IDE. Je hebt dus ESP8266 nodig om door de IDE bekend te staan als board. Selecteer het juiste bord met het menu Tools / boards.

Als u geen ESP266 in de lijst ziet, betekent dit dat u mogelijk ESP8266 Arduino Addon moet installeren (u kunt hier de procedure vinden).

Alle code die je nodig hebt is beschikbaar op GitHub. Het is tijd om het te downloaden!

De hoofdcode van de Gateway is daar:

Bovenop de standaard Arduino en ESP8266 bevat de belangrijkste code die deze 2 nodig heeft: LookFoString die wordt gebruikt om strings te manipuleren en is er:

ManageParamEeprom dat wordt gebruikt om parameters in Eeprom te lezen en op te slaan en is daar:

Zodra je alle code hebt ontvangen, is het tijd om deze te uploaden naar de ESP8266. Sluit eerst de FTDI aan op een USB-poort van je computer.

Ik raad u aan de verbinding te controleren voordat u probeert te uploaden.

  • Stel de Arduino seriële monitor in op de nieuwe USB-poort.
  • Zet de snelheid op 115200 beide cr nl (standaard snelheid voor Olimex)
  • Schakel het breadboard in (ESP8266 wordt geleverd met software die AT-opdrachten afhandelt)
  • Stuur "AT" met de seriële tool.
  • U moet in ruil daarvoor "OK" krijgen.

Als dit niet het geval is, controleer dan uw verbinding en kijk naar uw ESP8266-specificaties.

Als je "OK" hebt gekregen, ben je klaar om de code te uploaden

  • Schakel het breadboard uit, wacht een paar seconden,
  • druk op de zwarte micro-swith van de ESP8266. Het is normaal om wat rommel op de seriële monitor te krijgen.
  • Druk op de upload-IDE zoals voor een Arduino.
  • Nadat de upload is voltooid, stelt u de seriële snelheid in op 38400.

Je ziet iets zoals op de foto.

Gefeliciteerd, je hebt de code succesvol geüpload!

Stap 6: Laten we de configuratie doen

Laten we de configuratie doen!
Laten we de configuratie doen!

De configGPIO moet worden ingesteld op 1 om de configuratiemodus te openen

Scan eerst de WIFI door het commando in te voeren: ScanWifi. U ziet een lijst met het gedetecteerde netwerk.

  • Stel vervolgens uw SSID in door "SSID1=uw netwerk" in te voeren
  • Stel vervolgens uw wachtwoord in door "PSW1=yourpassword" in te voeren
  • Voer vervolgens "SSID=1" in om het huidige netwerk te definiëren
  • Voer "Herstart" in om de Gateway met uw WIFI te verbinden.
  • Je kunt verifiëren dat je een IP hebt gekregen door "ShowWifi" in te voeren.
  • De blauwe LED brandt en de rode LED knippert.

Het is tijd om uw IP-serveradres te definiëren door de 4 subadressen in te voeren (server die de Java-testcode zal uitvoeren). Bijvoorbeeld:

  • "IP1=192"
  • "IP2=168"
  • "IP3=1"
  • "IP4=10"

De laatste vereiste stap is om de luisterpoort van de UDP-server in te stellen door "listenPort=xxxx" in te voeren.

Voer "ShowEeprom" in om te controleren wat u zojuist in Eeprom heeft opgeslagen

Sluit nu de GPIO2 aan op aarde om de configuratiemodus te verlaten

Uw Gateway is klaar om te werken

Er zijn nog enkele andere opdrachten die u in de documentatie kunt vinden.

Stap 7: Laten we de Arduino-kant doen

Laten we de Arduino-kant doen!
Laten we de Arduino-kant doen!
Laten we de Arduino-kant doen!
Laten we de Arduino-kant doen!

Sluit eerst de Arduino aan

Als je een Mega hebt, is het het gemakkelijkst om mee te beginnen. Toch kunt u een Uno gebruiken.

Om je werk te controleren kun je het beste het voorbeeld gebruiken.

Je kunt het daar downloaden:

Het bevat SerialNetwork-code die hier is:

Upload gewoon de code in uw Arduino.

De groene LED knippert elke keer dat Arduino gegevens verzendt.

Stap 8: Laten we de serverkant doen

Laten we de serverkant doen!
Laten we de serverkant doen!
Laten we de serverkant doen!
Laten we de serverkant doen!

Het servervoorbeeld is een Java-programma dat u hier kunt downloaden:

Voer het gewoon uit

Kijk naar de Java-console.

Kijk naar de Arduino-monitor.

Arduino stuurt 2 verschillende pakketten.

  • De eerste bevat de digitale pinnen 2 tot 6 status.
  • De tweede bevat 2 willekeurige waarden, het spanningsniveau van A0 in mV en incrementele telling.

Het Java-programma

  • print de ontvangen gegevens in hexadecimaal formaat
  • antwoord op de eerste soort gegevens met een willekeurige aan/uit-waarde om de Arduino-LED aan/uit te zetten
  • antwoord op de tweede soort gegevens met de ontvangen telling en een willekeurige waarde.

Stap 9: Het is tijd om te solderen

Het is tijd om te solderen!
Het is tijd om te solderen!
Het is tijd om te solderen!
Het is tijd om te solderen!
Het is tijd om te solderen!
Het is tijd om te solderen!

Het werkt op het breadboard!

Het is tijd om het robuuster te maken door onderdelen op een PCB te solderen

Bovenop wat je met het breadboard hebt gedaan, moet je 3 connectoren toevoegen.

  • C1 1 x pin één die zal worden gebruikt voor toegang tot de netwerktraceermodus.
  • C2 3 x pinnen een die zal worden gebruikt om te schakelen tussen de bedrijfs- en configuratiemodus.
  • C3 6 x pinnen een die zal worden gebruikt om de gateway aan te sluiten op een Arduino of een FTDI.

C1 aangesloten op GPIO2 moet handmatig worden geaard als u de netwerktraceringen wilt activeren.

C2 aangesloten op GPIO 4 kan in 2 verschillende standen worden gezet. Een die op de grond is ingesteld voor de normale bedrijfsmodus en een die is ingesteld op 3,3v voor het betreden van de configuratiemodus.

Plaats alle componenten op de print volgens het schema en begin daarna te solderen om het eindproduct te krijgen!

Stap 10: Laten we de laatste test doen

Image
Image

Start het Java-testprogramma.

Sluit de Arduino aan.

Schakel de gateway in.

En kijk naar de Java-console, de Arduino-monitor, de Arduino-LED en de Gateway-LED's.

Stap 11: U kunt dit ontwerp aanpassen aan uw eigen wensen

Wat betreft de hardware:

  • Kies je voor een andere ESP8266 dan zul je je moeten aanpassen aan de specificaties.
  • Kies je voor een andere 3.3v regelaar dan moet deze meer dan 500mA leveren en zul je de condensator moeten aanpassen.
  • U kunt de LED-weerstanden aanpassen om de helderheid aan te passen.
  • Je kunt alle LED's onderdrukken, maar ik raad aan om in ieder geval de rode aan te houden.
  • U kunt de ULN2803 vervangen door 3 transistors (of minder als u ervoor kiest om de 3 LED's niet te behouden).
  • Ik heb getest, maar daar moet het werken met 3.3v Arduino-kaarten. Sluit gewoon Tx Rx aan op de 3.3v-connector.

Betreffende configuratie:

  • U kunt 2 verschillende SSID's opslaan en switchen
  • U kunt de gebruikte GPIO wijzigen

Wat betreft de software:

Aanbevolen: