組み込み系

STM32のTips (Flash関係)

開発環境はIARのEWARMです。 binファイルの生成 デフォルトではプロジェクトをビルドするとoutファイルが生成されます。outファイルからbinファイル(バイナリイメージ)を生成するには、プロジェクトの[オプション]の[出力コンバータ]にて、[追加出力ファイル…

CubeMXのコードを流用して音声再生

この記事はMbed Advent Calendar 2017の23日目の記事です。 STM32のCubeMXの吐いたコードをmbedにコピペしても、ふつうにコンパイルできます。HALライブラリのAPIもふつうに使えます。そこで、Nucleo-F767ZIをmbedで使用しつつ、CubeMXで生成したコードをコ…

Nucleo/mbedのタイマリソースの調査

この記事はMbed Advent Calendar 2017の19日目の記事です。 目的 mbedベースでお手軽に開発しつつ、痒い所だけ本気出して底からコード書くようなスタイルが好みです。ただしそのとき問題になるのが、mbedライブラリがどういうリソースの使い方をしているかと…

nRF52ミニ基板「斑鳩」の試作

この記事はMbed Advent Calendar 2017の8日目の記事です。 BLEマイコンnRF52搭載のミニ基板「斑鳩」の試作について書きます。「斑鳩」はオープンソースハードウェアです。今はまだ試作段階ですが、そのうちイベント等で頒布するかも。12/16(土)・17(日)開催…

AndroidをUSBシリアルのホストに

usb-serial-for-androidを使用する方法をメモ。 他にFTDriverというのもある。 (1) usb-serial-for-androidのソースを入手 下記サイトからプロジェクト一式をダウンロード(またはgitでclone)する。 usb-serial-for-android (2) Android Studioでプロジェクト…

LPCXpressoでのRAMブロック指定

LPCマイコンのたとえばLPC1549は、合計36kバイトのSRAMを持っていますが、16kバイト/16kバイト/4kバイトの3つのブロックに分かれています。第一のブロック以外は、省電力のために個別にディセーブルすることが可能です。LPCXpressoでソフトウェアを開発する…

ESP32のフラッシュメモリの読み書き

WindowsでESP32のArduino開発環境がセットアップされていること。 esptool.exeのあるディレクトリにパスを通しておきます。通常は、C:\Users\ユーザ名\Documents\Arduino\hardware\espressif\esp32\tools ESP32を書き込みモードで起動してシリアルポートをPC…

いまさらTWELITE

数年前、TWELITE (旧称 TWE-Lite、例のマッチ棒アンテナのやつ) ていう無線マイコンモジュールが流行ったことがあって、でも最近あんまり聞かないなと思ってたんですが、ちょっと縁があって触ってみることになりました。 やりたいこと PLC(シーケンサ)をコン…

Android Things予習ノート

Android Thingsとは AndroidベースのIoT向け軽量OS。 要するに、ラズパイやエジソンで動くAndroid。 Androidのいろいろなご利益を享受できて、ハードも叩ける。 Windows 10 IoT Core とよく似たコンセプト。 まだ開発者向けプレビュー版の段階である。 対応…

Milkcocoa ESP8266 SDKの非同期化ハック

問題点 ESP8266でMilkcocoaを使うためのライブラリとしてMilkcocoa ESP8266 SDKがあります。 たいへん分かりやすく使いやすいライブラリだけども、同期処理(ブロッキング処理)なのが困りものです。下のコードを見てください。 loop(){ // 以下をloopの中で必…

BLEいろいろ

チップとモジュールとボードの関係 BLEはチップ、モジュール、ボードがいろいろあって分かりにくいので、(1)Nordic勢、(2)その他のARM勢、(3)非ARM勢 に分けて主なものを整理してみた。(クリックで拡大) けっきょく、どれを選べばいいのか? (1) マイコンな…

nRF52のSoftDeviceについて

SoftDeviceとは NordicのnRF52のSDKによる開発でBLEの機能を使うためにはユーザーアプリケーションとは別にSoftDeviceなるものをあらかじめROMに書き込んでおく必要がある。SoftDeviceとは何かというと、要するにBLEのプロトコルスタックのライブラリであり…

nRF52-DKを使ってBL652をデバッグ

nRF52-DKボードをJ-Linkデバッガとして使ってBL652をデバッグする方法をメモ。 BL652の線を引き出す BL652モジュールの端子は0.75mmピッチの端面スルーホールである。 まずはなんらかの方法で線を引き出す。 UEW(ウレタン線)で引き出す やり方はChaNさんのペ…

BL652について

BL652とは? NordicのnRF52832を搭載した、英Laird社製BLEモジュール。 日本の技適を取得済み。米国FCCも欧州CEも。 0.75mmピッチの端面スルーホールなので、なんとか手ハンダ可能。 BL652-SA-01がチップアンテナタイプ。 (同-SC-01は外部アンテナタイプ) 安…

Nordic nRF52開発環境導入メモ

NordicのBLEチップnRF52832のソフトウェア開発環境構築についてメモする。 基板 nRF52-DKを開発用に使用する。デバッガチップにPCA10040のシールが貼られているのが確認できる。Preview版はPCA10036、現行品はPCA10040である。(後述のサンプルコードに関係す…

PSoCのAPI関数を関数ポインタでエレガントに

PSoCのライブラリはクラスじゃないのがつくづくイラっとするけど、関数ポインタを使ってテーブル化したりクラスもどき構造体を作る手はあるな。 テーブル化 typedef uint16 (*UART_GetByte)(void); UART_GetByte uart_GetByte[] = { UART_1_GetByte, UART_2_…

ESP8266でタイマ割り込み

Arduinoでタイマ割り込みを使おうとすると、CPUアーキテクチャごとにやり方が違って不便に感じる。もっとも、Arduonoでタイマ割り込みなど使おうというのは筋が悪いのかもしれないが。 ESP8266の場合 // ミリ秒をクロック数に換算 (@80MHz) #define MSEC2CLO…

PSoCでI2C読み出し

PSoCでセンサICなどからデータを読み出す場合を考える。 以下では、I2Cブロックを I2C_1 という名前にしたものとする。 (PSoC Creatorめ! なんでC++でクラス化しないの?) まず、読み出し完了まで同期待ちしてもよいなら次のようになる。 // 複数バイト読み…

PSoC Creatorのプロジェクトのバージョン管理

PSoC Creatorのプロジェクトでバージョン管理すべきファイルと除外していいファイルは、以下の通り。(たぶん) バージョン管理すべきファイル ワークスペース名.cywrk プロジェクト名.cydsn/TopDesign/ プロジェクト名.cydsn/プロジェクト名.cyprj プロジェ…

ESP8266のSTAモードでUDP通信

昨日はAPモードでのUDP通信を実験した。 しかし、APモードだとネットに接続できなくなるのが不便である。そこでSTAモードも試してみる。ただしSTAモードの場合、IPアドレスはWiFiルータからDHCPで割り振られることが一般的なので、IPアドレスではアクセスし…

ESP8266のAPモードでUDP通信

ESP8266のWiFi機能はAPモード(親機)とSTAモード(子機)、およびAP+STAモードがある。 まずは、APモードでPCとUDP通信してみた。 ESP8266側のスケッチ #include <ESP8266WiFi.h> // WiFi #include <WiFiUDP.h> // UDP // SSIDとパスワード const char *ssid = "esp8266"; const char *pas</wifiudp.h></esp8266wifi.h>…

ESP8266をArduinoとして使う

いまさらだが自分用まとめ ESP8266とは? 安い技適済みWiFiモジュール (のコアとなるチップ) みんなが使ってるのはESP-WROOM-02 (秋月で550円) なぜかみんなESP-WROOM-02のことをESP8266と呼んでる ファームウェアを書き換えられる ATコマンドで制御できるフ…

BLE NanoのSerialクラスのバグ回避

BLE Nanoをmbedで使う場合、シリアルポート(TXD=D1, RXD=D0)を使うとD2とD3のポートが機能しなくなるという不具合があります。たとえば、D3にLEDをとりつけて下記のプログラムを実行するとLEDが点滅するはずですが、実際には点滅してくれません。 #include "…

GPduino Rev3

NT京都で頒布するGPduino Rev3です。といっても、諸事情により今回頒布できるのは6枚だけです。 回路図 CADデータ(Eagle) 部品表 プリセットファーム Android版プロポアプリ Windows版サーボ調整アプリ 通信仕様

GPduino Rev3 コントローラ通信仕様

Rev2からの変更点 Rev2の通信仕様との相違点は、 サーボ制御コマンドの変更(サーボのチャンネル数が1チャンネルから3チャンネルに増えたため) サーボ調整コマンドの変更(〃) サーボ調整コマンドの変更(EEPROM書き換えを最小限にするため、調整と保存を…

GPduinoコントローラ通信仕様

GPduinoのAVRマイコンとKoshian間のシリアル通信仕様を決めておきます。 ボーレート ボーレートは38400。 (ATmega328P 3.3V 8MHzで十分なタイミング精度が確保できる最高レート) 電文形式 '#'で始まり'$'で終わるアスキー電文とします。'#'と'$'は、STX/ETX…

GPSのログデータ

GPSロガーがシリアル出力するデータは、一般にNMEA 0183というフォーマットに則っています。 センテンスの形式 センテンスは「$」で始まり「,」で区切り「*」で終わります。「*」の後の16進数はチェックサムです。 (例) $GPGGA,051000.000,3435.3923,N,13541…

I2Cのスレーブアドレス

I2Cのスレーブアドレスは7bit表記の場合と8bit表記の場合があって紛らわしい。 7bit派: Arduino, PSoC, Linux, .NET MF 8bit派: mbed, CS+

SerialScreen

6/20に開催されたIchigoJam交流会 in 大阪日本橋にて発表した資料をアップしました。 (IchigoJamとあんまり関係なかったです。すみません…)

SerialScreenのTODOリスト

IchigoJam交流会までにやるべきこと Arduino版・mbed版・Linux版のソース集約 (6/5 DONE) Arduino版用のスクリプト/バッチ作成 (6/6 DONE) mbed版用のスクリプト/バッチ作成 (6/6 DONE) Linux版のMakefile修正 (6/6 DONE) GitHubで公開 (6/6 DONE) README作…