QEC-M-043T 向 MySQL (MariaDB) 伺服器發送數據

QEC-M-043T 向 MySQL (MariaDB) 伺服器發送數據

本教程使用 QEC-M-043T,其中包括創建控制 MySQL 連接的切換按鈕,並通過 UI 界面的切換按鈕將簡單數據發送到 MariaDB 數據庫。這個項目是一個簡單的數據收集和傳輸過程。

先決條件

您必須已配置伺服器、數據庫和伺服器端的程式語言來處理簡單數據類型。在本教程中,我們配置了一台 Debian 9 電腦來運行 MariaDB 服務器。

參考: https://www.digitalocean.com/community/tutorials/how-to-install-the-latest-mysql-on-debian-9

目標

在本教程中,我們將實現以下目標:

  • 數據庫配置
  • 導入相關庫(Ethernet、MySQL 和 LVGL)
  • 乙太網路設置步驟
  • MySQL (MariaDB) 連接
  • LVGL UI 界面

所需的硬件和軟件


本教程將重點介紹從使用者界面獲取數據,並傳送到數據庫,然後在本地機器上顯示數據。

數據庫配置:

對於這個項目,我創建了一個名為“test”的數據庫,並在該數據庫中創建了一個名為“acen”的表。我們要在這個數據庫中記錄三件事:姓名、年齡和班級名稱。所以,我們需要我命名的三個字段:name、age 和 class_name。這是 Debian 9 在文本模式下的樣子:

您可以使用下面的腳本為 MariaDB 創建數據庫“test”和表“acen”。

/* Create Database */
CREATE DATABASE test;
/* Create Table */
CREATE TABLE acen ( 
name varchar(30),
age int(11),
class_name varchar(30)
);

開始從 QEC-M-043T 向 MySQL (MariaDB) Server 發送數據

首先使用 USB 轉 Micro USB 電纜將 QEC-M-043T 連線至個人電腦,並開啟 86Duino IDE 500。如果這是您第一次運行 86Duino sketch,我們建議您在繼續之前查看如何為86Duino設置QEC-M-043T

mysqlConnectionUseGlan_mp3

步驟 1. 檢查設備是否連接正確

QEC-M-043T 和 EB-SQL 需要加入同一個網絡。

注意:QEC-M-043T 上的 Giga Lan 帶有藍色連接器。

qec-m-043t(back1)

步驟 2. 打開 86Duino IDE。

86Duino IDE可以從官網下載。 (https://www.qec.tw/software/)

步驟 3. 將下面給出的代碼複製到編輯器中。

// Import the Related Libraries
#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#include "lvgl86.h"

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC Address

IPAddress server_addr(192,168,2,130);  // IP of the MySQL *server* here
char user[] = "root";              // MySQL user login username
char password[] = "roboard";        // MySQL user login password

// Sample query
char INSERT_SQL[] = "INSERT INTO test.acen (name, age, class_name) values ('acen', 34, '405')";

EthernetClient client; // Ethernet Client
unsigned long t = 0;
MySQL_Connection conn((Client *)&client); // MySQL Connection

static void event_handler1(lv_obj_t * obj, lv_event_t event)
{
    if(event == LV_EVENT_VALUE_CHANGED) {
        Serial.println("Recording data.");
        MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
        cur_mem->execute(INSERT_SQL);
        delete cur_mem;
    }
}

lv_obj_t *sw2;
int sw_state = 0; // 0: OFF, 1: ON
static void event_handler2(lv_obj_t * obj, lv_event_t event)
{
    if(event == LV_EVENT_VALUE_CHANGED) {
        if (lv_switch_get_state(obj)) {
          if (conn.connect(server_addr, 3306, user, password)) {
            Serial.println("SQL Connection Success.");
            delay(1000);
            sw_state = 1;
          } else
            Serial.println("Connection failed.");
        } else {
          Serial.println("SQL Close.");
          conn.close();
          sw_state = 0;
        }
    }
}

void setup() {
  Serial.begin(115200);
  while (!Serial); // wait for serial port to connect
  lv86_init();
  
  Ethernet.begin();
  Serial.println("Connecting...");
  if (conn.connect(server_addr, 3306, user, password)) {
    delay(1000);
  }
  else
    Serial.println("Connection failed.");
  t = millis();

  lv_obj_t *sw1 = lv_switch_create(lv_scr_act(), NULL); // This switch is for insert data
  lv_obj_align(sw1, NULL, LV_ALIGN_CENTER, 0, -30);
  lv_obj_set_event_cb(sw1, event_handler1);

  sw2 = lv_switch_create(lv_scr_act(), NULL); // This switch is for the Database Connection status
  lv_obj_align(sw2, NULL, LV_ALIGN_CENTER, 0, 30);
  lv_obj_set_event_cb(sw2, event_handler2);
}


void loop() {
  conn.handleData();
  lv_task_handler();
  if (sw_state == 1 && !conn.connected()) {lv_switch_off(sw2, LV_ANIM_OFF); sw_state = 0;} // Auto judge the connection, close switch if disconnected
  if (sw_state == 0 && conn.connected())  {lv_switch_on(sw2, LV_ANIM_OFF);  sw_state = 1;} // Auto judge the connection, open switch if connected
}

步驟 4. 驗證信息是否不同

我們需要有正確的 IP 地址、MySQL (MariaDB) 帳戶、以太網連接等才能與數據庫連接。請仔細檢查有關您的腳本的所有信息。

/*
  1.	MAC Address
  2.	Server IP Address
  3.	MySQL (MariaDB) account (username and password)
  4.	MySQL command
*/
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC Address

IPAddress server_addr(192,168,2,130);  // IP of the MySQL *server* here
char user[] = "root";              // MySQL user login username
char password[] = "roboard";        // MySQL user login password

// Sample query
char INSERT_SQL[] = "INSERT INTO test.acen (name, age, class_name) values ('acen', 34, '405')";

EthernetClient client; // Ethernet Client
unsigned long t = 0;
MySQL_Connection conn((Client *)&client); // MySQL Connection

步驟 5. 上傳您的草圖!

點擊上傳按鈕旁邊的右箭頭按鈕(上傳)。代碼上傳後,您應該會在用戶界面上看到兩個開關。

  • 頂部的開關是數據插入按鈕,打開開關後QEC-M-043T將傳輸數據。
  • 底部的開關是 MySQL 連接,打開 QEC-M-043T 後您會看到它打開。

我們可以使用 SQL 語言通過 EB-SQL 來檢查數據。

SELECT * FROM test.acen;
數據確認

恭喜

如果您可以在您的數據庫中找到數據,這意味著您已經使用 QEC-M-043T 成功地將您的第一個數據收集到了數據庫中。

請繼續關注 QEC 的更多項目!

如果您有任何問題/問題,請隨時發表評論!


86Duino 參考的文本是根據 Creative Commons Attribution-ShareAlike 3.0 License,部分文本是從 the Arduino reference 修改的。 參考中的代碼示例已發佈到公共領域。

發表評論

上部へスクロール