Inhoudsopgave:

Seriële UDP/IP-gateway voor Arduino op basis van ESP8266 Shield - Ajarnpa
Seriële UDP/IP-gateway voor Arduino op basis van ESP8266 Shield - Ajarnpa

Video: Seriële UDP/IP-gateway voor Arduino op basis van ESP8266 Shield - Ajarnpa

Video: Seriële UDP/IP-gateway voor Arduino op basis van ESP8266 Shield - Ajarnpa
Video: Best Open-Source Network Monitoring Tools 2023 2024, November
Anonim
Seriële UDP/IP Gateway voor Arduino Gebaseerd op ESP8266 Shield
Seriële UDP/IP Gateway voor Arduino Gebaseerd op ESP8266 Shield

Ik heb al in 2016 deze instructable gepubliceerd "Hoe maak je je eigen wifi-gateway om je Arduino met IP-netwerk te verbinden". Omdat ik enkele codeverbeteringen heb aangebracht en ik deze oplossing nog steeds gebruik.

Desalniettemin zijn er nu enkele ESP8266-schilden waarmee u hetzelfde kunt doen zonder te solderen, zolang u geen Micro- of Nano-kaarten gebruikt.

In deze instructable wordt uitgelegd hoe u deze ESP82-schilden als seriële UDP/IP-gateway kunt gebruiken.

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

Meer informatie over het schild met deze instructable

Benodigdheden

1 Arduino Mega (het beste is om ten minste 1 Mega te hebben voor ontwikkeling en 1 Uno voor de lopende fase)

1 Rokoo ESP8266 ESP-12E UART WIFI Converter

1 FTDI 3.3v

2 breadboard-draden

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.

Stap 2: Wat zijn de belangrijkste functies?

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

Maar de gateway kan ook zelf handelen door interne informatie naar de server te sturen en enkele opdrachten van de server te ontvangen.

Arduino kan berichten verzenden en ontvangen naar/van een server die via internet is verbonden door gewoon een seriële link af te drukken/te lezen. De Arduino-ontwikkelaar hoeft zich niet druk te maken over het IP-protocol.

Bovendien biedt het een GPIO die door Arduino kan worden gebruikt om te controleren of de Gateway correct is verbonden met de WIFI en de Gateway kan automatisch schakelen tussen 2 verschillende SSID's in geval van storing

De Gateway heeft 2 verschillende bedrijfsmodi die worden geselecteerd door het instellen van een GPIO

GPIO op aarde instellen en de gateway gaat naar de configuratiemodus.

GPIO vrij instellen en de Gateway gaat naar de gateway-bedrijfsmodus.

Bovendien kan de Gateway UDP/IP-configuratie op afstand worden gewijzigd

Stap 3: Bouw van materiaal

Bouw van materiaal
Bouw van materiaal

Er zijn maar heel weinig dingen nodig

1 ESP8266 Shield - Ik vond deze UNO R3 ESP8266 Serial WiFi Shield Extend Board Module voor minder dan € 9

1 UNO dat is het doel Arduino-doel

1 Mega dat is de arduino-ontwikkeltool (je kunt zonder, maar het is vrij moeilijk om te debuggen)

1 FTDI 3.3/5v voor ontwikkeling

Sommige draden

Stap 4: Download de gatewaycode

Download de gatewaycode
Download de gatewaycode

Tijdens deze stap wordt de Arduino alleen gebruikt voor voeding (met USB of een andere stroombron) op het ESP8266-schild

Verbind de ESP8266 GPIO4 met aarde (om de configuratiemodus te openen)

Zorg ervoor dat u de FTDI instelt op 3,3v zoals vereist door het schild

Sluit de FTDI aan op het schild (RX naar TX)

Stel schildschakelaar in op 1:uit 2:uit 3:aan 4:aan

Sluit de USB-zijde van de FTDI aan op uw computer

Reset het schild met de ESP-RST-drukknop

Download de Gateway-code daar op GitHub

Arduino IDE openen

  • Selecteer de FTDI-monitorpoort
  • Open de IDE Seriële Monitor - Stel de snelheid in op 38400
  • Selecteer Generiek ES8266 modulebord
  • Upgrade de schildfirmware met de gatewaycode

