Arduino library for AIS 4G Board

AIS 4G Board Library for Arduino

AIS 4G Board คือบอร์ดพัฒนาที่สามารถเชื่อมต่ออินเตอร์เน็ตผ่าน 4G มาพร้อมกับไมโครคอนโทรลเลอร์ ESP32-WROOM-32 และโมดูลสื่อสาร SIM7600E-H1C รองรับการเชื่อมต่ออุปกรณ์ภายนอกผ่าน GPIO ทั้ง ESP32 และ SIM7600 นอกจากนี้ยังรองรับการเชื่อมต่อแบบ I2C/RS485/SPI/I2S/UART

ไลบรารีสำหรับ AIS 4G Board ใช้กับโปรแกรม Arduino IDE รองรับการเชื่อมต่อ MQTT, HTTP, Azure IoT Hub, Azure IoT Central มาพร้อมคำสั่งอ่านพิกัดจาก GPS (บนโมดูล SIM7600), อ่านค่าอุณหภูมิ/ความชื้นจากเซ็นเซอร์บนบอร์ด, ติดต่อกับอุปกรณ์ภายนอกผ่าน RS485/ModbusRTU, บันทึกและเปิดไฟล์จาก MicroSD Card เป็นต้น


สารบัญ

รู้จัก AIS 4G Board

AIS 4G Board เป็นบอร์ดที่รวมไมโครคอนโทรลเลอร์ ESP32-WROOM-32 (โมดูล WiFi/Bluetooth) เข้ากับ SIM7600E-H1C (โมดูล 4G) รองรับการเชื่อมต่ออินเตอร์เน็ตเพื่อทำงานด้าน IoT ครบทุกรูปแบบการเชื่อมต่อ ทั้งผ่านเครือข่ายโทรศัพท์มือถือ 4G, WiFi และ Bluetooth รองรับการอ่านค่าตำแหน่งปัจจุบันจาก GPS มีเซ็นเซอร์วัดอุณหภูมิและความชื้นบนบอร์ด มีปุ่มโปรแกรมได้อิสระ 1 ปุ่ม มีหลอดแอลอีดีโปรแกรมได้อิสระ 1 ดวง มีช่องเสียบ MicroSD Card มีช่องต่ออุปกรณ์ภายนอกผ่าน RS485, I2C, SPI, UART, I2S AIS Pinout

การเริ่มต้นใช้งาน

  • เสียบสาย USB Type-C เข้ากับ AIS 4G Board ฝั่ง ESP32 ปลายอีกด้านเสียบเข้ากับคอมพิวเตอร์
  • ดาวน์โหลดไดร์เวอร์ FT231X จาก VCP Drivers และติดตั้งตามขั้นตอน Installation Guides
  • ดาวน์โหลดโปรแกรม Arduino IDE V1.xx.xx จาก Software | Arduino แล้วติดตั้งโปรแกรมตามขั้นตอน Install the Arduino Software (IDE) on Windows PCs
  • เปิดโปรแกรม Arduino IDE ขึ้นมา แล้วติดตั้งแพ็กเกจบอร์ด ESP32 เพิ่ม โดยทำตามขั้นตอน Installing - Arduino-ESP32
  • ติดตั้งไลบรารี่ AIS 4G Board ผ่าน Library Manager (อ่านเพิ่มเติม Installing Additional Arduino Libraries)
  • เลือกบอร์ดเป็น ESP32 Dev Module แล้วเลือกพอร์ตเป็น COM port ที่ใช้
  • เปิดโปรแกรมตัวอย่าง Read_IMEI เพื่อทดสอบอ่านหมายเลข IMEI ของโมดูล 4G (ทดสอบการอัพโหลดโปรแกรม-ทดสอบการทำงานของโมดูล 4G)
  • อัพโหลดโปรแกรมลงบอร์ด แล้วเปิด Serial Monitor ขึ้นมา ปรับ baud rate เป็น 115200 จากนั้นให้กดปุ่ม RESET แล้วดูผลลัพธ์ที่ได้ จะต้องแสดงหมายเลข IMEI ออกมา

การส่งข้อมูลขึ้น Azure IoT Central

เตรียมโค้ดโปรแกรม

  • ติดตั้งไลบรารี AIS IoT 4G ตามหัวข้อ การเริ่มต้นใช้งาน
  • ใช้ตัวอย่าง IoT_Central_sample ในการทดสอบส่งข้อมูลอุณหภูมิและความชื้นจากเซ็นเซอร์บนบอร์ด ขึ้น Azure IoT Central

