shownb / shownb.github.com

shownb.github.io
shownb.github.io
5 stars 1 forks source link

esp8266 #1

Open shownb opened 7 years ago

shownb commented 7 years ago

基本功

字节是由8个位所组成,可代表一个字符(A~Z)、数字(0~9)、或符号(,.?!%&+-*/),是内存储存数据的基本单位。 1 byte = 8 bit

关于sharp的memory lcd

https://mcuoneclipse.com/2016/12/17/low-power-lcd-adafruit-breakout-board-with-sharp-memory-display/ 一些协议的分析

工作协议 programming_memory_lcd_app_note.pdf

https://hackaday.io/project/12974-wireless-remote-lcd 里面有接线方式,还有lua的代码实例

http://www.espruino.com/MemoryLCD 引脚之类

http://m.xuite.net/blog/tzeng015/twblog/113272083 spi总线

You must use include spi.h, for SS, so certain pins are fixed: SPI CLK = GPIO14 SPI MOSI = GPIO13 SPI MISO = GPIO12 All other pins can be assigned to any available GPIO: CS RST

类似手表的一个实例 https://hackaday.io/project/4706-uv-badge uv是紫外线 代码https://github.com/x-labz/UV-badge

一些手册之类

wifi.setmode(wifi.STATION) wifi.sta.autoconnect(1) print(wifi.sta.getip())

研究esp8266的一些博客 http://blog.pillakloud.com

关于舵机的一些实操

mg996r 接线 棕色線 GND 接esp32地 紅色線 V+ 接esp325v 橘色線 PWM 我用来接我esp32的p17

通常的舵机都是5V或6V供电,但转过的角度是脉宽来控制的。周期20ms,脉宽0.5-2.5ms的方波,对应0~180度。 以mg995为例子,红色接VC,灰色接GND,橙色接esp8266的GPIO。我接了IO1

local pin=1
gpio.mode(pin,gpio.OUTPUT)
pwm.setup(pin,50,34);pwm.start(1);tmr.delay(500000);pwm.stop(1)
pwm.setduty(pin,34);tmr.delay(5000000);pwm.stop(1)

不断找自己舵机0度和180度(不一定是180度,可能是大于)的占空比,我这个找到的是34和116。我再描述一次,就是当0度时候,假如这个占空比应该是x,如果设置得比x还小的时候,舵机会出现不断抖动想继续前进的现象,这时候x的值就应该是0度的占空比了。 以找到自己0度和180度时候的占空比为例子,调整(0-180)任意角度的函数

function turn(pin,v1)
    local max=104,min=34
    local v2 = ((max-min)*v1)/180+min
    pwm.setduty(pin,v2);tmr.delay(5000000);pwm.stop(1)
end

可以参考的一些文章。 https://www.youtube.com/watch?v=6j_5GmoGlyQ http://blog.pillakloud.com/blog/2016/07/23/maker-將mr996r改為不限角度/ http://www.amobbs.com/forum.php?mod=viewthread&action=printable&tid=5218802&_dsign=db8ada0f

python里面找占空比是这样来找的。 servo = PWM(Pin(17), freq=50,duty=34) servo.duty(变量) 不断尝试找到0和180度合适的值。

from machine import PWM,Pin
class Servo:
    def __init__(self, pin, freq=50, min_duty=38, max_duty=118, angle=180):
        self.min_duty = min_duty
        self.max_duty = max_duty
        self.freq = freq
        self.angle = angle
        self.pwm = PWM(pin, freq=freq, duty=self.min_duty)

    def numberMap(self,inputNum, bMin, bMax, cMin, cMax):
        outputNum = 0
        outputNum = int(((cMax - cMin) / (bMax - bMin)) * (inputNum - bMin)) + cMin
        return outputNum

    def write_angle(self, degrees=None):
        duty = self.numberMap(degrees,0,self.angle,self.min_duty,self.max_duty)
        self.pwm.duty(duty)

关于pwm的一些有趣实验。

pwm就是怕玩命。/xiaoku 频率是f,t是周期,单位秒s,f=1/t. pwm就是制造一定频率的波,还有就是可以控制波峰和波底多长时间。因为计算机不是1就是0,所以占空比就是控制1和0各多长时间。参考下图.

用蜂鸣器产生<<就算没有如果>>这个歌。

shownb commented 7 years ago

markdown语法教程 https://github.com/LearnShare/Learning-Markdown/tree/v2 以及一些蜂鸣教程 http://www.cnblogs.com/xiaowuyi/p/3343757.html

shownb commented 7 years ago

RE:SDK1.3.0开始,有各种各样的低功耗技术.包括在网待机ModemSleep, 死去活来的DeepSleep。答主提到的215mA,是在某些情况下连续发射下的最大平均电流,具体的Peek电流根据非官方测试可以到1.2A,当然这种高频退偶都是退欧电容的锅,没示波器根本看不出来。目前市场上已经有了采用8266&纽扣电池的产品。不过是长时间待机,采用MOS管完全关断的方式省电。合理的采用退偶电容可以使8266在纽扣电池环境下工作,不过一般都是连上发点信息,就强制待机,否则发个几次就没电了...

关于使用纽扣式电池,具体看这个人的测试。https://www.youtube.com/watch?v=IYuYTfO6iOs 为什么不能用cr2302,里面说了,看一下劲量的datasheet http://data.energizer.com/pdfs/cr2032.pdf 里面说了,这个cr2302很理想的情况下最大提供6.8mA,也不能供给esp8266使用。esp8266在wifi打开的情况下,平均使用80mA多。幸好有LIR2450

LDO参数

shownb commented 7 years ago

1、Modem-sleep 仅在 Station 模式下,连接路由器后生效。 ESP8266 通过 Wi-Fi 的 DTIM Beacon 机制与路由器保持连接。在 Modem-sleep 模式下, ESP8266 会在两次 DTIM Beacon 间隔时间内,关闭 Wi-Fi 模块电路,达到省电效果,在下次 Beacon 到来前自动唤醒。睡眠时间由路由器的 DTIM Beacon 时间决定。睡眠同时可以保持与路由器的 WiFi 连接。 API wifi_set_sleep_type(MODEM_SLEEP_T)

2、Light-sleep 的工作模式与 Modem-sleep 相似,不同的是,除了关闭 Wi-Fi 模块电路以外,在 Light-sleep 模式下,还会关闭时钟并暂停内部 CPU,比 Modem-sleep 功耗更低。在 Wi-Fi 连接后,并且 CPU 处于空闲状态时,会自动进入 Light-sleep 状态。 API wifi_set_sleep_type(LIGHT_SLEEP_T)

3、相对于其他两种模式, Deep-sleep 由用户控制,调用接口函数就可立即进入 Deep-sleep 模式。在该模式下,芯片会断开所有 Wi-Fi 连接与数据连接,进入睡眠模式,只有 RTC 模块仍然工作,负责芯片的定时唤醒。使用 Deep-sleep 必须将 GPIO16 与芯片 EXT_RSTB 管脚连接。 API void system_deep_sleep(uint32 time_in_us)

https://blog.falafel.com/esp8266nodemcu-deep-sleep/

deepsleep之后还要delay一下。