# CW_ESP8266_SSD1306_I2C_4PIN_1 **Repository Path**: wangdong1995/cw_esp8266_ssd1306_i2c_4pin_1 ## Basic Information - **Project Name**: CW_ESP8266_SSD1306_I2C_4PIN_1 - **Description**: 莫尔斯电码练习器。在EPS8266开发板(NodeMCU)上使用Arduino实现。可以通过MQTT进行模拟通联。 - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: https://www.bilibili.com/video/av82431456/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 25 - **Created**: 2022-06-21 - **Last Updated**: 2022-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## 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    山猫号