สมัคร Azure และสร้างโปรเจค

  • สมัครสมาชิก https://portal.azure.com/ กดปุ่ม Start free แล้วสมัครสมาชิกพร้อมตั้งค่ารูปแบบการชำระเงินให้เรียบร้อย (ใช้งานครั้งแรกได้เครดิทฟรี $200 เป็นเวลา 7 วัน)
  • เข้าไปที่ https://apps.azureiotcentral.com/myapps กดสร้าง Custom app ตั้งชื้อ พร้อมตั้งค่าการชำระเงินให้เรียบร้อย

สร้าง Device templates

  • เข้าไปที่ Device templates กดปุ่ม New แล้วดูตรง Create a custom device template ให้กดเลือก IoT Device ตั้งชื่อ แล้วดำเนินขั้นตอนจนจบ
  • เข้าไปที่ Device template ที่สร้างขึ้น สร้าง/ตั้งค่า Modal ดังนี้
Display name Name Capability type Semantic type
temperature temperature Telemetry Temperature
humidity humidity Telemetry Relative humidity
light light Command
  • ของ light (ที่เป็น Command) ให้กดเปิดรายละเอียดขึ้นมา แล้ว
    • กดเปิดใช้ Request
    • Display name กำหนดเป็น Level
    • Name กำหนดเป็น level
    • Schema กำหนดเป็น Integer
  • แล้วกดปุ่ม Save ให้เรียบร้อย
  • กดที่เมนู Views แล้วกดเลือก Generate default views
  • ตั้งค่าหน้า Dashboard ย้ายตำแหน่งกราฟ-กล่องข้อความ เปลี่ยนชื่อได้ตามต้องการ แล้วกด Save
  • กด Back กลับมาหน้าจัดการ Device template กดปุ่ม Publish เพื่อให้นำ template ไปใช้ตอนสร้าง Device ได้

สร้าง Device

  • เข้าไปที่เมนู Devices กดปุ่ม New
  • ตั้งชื่ออุปกรณ์ตรง Device name แล้วเลือก Device template เป็นชื่อ template ที่สร้างไว้ก่อนหน้านี้
  • กดปุ่ม Create

แก้โค้ดโปรแกรม

  • ใน Azure ที่หน้าอุปกรณ์ ให้กดปุ่ม Connect ด้านบนมุมซ้าย
  • คัดลอก ID scope, Device ID, Primary key ไปใส่ในโค้ดโปรแกรมตัวอย่าง IoT_Central_sample
  • อัพโหลดโปรแกรมลงบอร์ด

ตรวจสอบผลการทำงาน

  • เปิด Serial Monitor ขึ้นมา ในหน้าต่าง Serial Monitor จะแจ้งสถานะการเชื่อมต่อกับ Azure IoT Central เป็นระยะ ๆ
  • เมื่อเชื่อมต่อสำเร็จ ค่าอุณหภูมิและความชื้นจะส่งขึ้น Azure IoT Central ทุก ๆ 3 วินาที
  • ใน Azure ที่หน้าอุปกรณ์ จะแสดงสถานะอุปกรณ์เป็น Connected ให้กดที่แถบ View เพื่อดูค่าในรูปแบบกราฟ
  • กดดูข้อมูลแบบละเอียดได้ในแถบ Raw data
  • สั่งเปิด-ปิด หลอด LED E15 บนบอร์ดได้โดยกดแถบ Command ตรง Level ให้ใส่ 1 หากต้องการให้ไฟติด และใส่ 0 หากต้องการให้ไฟดับ แล้วกดปุ่ม Run
  • สังเกตว่าใน Serial Monitor จะแสดงผลข้อความแจ้งได้รับ Command ใหม่เข้ามา พร้อมหลอด LED E15 ติด-ดับ ตามคำสั่งที่ส่งเข้ามา

คำสั่งที่มีให้ใช้งาน

#include <GSM.h>

ใช้สั่งงานโมดูล SIM7600 บนบอร์ดเบื้องต้น มีคำสั่งดังนี้

  • GSM.begin() สั่งให้โมดูล SIM7600 เริ่มทำงาน
  • GSM.shutdown() สั่งให้โมดูล SIM7600 หยุดทำงาน
  • GSM.lowPowerMode() สั่งให้โมดูล SIM7600 เข้าโหมดประหยัดพลังงาน (โหมดเครื่องบิน)
  • GSM.noLowPowerMode() สั่งให้โมดูล SIM7600 ออกจากโหมดประหยัดพลังงาน
  • GSM.getIMEI() อ่านหมายเลข IMEI ของโมดูล
  • GSM.getIMSI() อ่านหมายเลข IMSI
  • GSM.pinMode() กำหนดโหมด INPUT/OUTPUT ของขา S3 ถึง S77
  • GSM.digitalWrite() กำหนดเขียนสถานะลอจิก HIGH / LOW ไปที่ขา S3 ถึง S77
  • GSM.digitalRead() อ่านสถานะลอจิก HIGH / LOW จากขา S3 ถึง S77

