Round Display with Xiao Nrf52840 Sense ,TFT_eSPI , LVL Example

I received the Round Display and out of the box the Examples Do not work completely… Go figure?
Battery Level doesn’t read just displays the label.
Slider works, but is Touchy…
SD-card(TFcard) On screen switch is just an indicator.
IMO, looks like they spent a solid 3 minutes or 5th graders were off that day. On testing examples.
Here’s what does for me YMMV.
Get the libs needed, Do the cut and paste, then the comment out , the uncomment in select file etc.

Be sure to Choose the NON mbed Chip “Xiao Nrf52840 Sense” and USB port “EVERY TIME” in IDE 2.0X

HTH
GL :slight_smile: PJ

#include <Arduino.h>
#include <LSM6DS3.h>
#include <Wire.h>
#include <lvgl.h>
// uncomment a library for display driver
#define USE_TFT_ESPI_LIBRARY
// #define USE_ARDUINO_GFX_LIBRARY

#include "lv_xiao_round_screen.h"
#include "lv_hardware_test.h"

void setup()
{
  
 lv_init();
 lv_xiao_disp_init();
 lv_xiao_touch_init();
 
 Serial.begin(9600);
  delay(2000);                       //relax...Get Ready for serial port
  Serial.println("Test program" __FILE__ "compiled on " __DATE__ " at " __TIME__);
  Serial.println();
  Serial.println( "XIAO round screen - LVGL_Arduino" );
  delay(2000);   
     
  lv_hardware_test();
}

void loop()
{
    lv_timer_handler();  //let the GUI do its work 
    delay( 5 );
}

Using library Seeed Arduino LSM6DS3 at version 2.0.3 in folder: C:\Users\Value Pawn\Documents\Arduino\libraries\Seeed_Arduino_LSM6DS3 
Using library Wire at version 1.0 in folder: C:\Users\Value Pawn\AppData\Local\Arduino15\packages\Seeeduino\hardware\nrf52\1.1.1\libraries\Wire 
Using library lvgl at version 8.3.7 in folder: C:\Users\Value Pawn\Documents\Arduino\libraries\lvgl 
Using library Seeed Arduino Round display at version 1.0.0 in folder: C:\Users\Value Pawn\Documents\Arduino\libraries\Seeed_Arduino_Round_display 
Using library SPI at version 1.0 in folder: C:\Users\Value Pawn\AppData\Local\Arduino15\packages\Seeeduino\hardware\nrf52\1.1.1\libraries\SPI 
Using library TFT_eSPI at version 2.5.23 in folder: C:\Users\Value Pawn\Documents\Arduino\libraries\TFT_eSPI 
Using library SD at version 1.2.4 in folder: C:\Users\Value Pawn\AppData\Local\Arduino15\libraries\SD 
Using library I2C BM8563 RTC at version 1.0.4 in folder: C:\Users\Value Pawn\Documents\Arduino\libraries\I2C_BM8563_RTC 
Using library Adafruit TinyUSB Library at version 1.7.0 in folder: C:\Users\Value Pawn\AppData\Local\Arduino15\packages\Seeeduino\hardware\nrf52\1.1.1\libraries\Adafruit_TinyUSB_Arduino 
"C:\\Users\\Value Pawn\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\tools\\arm-none-eabi-gcc\\9-2019q4/bin/arm-none-eabi-size" -A "C:\\Users\\Value Pawn\\AppData\\Local\\Temp\\arduino\\sketches\\6DC0D7935EF980F89A0D4B23A1B8BA04/HardwareTest.ino.elf"
Sketch uses 290236 bytes (35%) of program storage space. Maximum is 811008 bytes.
Global variables use 63932 bytes (26%) of dynamic memory, leaving 173636 bytes for local variables. Maximum is 237568 bytes.
Performing 1200-bps touch reset on serial port COM11
Waiting for upload port...
Upload port found on COM10
"C:\Users\Value Pawn\AppData\Local\Arduino15\packages\Seeeduino\hardware\nrf52\1.1.1/tools/adafruit-nrfutil/win32/adafruit-nrfutil.exe" --verbose dfu serial -pkg "C:\Users\Value Pawn\AppData\Local\Temp\arduino\sketches\6DC0D7935EF980F89A0D4B23A1B8BA04/HardwareTest.ino.zip" -p COM10 -b 115200 --singlebank
Upgrading target on COM10 with DFU package C:\Users\Value Pawn\AppData\Local\Temp\arduino\sketches\6DC0D7935EF980F89A0D4B23A1B8BA04\HardwareTest.ino.zip. Flow control is disabled, Single bank, Touch disabled
Opened serial port COM10
Starting DFU upgrade of type 4, SoftDevice size: 0, bootloader size: 0, application size: 290244
Sending DFU start packet
Sending DFU init packet
Sending firmware file
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
#######
Activating new firmware

