Besturing van de machine via WiFi met behulp van ESP8266 NodeMCU. Arduino-lessen: apparaten besturen vanaf een smartphone voor dummies

Met Wi-Fi-module.

De Arduino Uno WiFi biedt alles voor comfortabel werken met de microcontroller: 14 digitale in-/uitgangen (waarvan 6 als PWM-uitgang te gebruiken), 6 analoge ingangen, een USB-connector, een voedingsconnector, een In-Circuit Programming-connector (ICSP ) en een microcontroller met resetknop.

Het hoogtepunt van het bord is de ESP8266 WiFi-module, waarmee Arduino informatie kan uitwisselen met andere modules via 802.11 b/g/n draadloze netwerken.

Met ESP8266 kunt u een Arduino-bord flashen zonder een USB-kabel te gebruiken in de OTA-modus (Firmware Over The Air).

Videobeoordeling van het bord

Aansluiten en instellen

Om aan de slag te gaan met het Arduino Uno WiFi-bord in het Windows-besturingssysteem, downloadt en installeert u de Arduino geïntegreerde ontwikkelomgeving - Arduino IDE - op uw computer.

Is er iets misgegaan?

De WiFi-module instellen

Arduino-firmware via WiFi

Arduino Uno WiFi heeft nog een leuke bonus: de mogelijkheid om schetsen te uploaden zonder een USB-kabel te gebruiken in de OTA-modus (Firmware Over The Air). Laten we eens nader bekijken hoe we dit kunnen doen.


Om dit te doen, moet u het menu openen: Hulpmiddelen Haven en selecteer de gewenste poort.

Omdat we Arduino via WiFi flashen, wordt het bord geïdentificeerd als een extern apparaat met een IP-adres

De omgeving is geconfigureerd, het bord is aangesloten. U kunt doorgaan met het uploaden van de schets. Arduino IDE bevat een grote lijst met kant-en-klare voorbeelden waarin je de oplossing voor elk probleem kunt zien. Laten we kiezen uit de voorbeelden van knipperende LED's - de schets "Blink".
Flash het bord door op het programmadownloadpictogram te klikken.
Na het opstarten begint de LED één keer per seconde te knipperen. Dit betekent dat alles is gelukt.

Nu kunt u verder gaan voorbeelden van gebruik.

Voorbeelden van gebruik

Webserver

Laten we een eenvoudige webserver opzetten die een pagina weergeeft met de huidige waarden van de analoge ingangen.

webserver.ino /* Een voorbeeld van een eenvoudige webserver die draait op Arduino Uno WiFi. De server geeft de waarden op de analoge ingangen weer en actualiseert de informatie elke twee seconden. Neem contact op met de server op http:// /arduino/webserver/ Let op: het voorbeeld werkt alleen met de Arduino Uno WiFi Developer Edition. */#erbij betrekken #erbij betrekken void setup() (Wifi.begin (); Wifi.println ("Webserver is actief"); // Geef een bericht weer over de serverstart in de wifi-console) void loop() ( while (Wifi.available () ) ( process(Wifi) ; ) delay(50 ); ) void process(WifiData client) ( String command = client.readStringUntil ("/" ) ; if (command = = "webserver" ) ( WebServer(client) ; ) ) void WebServer(WifiData-client) ( client.println("HTTP/1.1 200 OK" ) ; client.println("Contenttype: tekst/html" ) ; client. println ("Verbinding: sluiten"); client.println ("Vernieuwen: 2"); // Koptekst die de vernieuwingsperiode van de pagina in seconden specificeert klant.println(); " ) ; klant.println("// Vorm de pagina " klant.println( " UNO WIFI-webserver "

);

"
klant.print(
    Voorbeeld van het uitvoeren van waarden van analoge pinnen< 4 ; analogChannel++ ) { int sensorReading = analogRead(analogChannel) ; client.print ("
  • ); klant.print(" "); for (int analogChannel = 0; analogChannel
  • op de analoge ingang"
); client.print(analoogkanaal) ; }