#include <GSMNetwok.h>

คำสั่งเกี่ยวกับการเชื่อมต่อเครือข่าย 4G มีดังนี้

  • Network.getCurrentCarrier() อ่านชื่อเครือข่ายที่เชื่อมต่ออยู่
  • Network.getSignalStrength() อ่านความแรงของสัญญาณ 4G
  • Network.getDeviceIP() อ่านหมายเลข IP ของอุปกรณ์
  • Network.pingIP() ใช้ Ping ไปที่ Host ใด ๆ เพื่อทดสอบการเชื่อมต่ออินเตอร์เน็ต

#include <GSMClient.h>

(สืบทอดคลาส Client) ใช้เชื่อมต่อ TCP ผ่านเครือข่าย 4G มีคำสั่งดังนี้

  • GSMClient client สร้าง Socket ของ TCP และสร้างออปเจค client
  • client.connect() สั่งเชื่อมต่อไปที่ TCP Server
  • client.connected() ตรวจสอบสถานะการเชื่อมต่อ TCP Server
  • client.write() ส่งข้อมูลไปที่ TCP Server
  • client.available() ตรวจสอบจำนวนข้อมูลที่ TCP Server ส่งมา
  • client.read() อ่านข้อมูลที่ TCP Server ส่งมา
  • client.stop() ตัดการเชื่อมต่อกับ TCP Server

#include <GSMClientSecure.h>

(สืบทอดคลาส Client) ใช้เชื่อมต่อ TCP ผ่าน TLS ผ่านเครือข่าย 4G มีคำสั่งเหมือนกับ GSMClient.h แต่มีคำสั่งเพิ่มขึ้นมาดังนี้

  • client.setInsecure() ปิดการตรวจสอบใบรับรอง (CA) ของ TCP/TLS Server
  • client.setCACert() ตั้งค่าใบรับรองของ TCP/TLS Server

#include <GSMUdp.h>

(สืบทอดคลาส Client) ใช้เชื่อมต่อ UDP ผ่านเครือข่าย 4G มีคำสั่งดังนี้

  • GSMUdp udp จองใช้ Socket และสร้างออปเจค udp
  • udp.begin() เริ่มต้นใช้งาน UDP และกำหนด Local Port
  • udp.beginPacket() สร้าง Data Packet ใหม่ พร้อมสร้างบัฟเฟอร์ใช้เก็บข้อมูลเพื่อส่ง
  • udp.write() เขียนข้อมูลที่ต้องการส่งลงบัฟเฟอร์
  • udp.endPacket() ใช้บอกจบ Packet และส่งข้อมูล UDP ในบัฟเฟอร์ไปยัง Server
  • udp.parsePacket() ตรวจสอบว่ามี Data Packet ใหม่เข้ามาหรือไม่
  • udp.available() ตรวจสอบจำนวนข้อมูลที่ยังไม่ได้อ่าน
  • udp.read() อ่านข้อมูลใน Data Packet
  • udp.stop() ยกเลิกการใช้งาน UDP

#include <GPS.h>

ใช้อ่านค่าพิกัด เวลา ความเร็ว จาก GNSS (GPS) มีคำสั่งดังนี้

  • GPS.begin() เริ่มต้นใช้งาน GNSS
  • GPS.available() ตรวจสอบสถานะการจับสัญญาณ GNSS (จับสัญญาณได้แล้ว/ยังจับสัญญาณไม่ได้)
  • GPS.latitude() อ่านค่าละติจูด
  • GPS.longitude() อ่านค่าลองจิจูด
  • GPS.speed() อ่านค่าความเร็ว
  • GPS.course()
  • GPS.altitude() อ่านค่าความสูง
  • GPS.getTime() อ่านค่าเวลา Timestamp หน่วยวินาที (GMT+0)
  • GPS.standby() ปิดใช้ GNSS
  • GPS.wakeup() เปิดใช้งาน GNSS

#include <Storage.h>

ใช้อ่าน-เขียนไฟล์ใน SIM7600 และใน MicroSD Card

  • Storage.fileWrite() ใช้เขียนไฟล์
  • Storage.fileRead() ใช้อ่านไฟล์