DFU upgrade took 18.999632835388184s
Device programmed.

The display switch does not need to be “ON” to upload successfully…LOL (don’t ask how I know) :stuck_out_tongue_closed_eyes:
Display power switch does NOT reset the Xiao. (you have to press the tiny button)
I only needed to put it in “boot-loader” mode initially for the first Upload, all subsequent uploads worked straight away with it being detected correctly and board and port set each time.




The Display is Nice the Touch is OK, It’s way to “PHAT” IMO. “THICK” with the added battery.
thay should have gone more in this direction.
https://www.instagram.com/pauls_3d_things/
I have two of theses and they are sweet the round and thin watch only (no-GPS)

Looks like ttgo is also getting in on the round bandwagon…
https://www.cnx-software.com/2023/06/10/t-rgb-esp32-s3-board-gets-larger-2-8-inch-round-color-display/

:sunglasses: :v:

Be sure to Choose the NON mbed Chip “Xiao Nrf52840 Sense” and USB port “EVERY TIME” in IDE 2.0X

Thanx so much. This saved me a lot of time. Didn’t realize that the IDE managed to switch back to the not-Sense version and all compilation failed when I tried the TFT_eSPI_Clock sample.

So, i went and Grabbed a Xiao Esp32C3 took some uninstall of tbe TFT_Espi in the brds file ,and include Zip lib of the git hub one.
Works ok. with “TFT_eSPIClock.ino” example
But time is off , by some hours, the RTC and NTP server time are correct.
Go figure.:sweat_smile::ok_hand:



Here is whats working.

#include <Arduino.h>
#include <TFT_eSPI.h>
#include <SPI.h>
#include <Wire.h>
#include "time.h"    //
#include "RTClib.h"  // 

#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)
#include "esp_wifi.h"
#include "WiFi.h"

#include "esp_wps.h"  //

const char *ntpServer = "time.cloudflare.com";
const char *ssid     = "GlassSurf-2.4";
const char *password = "SEEDSTUDIO :-p "; // edited for security and LOL's
#endif

#include "I2C_BM8563.h"
#include "NotoSansBold15.h"
#define ESP_MANUFACTURER  "SEEED"
#define ESP_MODEL_NUMBER  "ESP32C3"
#define ESP_MODEL_NAME    "Xiao ESP"

I2C_BM8563 rtc(I2C_BM8563_DEFAULT_ADDRESS, Wire);
I2C_BM8563_TimeTypeDef timeStruct;
I2C_BM8563_DateTypeDef dateStruct;

//I2C_BM8563_TimeTypeDef tStruct;

TFT_eSPI tft = TFT_eSPI();  // Invoke library, pins defined in User_Setup.h
TFT_eSprite face = TFT_eSprite(&tft);

uint32_t chipId = 0;
#define CLOCK_X_POS 10
#define CLOCK_Y_POS 10

#define CLOCK_FG   TFT_SKYBLUE
#define CLOCK_BG   TFT_NAVY
#define SECCOND_FG TFT_RED
#define LABEL_FG   TFT_GOLD

#define CLOCK_R       230.0f / 2.0f // Clock face radius (float type)
#define H_HAND_LENGTH CLOCK_R/2.0f
#define M_HAND_LENGTH CLOCK_R/1.4f
#define S_HAND_LENGTH CLOCK_R/1.3f

#define FACE_W CLOCK_R * 2 + 1
#define FACE_H CLOCK_R * 2 + 1

// Calculate 1 second increment angles. Hours and minute hand angles
// change every second so we see smooth sub-pixel movement
#define SECOND_ANGLE 360.0 / 60.0
#define MINUTE_ANGLE SECOND_ANGLE / 60.0
#define HOUR_ANGLE   MINUTE_ANGLE / 12.0

// Sprite width and height
#define FACE_W CLOCK_R * 2 + 1
#define FACE_H CLOCK_R * 2 + 1

const long  gmtOffset_sec = -18000;  //For UTC -5.00 : -5 * 60 * 60 : -18000
const int   daylightOffset_sec = 3600;

// Time h:m:s
uint8_t h = 0, m = 0, s = 0;

