obnizのフォーラムは新しいシステムに移行しております。

新しいフォーラムはこちらになります

Uart通信で、データが正しく送られない



  • ObnizからUartで下記の内容をマイコンに送っています。

    uart.send([0x23, 0x57, 0x4C, 0x00, 0x00,0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,0x00]);
    

    Obnizとマイコンの間をUartモニター確認したら、下記の内容になっていました。

    00 FF FF FF FF 00 FF 00 23 57 00 00 00 FF FF 00 FF FF FF FF 00 FF FF FF FF 00 23 57 4C 00 00 FF FF FF FF 00 FF FF FF FF 00 00 23 57 4C 
    

    こちらが想定した内容を正しい内容を送る方法はどうすればいいのでしょうか?



  • 可能性として考えられるのは

    • BarudRateが違う
    • Uart.start()/ endを頻繁に行っている
    • 回路にノイズが乗っているか、

    などが考えられます。
    今頂いている情報だと、これ以上の話をすることが難しいので、
    作成したプログラムや回路図(もしくは作成物の写真など)を投稿いただくことは可能でしょうか。



  • 全体のプログラムは、こちらになります。
    routerはExpressのモジュールになります。

    router.post('/', async (req: Request, res: Response) => {
      let obniz: Obniz | null;
    
      obniz = new Obniz(process.env.OBNIZ_ID);
    
      if (!await obniz.connectWait({ timeout: 5 })) {
        throw new Error('Obnizが接続できませんでした。');
      }
    
      const uart = obniz.getFreeUart();
      try {
        uart.start({ gnd: 0, rx: 2, tx: 3, baud: 115200 });
    
        uart.send([0x23, 0x57, 0x4C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00]);
        return res.json('');
      } catch (e) {
        console.error(e);
    
        res.status(500).json(e);
      } finally {
        if (obniz) {
          uart.end();
          await obniz.closeWait();
        }
      }
    });
    

    回路図は以下になります。
    IMG_20210707_100428 (1).jpg
    IMG_20210707_100536 (1).jpg
    利用したマイコンは、下記のものになります。
    https://akizukidenshi.com/catalog/g/gK-12144/

    また、マイコンに対して、PCでCOM3からTera Termでデータを送ると、マイコンは正しいデータを受け取りました。



SUGGESTED TOPICS