【ESP8266之LUA开发】六、建立TCP客户端,实现ADC测量,单点接地的小知识
2023-09-11 14:20:36 时间
8266
ADC测电压
init.lua
gpio.mode(4,gpio.OUTPUT)
gpio.mode(2,gpio.OUTPUT)
gpio.write(4,1)
if adc.force_init_mode(adc.INIT_ADC) then
node.restart()
return
end
tmr.alarm(0, 1000, 1, function()
gpio.write(4,1-gpio.read(4))
end)
tmr.alarm(1, 3000, 0, function()
dofile("wifi.lua")
end)
wifi.lua
wifi.setmode(wifi.STATIONAP)
cfg={}
cfg.ssid="Hellow8266"
cfg.pwd="11223344"
wifi.ap.config(cfg)
apcfg={}
apcfg.ssid="qqqqq"
apcfg.pwd="11223344"
wifi.sta.config(apcfg)
wifi.sta.autoconnect(1)
ClientConnectedFlage = 0
TcpConnect = nil
tmr.alarm(1, 1000, 1, function()
if ClientConnectedFlage == 0 then
Client = net.createConnection(net.TCP, 0)
Client:connect(8080,"192.168.1.103")
Client:on("receive", function(Client, data)
uart.write(0,data)
ReadAd(data)
end)
Client:on("connection", function(sck, c)
ClientConnectedFlage = 1
TcpConnect = Client
print("Link OK")
tmr.stop(1)
Client:on("disconnection", function(sck, c)
ClientConnectedFlage = 0
TcpConnect = nil
tmr.start(1)
end)
end)
if ClientConnectedFlage == 0 then
print("Link Error")
end
end
end)
function ReadAd(data)
if data == "++MD9" then
ad = adc.read(0)
if TcpConnect ~= nil then
TcpConnect:send("++MDAD="..ad)
end
end
end
uart.on("data",0,function(data)
if TcpConnect ~= nil then
TcpConnect:send(data)
end
end, 0)
printip = 0
wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)
printip = 0
end)
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
if printip == 0 then
print("+IP"..T.IP)
end
printip = 1
end)
ADC
对应引脚
对应板子的位置引脚
命令以及回复这样规定
API文档说明
adc.INIT_ADC
- 引脚输入
adc.INIT_VDD33
- 测内部
我们使用的是引脚输入,然后readadc(0)
就行。
在init.lua
里面加入
if adc.force_init_mode(adc.INIT_ADC) then
node.restart() --重启生效
return
end
然后wifi.lua
中加入
function ReadAD(data)
if data=="++MD9" then
if TcpClient~=nil then
ad = adc.read(0)
TcpClient:send(ad)
end
end
end
并在Client:on("receive", function(Client, data)
事件监听中进行函数的调用。
对了测试的电压是0-1V
,分辨率是 1024
当悬空的时候,数据是飘忽的,正常现象。
当接到3V3
上面的时候,传回来的数据是1024
接到GND
的时候的数据
竟然是14,竟然不是0,相关具体解释可参考<这里>
相关文章
- 推荐第三方Oracle客户端查询工具
- 使用OAuth打造webapi认证服务供自己的客户端使用
- redis 简单整理——客户端管理[十六]
- [心跳] 使用心跳机制实现CS架构下多客户端的在线状态实时更新以及掉线自动重连
- rtmp直播拉流客户端EasyRTMPClient TCP窗口大小设计方法
- rtmp直播拉流客户端EasyRTMPClient TCP窗口大小设计方法
- 【STM32F407】第12章 RL-TCPnet V7.X之TCP客户端
- 92. 基于 SAP UI5 JSONModel 客户端模型的列表分页显示(Table Pagination)前提
- 如何使用TCP套接字的端口来区分是哪个客户端发起的连接
- Atitit webdav 原理详细 概念补充 2.WebDAV的优势: 一套自己定义的安全完善的身份验证机制。 穿墙 HTTPS传送数据 使用一个TCP连接传送所有文件 方便的客户端工
- TCP服务器端和客户端建立连接 - 客户端的回调处理
- 【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf )
- java 基于tcp客户端服务端发送接收数据
- 【计算机网络】2、TCP:四次挥手与TIME_WAIT、shutdown() 优雅关闭 server、探活、拥塞窗口与 Nagle 算法、端口占用、tcp 的流式协议、可靠性
- MySQL客户端和服务器端工具集
- JS工具方法 3 js客户端与php服务器通信加密之AES