float time_secs = h * 3600 + m * 60 + s;

// Time for next tick
uint32_t targetTime = 0;

// =========================================================================
// Setup
// =========================================================================
void setup() {
  Serial.begin(9600);
  delay(2500);  //relax...Get Ready for serial port
  Serial.println();
  Serial.println();
  Serial.println("Power ON ");  // Let's BEGIN!!
  Serial.println("");
  // Init and get the time
 // configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  //printLocalTime();
  Serial.println("Program " __FILE__ " compiled on " __DATE__ " at " __TIME__ );
  Serial.println();

  // Initialise the screen
  tft.init();

  // Ideally set orientation for good viewing angle range because
  // the anti-aliasing effectiveness varies with screen viewing angle
  // Usually this is when screen ribbon connector is at the bottom
  tft.setRotation(0);
  tft.fillScreen(TFT_BLACK);

  // Create the clock face sprite
  //face.setColorDepth(8); // 8 bit will work, but reduces effectiveness of anti-aliasing
  face.createSprite(FACE_W, FACE_H);

  // Only 1 font used in the sprite, so can remain loaded
  face.loadFont(NotoSansBold15);

  // Draw the whole clock - NTP time not available yet
  renderFace(time_secs);

#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)
  WiFi.begin(ssid, password);
  while ( WiFi.status() != WL_CONNECTED ) 
  {
    delay ( 500 );
    Serial.print ( "." );
  }
  Serial.println("");
  // Init and get the time
  //configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  configTime(8 * 3600, 0, ntpServer);
  struct tm timeInfo;
  if (getLocalTime(&timeInfo)) {
    timeStruct.hours   = timeInfo.tm_hour;
    timeStruct.minutes = timeInfo.tm_min;
    timeStruct.seconds = timeInfo.tm_sec;
    rtc.setTime(&timeStruct);
    //dateStruct.weekDay = timeInfo.tm_wday;
    //dateStruct.month   = timeInfo.tm_mon + 1;
    //dateStruct.date    = timeInfo.tm_mday;
    //dateStruct.year    = timeInfo.tm_year + 1900;
    //rtc.setDate(&dateStruct);
  }
#endif

  Wire.begin();
  rtc.begin();
  syncTime();

  Serial.println();
   for(int i=0; i<17; i=i+8) {
	  chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
	}
	Serial.printf("ESP32 Chip model = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
	Serial.printf("This chip has %d cores\n", ESP.getChipCores());
  Serial.print("Chip ID: "); Serial.println(chipId);
  Serial.println("Connected to :" + String(WiFi.SSID()));
  Serial.print("Got IP: ");
  Serial.println(WiFi.localIP());
  delay (500);
  printLocalTime();
}

// =========================================================================
// Loop
// =========================================================================
void loop() {
  // Update time periodically
  if (targetTime < millis()) {

    // Update next tick time in 100 milliseconds for smooth movement
    targetTime = millis() + 100;

    // Increment time by 100 milliseconds
    time_secs += 0.100;

    // Midnight roll-over
    if (time_secs >= (60 * 60 * 24)) time_secs = 0;

    // All graphics are drawn in sprite to stop flicker
    renderFace(time_secs);

    // syncTime();
  }
}

// =========================================================================
// Draw the clock face in the sprite
// =========================================================================
static void renderFace(float t) {
  float h_angle = t * HOUR_ANGLE;
  float m_angle = t * MINUTE_ANGLE;
  float s_angle = t * SECOND_ANGLE;

  // The face is completely redrawn - this can be done quickly
  face.fillSprite(TFT_BLACK);

  // Draw the face circle
  face.fillSmoothCircle( CLOCK_R, CLOCK_R, CLOCK_R, CLOCK_BG );

  // Set text datum to middle centre and the colour
  face.setTextDatum(MC_DATUM);

  // The background colour will be read during the character rendering
  face.setTextColor(CLOCK_FG, CLOCK_BG);

  // Text offset adjustment
  constexpr uint32_t dialOffset = CLOCK_R - 10;//10

  float xp = 0.0, yp = 0.0; // Use float pixel position for smooth AA motion

  // Draw digits around clock perimeter
  for (uint32_t h = 1; h <= 12; h++) {
    getCoord(CLOCK_R, CLOCK_R, &xp, &yp, dialOffset, h * 360.0 / 12);
    face.drawNumber(h, xp, 2 + yp);
  }

  // Add text (could be digital time...)
  face.setTextColor(LABEL_FG, CLOCK_BG);
  face.drawString("ROLO", CLOCK_R, CLOCK_R * 0.75);

  // Draw minute hand
  getCoord(CLOCK_R, CLOCK_R, &xp, &yp, M_HAND_LENGTH, m_angle);
  face.drawWideLine(CLOCK_R, CLOCK_R, xp, yp, 6.0f, CLOCK_FG);
  face.drawWideLine(CLOCK_R, CLOCK_R, xp, yp, 2.0f, CLOCK_BG);

  // Draw hour hand
  getCoord(CLOCK_R, CLOCK_R, &xp, &yp, H_HAND_LENGTH, h_angle);
  face.drawWideLine(CLOCK_R, CLOCK_R, xp, yp, 6.0f, CLOCK_FG);
  face.drawWideLine(CLOCK_R, CLOCK_R, xp, yp, 2.0f, CLOCK_BG);

  // Draw the central pivot circle
  face.fillSmoothCircle(CLOCK_R, CLOCK_R, 4, CLOCK_FG);

  // Draw Second hand
  getCoord(CLOCK_R, CLOCK_R, &xp, &yp, S_HAND_LENGTH, s_angle);
  face.drawWedgeLine(CLOCK_R, CLOCK_R, xp, yp, 2.5, 1.0, SECCOND_FG);
  face.pushSprite(5, 5, TFT_TRANSPARENT);
}

// =========================================================================
// Get coordinates of end of a line, pivot at x,y, length r, angle a
// =========================================================================
// Coordinates are returned to caller via the xp and yp pointers
#define DEG2RAD 0.0174532925
void getCoord(int16_t x, int16_t y, float *xp, float *yp, int16_t r, float a)
{
  float sx1 = cos( (a - 90) * DEG2RAD);
  float sy1 = sin( (a - 90) * DEG2RAD);
  *xp =  sx1 * r + x;
  *yp =  sy1 * r + y;
}

void syncTime(void){
  targetTime = millis() + 100;
 rtc.getTime(&timeStruct);
  time_secs = timeStruct.hours * 3600 + timeStruct.minutes * 60 + timeStruct.seconds;
  //rtc.getTime(&tStruct);
   // char rtc_time[10];
   // sprintf(rtc_time, "%d:%d:%d", tStruct.hours, tStruct.minutes, tStruct.seconds);
    //Serial.println(rtc_time);

}
void printLocalTime(){
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
    return;
  }
  Serial.println("");
  Serial.println(&timeinfo, "%H:%M:%S");  //"%A, %B %d %Y %H:%M:%S"%A	returns day of week
/* %B	returns month of year
%d	returns day of month
%Y	returns year
%H	returns hour
%M	returns minutes
%S	returns seconds
*/
}

