Stap 8: Seriële communicatie tussen Arduino en ESP-12
We hebben al de Aruino en de ESP-12 communiceert (de gegevens die u in de terminal ziet is het opnieuw verzenden van de Arduino). Nu willen we de Arduino sommige actie na ontvangst van de vooraf gedefinieerde opdrachten van de ESP-12 uit te voeren.
Gegevens van de ESP8266 overbrengen naar de Arduino
Het eerste wat dat we willen doen is om sommige gehele getallen van 2 bytes van de ESP-12 naar de Arduino. Ik aantonen met gehele getallen van 2 bytes kan, maar het 4 byte long integers of zelfs 4-byte drijvende komma's, de procedure is hetzelfde.
Byte, starten | Byte 0, | ..., | Byte N-1 |
---|
We sturen een byte start eerst, dan sturen we N bytes aan gegevens. N is vooraf gedefinieerde. Wanneer de Arduino de start byte ontvangt stopt het afdrukken van de gegevens op de seriële poort en in plaats daarvan het zet de ontvangen byte in een buffer. Na dat, het verzamelt de gegevens: elk 2 bytes integer zijn. Merk op dat de start-byte niet een afdrukbare byte, moet omdat dan de modus ontvangen per ongeluk kan worden ingeroepen. Om er beter voor gegevens betrouwbaar, kunt u een controlesom-veld toevoegen op de gegevens. Ik heb gedefinieerd de volgende opdrachten:
Opdrachtnaam | Code |
---|---|
FETCH_DATA_COMMAND | 0x80 |
PRINT_DATA_COMMAND | 0x81 |
PRINT_DATA_LCD | 0x82 |
Wanneer code 0x80 is ontvangen, worden de volgende gegevens worden verzonden door de ESP8266:
UART.write(0,bit.arshift(bit.band(x,0xFF00),8), bit.band(x,0x00ff))
De Arduino zet de twee bytes weer samen:
get_x = (data_arr [0] << 8) + data_arr [1];
Gegevens van de ESP8266 afdrukken aan de Arduino
Ik heb een andere opdracht die rechtstreeks gegevens worden afgedrukt vanuit de ESP8266 aan de LCD hebt gedefinieerd. Ik kan het toevoegen van meer opties zoals een lettertype te selecteren of afdrukken lijnen enz. Maar ik ben van plan dat de Arduino allermeest naar de afdrukken wordt uitgevoerd doen zal en de ESP8266 zal alleen vul getallen en tekst vanaf het internet.