IOT

2019-01-04

ESP8266

模拟输出 Analog output

analogWrite(pin, value)

在已有的引脚上使能软件PWM功能。PWM可以用在引脚0~16。调用analogWrite(pin, 0) 可以关闭引脚PWM。取值范围:0~ PWMRANGE,默认为1023。 PWM 范围可以使用analogWriteRange(new_range)语句来更改。

PWM 默认频率:1KHz。使用analogWriteFreq(new_frequency) 可以更改频率。

ESPEASY

定时触发hooks脚本

on WiFi#Connected do
timerSet,1,10
endon

On Rules#Timer=1 do
SendToHTTP malu.me,80,/iot?domain=iotd1&ip=%ip%
timerSet,1,100
endon

定时睡眠

要启用深度睡眠,我们需要将RST引脚连接到ESP8266上的GPIO 16,在NodeMCU上,GPIO 16表示为D0;在D1上,GPIO 16表示为D2。

如果没有连接,将无法自动唤醒!!!

On System#Boot do
timerSet,2,60
endon

On Rules#Timer=2 do  //When Timer2 expires, do 启动60秒后,进入深度睡眠10秒,再启动,重复
deepsleep,10
endon

手动唤醒设备:RST拉至GND

擦除配置

在内存0x200000处写入空文件:

MQTT控制

controllers -> 编辑第一个 -> Protocol选择OpenHAB MQTT

发布主题,即为控制端  Controller Subscribe: /%sysname%/# 

比如发布一个主题:/test01/GPIO/2  Payload:0 ,给GPIO2低电平


接收主题,即为信号返回  Controller Publish: /%sysname%/%tskname%/%valname%

比如根据上面接收地址为:/test01/esp01/Switch 

esp01为:devices -> task name为esp01

Switch为:其Values的name

esp_wifi_repeater

官网:https://github.com/martin-ger/esp_wifi_repeater

注意!!!每次配置最好save一下。

中继基本配置:

set ssid xxx
set password xxx
save
set automesh 1
// set am_threshold dB:设置“坏”连接的阈值(以dB为单位,默认为85,即-85 dB)
// set hw_reset GPIOno:选择GPIO引脚进行硬件恢复出厂设置(> 16禁用,默认)
show
show stats  // 查看状态信息
save
reset

MQTT配置:

set mqtt_host xxx
set mqtt_port xxx

// 查看mqtt配置(会显示出MQTT Client Id等信息)
show mqtt

MQTT Client Id: ESPRouter_xxx

默认命令发布地址是:/WiFi/ESPRouter_xxx/command

接收命令(订阅)地址是:/WiFi/ESPRouter_xxx/system/response

接收所有节点和链接信息:/WiFi/ESPRouter_xxx/system/Topology

set mqtt_interval secs:设置路由器发布状态主题的时间间隔(默认值:15s,0禁用状态发布)

automesh最优路径网状树,根据rssi信号强度自动生成树状网络;

经测试,如果大量相同SSID的AP集中在某个位置,该算法会频繁切换网络,导致wifi不稳定,此时可以尝试减小am_threshold阈值,比如50。

安全配置:

lock xxx  // 锁定修改
unlock xxx  // 解锁修改

set config_port portno:设置控制台登录的端口号(默认为7777,0 禁用远程控制台配置)
set web_port portno:设置Web配置服务器的端口号(默认为80,0 禁用Web配置)
set config_access mode:控制允许控制台和Web配置访问的网络(0:无访问权限,1:仅内部,2:仅外部,3:两者(默认))

性能调优:

为提高吞吐率,可以把CPU频率调高:

set speed [80|160] :设置CPU时钟频率(默认为80 Mhz)

测量功耗:

循环中80Mhz     89 - 90mA
循环后空闲      33 - 34mA

循环中160Mhz    94.8 - 95mA
循环后空闲      34 - 35mA

Arduino

板载LED灯

引脚值:GPIO 13

全局常量:

#define LED_BUILTIN 13

高电平时点亮:

void setup() {
    pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
}