完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我一直在尝试加快从这个
的日志记录,它是一个集成了 SD 和 ESP8266 的 Arduino Mega,等等。因此,我设法将所有内容从 Mega(板 PLDUINO/Mega2560)记录到 SD 卡中,并尝试通过串行端口发送 mySQL 批处理字符串(ESP8266 通过 Serial2 连接到 Mega),这有点奏效,但是慢慢地。所以我设法用 Mega 上的代码连接到 SD 卡,一旦我加载了旧的 SD 库,版本 1.09。(在此设置中,我无法使用当前的 SD 库 v1.1 及更高版本初始化 SD 卡)。 所以现在我已经将一些代码加载到附加的 ESP8266 卡(板 PLDuino/ESP-02),我的想法是读取记录到 SD 卡的数据并将 DATA INFILE 语句发送到 mySQL 数据库。 从我包含的简短测试代码中看不出来,但我必须将 ESP8266WiFi.h 加载到 ESP8266 板上,以便在没有 php 页面中介的情况下通过 wifi 直接与 mySQL 数据库通信。我无法通过 wifi 直接从 Mega 向数据库发送语句,ESP8266WiFi 库无法在 Mega 板上编译,必须在 ESP8266 板上编译。 尝试使用 SPI 从 ESP8266 板上读取 SD。Mega2560 芯片选择是 53。我对 ESP8266 芯片选择是什么感到困惑,已经尝试了很多,但我想知道问题是我使用了错误的芯片选择还是需要不同的 SD 库。这是我上传到 Mega 的代码: 代码:全选#include #include #include #include HardwareSerial &wifi = Serial2; Sd2Card card; bool card_initialized; void logSD(String dataString){ File dataFile = SD.open("test.txt", FILE_WRITE); if (dataFile) { // dataFile.println(dataString); // dataFile.close(); // print to the serial port too: // Serial.println(dataString); } File myFile = SD.open("test.txt"); if (myFile) { Serial.println("test.txt:"); Serial.flush(); // read from the file until there's nothing else in it: while (myFile.available()) { Serial.write(myFile.read()); } Serial.flush(); // close the file: myFile.close(); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); Serial.flush(); } Serial.println("Mtest done."); delay(5000); } String monitorESP() { String recv = ""; // Initializing ESP module PLDuino::enableESP(); // Reset ESP Serial.println("starting ESP"); digitalWrite(PLDuino::ESP_RST, LOW); delay(500); digitalWrite(PLDuino::ESP_RST, HIGH); delay(500); while (true){ while (!wifi.available()) delay(500); recv = wifi.readString(); Serial.println("test:" + recv); delay(500); } } void setup() { // A convenient macro which prints start-up messages to both LCD and Serial. #define LOG(msg) {Serial.println(msg); } pinMode(38, OUTPUT); digitalWrite(38, HIGH); pinMode(10, OUTPUT); digitalWrite(53, HIGH); // NB: This line is necessary in all sketches which use PLDuino library stuff. PLDuino::init(); // Power-on LCD and set it up PLDuino::enableLCD(); // Setup serials. Serial2 is connected to ESP-02 Wi-Fi module. Serial.begin(115200); Serial2.begin(115200); // We need to initialize SD card at startup! LOG("Initializing SD card...") if (!SD.begin(PLDuino::SD_CS)) LOG("ERROR: Can't initialize SD card!") delay(500); //write something to SD to see if can read from ESP logSD("test SD writes"); digitalWrite(53, LOW); monitorESP(); } void loop() { // put your main code here, to run repeatedly: } 这是 ESP8266 上的代码: 代码:全选#include #include #define FILENAME "test.txt" #define ESP_CS 15 //tried 8, 53, 4, 10 void setup() { // Initializing Serial. Serial.begin(115200); //pinMode(10, OUTPUT); digitalWrite(SS, LOW); digitalWrite(ESP_CS,HIGH); SPI.begin(); //digitalWrite(ESP_SS, LOW); // Initializing SD card. if (!SD.begin(ESP_CS)) { Serial.println("Failed to initialize SD card. Please check it."); return; } else { Serial.println("Initialized!"); } // Trying to create a file { Serial.println("Creating a file..."); // Opening a file for writing... File f = SD.open(FILENAME, FILE_WRITE); if (!f) { // Stop on error Serial.println("Failed to create " FILENAME " file. Stop."); // return; } else{ // Write some data there f.println("Test string"); f.close(); // close when done } } // Trying to read a file { Serial.println("Re-opening the file for reading..."); // Trying to open our file. File f = SD.open(FILENAME, FILE_READ); if (!f) { // Stop on error Serial.println("Failed to open newly created file " FILENAME ". Stop."); return; } Serial.println("File contents: "); // Read out file contents and print them to Serial. while(!f.available()) Serial.write(f.read()); Serial.println(); Serial.println("--end--"); f.close(); // close when done } } void loop() { } 我不断收到: 无法初始化 SD 卡。请检查 我无法使用 Mega2560 代码执行 SD.open,直到我将 SD 库降级到 1.09。不确定如何使用 ESP8266 代码执行此操作,它使用的是特定于硬件的库。 可能偏离主题但相关信息: 我尝试刷新各种 NodeMCU 版本,包括包含 FatFS 和 SPI 的自定义版本,但我什至无法获得挂载 SD0 的 lua 初始化代码,所以也不确定那里有什么问题。挂载 SD 的 lua 代码如下所示: 代码:全选spi.setup(1, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, 8, 8) -- initialize other spi slaves -- then mount the sd -- note: the card initialization process during `file.mount()` will set spi divider temporarily to 200 (400 kHz) -- it's reverted back to the current user setting before `file.mount()` finishes vol = file.mount("/SD0", 8) -- 2nd parameter is optional for non-standard SS/CS pin if not vol then print("retry mounting") vol = file.mount("/SD0", 8) if not vol then error("mount failed") end end file.open("/SD0/path/to/somefile") print(file.read()) file.close() |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
1143 浏览 1 评论
582浏览 6评论
480浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
465浏览 5评论
466浏览 4评论
441浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 18:04 , Processed in 0.903991 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号