如何使用ESP8266设置Arduino UNO并将事件发布到Wia

完成本教程需要以下组件:

  • Arduino Uno
  • ESP 8266
  • Micro USB转USB电缆
  • 通用面包板
  • 跨接电缆(公母)
  • 安装Arduino IDE(集成开发环境),您可以在此处下载Mac OS X,Windows和Linux的版本。

详细说明可以在下面找到:

  • 安装适用于Windows的Arduino IDE
  • 安装适用于Mac的Arduino IDE
  • 安装适用于Linux的Arduino IDE

注意:如果您完全不熟悉Arduino IDE,请观看此视频,以更好地了解其工作原理。

在Arduino IDE中:
转到菜单: Tools > Board > Boards Manager
找到后搜索Arduino AVR Boards ,然后单击Install

  • 通过转到Tools > Board来选择Arduino\Genuino Uno板类型
  • 选择显示Arduino\Genuino Uno的端口

如果未显示任何名称,则可以通过以下步骤找到端口:

  • 从此处下载并安装FTDI驱动程序。 选择适合您的操作系统和体系结构的版本
  • 打开一个终端窗口,然后运行命令ls /dev/tty*
  • 查找名称以/dev/tty开头的设备,例如MAC上的/dev/tty.usbmodemPy343431/dev/tty.usbmodemPy343431上的/dev/ttyUSB0 / dev/ttyACM0

注意:对于Linux,您可能需要运行以下两个命令。 完成此操作后,重新启动计算机。 这将添加权限,使您可以将草图上传到板上。

sudo usermod -a -G tty ${USER}
sudo usermod -a -G dialout ${USER}

  • 从此处下载并安装FTDI驱动程序。 选择适合您的操作系统和体系结构的版本
  • 打开Windows开始菜单并搜索Device Manager
  • Pycom设备的COM端口将列为USB Serial Device或类似名称
  • 记下COM端口(例如COM4)

要将Arduino Uno连接到ESP 8266,您需要连接以下引脚:

由于Ardnuino Uno采用公头跳线,而ESP 8266需要母头跳线,因此可以使用面包板进行连接。 它也很有用,因为ESP 8266上的CH_PDVCC引脚都需要电源。

在Arduino IDE中:

  • 单击File > New以创建新的草图
  • 从下面的示例代码复制并粘贴publishEvent.ino
包括  
包括定义 RX 10
定义 TX 11
字符串WIFI_SSID =“ your-wifi-ssid”; //您的WiFi ssid
字符串PASSWORD =“ your-wifi-password”; //密码
字符串DEVICE_SECRET_KEY =“您的设备的秘密密钥”;字符串HOST =“ api.wia.io”;
字符串PATH =“ / v1 / events”;
字符串PORT =“ 80”; int countTrueCommand;
int countTimeCommand;
boolean found = false; SoftwareSerial esp8266 (RX,TX); StaticJsonBuffer jsonBuffer;
JsonObject&root = jsonBuffer.createObject(); 无效 设置 (){
Serial.begin(9600);
esp8266.begin(115200);
esp8266.println(“ AT”);
Serial.println(esp8266.read());
sendCommandToESP8266(“ AT”,5,“ OK”);
sendCommandToESP8266(“ AT + CWMODE = 1”,5,“ OK”);
sendCommandToESP8266(“ AT + CWJAP = \”“ + WIFI_SSID +” \“,\”“ +密码+” \“”,20,“ OK”);
} void loop (){
root [“ name”] =“温度”;
root [“ data”] = 21.5;
字符串数据;
root.printTo(data); 字符串postRequest =“ POST” + PATH +“ HTTP / 1.1 \ r \ n” +
“主机:” +主机+“ \ r \ n” +
“接受:*” +“ /” +“ * \ r \ n” +
“内容长度:” + data.length()+“ \ r \ n” +
“内容类型:application / json \ r \ n” +
“授权:承载” + DEVICE_SECRET_KEY +“ \ r \ n” +
“ \ r \ n” +数据; sendCommandToESP8266(“ AT + CIPMUX = 1”,5,“ OK”);
sendCommandToESP8266(“ AT + CIPSTART = 0,\” TCP \“,\”“ + HOST +” \“,” + PORT,15,“ OK”);
字符串cipSend =“ AT + CIPSEND = 0,” +字符串(postRequest.length());
sendCommandToESP8266(cipSend,4,“>”);
sendData(postRequest);
sendCommandToESP8266(“ AT + CIPCLOSE = 0”,5,“ OK”);
} void sendCommandToESP8266 (String command, int maxTime, char readReplay []){
Serial.print(countTrueCommand);
Serial.print(“。at command =>”);
Serial.print(命令);
Serial.print(“”);
while (countTimeCommand <(maxTime * 1))
{
esp8266.println(命令);
如果 (esp8266.find(readReplay))
{
发现=真;
休息 ;
} countTimeCommand ++;
} if (found == true)
{
Serial.println(“ Success”);
countTrueCommand ++;
countTimeCommand = 0;
} if (found == false)
{
Serial.println(“ Fail”);
countTrueCommand = 0;
countTimeCommand = 0;
}发现=假;
} void sendData (字符串postRequest){
Serial.println(postRequest);
esp8266.println(postRequest);
延迟(1500);
countTrueCommand ++;
}
  • 添加WIFI_SSIDPASSWORD
  • 从Wia仪表板(以d_sk开头的d_sk )中,将device_secret_key和设备密钥添加d_sk
  • Sketch > Upload将其发送到您的Uno

转到Wia信息中心以查看传递到设备的数据。

如果您在设置时需要任何帮助,或者您对本教程不了解,请发送电子邮件至support@wia.io或在对讲机上聊天。

如果所有AT命令都失败,则可能是由于ESP 8266的固件版本过旧。 请按照此处的教程使用ESP Flasher工具刷新ESP8266。