remark: มี 2 ไดร์ให้สามารถอ่านเขียนไฟล์ได้ คือ C: เป็นพื้นที่เก็บข้อมูลภายใน SIM7600 และ D: เป็นพื้นที่ใน MicroSD Card

#include <SHT40.h>

ใช้อ่านค่าเซ็นเซอร์วัดอุณหภูมิและความชื้นบนบอร์ด AIS 4G Board

  • SHT40.begin() เริ่มต้นใช้งานเซ็นเซอร์วัดอุณหภูมิและความชื้น
  • SHT40.readTemperature() อ่านค่าอุณหภูมิในหน่วยองศาเซลเซียส
  • SHT40.readHumidity() อ่านค่าความชื้นในหน่วย %RH

remark: ก่อนเรียกใช้คำสั่ง SHT40.begin() ต้องเรียกใช้ Wire.begin() ก่อนเสมอ

#include <RS485.h>

ใช้รับ-ส่งข้อมูลผ่านช่อง RS485 พร้อมคำสั่งอ่านค่าผ่านโปรโตคอล MODBUS RTU มีคำสั่งพื้นฐาน RS485.begin() RS485.write() RS485.available() RS485.read() เหมือน Serial ปกติ แต่มีคำสั่งเพิ่มขึ้นมาดังนี้

  • RS485.beginTransmission() คำสั่งเริ่มต้นส่งข้อมูลผ่าน RS485 (จองใช้บัส RS485)
  • RS485.endTransmission() คำสั่งจบการส่งข้อมูลผ่าน RS485 (คืนบัส RS485 ให้อุปกรณ์อื่นใช้บัสต่อ)
  • RS485.receive() สั่งเข้าโหมดรับข้อมูล
  • RS485.noReceive() สั่งออกจากโหมดรับข้อมูล (เข้าโหมดส่งข้อมูล)
  • RS485.coilRead() ส่งคำสั่ง Coil Read (Function Code 1) อ่านค่าหน้าสัมผัสจากอุปกรณ์ MODBUS
  • RS485.discreteInputRead() ส่งคำสั่ง Read Discrete Inputs (Function Code 2) อ่านค่าหน้าสัมผัสจากอุปกรณ์ MODBUS
  • RS485.holdingRegisterRead() ส่งคำสั่ง Read Holding Registers (Function Code 3) อ่านค่าจาก Holding Register ในอุปกรณ์ MODBUS
  • RS485.inputRegisterRead() ส่งคำสั่ง Read Input Registers (Function Code 4) อ่านค่าจาก Input Register ในอุปกรณ์ MODBUS
  • RS485.coilWrite() ส่งคำสั่ง Coil Write (Function Code 5) สั่งให้รีเลย์/หน้าสัมผัส ของอุปกรณ์ MODBUS เปิด-ปิด

remark: ก่อนส่งข้อมูลด้วย RS485.write() RS485.print() RS485.println() ต้องเรียกใช้คำสั่ง RS485.beginTransmission() ก่อนเสมอ และเมื่อส่งข้อมูลครบแล้ว ต้องเรียกใช้คำสั่ง RS485.endTransmission() ด้วย

#include <AzureIoTHub.h>

ใช้เชื่อมต่อ รับ-ส่งข้อมูลกับ Azure IoT Hub

  • AzureIoTHub iot; เริ่มต้นใช้งานไลบรารี Azure IoT Hub สร้างออปเจค iot
  • iot.configs() ตั้งค่าการเชื่อมต่อ Azure IoT Hub
  • iot.connect() สั่งให้เชื่อมต่อไปที่ Azure IoT Hub
  • iot.isConnected() ตรวจสอบการเชื่อมต่อกับ Azure IoT Hub
  • iot.setTelemetryValue() กำหนดค่าให้ Telemetry ที่ต้องการส่งขึ้น Azure IoT Hub
  • iot.sendMessage() ส่ง Telemetry ขึ้น Azure IoT Hub
  • iot.addCommandHandle() ใช้เพิ่มฟังก์ชั่นรับข้อมูลจาก Command ที่ส่งมาจาก Azure IoT Hub
  • iot.loop()

remark: คำสั่ง iot.loop() จำเป็นต้องถูกเรียกใช้ให้บ่อยที่สุดเท่าที่เป็นไปได้ หากเรียกใช้งานไม่บ่อย จะไม่สามารถรับข้อมูล (Command) จาก Azure IoT Hub ได้ และจะถูกตัดการเชื่อมต่อจาก Azure IoT Hub เป็นระยะ ๆ

#include <AzureIoTCentral.h>

ใช้เชื่อมต่อ รับ-ส่งข้อมูลกับ Azure IoT Central มีคำสั่งเหมือนกับ AzureIoTHub.h ทุกประการ ยกเว้นตอนสร้างออปเจค ให้สร้างโดยใช้คำสั่ง AzureIoTCentral iot; แทน

ศึกษาเพิ่มเติม

ข้อมูลเพิ่มเติมที่จะช่วยให้เริ่มต้นใช้งาน AIS IoT 4G board ได้ง่ายขึ้น

เอกสารการใช้งาน

ไลบรารีนี้พัฒนาขึ้นโดยยึดมาตรฐานชื่อคำสั่งที่ Arduino กำหนดไว้ ให้ใช้เอกสารบนเว็บ Arduino ในการอ้างอิงได้เลย

ตัวอย่างโค้ดโปรแกรม

โค้ดโปรแกรมตัวอย่างอยู่ในโฟลเดอร์ examples แยกตามหมวดหมู่ ดังนี้

  • GPS
    • Location - อ่านพิกัดจาก GNSS แสดงผลบน Serial Monitor
    • UnixTime - อ่านค่าเวลา่ Unix (Timestamp) แสดงผลบน Serial Monitor
    • LocalTime - อ่านค่าเวลาประเทศไทย แสดงผลบน Serial Monitor
  • Storage
  • GSM
    • Read_IMEI - อ่านหมายเลข IMEI แสดงผลบน Serial Monitor
    • Read_IMSI - อ่านหมายเลข IMSI แสดงผลบน Serial Monitor
    • Read_ICCID - อ่านหมายเลข ICCID ของ eSIM แสดงผลบน Serial Monitor
    • LowPowerMode - ตัวอย่างการสั่งให้ SIM7600 เข้าโหมดประหยัดพลังงาน
    • digitalWrite_Sx_pin สั่งให้สถานะลอจิกขา S3 เป็น HIGH/LOW ทุก ๆ 500 วินาที (โปรแกรมไฟกระพริบ)
    • digitalRead_Sx_pin อ่านสถานะลอจิกขา S77 แสดงผลบน Serial Monitor
  • Network
  • TCP
    • GSMClient - ตัวอย่างการรับ-ส่งข้อมูลผ่าน TCP
    • GSMClientSecure - ตัวอย่างการรับ-ส่งข้อมูลผ่าน TCP/TLS
  • UDP
    • GSMUdpNtpClient - อ่านค่าเวลาจากอินเตอร์เน็ตด้วยโปรโตคอล NTP
  • MQTT - ตัวอย่างในโฟลเดอร์นี้ดัดแปลงมาจาก PubSubClient ศึกษารายละเอียดเพิ่มเติมได้ในลิ้งต้นฉบับ
    • mqtt_basic - ตัวอย่างการเชื่อมต่อ MQTT อย่างง่าย ส่งข้อมูลเข้า Topic outTopic และ Subscribe Topic inTopic
    • mqtt_auth - ตัวอย่างการเชื่อมต่อ MQTT แบบต้องใช้ Username และ Password
    • mqtt_publish_in_callback - ตัวอย่างการส่งข้อมูลเข้า Topic outTopic ในฟังก์ชั่น Callback
  • Sensor
    • SHT40_Read - อ่านอุณหภูมิและความชื้นจากเซ็นเซอร์บนบอร์ด แสดงผลบน Serial Monitor
  • OTA
    • OTA_via_HTTP_over_4G - อัพเดทเฟิร์มแวร์ผ่าน HTTP ด้วยเครือข่าย 4G (โค้ดโปรแกรมส่วนใหญ่ดัดแปลงมาจากตัวอย่าง AWS_S3_OTA_Update)
  • RS485
    • RS485_Slave_Echo - ตัวอย่างการรับข้อมูลจาก RS485 Master แล้วตอบข้อมูลได้ที่รับมากลับไป
    • SDM120CT_Read - ตัวอย่างการอ่านค่าแรงดันไฟฟ้า กระแสไฟฟ้า พลังงานไฟฟ้า จาก Power Meter รุ่น SDM120CT ด้วย RS485 ผ่านโปรโตคอล MODBUS RTU
    • XY_MD02_Read - ตัวอย่างการอ่านค่าอุณหภูมิและความชื้นจากเซ็นเซอร์รุ่น XY-MD02 ด้วย RS485 ผ่านโปรโตคอล MODBUS RTU
    • PZEM_016_Read - ตัวอย่างการอ่านค่าแรงดันไฟฟ้า กระแสไฟฟ้า พลังงานไฟฟ้า จาก Power Meter รุ่น PZEM-016
    • PZEM_016_to_IoT_Central - ตัวอย่างการอ่านค่าแรงดันไฟฟ้า กระแสไฟฟ้า พลังงานไฟฟ้า จาก Power Meter รุ่น PZEM-016 ส่งค่าขึ้น Azure IoT Central
  • HTTP ตัวอย่างการรับ-ส่งข้อมูลผ่าน HTTP จำเป็นต้องติดตั้งไลบรารี ArduinoHttpClient เพิ่มเติม
    • HTTP_SimpleGet - ตัวอย่างการรับ-ส่งข้อมูลผ่าน HTTP ด้วย Method GET
    • HTTPS_SimpleGet - ตัวอย่างการรับ-ส่งข้อมูลผ่าน HTTPS ด้วย Method POST
    • HTTPS_SimplePost - ตัวอย่างการรับ-ส่งข้อมูลผ่าน HTTPS ด้วย Method POST
  • Azure IoT
    • 4G
      • IoT_Hub_sample - ตัวอย่างการอ่านค่าอุณหภูมิและความชื้นส่งค่าขึ้น Azure IoT Hub ผ่าน 4G (SIM7600)
      • IoT_Central_sample - ตัวอย่างการอ่านค่าอุณหภูมิและความชื้นส่งค่าขึ้น Azure IoT Central ผ่าน 4G (SIM7600)
    • WiFi
      • IoT_Hub_sample - ตัวอย่างการอ่านค่าอุณหภูมิและความชื้นส่งค่าขึ้น Azure IoT Hub ผ่าน WiFi (ESP32)
      • IoT_Central_sample - ตัวอย่างการอ่านค่าอุณหภูมิและความชื้นส่งค่าขึ้น Azure IoT Central ผ่าน WiFi (ESP32)