Zet schakelaar 3:uit 4:uit

Open de IDE seriële monitor

Reset het schild met de ESP-RST-drukknop

U moet berichten op de monitor zien die beginnen met "EEPROM-initialisatie" "Initialisatie voltooid"….

Het is tijd om de configuratie te doen

Stap 5: Laten we de gatewayconfiguratie uitvoeren

Wanneer de gatewaycode voor de eerste keer wordt gedownload, wordt de ESP8266 Eeprom geïnitialiseerd met de standaardwaarden. U ziet dit soort berichten "set parameter: x size: yy"

U kunt deze waarden vinden in de codedefinitie van paramValue. Natuurlijk kunt u deze standaardwaarden wijzigen voordat u de code downloadt, maar u kunt uw configuratie ook later met een opdracht instellen. Dit is beter als u van plan bent meerdere gateways te hebben en slechts één versie van de code te behouden.

Gebruik de seriële poort van de monitor om een opdracht te verzenden (ingesteld op NL en CR).

Aangezien SSID momenteel niet is gedefinieerd, wacht u op "Kon geen verbinding maken met uwsecondssid opnieuw proberen:5"

Dan start automatisch een scan van WIFI

Het is tijd om uw SSID's in te stellen met de volgende opdrachten:

  • SSID1=uw keuze1
  • PSW1=jouwpsw1
  • SSID2=uw keuze2
  • PSW2=uwpsw2
  • SSID=1 (om te kiezen met welke SSID te beginnen)
  • Herstart Wifi

Na enkele seconden kunt u de verbinding controleren met het commando "ShowWifi". U moet het IP-adres zien dat de gateway van uw DNS-server heeft gekregen. Als dat het geval is, is het tijd om verder te gaan

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"

Door een lege opdracht te sturen, ziet u alle ondersteunde opdrachten die u later kunt gebruiken om aan uw vereisten te voldoen. Alle parameterwaarden worden opgeslagen in Eeprom en moeten opnieuw worden opgestart om rekening te houden.

Verwijder de configuratiedraad

Het schild werkt nu als een gateway

Stap 6: Download het Arduino-codevoorbeeld

Download het Arduino-codevoorbeeld
Download het Arduino-codevoorbeeld

Download eerst de belangrijkste Arduino-code daar op GitHub

Download vervolgens de Arduino-code, deze opdrachtdefinitie en deze seriële linkcode naar uw bibliotheken

Open vervolgens de hoofdcode met een nieuwe Arduino IDE

Zet de schildschakelaar 1 en 2 uit om de Arduino seriële link 0 vrij te maken voor USB-verbinding

Reset het schild

Sluit de FTDI-draden aan op de Mega Serial 2 (TX FTDI naar RX Mega enzovoort)

Start een nieuwe Arduino IDE (of een TTY-tool), sluit de FTDI Usb aan en begin met het bewaken van de seriële link

Upload de Arduino-code in de Mega

Zet de Shield Switch 1 en 2 aan om de Arduino seriële link 0. aan te sluiten

Reset het schild

U moet dit bericht "start usb print" op de monitor zien

Stap 7: Laten we de serverkant doen

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

Voer het gewoon uit en kijk naar de Java-console en kijk naar de FTDI-monitor

U ziet gegevensuitwisselingen tussen server en Arduino

Stap 8: Om verder te gaan

Om verder te gaan
Om verder te gaan
Om verder te gaan
Om verder te gaan

Dit Arduino-codevoorbeeld is gebaseerd op een raamwerkonderdeel van mijn domotica-infrastructuur.

Als je interesse hebt in deze infrastructuur, laat het me weten. Ik zal bronnen publiceren.

Als u alleen de gateway wilt gebruiken, kunt u de Arduino-code vereenvoudigen.

Nadat u uw code op een Arduino Mega hebt ontwikkeld en getest, kunt u deze eenvoudig vervangen door een Uno!

Bovendien kun je een draad aansluiten tussen Arduino GPIO 7 en ESP8266 GPIO 5 als je wilt dat je Arduino de wifi-verbinding controleert

Aanbevolen: