Guest User

How to use Maixduino's onboard WiFi for Arduino

a guest
Jul 3rd, 2020
216
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 64bit RISC-VのマイコンモジュールK210を搭載したマイコンボードである
  2. MaixduinoのオンボードのWiFiがArduinoから使えたので、使い方を紹介します
  3. ライブラリはWiFiNINAのライブラリを使います
  4.  
  5. WiFiNINAのライブラリはここからダウンロードします
  6. https://github.com/arduino-libraries/WiFiNINA
  7.  
  8. 使用したWiFiNINAライブラリのバージョンはVer 1.5.0です
  9.  
  10.  
  11. Maixduinoで使えるように
  12. 上記ライブラリと、Maixduinoのframework-maixduinoを一部改変します
  13.  
  14. 1.framework-maixduinoの改変
  15.  
  16.  
  17.  PlatformIOの方は
  18.     C:\Users\username\.platformio\packages\framework-maixduino\variants\sipeed_maixduino
  19.  Arduino IDEの方は
  20.     C:\Users\username\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.11\variants\sipeed_maixduino
  21.  
  22.     注:ここでusernameの部分は自分の環境に合わせて変更してください
  23.  
  24.  ここのpins_arduino.hを一部改変します
  25.  
  26.  
  27. 74行目の
  28.  
  29. #define MD_PIN_MAP(fpio) (((fpio) < 17) ? _maixduino_pin_map[(fpio)] : (fpio))
  30.  
  31. static const uint8_t _maixduino_pin_map[17] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16};
  32.  
  33.  
  34.  
  35. この部分を下記のように改変します
  36.  
  37. #define MD_PIN_MAP(fpio) (((fpio) < 22) ? _maixduino_pin_map[(fpio)] : (fpio))
  38.  
  39. static const uint8_t _maixduino_pin_map[22] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16, 8, 9, 25, 6, 7};
  40.  
  41.  
  42.  
  43.  
  44.  
  45. 2.WiFiNINAのライブラリの方は下記のように改変します
  46.  NINA_GPIO0は下記ではIO32(Maixduinoのピンソケットの6番目のピン)に割り当てありますが適当な使ってないピンを割り当ててください
  47.  
  48. srcの中のutilityの中の52行のspi_drv.cppの次の部分を
  49.  
  50. static uint8_t SLAVESELECT = 10; // ss
  51. static uint8_t SLAVEREADY = 7; // handshake pin
  52. static uint8_t SLAVERESET = 5; // reset pin
  53.  
  54.  
  55. 下記のように改変します
  56.  
  57. static uint8_t SLAVESELECT = 19; // K210 pin 25 ss pin
  58. static uint8_t SLAVEREADY = 18; // K210 pin 9 handshake pin
  59. static uint8_t SLAVERESET = 17; // K210 pin 8 reset pin
  60. static uint8_t NINA_GPIO0 = 6; // K210 pin 32
  61. #define PINS_COUNT 22
  62.  
  63.  
  64.  
  65. 次にsrcのutilityの中のspi_drv.cppの563行目を
  66.  
  67. int SpiDrv::available()
  68. {
  69. return (digitalRead(NINA_GPIO0) != LOW);
  70. }
  71.  
  72.  
  73. 下記のように変更してください
  74.  
  75. int SpiDrv::available()
  76. {
  77. // return (digitalRead(NINA_GPIO0) != LOW);
  78. return 1;
  79. }
  80.  
  81.  
  82.  
  83.  
  84. WiFiNINAライブラリのexampleはここです
  85.  
  86. https://github.com/arduino-libraries/WiFiNINA/tree/master/examples
  87.  
  88.  
  89.  
  90.  
  91.  
  92. ここで
  93. exampleのWiFiUdpNtpClientですが
  94. 129行目のsendNTPpacket関数の型がunsigned longなのにreturn文がないために
  95. MaixduinoのToolchainに含まれるg++ Ver 8.2.0では暴走してしまいます。
  96. unsigned longではなくvoidにします
  97.  
  98. unsigned long sendNTPpacket(IPAddress& address) {
  99.  
  100.  
  101. この部分を下記のように変更します
  102.  
  103. void sendNTPpacket(IPAddress& address) {
RAW Paste Data