文本, 我会使用一个Elixir实现的模块函数去读取连接到树莓派的DS18B20温度传感器的温度数值.

文本假设你熟悉

  • 数字电路基础

  • Elixir编程基础

视频演示

  • https://v.qq.com/x/page/q0357...

原料

树莓派3, B型(图片省略, 下文有)

DS18B20传感器

4.7KΩ 电阻(一分钱一颗)

面包板(图片省略, 下文有)

公母头杜邦线

连接温度传感器

接线图

面包板内部连通图

面包板接线图

  • 黑色为地线

  • 红色为3.3V板供直流电源, 对应PIN1

  • 黄色为数据线

  • 电阻连接在红色和黄色线之间

树莓派主板接线

  • 左侧三根是连接到电脑的串口线, 用于控制台输入输出.

  • 右侧为DS18B20传感器的三个引脚

全体照

创建一个新的Elixir Nerves项目

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 配置文件激活这个参数即可.

代码库

  • https://github.com/developerw...

参考资料

  • Elixir Nerves for measuring temperature from a DS18B20 sensor on a Raspberry Pi

  • Raspberry Pi DS18B20 Temperature Sensor Tutorial

使用 Elixir 开发嵌入式系统: 使用DS18B20传感器测量体温相关推荐

  1. 嵌入式开发 | 嵌入式系统抗干扰设计

    关注+星标公众号,不错过精彩内容 编排 | strongerHuang 微信公众号 | strongerHuang 在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活.节省硬件资源.可靠性好等越来 ...

  2. 10、ARM嵌入式系统:加速传感器MMA8451初始化

    一.加速传感器在板子上的位置 MMA8451加速传感器经常用于运动检测,实时方向检测,虚拟现实设备中的位置检测等,还比较常见. 二.加速传感器涉及的寄存器 主要涉及PTE24/PTE25管脚对应的寄存 ...

  3. 关于嵌入式系统开发工程师相关问题解答

    经常有网友对嵌入式系统开发工程师和嵌入式软件开发工程师概念模糊不清,不太清楚两种的区别和联系,本文就嵌入式系统开发工程师详细的介绍,帮助大家更好的了解嵌入式系统开发工程师一职. 一:职业描述     ...

  4. 嵌入式系统开发工程师嵌入式软件开发工程师

    嵌入式软件开发工程师 工作内容 从事数据产品嵌入式(底层)软件开发和设计工作: 负责数据产品相关软件子系统的方案设计: 负责数据产品相关的技术交流.标准及专利相关工作: 负责嵌入式软件系统的需求分析和 ...

  5. 关于嵌入式系统的应用分析

    经过这些年的发展,嵌入式的功能不断强大,嵌入式的应用领域也更为宽泛,嵌入式在当前主要是指为了各种具体应用功能的实现,按照基本计算机技术,在硬件方面和软件方面均可裁剪,不断适应各种应用系统的发展,要求可 ...

  6. 中兴新支点嵌入式系统技术成物联网发展的驱动力

    物联网技术并不是一个单独的技术,而是多种已有技术的融合:如处理器技术.互联网技术.嵌入式系统技术.传感器网络技术.通信技术.RFID技术等.而且,物联网是新一代信息技术的重要组成部分,是互联网与嵌入式 ...

  7. 终身学习--启程篇:清华大学 《ARM控制器与嵌入式系统》

    转眼间听<樊登读书>也有两年了,这段时间听了一篇关于终身学习的文章,很有感触,在大厂干了十几年,自己做过项目开发,也带过好几个版本,但是在大厂做项目一般都只做一个模块,不可能端到端都是一个 ...

  8. 【期末复习资料】嵌入式系统及应用

    第一章 嵌入式系统导论 嵌入式系统概述 嵌入式系统的定义 嵌入式系统是嵌入式计算机系统的简称.顾名思义,它是一种嵌入在设备(或系统)内部,为特定应用而设计的专用计算机系统. 嵌入式系统是以应用为中心. ...

  9. QG工作室——智能与嵌入式系统小组

    一.小组简介 (1)小组历史 本小组是在2005年12月,在计算机智能与软计算所指导下,为了更好的让学生投入到计算机专业实践,而创立的.本小组目前有指导老师两位,分别是曾碧教授(计算机学院副院长,智能 ...

最新文章

  1. Linux下vi编辑器命令精华版
  2. java之==和equals区别
  3. 理解同步异步、阻塞与非阻塞
  4. IOS常用正则表达式
  5. 牛客 - A Simple Game(尼姆博弈变形)
  6. Linux日志安全分析技巧
  7. 如何填满word页面_Word应用分隔符的使用
  8. jmeter测试接口--form表单提交请求(解决请求传参为空的问题)
  9. ubuntu 16.0 CUDA 10.1卸载 CUDA 10.2 安装
  10. 如何在Mac上高质量的进行PDF OCR转换
  11. 2、Zookeeper集群搭建、命令行Client操作
  12. SENT协议(SAE-J2716)
  13. ok6410linux开发环境搭建,OK-6410的裸机开发环境配置
  14. 系统服务(daemon)
  15. 服务器是什么?服务器的作用与用途
  16. 达梦数据库基础篇--数据库管理工具
  17. 北京计算机动漫游戏制作职高,北京的动漫学校(计算机动漫设计与制作)
  18. iOS-QQ分享功能实现
  19. Kubernetes 中的对象是如何删除的:Finalizers 字段介绍
  20. 如何在word里面打对勾

热门文章

  1. CentOS 5.4 rsync+inotify配置触发式(实时)文件远程同步
  2. javamail.providers not found
  3. mysql 5.7 Stage Tracking DDL进度跟踪
  4. linux正则表达式sed
  5. 重定向、别名、绝对路径、相对路径 详解
  6. vs2015 企业版、专业版如何破解(秘钥)
  7. Windows Azure Platform Introduction (6) Windows Azure应用程序运行环境
  8. Solr添加SolrDocument报错
  9. Linux上vi的使用教程
  10. 中了logo1.exe