Hers’s the output

Power ON 

Program D:\Arduino_projects\libraries\Seeed_Arduino_Round_display\examples\TFT_eSPI_Clock\TFT_eSPI_Clock.ino compiled on Sep 15 2023 at 20:46:12

..

ESP32 Chip model = ESP32-C3 Rev 3
This chip has 1 cores
Chip ID: 4170632
Connected to :GlassSurf-2.4
Got IP: 192.168.1.188

08:46:31

HTH
GL :slight_smile:

Hi, great work here!

Could you please confirm a few issues here?

  1. When selecting the mbed-enabled version, did you get this kind of compiler errors? -Compilation could not succed-
In file included from /home/user/Arduino/libraries/TFT_eSPI/TFT_eSPI.cpp:31:0:
/home/user/Arduino/libraries/TFT_eSPI/Processors/TFT_eSPI_RP2040.c: In member function 'void TFT_eSPI::pushBlock(uint16_t, uint32_t)':
/home/user/Arduino/libraries/TFT_eSPI/Processors/TFT_eSPI_RP2040.c:549:29: error: 'SPI_X' was not declared in this scope
  1. Even when selecting the NON-mbed version, did you still get these warnings?
/home/user/Arduino/libraries/Seeed_Arduino_Round_display/src/lv_xiao_round_screen.h:29,
                 from /tmp/.arduinoIDE-unsaved2024518-68689-1udmn7w.0pq6/HardwareTest/HardwareTest.ino:8:
/home/user/Arduino/libraries/TFT_eSPI/TFT_eSPI.h:970:8: warning: #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available! [-Wcpp]
  970 |       #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available!
      |        ^~~~~~~