ไลบรารีแนะนำให้ใช้งานร่วมกัน

Comments
  • AIS 4G esp32 error

    AIS 4G esp32 error"collect2.exe: error:"

    Hi, I compile file "example>AIS_4G_board>azutre_IoT>4G>IOT_Central_sample" But Arduino IDE show compile error as below. Could you help fix error. Thank you

    Arduino: 1.8.7 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None"

    WARNING: Category '' in library ESP RainMaker is not valid. Setting to 'Uncategorized' WARNING: Category '' in library WiFiProv is not valid. Setting to 'Uncategorized' WARNING: Category 'Cellular Communication' in library Magellan_SIM7020E is not valid. Setting to 'Uncategorized' WARNING: Category 'Cellular Communication' in library Magellan_SIM7020E is not valid. Setting to 'Uncategorized' Invalid library found in C:\Users\tin\Documents\Arduino\libraries\Arduino-master: no headers files (.h) found in C:\Users\tin\Documents\Arduino\libraries\Arduino-master Invalid library found in C:\Users\tin\Documents\Arduino\libraries\Grbl_Pen_Servo-master: no headers files (.h) found in C:\Users\tin\Documents\Arduino\libraries\Grbl_Pen_Servo-master Invalid library found in C:\Users\tin\Documents\Arduino\libraries\NB-IoT-SIM700-MQTT-main: no headers files (.h) found in C:\Users\tin\Documents\Arduino\libraries\NB-IoT-SIM700-MQTT-main C:\Users\tin\Documents\Arduino\libraries\AIS_4G_board\src\gsm_ssl_client.cpp:19:4: warning: #warning "Please configure IDF framework to include mbedTLS -> Enable pre-shared-key ciphersuites and activate at least one cipher" [-Wcpp]

    warning "Please configure IDF framework to include mbedTLS -> Enable pre-shared-key ciphersuites and activate at least one cipher"

    ^~~~~~~
    

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o:(.literal._ZN15GSMClientSecure5writeEPKhj+0x0): undefined reference to `gsm_send_ssl_data(gsm_sslclient_context*, unsigned char const*, unsigned int)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o:(.literal._ZN15GSMClientSecure9availableEv+0x4): undefined reference to `gsm_data_to_read(gsm_sslclient_context*)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o:(.literal._ZN15GSMClientSecure4readEPhj+0x0): undefined reference to `gsm_get_ssl_receive(gsm_sslclient_context*, unsigned char*, int)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o:(.literal._ZN15GSMClientSecure4stopEv+0x0): undefined reference to `gsm_stop_ssl_socket(gsm_sslclient_context*)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o:(.literal._ZN15GSMClientSecureC2Ev+0x8): undefined reference to `gsm_ssl_init(gsm_sslclient_context*)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o:(.literal._ZN15GSMClientSecure7connectEPKcti+0x0): undefined reference to `gsm_start_ssl_client(gsm_sslclient_context*, char const*, unsigned int, int, char const*, char const*, char const*, char const*, char const*, bool)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o: in function `GSMClientSecure::write(unsigned char const*, unsigned int)':

    C:\Users\tin\Documents\Arduino\libraries\AIS_4G_board\src/GSMClientSecure.cpp:97: undefined reference to `gsm_send_ssl_data(gsm_sslclient_context*, unsigned char const*, unsigned int)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o: in function `GSMClientSecure::available()':

    C:\Users\tin\Documents\Arduino\libraries\AIS_4G_board\src/GSMClientSecure.cpp:109: undefined reference to `gsm_data_to_read(gsm_sslclient_context*)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o: in function `GSMClientSecure::read(unsigned char*, unsigned int)':

    C:\Users\tin\Documents\Arduino\libraries\AIS_4G_board\src/GSMClientSecure.cpp:143: undefined reference to `gsm_get_ssl_receive(gsm_sslclient_context*, unsigned char*, int)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o: in function `GSMClientSecure::stop()':

    C:\Users\tin\Documents\Arduino\libraries\AIS_4G_board\src/GSMClientSecure.cpp:183: undefined reference to `gsm_stop_ssl_socket(gsm_sslclient_context*)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o: in function `gsm_sslclient_context::gsm_sslclient_context()':

    C:\Users\tin\Documents\Arduino\libraries\AIS_4G_board\src/gsm_ssl_client.h:17: undefined reference to `gsm_ssl_init(gsm_sslclient_context*)'

    c:/users/tin/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: libraries\AIS_4G_board\GSMClientSecure.cpp.o: in function `GSMClientSecure::connect(char const*, unsigned short, int)':

    C:\Users\tin\Documents\Arduino\libraries\AIS_4G_board\src/GSMClientSecure.cpp:74: undefined reference to `gsm_start_ssl_client(gsm_sslclient_context*, char const*, unsigned int, int, char const*, char const*, char const*, char const*, char const*, bool)'

    collect2.exe: error: ld returned 1 exit status exit status 1 Error compiling for board ESP32 Dev Module.

    This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.

  • fix: update key exchange header checker according to WiFiClientSecure

    fix: update key exchange header checker according to WiFiClientSecure

    GSMClientSecure failed on esp32 new firmware version

    image

    I changed the key exchange header checker according to WiFiClientSecure which makes it work again. https://github.com/espressif/arduino-esp32/blob/99520f66f61d3c88014356ee96e1db89b1931ee4/libraries/WiFiClientSecure/src/ssl_client.cpp#L23-L25

  • Fix firmware update bug

    Fix firmware update bug

    WIP

    • add readBigFile Function that allows the sd card can read data more than 512 Bytes
    • add vector header because new firmware of the esp32 toolchain is required
    • add DEBUG_LOG selector to allow specific DEBUG type, e.g. DEBUG_LEVEL( DEBUG_ERROR | DEBUG_INFO ) That to show only the error and info log.
  • Problem upload certificate and key via AT command

    Problem upload certificate and key via AT command

    Hi, Is there a way to use AT command? I try to upload the certificate and key to SIM7600E module. I connect the cable to female USB-C on 7600 side. When I try to connect via serial, it can't find the port connect to SIM7600.

  • Mqtt Client  subcriber disconnect

    Mqtt Client subcriber disconnect

    Hi guy, I give a problem with subcriber function MQTT. When i reset a board, it only received some message (from client push auto) It still publish a message test. ("hello!") I used code example: mqtt_auth