klant.print(":

" ); client.print (sensorReading) ; client.print ("

") ;) client.println ("

" ); client.print (DELIMITER) ;

// Vergeet niet de verbinding te verbreken!

Bordelementen

    Microcontroller ATmega328P Het hart van het Arduino Uno WiFi-platform is de 8-bit microcontroller van de AVR-familie - ATmega328P.

    Microcontroller ATmega16U2 De ATmega16U2-microcontroller zorgt voor communicatie tussen de ATmega328P-microcontroller en de USB-poort van de computer. Bij aansluiting op een pc wordt de Arduino Uno WiFi gedetecteerd als een virtuele COM-poort. De firmware van de 16U2-chip maakt gebruik van standaard USB-COM-stuurprogramma's, dus er is geen installatie van een extern stuurprogramma vereist.

    Stroompinnen chassisnummer:

    Spanning van externe voeding (niet gerelateerd aan 5V van USB of andere gereguleerde spanning). Via deze pin kun je zowel externe stroom leveren als stroom verbruiken als er een externe adapter op het apparaat is aangesloten. 5V:

    De pin krijgt een spanning van 5 V van de stabilisator van het bord. Deze stabilisator levert stroom aan de ATmega328-microcontroller. Het wordt niet aanbevolen om het apparaat via de 5V-pin van stroom te voorzien - in dit geval wordt geen spanningsstabilisator gebruikt, wat kan leiden tot een defect aan de kaart. 3,3 V:

3,3 V van de bordstabilisator. De maximale uitgangsstroom bedraagt ​​1 A.

    GND: Conclusies van de aarde.
    Het logische niveau van één is 5 V, nul is 0 V. De maximale uitgangsstroom is 40 mA. Op de contacten zijn pull-up-weerstanden aangesloten, die standaard zijn uitgeschakeld, maar softwarematig kunnen worden ingeschakeld.

    PWM: pinnen 3, 5, 6, 9, 10 en 11
    Hiermee kunt u 8-bit analoge waarden uitvoeren als PWM-signaal.

    ADC: pinnen A0 – A5
    6 analoge ingangen, die elk de analoge spanning kunnen weergeven als een 10-bits getal (1024 waarden). De ADC-capaciteit is 10 bits.

    TWI/I²C: SDA- en SCL-pinnen
    Voor communicatie met randapparatuur via een synchroon protocol, via 2 draden. Gebruik de Wire-bibliotheek om te werken.

    SPI: pinnen 10(SS), 11(MOSI), 12(MISO), 13(SCK).
    Via deze pinnen vindt communicatie via de SPI-interface plaats. Gebruik de SPI-bibliotheek om te werken.

    UART: pinnen 0(RX) en 1(TX)
    Deze pinnen zijn verbonden met de overeenkomstige pinnen van de ATmega16U2-microcontroller, die fungeert als USB-UART-converter. Wordt gebruikt om te communiceren tussen het Arduino-bord en een computer of andere apparaten via de seriële klasse.

LED-indicatie

USB Type-B-connector

De USB Type-B-connector is ontworpen voor het flashen van het Arduino Uno WiFi-platform met behulp van een computer.

Externe voedingsconnector

Connector voor het aansluiten van externe voeding van 7 V tot 12 V.

5V spanningsregelaar

Wanneer het bord is aangesloten op een externe voedingsbron, loopt de spanning door de MPM3610-regelaar. De stabilisatoruitgang is verbonden met de 5V-pin. De maximale uitgangsstroom bedraagt ​​1A.

3,3V spanningsregelaar

Stabilisator MPM3810GQB-33 met 3,3 volt uitgang. Levert stroom aan de ESP8266 WiFi-module en wordt uitgevoerd naar de 3,3V-pin. De maximale uitgangsstroom bedraagt ​​1A.

ICSP-connector voor ATmega328P

De ICSP-connector is ontworpen voor in-circuit programmering van de ATmega328P-microcontroller. Met behulp van de SPI-bibliotheek kunnen deze pinnen via de SPI-interface communiceren met uitbreidingskaarten. De SPI-lijnen worden naar een 6-pins connector geleid en worden ook gedupliceerd op de digitale pinnen 10(SS), 11(MOSI), 12(MISO) en 13(SCK).

ICSP-connector voor ATmega16U2

De ICSP-connector is ontworpen voor in-circuit programmering van de ATmega16U2-microcontroller.



Wil je een sms-bericht van je Android-smartphone naar je Arduino-bord sturen? In dit artikel lees je hoe je dat doet!

Wat je nodig hebt

  • Android-smartphone met ondersteuning voor USB-hostmodus (d.w.z. OTG-ondersteuning) - de meeste apparaten met Android 3.1 en hoger ondersteunen deze modus. Test uw telefoon met de USB Host Diagnostics-app uit de Play Store;
  • Arduino - elke versie. Ik gebruik Uno R3;
  • USB-kabel voor Arduino;
  • USB OTG-kabel - u hebt deze nodig om de Arduino USB-kabel aan te sluiten op de micro-USB-poort van de telefoon;
  • Android Studio - u moet het installeren. Het is vrij eenvoudig om te doen. Android Studio maakt het ontwikkelen van apps eenvoudiger dankzij de aannames en het genereren van code. Dit is een van de beste IDE's. U kunt dit artikel ook gebruiken als handleiding voor het installeren van Android IDE.

Basiscomponenten van een Android-applicatie

Er zijn drie hoofdbestanden in een Android-applicatie:

MainActivity.java Hier bevindt zich de uitvoerbare Java-code die bepaalt hoe de applicatie zal functioneren. Activity_main.xml Bevat de lay-out van de applicatie, dat wil zeggen componenten: knoppen, componenten voor tekstweergave, enz. AndroidManifest.xml Hier definieert u wanneer de applicatie moet worden uitgevoerd, welke machtigingen deze nodig heeft en tot welke hardware deze toegang moet hebben.

Er zijn nog veel meer bestanden, maar ze zijn allemaal met elkaar verbonden via deze drie.

Een activiteit kan worden gekarakteriseerd als een scherm waarop de gebruiker interactie heeft met de telefoon. Activiteiten bevatten widgets zoals knoppen, tekstvelden, afbeeldingen enz. die helpen bij het overbrengen van informatie. Deze tutorial gebruikt slechts één activiteit, MainActivity, die gebruikersinvoer accepteert om naar de Arduino te sturen en ook de ontvangen tekst weergeeft.

Indeling

We zullen dezelfde lay-out gebruiken als de USB-app en Bluetooth-app. Het is eenvoudig en bevat de minimale widgets die nodig zijn om de verbinding tussen apparaten te testen.

Zoals u kunt zien, bevat het een EditText-widget om gegevens van de gebruiker te ontvangen, knoppen om de verbinding te starten, gegevens over te dragen, de verbinding te beëindigen en de TextView te wissen. De ontvangen gegevens worden weergegeven in een TextView (lege ruimte onder de knoppen).

Hier is een deel van de XML-code. Omdat de code voor de knoppen vergelijkbaar is, wordt deze hier niet weergegeven. De volledige code kan worden gedownload via de link aan het einde van het artikel.