,不要错过精彩的内容
来源|DF创客社区
有时候工程师压力很大,心情不好,需要一个释放压力的地方。今天分享一个开源项目:情绪记录仪——
一、项目简介
程序员有时会遇到各种各样的代码Bug,有时是因为一个Bug连续加班几天。同时工作安排比较满,所以每天心情波动很大。为了缓解压力,提醒自己保持愉快的心情,我专门做了这个可以缓解压力的。,“非常好用~”
二、功能介绍
远程无线信号传输
实时显示云数据
三、材料清单
Gravity: 数字无线开关(433)MHz)
FireBeetle 萤火虫 ESP32微控制器
Gravity: FireBeetle Gravity 传感器扩展板
Gravity: 大数字按钮模块 黄色
3.7V锂电池
排线若干
四、产品介绍
Gravity: 使用433Mhz射频通信技术的无线开关模块与电动汽车遥控器相同,但该模块更容易扩展,可以访问您想要连接的传感器,并可以在室内30个M数字信号在左右距离内无线传输。具有以下优点:
操作非常简单,发射器只需接入电池和数字传感器即可进行信号传输,无需接入控制器,大大节省了工程成本;
3PIN传感器可直接插入排针接口,易于扩展;
即使在室内隔了几堵墙,信号也能穿透信号传输;
待机时待机电流<10uA,延长电池寿命。
五、设计过程
六、生产工艺
为了减压,足够漂亮,我特意在某宝买了一个解压按钮,你也可以选择换成你讨厌的娃娃。每当他惹你生气,你就打他一拳。
1.使用一个垫板和两个海绵垫来增加按钮的接触面积
2.正确接线
3.将按钮模块插入玩偶的两个海绵垫之间
4.完成
具体接线图如下图所示:
七、样例代码
库文件链接可以到原文论坛获取。
#include<WiFi.h> #include<PubSubClient.h> #include<ArduinoJson.h> #include"DFRobot_Aliyun.h" /*配置WIFI名和密码*/ constchar*WIFI_SSID="DFRobot-guest"; constchar*WIFI_PASSWORD="dfrobot@2017"; /*配置设备证书信息*/ ///根据您的设备设置更换这些参数 StringProductKey="yourProductKey"; StringClientId="yourClientId"; StringDeviceName="yourDeviceName"; StringDeviceSecret="yourDeviceSecret"; /*配置域名和端口号*/ StringALIYUN_SERVER="iot-as-mqtt.cn-shanghai.aliyuncs.com"; uint16_tPORT=1883; /*需要操作的产品标识符(自产和代理)*/ StringIdentifierA="CountA"; StringIdentifierB="CountB"; /*两者需要报告和订阅TOPIC*/ constchar*subTopic="/sys/a16yECCLMxp/Counter/thing/service/property/set";//****复制你的set到此处 constchar*pubTopic="/sys/a16yECCLMxp/Counter/thing/event/property/post";//******复制你的post到此处 DFRobot_AliyunmyAliyun; WiFiClientespClient; PubSubClientclient(espClient); #defineBUTTON_PIN1D4 #defineBUTTON_PIN2D5 intcountA=0; intcountB=0; voidconnectWiFi(){ Serial.print("Connectingto"); Serial.println(WIFI_SSID); WiFi.begin(WIFI_SSID,WIFI_PASSWORD); while(WiFi.status()!=WL_CONNECTED){ delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFiconnected"); Serial.print("IPAdderss:"); Serial.println(WiFi.localIP()); } voidcallback(char*topic,byte*payload,unsignedintlen){ Serial.print("Recevice["); Serial.print(topic); Serial.print("]"); for(inti=0;i<len;i ){ Serial.print((char)payload[i]); } Serial.println(); } voidConnectAliyun(){ while(!client.connected()){ Serial.print("AttemptingMQTTconnection..."); /*连接到自动计算的用户名和密码Alinyun的设备,不需要更改*/ if(client.connect(myAliyun.client_id,myAliyun.username,myAliyun.password)){ Serial.println("connected"); client.subscribe(subTopic); }else{ Serial.print("failed,rc="); Serial.print(client.state()); Serial.println("tryagainin5seconds"); delay(5000); } } } voidsetup(){ pinMode(BUTTON_PIN1,INPUT); pinMode(BUTTON_PIN2,INPUT); Serial.begin(115200); /*连接WIFI*/ connectWiFi(); /*初始化Alinyun的配置,用户名和密码可以自动计算*/ myAliyun.init(ALIYUN_SERVER,ProductKey,ClientId,DeviceName,DeviceSecret); client.setServer(myAliyun.mqtt_server,PORT); /*设置回调函数,回调函数在收到订阅信息时执行*/ client.setCallback(callback); /*连接到Aliyun*/ ConnectAliyun(); } intold_valA=LOW; intold_valB=LOW; voidloop(){ if(!client.connected()){ ConnectAliyun(); } intvalA=digitalRead(BUTTON_PIN1);/读取输入数值并且存储
int valB=digitalRead(BUTTON_PIN2);//读取输入数值并且存储
if(valA==HIGH) //检查按钮的变化情况
{
countA++;
Serial.print("事件A次数:");
Serial.println(countA);
client.publish(pubTopic,("{"id":"+ClientId+","params":{""+IdentifierA+"":"+countA+",""+IdentifierB+"":"+countB+"},"method":"thing.event.property.post"}").c_str());
delay(300);//防抖
}
if(valB ==HIGH) //检查按钮的变化情况
{
countB++;
Serial.print("事件B次数:");
Serial.println(countB);
client.publish(pubTopic,("{"id":"+ClientId+","params":{""+IdentifierA+"":"+countA+",""+IdentifierB+"":"+countB+"},"method":"thing.event.property.post"}").c_str());
delay(300);//防抖
}
//在下方更改你的上传的数据内容,如countA和countB
client.loop();
}
八、云端显示
操作详情可参考Esp32阿里云教程[1]
最后做出的Web数据界面是这样的:
你也可以自己设计其他形式计数:
九、项目小结
除了以上应用场景,我们的生活中也有很多其他场景需要计数统计,比如人流量统计、流水线工件计数、仓库点货等等。“大风起兮云飞扬,安得猛士兮走四方。数据,任何时候都要采集,不采集不行!你想想,你跟着老板,吃着火锅唱着歌,突然数据就来了!这不是妥妥升职加薪的节奏吗?”
参考资料
Esp32阿里云教程: https://www.dfrobot.com.cn/images/upload/File/20200326102954tmbfbr.pdf
原文链接:https://mc.dfrobot.com.cn/thread-311485-1-1.html
本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。
------------ ------------
回复“
点击“