This Arduino IDE for ArduCAM ESP8266 UNO Board with Integrated ArduCAM Library and Examples
This Arduino IDE for ArduCAM ESP8266 UNO Board with Integrated ArduCAM Library and Examples

ArduCAM_ESP8266_UNO Please use josn board manager script from http://www.arducam.com/downloads/ESP8266_UNO/package_ArduCAM_index.json to download ESP8

Jan 7, 2023
Arduino Arduino library for the CloudStorage server project. The library provides easy access to server-stored values and operations.

Arduino-CloudStorage Arduino/ESP8266 library that allows you to easly store and retreive data from a remote (cloud) storage in a key/value fashion. Cl

Jan 30, 2022
Arduino library for making an IHC in or output module using an Arduino

Introduction This is an Arduino library for making an IHC in or output module using an Arduino. (IHC controller is a home automation controller made b

Mar 26, 2020
ArduinoIoTCloud library is the central element of the firmware enabling certain Arduino boards to connect to the Arduino IoT Cloud

ArduinoIoTCloud What? The ArduinoIoTCloud library is the central element of the firmware enabling certain Arduino boards to connect to the Arduino IoT

Dec 16, 2022
Library for ATMEGA328P-based RFM95 Board for Loraid's LoRaWAN Network

Arduino LoRa.id SDK This repository contains the simple LoRaWAN library originally created by Ideetron B.V. This library is slightly modified and enca

Oct 21, 2021
The Approximate Library is a WiFi Arduino library for building proximate interactions between your Internet of Things and the ESP8266 or ESP32
The Approximate Library is a WiFi Arduino library for building proximate interactions between your Internet of Things and the ESP8266 or ESP32

The Approximate Library The Approximate library is a WiFi Arduino Library for building proximate interactions between your Internet of Things and the

Dec 7, 2022
Arduino library for controlling the MCP2515 in order to receive/transmit CAN frames.
Arduino library for controlling the MCP2515 in order to receive/transmit CAN frames.

107-Arduino-MCP2515 Arduino library for controlling the MCP2515 in order to receive/transmit CAN frames. This library is prepared to interface easily

Nov 16, 2022
Arduino library for interfacing with any GPS, GLONASS, Galileo or GNSS module and interpreting its NMEA messages.
Arduino library for interfacing with any GPS, GLONASS, Galileo or GNSS module and interpreting its NMEA messages.

107-Arduino-NMEA-Parser Arduino library for interfacing with any GPS, GLONASS, Galileo or GNSS module and interpreting its NMEA messages. This library

Jan 1, 2023
Arduino library for providing a convenient C++ interface for accessing UAVCAN.
Arduino library for providing a convenient C++ interface for accessing UAVCAN.

107-Arduino-UAVCAN Arduino library for providing a convenient C++ interface for accessing UAVCAN (v1.0-beta) utilizing libcanard. This library works f

Jan 2, 2023
Arduino web server library.

aWOT Arduino web server library. Documentation 1. Getting started Hello World Basic routing Application generator Serving static files 2. Guide Routin

Jan 4, 2023
Arduino, esp32 and esp8266 library for ABB (ex PowerOne) Aurora Inverter, implement a full methods to retrieve data from the Inverter via RS-485
Arduino, esp32 and esp8266 library for ABB (ex PowerOne) Aurora Inverter, implement a full methods to retrieve data from the Inverter via RS-485

ABB Aurora protocol You can refer the complete documentation on my site ABB Aurora PV inverter library for Arduino, esp8266 and esp32 I create this li

Nov 22, 2022
Arduino library for the MCP2515 CAN Controller

MCP2515 CAN Controller Library for Arduino Compatibility with the ACAN library This library is fully compatible with the Teensy 3.x ACAN library https

Dec 18, 2022
CAN / CANFD Arduino Library for Teensy 4.0

CAN Library for Teensy 4.0 / 4.1 It handles Controller Area Network (CAN) for CAN1, CAN2 and CAN3, and Controller Area Network with Flexible Data (CAN

Dec 9, 2022
Analog Devices Analog Digital Converter AD7173 Arduino library

AD7173-Arduino Analog Devices AD7173 analog digital converter Arduino library Mostly tested setup for this library: 1007 data rate external crystal co

Nov 20, 2022
Arduino library for nRF51822-based Adafruit Bluefruit LE modules

This library is for all nRF51 based Adafruit Bluefruit LE modules that use SPI or UART. Current nRF51 based Bluefruit LE products include: Bluefruit L

Nov 6, 2022
Arduino library for the Adafruit FONA

Adafruit FONA Library This library requires Arduino v1.0.6 or higher This is a library for the Adafruit FONA Cellular GSM Breakouts etc Designed speci

Dec 15, 2022
Arduino library to access Adafruit IO from WiFi, cellular, and ethernet modules.
Arduino library to access Adafruit IO from WiFi, cellular, and ethernet modules.

Adafruit IO Arduino Library This library provides a simple device independent interface for interacting with Adafruit IO using Arduino. It allows you

Dec 23, 2022
Arduino library for MQTT support

Adafruit MQTT Library Arduino library for MQTT support, including access to Adafruit IO. Works with the Adafruit FONA, Arduino Yun, ESP8266 Arduino pl

Jan 6, 2023
Arduino library for SPI and I2C access to the PN532 RFID/Near Field Communication chip

Adafruit-PN532 This is a library for the Adafruit PN532 NFC/RFID breakout boards This library works with the Adafruit NFC breakout https://www.adafrui

Dec 23, 2022