有很多这种库...如果数据格式固定,自己写文本转换也很块。
json推荐的c++库
JSONKit.
jsonme--.
ThorsSerializer.。
JsonBox.
jvar.
rapidjson.
JSON for Modern C++.。
ArduinoJson.
minijson.
jsoncons.
QJson.
jsoncpp.
CAJUN.
libjson.
nosjob.
JSON++.
JSON library for IoT.。
qmjson.
JSON Support in Qt.。
JsonWax for Qt.。
if ArduinoJson doesn't appear in Libray Manager, or if only old versions are listed, try to delete the local cache. For example, on Windows, you need to delete:。
%LOCALAPPDATA%\Arduino15\library_index.json。
%LOCALAPPDATA%\Arduino15\library_index.json.tmp.gz。
You don't even need to close Arduino, just re-open the library manager。
步骤1:配置Rapberry Pi。
我使用了Raspberry Pi 3 Model B +,但是,说明应该适用于其他版本,尤其是在Model B上。
首先,我们需要在Pi上启用UART。
转到RPi配置设置。在终端窗口中运行。
$ sudo raspi-config。
转到 5个接口选项,,然后选择 P6 Serial。 然后,您提示是否要通过串行访问登录shell? select ,因为我们不想使用UART无头运行Pi,而是与其他设备进行通信,因此在出现以下问题时会在以下屏幕上显示您要启用串行端口硬件吗?选择。根据提示重启树莓派。现在应该为Raspberry Pi 3的RX和TX引脚上的串行通信启用UART。注意:此后,在/boot/config的末尾应出现一个新条目 enable_uart = 1 。 txt。
步骤2:将ESP-01连接到Raspberry Pi。
现在,我们开始进行所有接线
首先,在RPi上标识 3.3V电源 和 GND(接地) 》引脚为ESP8266微控制器供电, TXD(发送) 和 RXD(接收) 引脚进行通信,并且 两个通用引脚 来操作ESP8266(可以将其设置为高电平或低电平)。在pinout.xyz上查找引脚排列或输入端子:
$ pinout
其次确定ESP-01上的必要引脚。但是从一开始我们就需要了解ESP-01引脚。我在互联网上找到了许多有用的资源,可以在这方面为您提供帮助。这个是最短的,而这个给出了更好的解释。简而言之:共有8个引脚,我们将需要7个引脚,分别是 VCC电源 和 GND(接地) 电源引脚, TXD 和 RXD 引脚进行通信,以及 RST (重置), CH_PD (芯片掉电,有时标记为CH_EN或芯片启用)和 GPIO0 来操作该模块。 ESP8266通常在常规模式下运行,但在将代码上传到ESP8266时,会注意其处于闪存模式。对于常规或正常运行模式,模块需要连接到电源(显然),但引脚CH_PD也必须通过10K连接到VCC(此值在不同的情况下会有所不同,我发现值降至3K)上拉引导时的电阻。另一方面,要进入闪存或编程模式,您需要在引导时将GPIO0引脚接地。为防止接地时流过GPIO0的电流不受限制,建议通过一些300Ω-470Ω低阻电阻将GPIO0接地(有关更多信息,请参见此处)。顾名思义,RST引脚复位(或重启)MCU。在正常操作期间,它可以通过10K上拉电阻连接到VCC,但应接地以复位微控制器。虽然始终可以使用物理按钮将RST和GPIO0引脚接地(甚至手动连接导线以模拟按钮),但使用Raspberry Pi引脚在模块的RST和GPIO0上设置高低电压会更令人愉悦。引脚。然后也就不需要10K和470Ω电阻了。
现在了解ESP-01引脚的特性了,我们就可以开始将所有东西连接在一起了。您可以将下表和上图用作参考:
ESP-01 《-》 Raspberry Pi。
VCC(3.3V)《-》引脚# 1(3.3V)
GND 《-》引脚6(GND)
TXD 《-》引脚#10(RXD/BCM 15)
RXD 《-》针#8(TXD/BCM 14)
CH_PD 《-10K电阻器-》针#1(3.3V)
RST 《-》针#3(BCM 2 )
GPIO 0 《-》引脚#5(BMC 5)
最后连接VCC引脚。您连接到VCC引脚的实例将打开Wi-Fi模块。使用 screen 或 minicom 检查RPi和ESP8266是否可以使用UART通讯(注意:您可能需要安装 screen 或 minicom ,因为默认情况下似乎未在Raspbian上安装它们)。
使用屏幕运行:
$ sudo screen /dev/serial0 115200。
使用minicom运行:
$ sudo minicom -b 115200 -o -D /dev/serial0。
注意:许多在线参考资料建议连接到/dev/ttyAMA0 上的ESP8266,但根据RPi文档,此操作不适用于RPi 3或更高版本(包括零W)。通过/dev/serial0 或/dev/ttyS0 连接。
进入屏幕或minicom后,使用AT指令与ESP8266通讯。输入AT,然后按Enter,然后按Ctrl + J发送命令。您应该得到好的回应。可用的AT命令列表可在espressiff.com或此处找到。
将设备物理连接并相互交谈,我们就可以开始对RPi GPIO引脚进行编程,最后对ESP8266本身进行编程。
步骤3:软件设置(用于操作的Python和用于编程的Arduino IDE)
PART 1.使用python切换ESP8266模式。
如上所述使用RPI的GPIO引脚切换ESP8266的操作模式非常方便。我编写了两个基本的python代码,将ESP8266置于常规或编程模式。
常规模式:要将微控制器置于常规操作模式,我们只需为其供电并通过上拉连接CH_PD电阻连接到VCC,但是要将MCU从编程模式切换到正常模式,我们需要对其进行重置(请考虑重启)。为此,我们将短暂拉低连接到ESP-01上RST引脚的RPi GPIO(默认情况下,我用于重置的RPi引脚设置为HIGH)。有多简短?对我来说,这是一个投机问题。您可以尝试不同的时间间隔,但我发现200-500毫秒的效果很好。如果您有更好的主意,请在评论中写。将代码另存为 reset.py 。
#!/usr/bin/python。
import RPi.GPIO as GPIO。
import time
GPIO.setmode(GPIO.BOARD) # sets GPIO identification by physical pin numbers。
resetPin = 3 # identify RPi physical pin connected to ESP8266 RST pin。
GPIO.setup(resetPin, GPIO.OUT) # set reset pin as output。
GPIO.output(resetPin, GPIO.LOW) # drop voltage on RST pin。
time.sleep(.2) # wait for .2 s。
GPIO.output(resetPin, GPIO.HIGH) # restore voltage on RST pin。
GPIO.cleanup() # reset pins on RPI to prevent future runtime warnings。
编程模式:要将MCU置于编程模式,我们需要为ESP8266供电GPIO0接地,或者在引导时将其复位并接地GPIO0(再次,确切的电压降持续时间我不太清楚,因此请不要严格按照使用的值进行操作)。将代码另存为 flash.py 或在下面下载。动作的顺序如下:
上拉RST引脚
上拉GPIO0引脚
上拉RST引脚
上拉GPIO0 pin
#!/usr/bin/python。
import RPi.GPIO as GPIO。
import time
GPIO.setmode(GPIO.BOARD) # sets GPIO identification by physical pin numbers。
resetPin = 3 # identify RPi physical pin connected to ESP8266 RST pin。
flashPin = 5 # identify RPi physical pin connected to ESP8266 GPIO0 pin。
GPIO.setup(resetPin, GPIO.OUT) # set reset pin as output。
GPIO.setup(flashPin, GPIO.OUT) # set flash pin as output。
GPIO.output(resetPin, GPIO.LOW) # drop voltage on RST pin。
time.sleep(.2) # need for this waiting is speculative。
GPIO.output(flashPin, GPIO.LOW) # drop voltage on GPIO0。
time.sleep(.2) # need for this waiting is speculative。
GPIO.output(resetPin, GPIO.HIGH) # start booting ESP8266。
time.sleep(.5) # wait for ESP8266 to boot。
GPIO.ouput(flashPin.GPIO.HIGH) # restore voltage on。
GPIO pinGPIO.cleanup() # reset pins on RPI to prevent future runtime warnings。
在终端更改权限中:
$ sudo chmod +x flash.py。
$ sudo chmod +x reset.py。
从现在开始,只要您需要输入在终端上运行编程模式:
$ python /flash.py。
上传代码以进入正常运行模式后运行:
$ python /reset.py。
此时,您可能还需要更新ESP8266固件。有很多关于如何执行此操作的在线教程,因此我将不做详细介绍。
PART2。设置Arduino IDE。
如果您已经安装了Arduino IDE,则可能仍要浏览本节,以确保您的IDE已为ESP8266准备就绪。
在Rapberry Pi上,您可以使用Arduino IDE来对ESP8266进行编程。有两种方法可以在RPi上安装IDE:
,使用apt-get install。
从存储库通过命令行从arduino.cc下载并手动安装。
我强烈建议您走后一条路。仓库中的IDE版本似乎已过时,您一定要准备更多工作,才能开始对ESP8266进行编程。为避免麻烦,请转到Arduino.cc下载页面并下载Linux ARM版本。接下来解压缩并安装:如果下载文件的名称类似于 arduino-XYZ-linuxarm.tar.xz ,则在下载文件夹中运行:
$ tar -xvf arduino-X.Y.Z-linuxarm.tar.xz。
这应将文件解压缩到 arduino-XYZ 文件夹。运行:
$ sudo 。/arduino-X.Y.Z/install.sh。
这应该安装IDE。安装完成后,启动IDE。
从Arduino IDE转到 File》 Preferences 。在首选项窗口的底部查找“ 其他Board Manager URL ”。在“其他板管理器URL”字段中输入 http://arduino.esp8266.com/stable/package_esp8266com_index.json ,然后单击“确定”按钮。
转到工具》董事会:XXX》董事会经理。在窗口中使用搜索或向下滚动,选择ESP8266开发板菜单,然后单击安装。等待安装完成并关闭窗口。
再次转到工具》开发板:XXX ,然后寻找ESP8266开发板。选择通用ESP8266模块。
现在,IDE已准备好对ESP8266进行编程。输入所需的代码或将其粘贴到IDE窗口中并保存。点击上传。从终端运行 flash.py ,这应该使您的电路板进入编程模式。等待几分钟,以便IDE完成编译和上传(注意:ESP-01通常带有2个LED,在代码上传时蓝色LED会闪烁)并运行 reset.py 。现在您的ESP-01板就可以执行任务了。