Проблема отображение данных отправленных с Arduino Mega на Arduino Mrk1000 с использованием последовательной связи
Я занимаюсь личным проектом.
Идея более крупного проекта состоит в том, чтобы кормить мою рыбу с помощью робота.
Моя конкретная проблема заключается в том, что я хотел бы видеть некоторые данные от различных датчиков, которые я буду добавлять. Но в данный момент я хочу иметь возможность использовать последовательную связь между моими 2 платами для передачи целого числа с моей Мега-платы на мою плату MKR1000, а затем для моего MKR1000 подключиться к WI-FI, где я могу видеть информацию на телефоне с IP-адреса.
Ниже приведены 2 фрагмента кода, сначала для Мега-платы, где интергеры превращаются в строки, а затем отправляются в Mrk1000.
Фрагмент кода sencond предназначен для MKR1000. Основная цель состоит в том, чтобы получить данные с Мега-платы, а затем воспроизвести их на клиенте (через Wi-Fi).
ДЛЯ МЕГА СОВЕТА ------------------------------------------------------------------------------------------
char str[4];
char str1[4];
char str2[4];
char str3[4];
char str4[4];
void setup() {
Serial.begin(9600);
}
void loop() {
int value= 500; //это было бы гораздо интереснее, если бы это было значение датчика
int value1= 400;
int value2= 300;
int value3= 200;
int value4= 100;
itoa(value, str, 10); //Превратить значение в массив символов
itoa(value1, str1, 10);
itoa(value2, str2, 10);
itoa(value3, str3, 10);
itoa(value4, str4, 10);
Serial.write(str, 4);
delay(10);
Serial.write(str1, 4);
delay(10);
Serial.write(str2, 4);
delay(10);
Serial.write(str3, 4);
delay(10);
Serial.write(str4, 4);
delay(10);
}
ДЛЯ MRK1000 -----------------------------------------------------------------------------------------
#include <SPI.h>
#include <WiFi101.h>
#include <stdio.h>
#include <math.h>
//#include "arduino_secrets.h"
///////пожалуйста, введите ваши конфиденциальные данные на вкладке tab/arduino_secrets.h
char ssid[] = "";//SECRET_SSID; // ваш сетевой SSID (имя)
char pass[] ="";// SECRET_PASS; // ваш сетевой пароль (используйте для WPA или используйте в качестве ключа для WEP)
int keyIndex = 0; // номер индекса вашего сетевого ключа (требуется только для WEP)
char str[4];
char str1[4];
int status = WL_IDLE_STATUS;
WiFiServer server(80);
void setup() {
Serial.begin(9600); // инициализация последовательной связи
pinMode(6, OUTPUT); // установите режим вывода светодиода
Serial1.begin(9600);
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
while (true); // don't continue
}
// attempt to connect to WiFi network:
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to Network named: ");
Serial.println(ssid); // print the network name (SSID);
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
server.begin(); // start the web server on port 80
printWiFiStatus(); // you're connected now, so print out the status
}
int x = 0; int i = 0;
void loop() {
WiFiClient client = server.available(); // listen for incoming clients
if (client) { // if you get a client,
Serial.println("new client"); // print a message out the serial port
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected()) { // loop while the client's connected
if (client.available()) { // if there's bytes to read from the client,
char c = client.read(); // read a byte, then
Serial.write(c); // print it out the serial monitor
if (c == '\n') { // if the byte is a newline character
if (Serial1.available()) {
delay(100); //allows all serial sent to be received together
while(Serial1.available() && i<4) {
str[i++] = Serial1.read();
}
str[i++]='\0';
}
// if the current line is blank, you got two newline characters in a row.
// that's the end of the client HTTP request, so send a response:
if (currentLine.length() == 0) {
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what's coming, then a blank line:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
//strcpy(str, "98993489");
int val = atoi(str);
//Serial.println(str,4);
client.print("str = ");
client.print(x);
client.println();
client.print(x);
client.println("<br>");
// the content of the HTTP response follows the header:
client.print("Click <a href=\"/H\">here</a> turn the LED on pin 9 on<br>");
client.print("Click <a href=\"/L\">here</a> turn the LED on pin 9 off<br>");
// The HTTP response ends with another blank line:
client.println();
// break out of the while loop:
break;
}
else { // if you got a newline, then clear currentLine:
currentLine = "";
}
}
else if (c != '\r') { // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}
// Check to see if the client request was "GET /H" or "GET /L":
if (currentLine.endsWith("GET /H")) {
Serial.println("high");
digitalWrite(9, HIGH); // GET /H turns the LED on
}
if (currentLine.endsWith("GET /L")) {
Serial.println("low");
digitalWrite(9, LOW); // GET /L turns the LED off
}
}
}
// close the connection:
client.stop();
Serial.println("client disonnected");
x++;
}
}
void printWiFiStatus() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
// print where to go in a browser:
Serial.print("To see this page in action, open a browser to http://");
Serial.println(ip);
}
@sam courtney, 👍2
Обсуждение0
- Связь между двумя Arduino/MKR1000
- Плохие данные : Последовательная связь Arduino Mega и NodeMCU
- Убедиться, что плата всегда подключена к одному и тому же порту
- SIM7000E Waveshare ничего не может сделать
- SPI Arduino slave не получает данные правильно
- Прослушивание последовательных портов
- Последовательная связь между Arduino
- Как разделить входящую строку?
И в чем именно заключается ваша проблема? С отображением по Wi-Fi (на веб-сайте, размещенном на MRK?)? Или с помощью последовательной связи?, @chrisl
с попыткой отображения по Wi-Fi., @sam courtney
Ты совершенно неправильно относишься к своей посылке. Вам не нужно ничего конвертировать*. Просто используйте
Serial.println(val1);
и т. Д., Затем прочитайте свой серийный номер до завершения\n
., @Majenko3 МКУ за это? ATmega2560, SAMD21 и ESP32?, @Juraj