• 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()

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

    1. // http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-server/pin-control/
    2. // https://blog.csdn.net/lin123_00/article/details/106413337
    3. #include
    4. #include
    5. #include
    6. ESP8266WiFiMulti wifiMulti;
    7. ESP8266WebServer esp8266_server(80); // 端口 80
    8. void setup(void){
    9. Serial.begin(115200);
    10. pinMode(LED_BUILTIN, OUTPUT);
    11. wifiMulti.addAP("yourSSID", "password"); // 环境查找是否有这里列出的WiFi ID。如果有
    12. Serial.print("Connecting");
    13. while (wifiMulti.run() != WL_CONNECTED) { delay(1000); Serial.print("*"); }
    14. Serial.println('\n');
    15. Serial.print("Connected to ");
    16. Serial.println(WiFi.SSID());
    17. Serial.print("IP address:\t");
    18. Serial.println(WiFi.localIP());
    19. esp8266_server.begin(); // 启动网站服务
    20. esp8266_server.on("/", HTTP_GET, handleRoot); // 设置服务器根目录即'/'的函数'handleRoot'
    21. esp8266_server.onNotFound(handleNotFound); // 设置处理404情况的函数'handleNotFound'
    22. esp8266_server.on("/Button1", HTTP_POST, handleButton1); // 设置处理LED控制请求的函数'handleButton1'
    23. esp8266_server.on("/Button2", HTTP_POST, handleButton2); // 设置处理LED控制请求的函数'handleButton2'
    24. esp8266_server.on("/Button3", HTTP_POST, handleButton3); // 设置处理LED控制请求的函数'handleButton3'
    25. Serial.println("HTTP esp8266_server started");// 告知用户ESP8266网络服务功能已经启动
    26. }
    27. void loop(void){
    28. esp8266_server.handleClient(); // 检查http服务器访问
    29. }
    30. /*设置服务器根目录即'/'的函数'handleRoot'
    31. 该函数的作用是每当有客户端访问NodeMCU服务器根目录时,
    32. NodeMCU都会向访问设备发送 HTTP 状态 200 (Ok) 这是send函数的第一个参数。
    33. 同时NodeMCU还会向浏览器发送HTML代码,以下示例中send函数中第三个参数,
    34. 也就是双引号中的内容就是NodeMCU发送的HTML代码。该代码可在网页中产生LED控制按钮。
    35. 当用户按下按钮时,浏览器将会向NodeMCU的/LED页面发送HTTP请求,请求方式为POST。
    36. NodeMCU接收到此请求后将会执行handleLED函数内容*/
    37. void handleRoot() {
    38. esp8266_server.send(200, "text/html", "

      InputSomething:

      "
      );
    39. }
    40. void handleNotFound(){
    41. esp8266_server.send(404, "text/plain", "404: Not found"); // 发送 HTTP 状态 404 (未找到页面) 并向浏览器发送文字 "404: Not found"
    42. }
    43. //处理LED控制请求的函数'handleLED'
    44. void handleButton1() {
    45. digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态
    46. Serial.print( esp8266_server.arg("sometext") );
    47. esp8266_server.sendHeader("Location","/"); // 跳转回页面根目录
    48. esp8266_server.send(303); // 发送Http相应代码303 跳转
    49. }
    50. void handleButton2() {
    51. digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态
    52. esp8266_server.sendHeader("Location","/"); // 跳转回页面根目录
    53. esp8266_server.send(303); // 发送Http相应代码303 跳转
    54. }
    55. void handleButton3() {
    56. digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态
    57. esp8266_server.sendHeader("Location","/"); // 跳转回页面根目录
    58. esp8266_server.send(303); // 发送Http相应代码303 跳转
    59. }

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

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

    想想如果能 在页面上图形化显示传感器数据 就更棒了,要知道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 。。。还好我万金油样样都看了一点点。

  • 相关阅读:
    php使用阿里云文本内容检测openapi-sdk-php
    Nginx安装
    2022/11/22 [easyx]关于字符和一些背景
    微信小程序(三)--- 视图与逻辑详解(导航相关,WXS脚本,页面事件,生命周期,自定义编译模式等)
    GitCode / 1024程序员开源挑战赛实践
    unordered_map详解
    Mish-撼动深度学习ReLU激活函数的新继任者
    Rust学习----Rust安装
    prompt 提示词如何写?
    【零基础学QT】第一章 QT安装与工程创建
  • 原文地址:https://blog.csdn.net/jiangge12/article/details/126152134