用arduino做得一块web server在电脑的网页一直打不开,请求不到

用arduino做得一块web server在电脑的网页一直打不开,请求不到,第1张

网页打不开的解决办法:
1电脑遭到恶意病毒入侵,不知名的下载站一些文件可能带病毒,下载运行了可能会出现网页打不开现象;
2DNS设置错误,需要修改DNS设置;
3浏览器设置代理服务器选项,所以出现打不开网页情况;
4系统垃圾和网页痕迹较多,没有做定期清理;
5使用​百度安全卫士和百度杀毒系统清理功能和系统修复功能,即可解决该类问题。

使用arduino提取网页中的并显示在自己的网页上的方法:
1、设置screenimage(image, xPos, yPos);的参数:
image : a named instance of PImage
xPos : int, location on the x-axis to start drawing
yPos : int, location on the y-axis to start drawing
2、举例说明:
PImage logo;
void setup() {
// initialize the screen
EsploraTFTbegin();
// initialize the SD card
SDbegin(SD_CS);
// set the background the black
EsploraTFTbackground(0, 0, 0);
// load the image into the named instance of PImage
logo = EsploraTFTloadImage("arduinobmp");
// if it is a valid image file, turn the Esplora's LED green
if (logoisValid()) {
EsplorawriteGreen(255);
}
else{
// if it is not valid, turn the LED red
EsplorawriteRed(255);
}
// draw the image on the screen starting at the top left corner
EsploraTFTimage(logo, 0, 0);
}
void loop() {
//循环处理另一个网页上的,存放到本网页的固定位置
}

有很多通信模块只有TCP功能,没有MQTT功能,比如WIFI,W5500等模块,还有一些NBIOT模块,但是又想连接阿里云物联网平台,官方提供了 *** 作系统,需要自己移植,很麻烦,比较难看得懂。就在想有没有一些简单一定的方法。
心想MQTT是基于TCP的,能否使用TCP转MQTT?因此就想使用TCP协议然后转MQTT协议连接阿里云物联网平台,经过试验证明是可以的。
首先我们先分析一下如何登陆接入Onenet平台。
先从它数据格式开始分析。首先我们要从后台取出三个信息,我们以这个为例。
我们把产品ID,设备名称,设备秘钥,简称三要素 (具体是什么看你自己的设备)
其实阿里云物联网平台的MQTT协议用的就是标准的,不过它加入了自己的认证方式。
MQTT协议需要上传四个参数,报活时间,clientID,用户名,密码。
那么阿里云的就在clientID,用户名,密码做了手脚。
clientID比较长,按照一定的格式
用户名:设备名和秘钥组成
密码:使用了加密串进行了加密,有sha1或者MD5加密方式
下面我们来介绍一下
MQTT接入都是发十六进制的数据。
么我们发送的时候就是这样子的一串数据
0x74 0x00 0x04 0x4d 0x51 0x54 0x54 0x04 0xC0 0078 0033 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67
0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c 0009
0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34 0028 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36
十六进制解释
数据长度:0x74
协议数据长度 0x00 0x04
协议类型: 0x4d 0x51 0x54 0x54
协议数据: 0x04 0xC0
keepAlive数据:0078
ClientID长度:0033
ClientID: 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67 0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c
用户名:0009
用户名: 0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34
密码长度:0028
密码: 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36复制代码上面的就是连接服务器的连接包
下面呢,我们来做个发布包(上传数据到服务器)
0x30 0x1D 0009 2f7379732f706f7374 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d
十六进制数据解释
数据头:0x30
数据长度:0x1D
TopicName数据长度:0009
TopicName数据内容:2f7379732f706f7374
主体json数据: 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d复制代码以上就是连接阿里云的数据包格式及发布数据的格式,由于时间问题没有做订阅的数据包分析,下一次更新订阅的内容。

这个其实是在一块板子上集成了arduino和一个小型的linux系统,自带wifi模块,wifi通信的工作由linux来做,传感器的数据采集由arduino来做,他俩之间的数据交互通过Bridge库来做。不过板子较贵,大概480左右。意大利原产。适合玩,你需要学习的就是去官网看这款板子的文档,买一些杜邦线和传感器,选择一个物联网云平台,用来测试采集和传输数据!

调用 #include <EEPROMh> 来使用EEPROM;

EEPROMwrite();并不能保证断电不丢失,需要提交

通过串口往EEPROM中写入, 按x可以读取EEPROM中的数, 给ESP32断一次电,再上电读取

连接网络, 从网络中请求NTP对时数据, 这里我们选取了阿里云的NTP服务器 ntp1aliyuncom
此外,我们在东八区, 所以应该偏移时间 8小时

这里注意, 需要传入一个UPD连接, 详见后面的例子

程序启动当天是1

你好,
RPi 和 Arduino 两个完全不同运算水平的平台。毕竟 RPi 使用的是一颗运行在 700MHZ 的 ARM11 CPU;而常用的 Arduino UNO 则是一颗在工业控制领域常见的 8-bit ATmega328,最高运行频率仅 20MHz。
RPi 可以运行完整的 *** 作系统,如 Debian 等常见 Linux 发行版 - RPi Distributions。这意味着你可以使用你熟练的语言(如 Python、Java)和熟悉的库来进行开发,同时后台运行多个进程也毫无压力。而 Arduino 作为一款真正传统意义上的单片机系统,一次只能运行一个你烧进去的程序,功能也相对单一。
RPi 自带的接口比较全面,USB-host、RJ45、HDMI、SD读卡器等常用接口都有;而 Arduino 比较单纯,与外部设备打交道需要另外采购接口板。
RPi 因为是一个相对完整的「电脑」,其成本肯定比 Arduino 高,目前 B 版在淘宝普遍 280 元左右;而常用的 Arduino UNO 40 元搞定。
RPi 拥有更完整的 *** 作系统,这也意味着每次复电后所需的启动时间很长,而且还不能保证重启后你写的相关服务都能正常启动(Linux 大拿可能会觉得是我技术渣);但 Arduino 因为用途单一,重启速度超快,而且重启结束后立即就在运行你让它做的事。
综合考虑后,我的选择是:
RPi 作为家居中央控制服务器,负责与互联网的通信、采样存储 Arduino 上报的状态数据、处理数据量大的工作(如音频、视频、相关)、提供 API 给 iOS 及 Android 以方便用手机控制家居。RPi 与 Arduino 间通过以太网和 Zigbee 进行数据传输。
Arduino 负责家居传感器采样,如光线强度、温度、人体红外感应等。有的模块比较独立,比如人体感应的夜间走廊灯,单个 Arduino 可以自己实现监控加控制,就不需要上报数据给 RPi 了。需要上报和接收数据的 Arduino ,通过 Zigbee 及以太网和 RPi 进行通信。
这样的好处就是投资小,而且把计算任务都放在了 RPi 上,算是物尽其用。

>实际上是串口读入字符串,再转换为int型数据。
[C++] 纯文本查看 复制代码代码001002003004005006007008009while(Serialavailable() > 0) { intinChar = Serialread(); if(isDigit(inChar)) {inString += (char)inChar;}i=inStringtoInt();}}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10570970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存