In file included from /tmp/.arduinoIDE-unsaved2024518-68689-1udmn7w.0pq6/HardwareTest/HardwareTest.ino:9:
/tmp/.arduinoIDE-unsaved2024518-68689-1udmn7w.0pq6/HardwareTest/lv_hardware_test.h:67:42: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
   67 |     lv_label_set_text_fmt(battery_label, "%"LV_PRId32"%", battery_level_percent());
      |                                          ^
/tmp/.arduinoIDE-unsaved2024518-68689-1udmn7w.0pq6/HardwareTest/lv_hardware_test.h:73:41: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
   73 |     lv_label_set_text_fmt(slider_label, "%"LV_PRId32, lv_slider_get_value(slider));
      |                                         ^
In file included from /home/user/Arduino/libraries/TFT_eSPI/TFT_eSPI.cpp:16:
/home/user/Arduino/libraries/TFT_eSPI/TFT_eSPI.h:970:8: warning: #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available! [-Wcpp]
  970 |       #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available!
      |        ^~~~~~~
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp: In member function 'uint8_t SdFile::open(SdFile*, const char*, uint8_t)':
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp:532:15: warning: taking address of packed member of 'directoryEntry' may result in an unaligned pointer value [-Waddress-of-packed-member]
  532 |     dateTime_(&p->creationDate, &p->creationTime);
      |               ^~~~~~~~~~~~~~~~
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp:532:15: warning: taking address of packed member of 'directoryEntry' may result in an unaligned pointer value [-Waddress-of-packed-member]
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp:532:33: warning: taking address of packed member of 'directoryEntry' may result in an unaligned pointer value [-Waddress-of-packed-member]
  532 |     dateTime_(&p->creationDate, &p->creationTime);
      |                                 ^~~~~~~~~~~~~~~~
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp:532:33: warning: taking address of packed member of 'directoryEntry' may result in an unaligned pointer value [-Waddress-of-packed-member]
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp: In member function 'uint8_t SdFile::sync(uint8_t)':
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp:1155:17: warning: taking address of packed member of 'directoryEntry' may result in an unaligned pointer value [-Waddress-of-packed-member]
 1155 |       dateTime_(&d->lastWriteDate, &d->lastWriteTime);
      |                 ^~~~~~~~~~~~~~~~~
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp:1155:17: warning: taking address of packed member of 'directoryEntry' may result in an unaligned pointer value [-Waddress-of-packed-member]
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp:1155:36: warning: taking address of packed member of 'directoryEntry' may result in an unaligned pointer value [-Waddress-of-packed-member]
 1155 |       dateTime_(&d->lastWriteDate, &d->lastWriteTime);
      |                                    ^~~~~~~~~~~~~~~~~
/home/user/.arduino15/libraries/SD/src/utility/SdFile.cpp:1155:36: warning: taking address of packed member of 'directoryEntry' may result in an unaligned pointer value [-Waddress-of-packed-member]

Thanks a lot!

Hi there,
Looks to me to be the wrong device and unedited <TFT_eSPI.h>
check out the round display wiki for correct LIBRARY and the edits needed for touch screen etc.
Why is it an RP2040 ?
HTH
GL :slight_smile: PJ
:v:

Not the issue, actually. I followed the Wiki (a fella did too) and we got the same errors (when mbed-enabled) and warnings (non-mbed) when trying to compile… That’s why I wanted to ask whether you got sth similar.

I mean, the non-mbed version works, but right now if you use this non-mbed version one cannot use NFC functionality out of the box (I’m still trying to make it work, it should be doable…)

Thanks!

I know that mbed is a serious deal breaker on code… and i dont know what it is… i would definatly sudgest picking up a few other XIAO modules for testing because sometimes you jus run onto roadblocks on certain hardware… then if you can get it working on one, you know better it is a mbed thing

Sale is still on… load up on some XIAO gear…

Thanks for the suggestion! I mean, the Display works, even for the XIAO BLE - nRF52840, but only when using the non-embed board definition, for which the NFC functionality is not implemented. I want to have both: display and NFC…

Hi there,
I can dig it up and check, and if I recall the need to use the embed BSP its 2.9.0 and the adafruit GFX drivers can’t use the TFT_eSPI. I would take one part at a time. You’ll get there. The NFC stuff is only or mostly NrfSDK from what I know.
The IMU uses the internal I2C bus at address 6A

LSM6DS3 myIMU(I2C_MODE, 0x6A); // IMU

I would try other libraries also.
I will check time permitting and post back my findings
What is the goal here , NFC tag or to config a WIFI ?
HTH
GL :slight_smile: PJ
:v:

