今回はESP-WROOM-02を自分のArduinoと繋がって、そしてModbusTPC経由でパソコンからデータを取ってみようかなと考えています。
事前準備
その前にまずArduino ESPライブラリをDonwloadし、インストールします。
Arduino ESP8266 library
https://github.com/itead/ITEADLIB_Arduino_WeeESP8266/blob/master/README.md
もちろん、ArduinoのModbusTCP/IPのライブラリも忘れずに。
https://github.com/andresarmento/modbus-arduino
Arduino UNOを使っていますので、SoftwareSerialを使用します。
SoftwareSerial使いますので、ESP8266.hのところに以下のCodeをComment Outします。
このようにですね。
ESP-WROOM-02パラメータセットアップ
Station Mode変更
AT+CWMODE_CUR=1
OK
接続試し
AT+CWJAP_CUR=”myAP”,”mypassword”
WIFI CONNECTED
WIFI GOT IP
OK
refer link
https://trac.switch-science.com/wiki/ESP-WROOM-02_AT
Arduino側
#include <SoftwareSerial.h> #include “ESP8266.h” #include <Modbus.h> #include <ModbusIP_ESP8266AT.h> SoftwareSerial mySerial(2,3); // RX, TX ESP8266 wifi(mySerial, 115200); //Modbus Registers Offsets (0-9999) const int R1 = 100; const int R2 = 101; //Used Pins const int sensorPin = A0; //ModbusIP object ModbusIP mb; void setup() { //Config Modbus IP mb.config(wifi, “MYPC1”, “Password”); //Set ledPin mode mb.addIreg(R1); mb.addIreg(R2); } void loop() { //Call once inside loop() – all magic here mb.task(); mb.Ireg(R1,100); mb.Ireg(R2,200); } |
mb.config(wifi, “MYPC1”, “Password”)のところ、APと合わせて正しいければ自動的に接続されます。
Python側
このLibraryを使っています。
https://pypi.org/project/pyModbusTCP/
from pyModbusTCP.client import ModbusClient import time SERVER_HOST = “192.168.137.5” SERVER_PORT = 502 SERVER_U_ID = 2 c = ModbusClient() c.open() c.is_open() time.sleep(1) regs = c.read_input_registers(100,2) print(regs) c.close() |
Result
[100, 200]
Sample Code:
https://github.com/soup01Threes/Prototyping/blob/main/Arduno_using_with_MODBUSTCPIP_ESP-WROOM-02.zip