1 Star 0 Fork 23

bg4iww / CW_ESP8266_SSD1306_I2C_4PIN

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 6.30 KB
一键复制 编辑 原始数据 按行查看 历史
FredyXu 提交于 2020-03-07 09:51 . 更新README

莫尔斯电码练习器

在ESP8266上使用ARDUUINO实现的莫尔斯电码练习器。

此版本使用的OLED显示屏为SSD1306 I2C 4引脚版本。

详细的使用方法请关注B站 视频 内容

主要功能介绍

  • 支持手动和自动电键
  • 自动电键的点和划可以互换
  • 可以通过WIFI将拍发的电码发送到指定的MQTT服务器,并接收指定MQTT服务器的其他练习器拍发的电码,并播报
  • 拍发速度可调节
  • 播放速度可调节
  • 防抖时长可调节
  • 开启网络功能时,停止拍发电码后1.5秒后自动发送电码到指定的MQTT服务器

关于备用WIFI

主WIFI和备用WIFI填写一个即可。启动网络后先搜索主WIFI信号,如搜索到则尝试连接,20秒连接超时过后会尝试连接备用WIFI。

硬件清单

模块 数量
ESP8266开发板(NodeMCU) 1
OLED显示屏 128×64分辨率 SSD1306驱动芯片 I2C通信 4引脚 1
旋转编码器 数字脉冲输出 可按压 5引脚 1
3.5毫米音频母座 3引脚 1
无源蜂鸣器 1
杜邦线 若干

如何在Arduino的IDE中添加ESP8266开发板

打开Arduino的IDE,打开“首选项”,在“附加开发板管理器网址”中添加如下地址:http://arduino.esp8266.com/stable/package_esp8266com_index.json ,添加完成后保存。再点击“工具”->“开发板”->“开发板管理器”。在顶部的搜索框中填写“ESP8266”并按下回车进行搜索,安装搜索到的项目即可。

接线方法

OLED

OLED ESP8266
VCC 3.3V
GND GND
SCL D1(GPIO 5)
SDA D2(GPIO 4)

自动电键(KEY)

KEY ESP8266
1 D4(GPIO 2)
2 D7(GPIO 13)
GND GND

手动电键

KEY ESP8266
1 D4(GPIO 2)
GND GND

说明:以上两种电键接法根据自己的需要选择其中一种。自动电键的接法同时支持手动电键,但手动建的接法无法使用自动电键。

编码器

ENCODER ESP8266
GND GND
+ 3.3V
SW D6(GPIO 12)
DT D5(GPIO 14)
CLK D3(GPIO 0)

蜂鸣器

BEE ESP8266
VCC 3.3V
GND GND
IO D0(GPIO 16)

说明:以上蜂鸣器为无源蜂鸣器

依赖的库

ESP8266WiFi

EEPROM

PubSubClient (By Nick O'Leary)

Adafruit_SSD1306 (By Adafrult)

Adafruit GFX Library (By Adafrult)

U8g2_for_Adafruit_GFX (By ollver)

如何进入“设置”

在开机界面时,按下或旋转编码器,即可进入设置界面。

“设置”项目说明

返回

从设置页面返回到默认页面

调整音调

更改蜂鸣器的鸣叫驱动频率,从而达到调整蜂鸣器鸣叫音调的目的。

电键类型

设置所使用的电机按类型。可设置为“手动电键”(Manual)或“自动电键”(Auto)。

按键方向

设置自动电键中,左、右浆按下后所键入的是“点”或“划”。默认左浆为点(L-Di),可以设置为右浆为点(R-Di)。

是否播放

设置从MQTT服务器收到自己拍发的莫尔斯电码后是否播放出来。此设置仅对收到自己拍发的电码有效,对收到他人的电码此设置无效。

是否转换

是否将从MQTT服务器收到的莫尔斯电码转换为对应的字符,并显示出来。

拍发时长

不同于其他的莫尔斯电码练习器,此练习器的拍发速度调节以“点”的最大时长为调节依据(为了方便说明,后文将“点”的最大时长称为“单位时长”,即设置中的“拍发时长”)。使用手动电键拍发时,电键按下至释放的时长若小于“单位时长”,则认为此次键入为“点”。若大于“单位时长”,则认为此次键入为“划”。事实上“单位时长”可以认为是“点”和“划”的临界时长。

在使用自动键拍发时,“点”的时长为0.5倍“单位时长”,“划”的时长为1.5倍“单位时长”,电码之间的间隔为0.5倍“单位时长”。

播放时长

在从MQTT服务器收到电码后,播放电码的“单位时长”。

防抖时长

设置电键防抖的时长。

连接网络

设置是否通过WIFI连接到指定的MQTT服务器。如此项目设置为Yes,需要自行确认当前的WiFi和MQTT服务器是否可用。

重置为默认设置

将全部设置置为默认

详细的使用方法请关注B站 视频 内容

关于font.h

font.h为自定义的字体文件,使用的是 文泉驿开源字体。 感谢字体作者的无私奉献。

关于psc.h

psc.h和psc.cpp为PubSubClient(作者Nick O'Leary )库的源代码,由于默认情况下PubSubClient无法接收过长的内容,为了便于使用,故仅将限制变量稍作改动后转放至此,其他内容没有任何修改。再次感谢原作者的无私奉献!

更新日志

2020-03-07

  • 修正了由 山猫号 指正的判断语句错误。非常感谢!鞠躬!

2020-01-18

  • 增加备用WIFI。当开启网络时,首先连接主WIFI信号,如果连接失败,则尝试连接备用WIFI。(感谢 蜗牛_BD4TZG 的建议)

2020-01-16

  • 增加WiFi超时检查。尝试连接WiFi在30秒后如果无法正常连接,则关闭网络。

2020-01-06

  • 修复无法收发过长内容的错误

2020-01-04

  • 修复收到的莫尔斯电码会在每个字符后面多出一个空格错误
  • 将WIFI控制文件名称更改为wifi.h。文件名net.h预留给其他功能使用。

2020-01-03

  • 调整抖动时长不能超过单位时长

2020-01-02

  • 修复有时首次上电运行时读取设置参数错误

2020-01-01

  • 修复使用手动电键时蜂鸣器鸣叫会产生抖动的情况
  • 优化自动键的算法
  • 调整默认音调频率更为1000Hz
  • 调整默认抖动时长更为40毫秒

特别鸣谢建议提供者

蜗牛_BD4TZG    山猫号

C
1
https://gitee.com/bg4iww/cw_esp8266_ssd1306_i2c_4pin.git
git@gitee.com:bg4iww/cw_esp8266_ssd1306_i2c_4pin.git
bg4iww
cw_esp8266_ssd1306_i2c_4pin
CW_ESP8266_SSD1306_I2C_4PIN
master

搜索帮助