hey PJ… how many engineers do they have over in Seeed HQ?

Hi there,
Pretty sure it’s four, but may be addition consultants. and some jr. eggineers :smile: and Techs.
No idea on turn over though.
Pretty sure based on my experience here, NO title’d Software Engineers though. Mainy Hardware or part time software group or responsibilities by the whole team. IDK , there has never been an official introduction or “this is the TEAM at Seeed”
They and WE would definitely benefit if they had a designated Software Engineering Manager and a couple SE tech’s to “clean up, catch up and make current” the Software Ball of Yarn they have ended up with due to so many products that relay on a solid software foundation. Hence they are lacking obvious by the questions posted Daily on the forum. 80-90% are software related.
They make and procure Great hardware… the other NOT so Much. one example is the Slick demo for the RGB bike Light, Still no official Software or wiki… because it feels like to me Software is not a priority. (tisk, Tisk) Software engineers are EXSPENSIVE and good ones are elusive.
They are getting a taste of that I feel, with the whole AI debacle , so many moving parts to it and NO clear Guide with repeatable and customisable solutions. But the watcher is almost out…LOL
Even the fruit people have a dedicated SE dude that generates there LIB’s and releases test code that works but only and craftly with their own custom hardware, so it’s of little use to General Public only DaFruit hardware fanboys. They are protectionist that way ie. Are not Open Source and build a wall for only their hardware use. just use Bootloader as example.

Nothing new here, (soapbox off) moving ON.
GL :slight_smile: PJ :v:

(disclaimer)
The views expressed are my own. All opinions are my own. The opinions expressed here belong solely to me and do not reflect the views of any company official or it’s actions…

… yes I think they really should do an introduction of everyone and what their roll is… I hate to put too much pressure on my contacts… software support is a def overhead… I would also like to know what their hobbies and education market is… I really think the hobby use would upgrade if they put alittle more attention in this area… I would like to see what their core profit areas are…

Hi there,
It’s a LOAD I know. I’m just putting it out there. Not a complaint but more Captain Obvious.
Eric the CEO even stated the Xiao is there most profitable and Highest sales to date.
makes allot of sense being it was how they got noticed. the footprint and bang for the buck was Gigantic “back in the day” that time has WAY passed.
I say do one or two things extremely well and with passion and you’ll always be profitable, even selling trinkets.
GL :slight_smile: PJ :v:

… I hope the dji ban does not effect us… National Defense Authorization Act my A$$…

… but really like the watcher thing… but I am unsure about the ai… that thing is going to need a manual the size of an encyclopedia… I asked about that in the chat and they said don’t worry it will do everything itself… but that sounds very closed

The idea here is being able to use both the Display with touch capabilities and the on-board NFC tag of the nRF52840 (this MCU does not support WiFi).

Thanks!

1 Like

well if microsoft can do it why not them… thats why microsoft bought linux

Hi there,
Yes I know it doesn’t have wifi, :face_with_hand_over_mouth: my point is they use NFC often to provision a WIFI connection without giving Creds in plain text. Was one application they touted, as well as just a TAG, as it does NOT read using the NFC, You do know that I’m sure.
Should be doable, but you’ll need the NRF_SDK to do anything like that. The Arduino’s BSP’s almost give you NO choice but too.
HTH
GL :slight_smile: PJ
:v:

Sure! I wasn’t following you at the moment :wink:

I’m currently playing with the two BSPs available for the nRF52840 boards, let’s see what I manage to get.

Hi there,
I have done it this way. for a locking device as well as BLE device pairing also.
this is the tech involved it’s extremely reliable and requires almost no power with sleep mode being used. I can use a card for access VIA the phones NFC reader.
(insert video) WIP.
Near Field Communication (NFC) tags can be used to configure Wi-Fi so that users can connect to a network without needing to enter a password. This can be useful for allowing guests to connect to Wi-Fi at a home or business without sharing the password.

Here are some steps for using NFC to configure Wi-Fi:

  1. Turn on NFC on your phone
  2. Go to Settings, then Connections, and then Wi-Fi
  3. Long press on the network you want to connect to
  4. Select NFC tag from the menu that appears
  5. Enter the password for the network
  6. Touch your phone to the NFC tag to write the Wi-Fi profile to it
    You can also use an app like NFC Task Launcher to program an NFC tag with your Android device.
    Also works with Google and Alexa.

HTH
GL :slight_smile: PJ
:v: