OSHWLab
check in
Completed

TD3- Mobile pendant with wireless power supply

PROTD3- Mobile pendant with wireless power supply

tag

147
0
0
0
Mode:Full

License

GPL 3.0

Creation time:2024-11-21 03:12:00Update time:2024-11-21 09:59:20

Description

TD3-TouchDisplay3.0

A small charm based on ESP32-S3R8 and 1.89-inch QSPI screen, the experience is silky, and it also supports wireless charging and magnetic interface charging, onboard clock chip, six-axis gyroscope, pressure sensor, passive buzzer, etc., and supports SDMMC memory card file system.

Early Bilibili introductory video

The overall hardware thickness is less than 15mm, including a 300mah lithium battery, through the AXP173 as the power supply principle, through the path selection to switch the magnetic interface and wireless power supply.
The thickness of the board is 1.2mm.

Wireless power delivery

Using Volta's NU1680 solution, it supports unlimited charging of up to 5W, basically the charging current will not exceed 1A through the charging speed limit of AXP173, and the peripheral components of 1680 have requirements for the material, it is recommended to refer to the manual to select the resistance and capacitance of the corresponding material.

Power management

Using the old scheme AXP173 chip, many students who have copied it say that this piece of custom voltage is too much to buy, and it can be modified into my open source single-cell lithium battery charging and discharging scheme, and you only need to write one more ADC acquisition scheme.

Lithium battery purchase link: [Taobao] 2 minus 2 https://m.tb.cn/h.gPwur8v7pjAurAq?tk=iaC63e7ytO5 for a limited time MF6563 "3.7V polymer lithium battery walkie-talkie, story machine, dash cam speaker, universal large-capacity built-in battery" Click the link to open directly or Taobao search to open directly

Buy 402530!! Buy 402530!! Buy 402530!! Buy something that doesn't fit and can't put it in.

Display screen

It is used in Huaxia Cai's 1.89-inch QSPI screen,The price is a little expensive, and there is no replacement for the current level,The most expensive hardware in the whole project is this screen,The IC of the screen is GC9B71Just this driver is in the IDF routine,Migration is very convenient,At the same time, it is also a routine with touch,The chip is also consistent,I don't want to use the code I provide to develop,You can try to migrate yourself.

Magnetically powered

The reason for choosing magnetic power supply is that it is very convenient to do the base design, and the model of the two components of magnetic power supply has been built, you can ask me if you need it.

 

Development configuration

1. Based on the 'ESP-IDF5.1.2' version, the IDF version may be replaced in the future.

2. 'lvgl' version is '8.3.11', may be upgraded to '9' in the future.

Environment configuration

The pulled code does not contain the '.vscode' folder, you need to open an idf sample project, and then copy the .vscode folder to the root directory of the project, or add it directly by the idf plugin.

Target board configuration

1. Set the current target board:

2. Select the current workspace.
3. Select 'ESP32S3'.
4. Select the 'via ESP-PROG' item.

 

Project file structure description

├─components
│  ├─axp173       // AXP173 Power Management Driver
│  ├─backlight    // AW9364 drive
│  ├─beep         // Buzzer drive
│  ├─bmp280       // BMP280 drive
│  ├─espressif__cmake_utilities
│  ├─espressif__esp_lcd_gc9b71
│  ├─espressif__esp_lcd_touch
│  ├─espressif__esp_lcd_touch_cst816s

│  ├─i2c          // I2C driver

│  ├─lsm6ds3      // LSM6DS3 driver
│  ├─lvgl         // LVGL
│  ├─pcf8563      // PCF8563 Driver
│  └─qmc5883l     // QMC5883L drive
├─docs
├─image
├─main
│   │  CMakeLists.txt
│   │  main.c
│   ├─HAL   // The hardware abstraction layer provides the interface of the hardware
│   ├─Model // The model layer mainly processes data, creates message queues, and creates collection tasks
│   └─View  // The viewmodel layer in the mvvm structure is mainly used to store the generated UI
│  .gitignore
│  CMakeLists.txt
│  partitions.csv
│  README.md
│  sdkconfig
│  sdkconfig.old
│  sdkconfig.temp
 

Flash download tools (bin file burning is not required, please ignore)

1. Separate bin file burning mode

 

   | Bin                  | Address    |
   | -------------------- | ------- |
   | bootloader.bin       | 0x0     |
   | partition-table      | 0x8000  |
   | ota_data_initial.bin | 0xd000  |
   | TD3V2.0.bin          | 0x10000 |
2. The burn-in mode of the merged bin file
   | bin | 地址 |
   | -------------------- | ------- |
   | target.bin | 0x0 |
3. SPIFlashConfiig
   | CI | Option |
   | --------- | ----- |
   | SPI SPEED | 80MHz |
   | SPI MODE | DOUT |

4. Manually shut down and restart after burning.

Introduction to page management framework

This page management framework is ported from the old TD3-App project, the original project is based on the Arduino platform, so it uses C++, but idf is C, although IDF supports C++ mixing but it is too troublesome to change to C, and lose the class and namespace.

How to add a page

1. Create a new page folder in the 'main\View\Pages' directory, which contains xxx.c files and xxx.h files, and xxx is your page name.

The .c file needs to follow the standard template as follows:

#include "Setting.h"

 

PageType *Setting;



static void Created()
{

 

 
}

 

static void Update(void)
{
}

 

static void Destroy(void)
{
  if (lv_obj_is_valid(Setting->PageContent))
  {
    lv_async_call(lv_obj_clean, Setting->PageContent);
  }
}

 

static void Method(void *btn, int event)
{
}

 

void Setting_Init()
{
  Setting = lv_mem_alloc(sizeof(PageType));
  strcpy(Setting->name, "Setting");
  Setting->show_status_bar = 1;
  Setting->BeforeEnter = NULL;
  Setting->Created = Created;
  Setting->Update = Update;
  Setting->Destroy = Destroy;
  Setting->Method = Method;
  Setting->PageContent = create_new_screen();
  Page_Register(*Setting);
}
 

Just replace all the 'Settings' in the file with other names.

.h file is relatively simple, also replace all the settings with your own, and then change the uppercase settings in the conditional compilation.

 
#ifndef SETTING_H
#define SETTING_H

 

#ifdef __cplusplus
extern "C" {
#endif

 

#include "Page.h"



void Setting_Init();



#ifdef __cplusplus
} /*extern "C"*/
#endif

 

#endif

 

Preferably the title is black-modulated text content

1.Battery InformationGyroscope, Barometer, Memory Card, Real-time Clock, System Settings, Network Information, Weather Query, Music, Bluetooth, Buzzer, Configuration, Serial Port Data, Host Computer Monitoring, Connection, Disconnection Terminal.

2.Modify 'main\CMakeLists.txt' to add ''View/Pages/xxx'' where xxx is your page directory name, as for why not write a unified cmake file that needs to follow the IDF project standard, it will not be real-time, yes is "no".

Design Drawing

Download File
The preview image was not generated, please save it again in the editor.

Attachments

OrderFile nameDownload times
1
1679a70535a9eb775573e34a422ad5ad.mp4
10
2
565e4efe1eeff1892c14f7ff6bfda248.mp4
15
3
BOM_ motherboard _Schematic1_2024-05-27.xlsx
13
4
shell.step
34
5
button.step
15
6
SD card contents (Copy the files inside to the SD card root directory).zip
23
7
Gerber.zip
10
8
NU1680_Datasheet_V1.2.pdf
21
Add to Album
0
0
Share
Report

Comment

All Comments(1)
Sort by time|Sort by popularity
Followers0|Likes0
Related projects
Empty

Bottom Navigation