1605浏览
楼主: 驴友花雕

[项目] 【Arduino】168种传感器模块系列实验(165)---2.4寸TFT液晶触...

[复制链接]

驴友花雕  高级技匠
 楼主|

发表于 2021-7-8 10:12:57

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百六十五:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏
  项目二十五:显示触摸屏电话面板

实验场景图 52.jpg

回复

使用道具 举报

驴友花雕  高级技匠
 楼主|

发表于 2021-7-8 11:01:03

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百六十五:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏
  项目二十六:显示动态中文——深圳市欢迎您
  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百六十五:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏
  4.   项目二十六:显示动态中文——深圳市欢迎您
  5.   模块直插,引脚用法如下:
  6.   LCD_CS LCD_CD LCD_WR LCD_RD LCD_RST SD_SS SD_DI SD_DO SD_SCK
  7.   Arduino Uno A3 A2 A1 A0 A4 10 11 12 13
  8.   LCD_D0 LCD_D1 LCD_D2 LCD_D3 LCD_D4 LCD_D5 LCD_D6 LCD_D7
  9.   Arduino Uno 8 9 2 3 4 5 6 7
  10. */
  11. #include <LCDWIKI_GUI.h> //Core graphics library
  12. #include <LCDWIKI_KBV.h> //Hardware-specific library
  13. #include "font.h"
  14. //if the IC model is known or the modules is unreadable,you can use this constructed function
  15. LCDWIKI_KBV my_lcd(ILI9341, A3, A2, A1, A0, A4); //model,cs,cd,wr,rd,reset
  16. //if the IC model is not known and the modules is readable,you can use this constructed function
  17. //LCDWIKI_KBV my_lcd(240,320,A3,A2,A1,A0,A4);//width,height,cs,cd,wr,rd,reset
  18. #define  BLACK   0x0000
  19. #define BLUE    0x001F
  20. #define RED     0xF800
  21. #define GREEN   0x07E0
  22. #define CYAN    0x07FF
  23. #define MAGENTA 0xF81F
  24. #define YELLOW  0xFFE0
  25. #define WHITE   0xFFFF
  26. char *aspect_name[] = {"PORTRAIT", "LANDSCAPE", "PORTRAIT_REV", "LANDSCAPE_REV"};
  27. char *color_name[] = { "BLUE", "GREEN", "RED", "WHITE" , "CYAN", "MAGENTA", "YELLOW"};
  28. uint16_t color_mask[] = { 0x001F, 0x07E0, 0xF800, 0xFFFF, 0x07FF, 0xF81F, 0xFFE0 };
  29. void show_16font(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str, uint8_t mode)
  30. {
  31.   uint16_t i, j, k, c_num, color = 0;
  32.   boolean first = true;
  33.   c_num = sizeof(tfont16) / sizeof(typFNT_GB16);
  34.   for (k = 0; k < c_num; k++)
  35.   { //pgm_read_byte
  36.     if ((pgm_read_byte(&tfont16[k].Index[0]) == *str) && (pgm_read_byte(&tfont16[k].Index[1]) == *(str + 1)))
  37.     {
  38.       my_lcd.Set_Addr_Window(x, y, x + 16 - 1, y + 16 - 1);
  39.       for (j = 0; j < 32; j++)
  40.       {
  41.         for (i = 0; i < 8; i++)
  42.         {
  43.           if (mode) //叠加模式
  44.           {
  45.             if (pgm_read_byte(&tfont16[k].Msk[j]) & (0x80 >> i))
  46.             {
  47.               my_lcd.Set_Draw_color(fc);
  48.               my_lcd.Draw_Pixel(x + ((j * 8 + i) % 16), y + ((j * 8 + i) / 16));
  49.             }
  50.             // x++;
  51.             // if((x-x0)==16)
  52.             // {
  53.             //     x = x0;
  54.             //     y++;
  55.             //  }
  56.           }
  57.           else   //非叠加模式
  58.           {
  59.             if (pgm_read_byte(&tfont16[k].Msk[j]) & (0x80 >> i))
  60.             {
  61.               color = fc;
  62.             }
  63.             else
  64.             {
  65.               color = bc;
  66.             }
  67.             my_lcd.Push_Any_Color(&color, 1, first, 0);
  68.             first = false;
  69.           }
  70.         }
  71.       }
  72.     }
  73.   }
  74. }
  75. void show_24font(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str, uint8_t mode)
  76. {
  77.   uint16_t i, j, k, c_num, color;
  78.   boolean first = true;
  79.   c_num = sizeof(tfont24) / sizeof(typFNT_GB24);
  80.   for (k = 0; k < c_num; k++)
  81.   {
  82.     if ((pgm_read_byte(&tfont24[k].Index[0]) == *str) && (pgm_read_byte(&tfont24[k].Index[1]) == *(str + 1)))
  83.     {
  84.       my_lcd.Set_Addr_Window(x, y, x + 24 - 1, y + 24 - 1);
  85.       for (j = 0; j < 72; j++)
  86.       {
  87.         for (i = 0; i < 8; i++)
  88.         {
  89.           if (mode) //叠加模式
  90.           {
  91.             if (pgm_read_byte(&tfont24[k].Msk[j]) & (0x80 >> i))
  92.             {
  93.               my_lcd.Set_Draw_color(fc);
  94.               my_lcd.Draw_Pixel(x + ((j * 8 + i) % 24), y + ((j * 8 + i) / 24));
  95.             }
  96.             //   x++;
  97.             //   if((x-x0)==32)
  98.             //   {
  99.             //      x = x0;
  100.             //      y++;
  101.             //   }
  102.           }
  103.           else   //非叠加模式
  104.           {
  105.             if (pgm_read_byte(&tfont24[k].Msk[j]) & (0x80 >> i))
  106.             {
  107.               color = fc;
  108.             }
  109.             else
  110.             {
  111.               color = bc;
  112.             }
  113.             my_lcd.Push_Any_Color(&color, 1, first, 0);
  114.             first = false;
  115.           }
  116.         }
  117.       }
  118.     }
  119.   }
  120. }
  121. void show_32font(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str, uint8_t mode)
  122. {
  123.   uint16_t i, j, k, c_num, color;
  124.   boolean first = true;
  125.   c_num = sizeof(tfont32) / sizeof(typFNT_GB32);
  126.   for (k = 0; k < c_num; k++)
  127.   {
  128.     if ((pgm_read_byte(&tfont32[k].Index[0]) == *str) && (pgm_read_byte(&tfont32[k].Index[1]) == *(str + 1)))
  129.     {
  130.       my_lcd.Set_Addr_Window(x, y, x + 32 - 1, y + 32 - 1);
  131.       for (j = 0; j < 128; j++)
  132.       {
  133.         for (i = 0; i < 8; i++)
  134.         {
  135.           if (mode) //叠加模式
  136.           {
  137.             if (pgm_read_byte(&tfont32[k].Msk[j]) & (0x80 >> i))
  138.             {
  139.               my_lcd.Set_Draw_color(fc);
  140.               my_lcd.Draw_Pixel(x + ((j * 8 + i) % 32), y + ((j * 8 + i) / 32));
  141.             }
  142.             //  x++;
  143.             //   if((x-x0)==32)
  144.             //  {
  145.             //      x = x0;
  146.             //      y++;
  147.             //  }
  148.           }
  149.           else   //非叠加模式
  150.           {
  151.             if (pgm_read_byte(&tfont32[k].Msk[j]) & (0x80 >> i))
  152.             {
  153.               color = fc;
  154.             }
  155.             else
  156.             {
  157.               color = bc;
  158.             }
  159.             my_lcd.Push_Any_Color(&color, 1, first, 0);
  160.             first = false;
  161.           }
  162.         }
  163.       }
  164.     }
  165.   }
  166. }
  167. void show_chinese(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str, uint16_t csize, uint8_t mode)
  168. {
  169.   int i = 0;
  170.   if (x > (my_lcd.Get_Display_Width() - csize) || y > (my_lcd.Get_Display_Height() - csize))
  171.   {
  172.     return;
  173.   }
  174.   while (*str != '\0')
  175.   {
  176.     //      i += 5;
  177.     //      my_lcd.Draw_Fast_VLine(i, 10, 100);
  178.     if (csize == 32)
  179.     {
  180.       show_32font(x, y, fc, bc, str, mode);
  181.     }
  182.     else if (csize == 24)
  183.     {
  184.       show_24font(x, y, fc, bc, str, mode);
  185.     }
  186.     else
  187.     {
  188.       show_16font(x, y, fc, bc, str, mode);
  189.     }
  190.     str += 3;
  191.     x += csize;
  192.   }
  193. }
  194. void show_chinese_test(void)
  195. {
  196.   uint16_t i;
  197.   my_lcd.Set_Rotation(1);
  198.   show_chinese(0, 10, RED, BLACK, "深圳市欢迎您", 16, 1);
  199.   show_chinese(0, 26, RED, BLACK, "深圳市欢迎您", 24, 1);
  200.   show_chinese(0, 50, RED, BLACK, "深圳市欢迎您", 32, 1);
  201.   show_chinese(0, 82, GREEN, BLACK, "深圳市欢迎您", 16, 1);
  202.   show_chinese(0, 98, GREEN, BLACK, "深圳市欢迎您", 24, 1);
  203.   show_chinese(0, 122, GREEN, BLACK, "深圳市欢迎您", 32, 1);
  204.   show_chinese(0, 154, BLUE, BLACK, "深圳市欢迎您", 16, 1);
  205.   show_chinese(0, 170, BLUE, BLACK, "深圳市欢迎您", 24, 1);
  206.   show_chinese(0, 194, BLUE, BLACK, "深圳市欢迎您", 32, 1);
  207.   for (i = 1; i <= my_lcd.Get_Display_Width(); i++)
  208.   {
  209.     my_lcd.Vert_Scroll(0, my_lcd.Get_Display_Width(), i);
  210.     delay(10);
  211.   }
  212.   delay(2000);
  213.   my_lcd.Fill_Screen(BLACK);
  214.   show_chinese(0, 10, RED, WHITE, "深圳市欢迎您", 16, 0);
  215.   show_chinese(0, 26, RED, WHITE, "深圳市欢迎您", 24, 0);
  216.   show_chinese(0, 50, RED, WHITE, "深圳市欢迎您", 32, 0);
  217.   show_chinese(0, 82, GREEN, WHITE, "深圳市欢迎您", 16, 0);
  218.   show_chinese(0, 98, GREEN, WHITE, "深圳市欢迎您", 24, 0);
  219.   show_chinese(0, 122, GREEN, WHITE, "深圳市欢迎您", 32, 0);
  220.   show_chinese(0, 154, BLUE, WHITE, "深圳市欢迎您", 16, 0);
  221.   show_chinese(0, 170, BLUE, WHITE, "深圳市欢迎您", 24, 0);
  222.   show_chinese(0, 194, BLUE, WHITE, "深圳市欢迎您", 32, 0);
  223.   delay(1000);
  224. }
  225. void show_pic(void)
  226. {
  227.   int i;
  228.   my_lcd.Set_Addr_Window(my_lcd.Get_Display_Width() - 40 - 40, 20, my_lcd.Get_Display_Width() - 40 - 1, 59);
  229.   my_lcd.Push_Any_Color(penguin_pic, 1600, 1, 1);
  230. }
  231. void windowScroll(int16_t x, int16_t y, int16_t wid, int16_t ht, int16_t dx, int16_t dy, uint16_t *buf)
  232. {
  233.   if (dx)
  234.   {
  235.     for (int16_t row = 0; row < ht; row++)
  236.     {
  237.       my_lcd.Read_GRAM(x, y + row, buf, wid, 1);
  238.       my_lcd.Set_Addr_Window(x, y + row, x + wid - 1, y + row);
  239.       my_lcd.Push_Any_Color(buf + dx, wid - dx, 1, 0);
  240.       my_lcd.Push_Any_Color(buf + 0, dx, 0, 0);
  241.     }
  242.   }
  243.   if (dy)
  244.   {
  245.     for (int16_t col = 0; col < wid; col++)
  246.     {
  247.       my_lcd.Read_GRAM(x + col, y, buf, 1, ht);
  248.       my_lcd.Set_Addr_Window(x + col, y, x + col, y + ht - 1);
  249.       my_lcd.Push_Any_Color(buf + dy, ht - dy, 1, 0);
  250.       my_lcd.Push_Any_Color(buf + 0, dy, 0, 0);
  251.     }
  252.   }
  253. }
  254. void show_string(uint8_t *str, int16_t x, int16_t y, uint8_t csize, uint16_t fc, uint16_t bc, boolean mode)
  255. {
  256.   my_lcd.Set_Text_Mode(mode);
  257.   my_lcd.Set_Text_Size(csize);
  258.   my_lcd.Set_Text_colour(fc);
  259.   my_lcd.Set_Text_Back_colour(bc);
  260.   my_lcd.Print_String(str, x, y);
  261. }
  262. void color_test()
  263. {
  264.   int n, i;
  265.   int cnum = sizeof(color_mask) / sizeof(uint16_t);
  266.   for (i = 0; i < cnum; i++)
  267.   {
  268.     for (n = 0; n < 32; n++)
  269.     {
  270.       my_lcd.Set_Draw_color(n * 8, n * 8, n * 8);
  271.       my_lcd.Set_Draw_color(my_lcd.Get_Draw_color()&color_mask[i]);
  272.       my_lcd.Fill_Rectangle(n * my_lcd.Get_Display_Width() / 32, (my_lcd.Get_Display_Height() / cnum)*i, (n + 1)*my_lcd.Get_Display_Width() / 32, (my_lcd.Get_Display_Height() / cnum) * (i + 1));
  273.     }
  274.     show_string(color_name[i], 0, ((my_lcd.Get_Display_Height() / cnum) - 16) / 2 + (my_lcd.Get_Display_Height() / cnum)*i, 2, color_mask[i], BLACK, 1);
  275.   }
  276.   delay(500);
  277. }
  278. void text_test(void)
  279. {
  280.   show_string("Hello World!", 0, 0, 1, RED, BLACK, 0);
  281.   my_lcd.Set_Text_colour(YELLOW);
  282.   my_lcd.Set_Text_Size(2);
  283.   my_lcd.Print_Number_Float(01234.56789, 4, 0, 8, '.', 0, ' ');
  284.   show_string("ABCDEF123456", 0, 24, 3, BLUE, BLACK, 0);
  285.   show_string("Good", 0, 56, 5, GREEN, BLACK, 0);
  286.   show_string("By utilizing breath", 0, 96, 2, GREEN, BLACK, 0);
  287.   show_string("we soften our experiences.", 0, 112, 1, GREEN, BLACK, 0);
  288.   show_string("If we dam them up,", 0, 120, 1, GREEN, BLACK, 0);
  289.   show_string("our lives will stagnate,", 0, 128, 1, GREEN, BLACK, 0);
  290.   show_string("but we keep them flowing,", 0, 136, 1, GREEN, BLACK, 0);
  291.   show_string("we allow more newness", 0, 144, 1, GREEN, BLACK, 0);
  292.   show_string("and greater experiences", 0, 152, 1, GREEN, BLACK, 0);
  293.   show_string("to blossom.Yes OK", 0, 160, 1, GREEN, BLACK, 0);
  294. }
  295. void setup()
  296. {
  297.   Serial.begin(9600);
  298.   my_lcd.Init_LCD();
  299.   Serial.println(my_lcd.Read_ID(), HEX);
  300.   my_lcd.Fill_Screen(BLACK);
  301.   // show_chinese_test();
  302.   // show_pic();
  303. }
  304. void loop()
  305. {
  306.   uint16_t max_scroll, rotation, i, n;
  307.   my_lcd.Set_Rotation(0);
  308.   uint16_t scrollbuf[my_lcd.Get_Display_Height()];
  309.   show_chinese_test();
  310.   delay(250);
  311.   for (rotation = 0; rotation < 4; rotation++)
  312.   {
  313.     my_lcd.Set_Rotation(rotation);
  314.     my_lcd.Fill_Screen(BLACK);
  315.     //text
  316.     color_test();
  317.     my_lcd.Fill_Screen(BLACK);
  318.     delay(500);
  319.     text_test();
  320.     delay(500);
  321.     for (n = 0; n < 32; n++)
  322.     {
  323.       my_lcd.Set_Draw_color(n * 8, n * 8, n * 8);
  324.       my_lcd.Set_Draw_color(my_lcd.Get_Draw_color()&color_mask[rotation]);
  325.       my_lcd.Fill_Rectangle(n * my_lcd.Get_Display_Width() / 32, 48, (n + 1)*my_lcd.Get_Display_Width() / 32, 112);
  326.     }
  327.     show_string("COLOR TESTING", 50, 72, 2, color_mask[rotation + 1], BLACK, 1);
  328.     show_string(aspect_name[rotation], 0, 184, 2, WHITE, BLACK, 0);
  329.     show_pic();
  330.     show_string("VERTICAL SCROLL UP", 0, 168, 2, YELLOW, BLACK, 0);
  331.     if (my_lcd.Get_Rotation() & 1)
  332.     {
  333.       max_scroll = my_lcd.Get_Display_Width();
  334.     }
  335.     else
  336.     {
  337.       max_scroll = my_lcd.Get_Display_Height();
  338.     }
  339.     for (i = 1; i <= max_scroll; i++)
  340.     {
  341.       my_lcd.Vert_Scroll(0, max_scroll, i);
  342.       delay(10);
  343.     }
  344.     my_lcd.Vert_Scroll(0, max_scroll, 0);
  345.     show_string("VERTICAL SCROLL DN", 0, 168, 2, GREEN, BLACK, 0);
  346.     for (i = 1; i <= max_scroll; i++)
  347.     {
  348.       my_lcd.Vert_Scroll(0, max_scroll, 0 - i);
  349.       delay(10);
  350.     }
  351.     delay(500);
  352.     my_lcd.Vert_Scroll(0, max_scroll, 0);
  353.     if (!(rotation & 1))
  354.     {
  355.       show_string("ONLY THE COLOR BAND", 0, 200, 2, BLUE, BLACK, 0);
  356.       for (i = 1; i <= 64; i++)
  357.       {
  358.         my_lcd.Vert_Scroll(48, 64, i);
  359.         delay(20);
  360.       }
  361.       delay(500);
  362.       my_lcd.Vert_Scroll(0, max_scroll, 0);
  363.     }
  364.     show_string("SOFTWARE SCROLL", 0, 216, 2, YELLOW, BLACK, 0);
  365.     for (int16_t i = my_lcd.Get_Display_Width(), dx = 4, dy = 0; i > 0; i -= dx)
  366.     {
  367.       windowScroll(0, 216, my_lcd.Get_Display_Width(), 16, dx, dy, scrollbuf);
  368.     }
  369.     delay(1000);
  370.   }
  371.   my_lcd.Invert_Display(true);
  372.   delay(1000);
  373.   my_lcd.Invert_Display(false);
  374.   my_lcd.Fill_Screen(BLACK);
  375. }
