文本, 我會使用一個Elixir實現的模塊函數去讀取鏈接到樹莓派的DS18B20溫度傳感器的溫度數值.html
文本假設你熟悉linux
數字電路基礎git
Elixir編程基礎github
樹莓派3, B型(圖片省略, 下文有)編程
DS18B20傳感器segmentfault
4.7KΩ 電阻(一分錢一顆)session
麪包板(圖片省略, 下文有)app
公母頭杜邦線函數
接線圖
麪包板內部連通圖
麪包板接線圖
黑色爲地線
紅色爲3.3V板供直流電源, 對應PIN1
黃色爲數據線
電阻鏈接在紅色和黃色線之間
樹莓派主板接線
左側三根是鏈接到電腦的串口線, 用於控制檯輸入輸出.
右側爲DS18B20傳感器的三個引腳
全體照
mix nerves.new hello_celsius_sensor --target rpi3 cd hello_celsius_sensor mix deps.get
下面的過程和描述和覆蓋啓動分區中的文件相關
修改 config/config.exs
, 包含以下內容:
use Mix.Config # 日誌 config :logger, :console, level: :debug, format: "$date $time $metadata[$level] $message\n", handle_sasl_reports: true, handle_otp_reports: true, utc_log: true # 覆蓋 config :nerves, :firmware, rootfs_additions: "config/rootfs-additions" # 固件配置 config :nerves, :firmware, fwup_conf: "config/rpi/fwup.conf"
建立 rootfs-additions
目錄
mkdir -p config/rootsfs-additions/etc cd config/rootsfs-additions/etc vi erlinit.config
添加以下內容:
# Additional configuration for erlinit # Turn on the debug prints # -v # Specify the UART port that the shell should use. #-c tty1 -c ttyS0 # If more than one tty are available, always warn if the user is looking at # the wrong one. --warn-unused-tty # Use dtach to capture the iex session so that it can be redirected # to the app's GUI #-s "/usr/bin/dtach -N /tmp/iex_prompt" # Specify the user and group IDs for the Erlang VM #--uid 100 #--gid 200 # Uncomment to hang the board rather than rebooting when Erlang exits # --hang-on-exit # Optionally run a program if the Erlang VM exits #--run-on-exit /bin/sh # Enable UTF-8 filename handling in Erlang and custom inet configuration -e LANG=en_US.UTF-8;LANGUAGE=en;ERL_INETRC=/etc/erl_inetrc # Mount the application partition # See http://www.linuxfromscratch.org/lfs/view/6.3/chapter08/fstab.html about # ignoring warning the Linux kernel warning about using UTF8 with vfat. -m /dev/mmcblk0p3:/root:vfat:: # Erlang release search path -r /srv/erlang # Assign a unique hostname based on the board id -d "/usr/bin/boardid -b rpi -n 4" -n nerves-%.4s
注意-c
參數設置爲 ttyS0
是爲了可以經過開發電腦查看到樹莓派的輸出信息, 請參考使用 Elixir 開發嵌入式系統: 串口調試
cp deps/rpi3/nerves_system_rpi3/fwup.conf config
修改 file-resource config.txt
的位置, 其中 NERVES_APP
爲當前項目的根目錄.
file-resource config.txt { host-path = "${NERVES_APP}/config/rpi/config.txt" }
複製 config.txt
文件.
cp deps/rpi3/nerves_system_rpi3/config.txt config/rpi
DS18B20 使用 Dallas 1-Wire protocol 協議. Nerves 提供了對 1-Wire 協議的支持, 只須要在 config.txt
配置文件激活這個參數便可.