IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP8266 做简单的仪器 -> 正文阅读

[嵌入式]ESP8266 做简单的仪器

首先,需要定义简单的仪器。我觉得吧,有智能手机和电脑在手,单片机再做一套按钮、旋钮、显示屏是对现代单片机和手机强大的性能的侮辱,尤其是某些单片机适用的触摸屏死贵死贵还吃资源。

之前做了波形发生器。思路简单,蓝牙或串口(PC用USB串口,手机用蓝牙串口)发送字符串给单片机,单片机接受到字符串并处理为可执行的命令发送给 波形发生器模块。这样甚至都不用LabView这样的专业上位机软件做界面。

手机控制的波形发生器-其他-高清完整正版视频在线观看-优酷 (youku.com)https://v.youku.com/v_show/id_XNTg4OTczOTAzNg==.html-------------------------------------------------------------------------------------------------------------------------

ESP8266 集成有 Wifi,那也可以试试通过Web页面来发送字符串给ESP8266

下面代码可以直接上传到ESP8266(SSID总是要填写下的嘛)。

包含三个部分:

  1. 连接wifi
  2. 推送web页面给客户端
  3. 点击按钮时,把文本框的内容 sometext 发送给 void handleButton1()

按下图所示,则可以看到网页文本框的输入内容 原封不动在串口打印了出来。

// http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-server/pin-control/
// https://blog.csdn.net/lin123_00/article/details/106413337

#include <ESP8266WiFi.h>        
#include <ESP8266WiFiMulti.h>  
#include <ESP8266WebServer.h>  
ESP8266WiFiMulti wifiMulti;  
ESP8266WebServer esp8266_server(80);  // 端口 80
 
void setup(void){
  Serial.begin(115200);   
  pinMode(LED_BUILTIN, OUTPUT);    
  wifiMulti.addAP("yourSSID", "password"); // 环境查找是否有这里列出的WiFi ID。如果有
  Serial.print("Connecting");             
  while (wifiMulti.run() != WL_CONNECTED) { delay(1000); Serial.print("*"); }                                          
  Serial.println('\n');
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           
 
  esp8266_server.begin();                                   // 启动网站服务
  esp8266_server.on("/", HTTP_GET, handleRoot);             // 设置服务器根目录即'/'的函数'handleRoot'
  esp8266_server.onNotFound(handleNotFound);                // 设置处理404情况的函数'handleNotFound'
  esp8266_server.on("/Button1", HTTP_POST, handleButton1);  // 设置处理LED控制请求的函数'handleButton1'
  esp8266_server.on("/Button2", HTTP_POST, handleButton2);  // 设置处理LED控制请求的函数'handleButton2'
  esp8266_server.on("/Button3", HTTP_POST, handleButton3);  // 设置处理LED控制请求的函数'handleButton3'
 
  Serial.println("HTTP esp8266_server started");//  告知用户ESP8266网络服务功能已经启动
}
 
void loop(void){
  esp8266_server.handleClient();                     // 检查http服务器访问
}
 
/*设置服务器根目录即'/'的函数'handleRoot'
  该函数的作用是每当有客户端访问NodeMCU服务器根目录时,
  NodeMCU都会向访问设备发送 HTTP 状态 200 (Ok) 这是send函数的第一个参数。
  同时NodeMCU还会向浏览器发送HTML代码,以下示例中send函数中第三个参数,
  也就是双引号中的内容就是NodeMCU发送的HTML代码。该代码可在网页中产生LED控制按钮。 
  当用户按下按钮时,浏览器将会向NodeMCU的/LED页面发送HTTP请求,请求方式为POST。
  NodeMCU接收到此请求后将会执行handleLED函数内容*/
void handleRoot() {       
  esp8266_server.send(200, "text/html", "  <form action=\"/Button1\" method=\"POST\">  <p>InputSomething: <input type=\"text\" name=\"sometext\" /></p> <input type=\"submit\" value=\"Button1\"> </form>  ");
}
void handleNotFound(){
  esp8266_server.send(404, "text/plain", "404: Not found"); // 发送 HTTP 状态 404 (未找到页面) 并向浏览器发送文字 "404: Not found"
}
 
//处理LED控制请求的函数'handleLED'
void handleButton1() {                          
  digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态
  Serial.print( esp8266_server.arg("sometext") );
  esp8266_server.sendHeader("Location","/");          // 跳转回页面根目录
  esp8266_server.send(303);                           // 发送Http相应代码303 跳转    
}
void handleButton2() {                          
  digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态
  esp8266_server.sendHeader("Location","/");          // 跳转回页面根目录
  esp8266_server.send(303);                           // 发送Http相应代码303 跳转  
}
void handleButton3() {                          
  digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态
  esp8266_server.sendHeader("Location","/");          // 跳转回页面根目录
  esp8266_server.send(303);                           // 发送Http相应代码303 跳转  
}
 

-------------------------------------------------------------------------------------------------------------------------

接下来,来点更有意思的。。。

想想如果能?在页面上图形化显示传感器数据?就更棒了,要知道MCU比较紧张的资源做图形显示的网页是很有挑战的。

下面视频里,阿根廷小哥用在线脚本chartjs简单实现了气压传感器的图形显示.遗憾是只有视频,其个人网站可能在墙外。

ESP8266项目 - 用Websockets和Chart.js绘制传感器数据_哔哩哔哩_bilibilihttps://www.bilibili.com/video/av86993378/Getting Started | Chart.js (chartjs.org)https://www.chartjs.org/docs/latest/getting-started/

看视频跟着一句一句抄作业,few hours later 。。。硬是抄玩了,手机里看到图形时很有满足感。(主要是校对代码,毕竟视频里边写边上传肯定没错的,上传出错或网页没显示什么的都是我敲错漏了。)

有一处注意:视频里安装 websockets 库时需要安装最新,才能匹配 ESP8266环境的3.0.2版本。

因为只是关注网页技术,暂时没接传感器,数据源用了 ADC0?的采样值。

这个实验是用来看传感器趋势图的,实测大概最快10Hz,间隔最长没试,估计几分钟以上没问题。

下图是设置到10Hz可以用来观测极低频率的波形,正好有一个波形发生器,试试就试试。

代码暂时不贴,因为跟着视频一句一句敲是很好的学习过程,最好有两个显示器。

----------------------------------------------------------------------------------------------------------------------

最后。。。谁说 arduino 简单来着,整个程序用上了 c html js json websockets 。。。还好我万金油样样都看了一点点。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:00:44  更:2022-08-06 11:03:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:29:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码