复制代码


回复

使用道具 举报

驴友花雕  高级技匠
 楼主|

发表于 2021-7-8 11:49:09

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百六十五:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏
  项目二十六:显示动态中文——深圳市欢迎您

实验场景图   WeChat_20210708114428 (1).gif

回复

使用道具 举报

驴友花雕  高级技匠
 楼主|

发表于 2021-7-8 11:56:49

本帖最后由 驴友花雕 于 2021-7-8 12:19 编辑

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百六十五:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏
  项目二十六:显示动态中文——深圳市欢迎您


  实验场景图 之二   WeChat_20210708114428 (2).gif
回复

使用道具 举报

驴友花雕  高级技匠
 楼主|

发表于 2021-7-8 17:31:41

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百六十五:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏
  项目二十六:显示动态中文——深圳市欢迎您
  实验视频(1分30秒)

https://v.youku.com/v_show/id_XNTE3OTIxOTY4MA==.html



回复

使用道具 举报

快乐生活  学徒

发表于 2021-7-19 11:03:37

驴友花雕 发表于 2021-6-28 18:59
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百六十五:2.4寸 ...

哪里可以下载资料呢
回复

使用道具 举报

驴友花雕  高级技匠
 楼主|

发表于 2021-7-20 05:08:19

快乐生活 发表于 2021-7-19 11:03
哪里可以下载资料呢

具体什么资料呢?
回复

使用道具 举报

驴友花雕  高级技匠
 楼主|

发表于 2021-9-8 07:58:20

Arduino 系列传感器和执行器模块实验目录清单:
一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
https://mc.dfrobot.com.cn/thread-280845-1-1.html
连杆形式的腿机构十一种:盘点机器人行走背后的机械原理
https://mc.dfrobot.com.cn/thread-308097-1-1.html
【花雕动手做】超低成本,尝试五十元的麦克纳姆轮小车!
https://mc.dfrobot.com.cn/thread-307863-1-1.html
【花雕动手做】超迷你哦,用徽商香烟盒做个智能小车!
https://mc.dfrobot.com.cn/thread-307907-1-1.html
【花雕动手做】太搞笑啦,一支胶管制成二只蠕动机器人
https://mc.dfrobot.com.cn/thread-308046-1-1.html
【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
https://mc.dfrobot.com.cn/thread-308063-1-1.html
【花雕动手做】特别苗条,使用微波传感器控制的纤细小车
https://mc.dfrobot.com.cn/thread-308866-1-1.html
【花雕动手做】脑洞大开、五花八门的简易机器人66种
https://mc.dfrobot.com.cn/thread-307900-1-1.html

实验一百五十八:QMC5883L电子指南针罗盘模块 三轴磁场传感器GY-271
https://mc.dfrobot.com.cn/thread-308195-1-1.html
实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
https://mc.dfrobot.com.cn/thread-310371-1-1.html
实验一百六十五:2.4 英寸 TFT LCD 触摸屏模块 XPT2046 PCB ILI9341 240x320 像素 8 位 SPI 串口显示器
https://mc.dfrobot.com.cn/thread-309803-1-1.html
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
https://mc.dfrobot.com.cn/thread-309845-1-1.html
实验一百八十三:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议
https://mc.dfrobot.com.cn/thread-310273-1-1.html
实验一百八十五:MAX4466声音传感器 驻极体话筒放大器 麦克风可调功放模块 microphone
https://mc.dfrobot.com.cn/thread-310193-1-1.html
实验一百八十九:TDA1308 硅麦克风 数字咪头放大模块 拾音器放大板 楼氏SUNLEPHANT
https://mc.dfrobot.com.cn/thread-310246-1-1.html
实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
https://mc.dfrobot.com.cn/thread-310209-1-1.html
实验二百:RCWL-0515微波雷达感应开关 人体感应 智能感应探测传感器 12-15米远距离2.7G微波检测模块
https://mc.dfrobot.com.cn/thread-310313-1-1.html
实验二百零三:Air724UG合宙 Cat14G模块 DTU物联网UART串口通信数据TCP透传 核心板组合套餐
https://mc.dfrobot.com.cn/thread-310342-1-1.html
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块 NB-IoT广域低功耗无线通信 GPS/北斗精准定位
https://mc.dfrobot.com.cn/thread-310433-1-1.html


回复

使用道具 举报

1234567
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail