色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>小型光傳感器站開源分享

小型光傳感器站開源分享

2022-10-20 | zip | 0.05 MB | 次下載 | 2積分

資料介紹

描述

在巴黎 Usine.io 舉辦的英特爾物聯(lián)網(wǎng)黑客馬拉松上,我有機會在英特爾 Edison Arduino 板和一堆 Grove 傳感器/執(zhí)行器旁邊,還從 Snootlab 獲得了新的 Akene 板。

感謝 Intel IoT 人員、來自 SigFox 的 Nicolas 以及 BeMyApp 的所有員工為這次 Hackaton...

第一步:項目...

我決定用 Intel Edison 板、Grove Shield、SigFox Akene Shield 和 I2C Grove TSL2561 構(gòu)建一個小型光傳感器站。

該站大約每 10 分鐘通過 SigFox 網(wǎng)絡(luò)上傳與該 10 分鐘周期相關(guān)的 3 個不同值(以勒克斯為單位):算術(shù)平均光、最小和最大光。

這將有助于了解這段時間內(nèi)光線如何圍繞其平均值波動,從而了解天空如何多云(如果至少有風(fēng)推動云層……)。

我將在該項目中使用 Python

第 2 步:友好的開發(fā)環(huán)境

?
pYYBAGNQx8eACpJSAABjC8Qfzgo184.png
Intel Edison + Arduino 分線板 + Grove shield
?

我假設(shè)英特爾 Edison 環(huán)境已準備好用于 Python,并且在 Edison 上設(shè)置了密碼以打開 SSH 會話和 SFTP 以上傳 Python 代碼。

我正在使用 OS X,并將使用 CoolTerm 進行通信,并使用出色的 TextWrangler 作為代碼編輯器和代碼上傳器 (SFTP)。

第 3 步:框架:sensor.py

#!/usr/bin/env python import time import mraa # Sensor initialisation import pyupm_tsl2561 tsl2561Ready = True if (tsl2561Ready) : # 在 I2C 上實例化一個數(shù)字光傳感器 TSL2561 print "initialisation TLS2561" lightSensor = pyupm_tsl2561.TSL2561() time.sleep (10) # 值 numberSamples = 200 valueCount = 0 valueNow = 0 valueSum = 0 valueAvg = 0 valueMin = 32767 valueMax = 0 # 主循環(huán) while True : if (valueCount == numberSamples) : print print "after", numberSamples, "samples (以勒克斯為單位的值):" print "valueAvg: %5d" % valueAvg, "- valueMin: %5d" % valueMin, "- valueMax: %5d" % valueMax valueCount = 0 if (valueCount == 0) : valueNow = 0 valueSum = 0 valueAvg = 0 valueMin = 32767 valueMax = 0 if (tsl2561Ready) :valueNow = lightSensor.getLux() if (valueNow >= 0) : valueCount = valueCount + 1 valueSum = valueSum + valueNow valueAvg = valueSum / valueCount if valueNow < valueMin : valueMin = valueNow if valueNow > valueMax : valueMax = valueNow now = time。 ctime(int(time.time())) if (valueCount == 1) : print print "Light (luxes):" print now,"(GMT)",": %5d" % valueNow,"- avg :%5d" % valueAvg,"- min:%5d" % valueMin,"- max:%5d" % valueMax,"-%4d 個樣本" % valueCount time.sleep(1)valueMax = valueNow now = time.ctime(int(time.time())) if (valueCount == 1) : print print "Light (values in lux):" print now,"(GMT)",": %5d " % valueNow,"- avg:%5d" % valueAvg,"- min:%5d" % valueMin,"- max:%5d" % valueMax,"-%4d 個樣本" % valueCount time.sleep(1 )valueMax = valueNow now = time.ctime(int(time.time())) if (valueCount == 1) : print print "Light (values in lux):" print now,"(GMT)",": %5d " % valueNow,"- avg:%5d" % valueAvg,"- min:%5d" % valueMin,"- max:%5d" % valueMax,"-%4d 個樣本" % valueCount time.sleep(1 )

?

第 4 步:使用 sensor.py 得到什么

> 蟒蛇傳感器.py

?
pYYBAGNQx8uAcHrVAAB5-35csaU200.png
樣本輸出 - 傳感器值
?

第 5 步:SigFox 和 Akene 盾牌

?
poYBAGNQx82AAo_QAACIkVGXJHE319.png
Akene Arduino Shield,其 SIGFOX 模塊 (TD1208) 在左側(cè)
?

Akene 板是 SnootLab 的實驗性 Arduino 擴展板,上面裝有 TD1208 SoC(片上系統(tǒng))。TD1208 是一款經(jīng)過 SigFox 認證的無線電收發(fā)器,結(jié)合了 ARM Cortex M3,它實現(xiàn)了用于將值發(fā)送到 SigFox 操作的電信網(wǎng)絡(luò)的電信調(diào)制解調(diào)器堆棧,并且除了其串行調(diào)制解調(diào)器鏈路之外,還包括用于物聯(lián)網(wǎng)傳感器的 I2C 功能。

SIgFox 服務(wù)依賴于目前部署在西歐、舊金山以及其他國家或城市的 LPWA(低功耗廣域)網(wǎng)絡(luò)。SigFox 協(xié)議專為小消息而設(shè)計,其技術(shù)專注于設(shè)備客戶端的能源效率和每個基礎(chǔ)設(shè)施基站的大區(qū)域覆蓋。

SigFox 網(wǎng)絡(luò)允許每個設(shè)備每天最多發(fā)送140 條消息(即每 1000 萬次),每個消息最多可發(fā)送12 個可用字節(jié),即 6 個短整數(shù)值(時間戳和唯一設(shè)備 ID 也會另外傳輸)。

更多信息: http: //maker.sigfox.com

?

第 6 步:讓我們確保 Akene shield 及其調(diào)制解調(diào)器正常工作

?
poYBAGNQx9GAXJH9AABitEzsUuc433.png
Akene Shield 使用引腳 4 和 5 與 Sigfox 模塊通信。
?

Akene shield 可以用作調(diào)制解調(diào)器,所以我們首先將它連接到 Edison:

? 地對地(黑線)

? 3.3v 至 3.3v(紅線)

? Edison 的串行 Rx(引腳 0)到 Akene 的 Tx(引腳 D4) - 藍線

? Edison 的串行 Tx(引腳 1)到 Akene 的 Rx(引腳 D5) - 白線

?

步驟 7:通過終端向 Akene shield 的 TD1208 發(fā)送直接命令

我們可以將 TD1208 視為調(diào)制解調(diào)器。

必須安裝 PySerial 包。

python -m serial.tools.miniterm

我們使用 miniterm(PySerial 的一部分) - 并指定串行端口:/dev/ttyMFD1 - 發(fā)送直接命令,例如:

?AT

應(yīng)該回復(fù)OK(否則有問題),

?AT&V

由TD1208標(biāo)識回復(fù),

?AT$SS01234567

它將 01234567 消息發(fā)送到 SigFox 網(wǎng)絡(luò)(最大十六進制數(shù)字為 24,即 12 個字節(jié)),以及

?AT?

它返回可用命令的列表。

要退出 miniterm,在 OS X 上使用法語鍵盤:CTRL 6

?

第 8 步:向 SigFox 網(wǎng)絡(luò)發(fā)送消息的簡單 python 命令

這是專用于另一個 TD1208 板(來自 SNOC 的 RPISIGFOX)的 python 命令的快速改編,可在 Internet 上找到。

順便提一下,為了與英特爾愛迪生一起使用串行,

? 必須先初始化將要使用的端口/引腳,在我們的例子中是/dev/ttyMFD1(引腳0 和1):

import libmraa
x=Uart(0)

? 調(diào)用serial.Serial(......

您可以這樣使用命令:

python sendsigfox.py 01234567

這會將消息 01234567 發(fā)送到 SigFox 網(wǎng)絡(luò)

#!/usr/bin/python


#  This script allow the control of the SNOOTLAB expansion board, and is adapted for Intel Edison.
#  3 lines of code were added (LINE ADDED)
#  script has been modified from:
#
#  This script is from the rpisigfox expansion board for Raspberry Pi.
#
#  V1.0 allow only to send regular message on the SigFox Network.
#  syntax is :
#  sendsigfox MESSAGE 
#  where MESSAGE is a HEXA string encoded. Can be 2 to 24 characters representing 1 to 12 bytes.
#  Example : sendsigfox 00AA55BF to send the 4 bytes 0x00 0xAA 0x55 0xBF
# 

import time
import serial
import sys
from time import sleep

#LINE ADDED
import mraa

SOH = chr(0x01)
STX = chr(0x02)
EOT = chr(0x04)
ACK = chr(0x06)
NAK = chr(0x15)
CAN = chr(0x18)
CRC = chr(0x43)

def getc(size, timeout=1):
    return ser.read(size)

def putc(data, timeout=1):
    ser.write(data)
    sleep(0.001) # give device time to prepare new buffer and start sending it

def WaitFor(ser, s, timeOut):
        nbMax = 0
        ser.timeout = timeOut
        currentMsg = ''
        while currentMsg.endswith(s) != True :
            # should add a try catch here
            c=ser.read()
            if c != '' :
                currentMsg += c
            else :
                print 'timeout waiting for ' + s
                return False
            nbMax = nbMax + 1
            if nbMax > 150:
		print 'Timeout expired'
		return False
        return True


print('Sending SigFox Message...')

#LINE ADDED: 0 ie '/dev/ttyMFD1'
uart = mraa.Uart(0)

modem = serial.Serial(
			uart.getDevicePath(),
			baudrate=9600,
        	parity=serial.PARITY_NONE,
        	stopbits=serial.STOPBITS_ONE,
        	bytesize=serial.EIGHTBITS
		)

#LINE ADDED: closing serial before opening it, as otherwise the Edison serial seems to be already open by calling serial.Serial
modem.close()

modem.open()

modem.write('AT\r')
if (WaitFor(modem, 'OK', 3)):
	print('SigFox Modem OK')
else:
	print('SigFox Modem Error')
	modem.close()
	exit()

modem.write("AT$SS={0}\r".format(sys.argv[1]))

print('Sending ...')
if (WaitFor(modem, 'OK', 15)):
	print('OK Message sent')
else:
	print('Error Sending message')
	modem.close()
	exit()

modem.close()

?

第 9 步:使用 sendigfox.py 得到什么

>python sendigfox.py 346723

?
pYYBAGNQx9OAUmKsAAAtDAYIChQ355.png
樣本輸出
?

?

第 10 步:完整程序:sensor2sigfox.py

也沒有什么特別的困難,只是提一下:

? 每個發(fā)送的數(shù)據(jù)都是一個 2 字節(jié)的短整數(shù)。因此 valueAvg、valueMin 和 valueMax 是 6 個字節(jié),即 12 個十六進制字符字符串。由于在我使用的情況下,SigFox 的設(shè)置是為了將數(shù)據(jù)重新發(fā)送到 actoboard.com,并且 actoboard.com 當(dāng)前接受 LittleEndian 字節(jié)順序的數(shù)據(jù),所以在發(fā)送之前,每個數(shù)據(jù)都會進行相應(yīng)的轉(zhuǎn)換。 .

? Akene 防護罩完全插在 Grove 防護罩的頂部,為了將 Edison 串行的接線安裝在引腳 0 和 1 上以及將 Akene 串行的接線安裝在引腳 D4 和 D5 上,使用了帶子(0 到 D4 :白色表帶)和(1 到 D5:黃色表帶),見第一張圖......這意味著干凈的接線,但不可能使用愛迪生的引腳 4 和 5......

#!/usr/bin/env python 

import time
import mraa
import serial


# convert a string (n chars) into its hexadecimal string representation (n bytes - 2*n chars)
def string2hex(s) :
	return str(s).encode("hex")

# convert a short integer (2 bytes) into its hexadecimal (2 bytes) representation with BigEndian/LittleEndian bytes order
def short2hex(i, bigEndian) : 
	if (bigEndian) :
		return "%04X" % i
	else :
		return "%04X" % (((i << 8) & 0xFF00) | ((i >> 8) & 0x00FF))


def WaitFor(serial, msg, timeOut):
        nbMax = 0
        serial.timeout = timeOut
        currentMsg = ''
        while currentMsg.endswith(msg) != True :
            c = serial.read()
            if c != '' :
                currentMsg += c
            else :
                print 'timeout waiting for ' + msg
                return False
            nbMax = nbMax + 1
            if nbMax > 150:
				print 'Timeout expired'
				return False
        return True

def sendsigfox(data):
	print('Sending SigFox Message...')
	# 0 i.e. pins 0 and 1 i.e. '/dev/ttyMFD1' for Intel Edison, allow usage of UART on port 0
	uart = mraa.Uart(0)
	# define sigfox and implicitely makes a sigfox.open()
	sigfox = serial.Serial(
		uart.getDevicePath(),
		baudrate=9600,
		parity=serial.PARITY_NONE,
		stopbits=serial.STOPBITS_ONE,
		bytesize=serial.EIGHTBITS
		)
	sigfox.write('AT\r')
	if (WaitFor(sigfox, 'OK', 3)):
		print('SigFox Modem OK')
	else:
		print('SigFox Modem Error')
		sigfox.close()
		return False
	print("sending data " + data + " to SigFox network:")
	print("Sigfox: AT$SS=" + data + "\r")
	sigfox.write("AT$SS=")
	sigfox.write(data)
	sigfox.write("\r")
	if (WaitFor(sigfox, 'OK', 15)):
		print('Message sent OK')
	else:
		print('Error Sending message')
		sigfox.close()
		return False
	sigfox.close()
	return True

	
# Sending Format of data - bytes order - required (True for BigEndian, False for LittleEndian)
# for sending to actoboard.com : LittleEndian (i.e. False) is expected for received data
sendingFormat = False


# Sensor initialisation
import 			pyupm_tsl2561
tsl2561Ready	= True

if (tsl2561Ready) :
	# Instantiate a digital light sensor TSL2561 on I2C
	print "initialisation TLS2561"
	lightSensor = pyupm_tsl2561.TSL2561()
	time.sleep (10)


# Value
numberSamples	= 200
valueCount		= 0
valueNow		= 0
valueSum		= 0
valueAvg 		= 0
valueMin		= 32767
valueMax		= 0


# Main loop
while True :
		
	if (valueCount == numberSamples) :
		print
		print "after", numberSamples, "samples (values in lux):"
		print "valueAvg: %5d" % valueAvg, "- valueMin: %5d" % valueMin, "- valueMax: %5d" % valueMax
		print "valueAvg: ", short2hex(valueAvg,True), "- valueMin: ", short2hex(valueMin,True), "- valueMax: ", short2hex(valueMax,True)
		if (sendingFormat) :
			print "sending valueAvg,valueMin,valueMax (BigEndian)"
		else :
			print "sending valueAvg,valueMin,valueMax (LittleEndian)"
		sendsigfox(short2hex(valueAvg,sendingFormat)+short2hex(valueMin,sendingFormat)+short2hex(valueMax,sendingFormat))
		valueCount = 0
		
	if (valueCount == 0) :
		valueNow = 0
		valueSum = 0
		valueAvg = 0
		valueMin = 32767
		valueMax = 0
		
	if (tsl2561Ready) :
		valueNow = lightSensor.getLux()
		if (valueNow >= 0) :
			valueCount	= valueCount + 1
			valueSum = valueSum + valueNow
			valueAvg = valueSum / valueCount
			if valueNow < valueMin :
				valueMin = valueNow
			if valueNow > valueMax :
				valueMax = valueNow
	
			now = time.ctime(int(time.time()))
			
			if (valueCount == 1) :
				print
				print "Light (values in lux):"
			print now,"(GMT)",": %5d" % valueNow,"- avg:%5d" % valueAvg,"- min:%5d" % valueMin,"- max:%5d" % valueMax,"-%4d sample(s)" % valueCount
		
	time.sleep(1) 

?

第 11 步:使用 sensor2sigfox.py 得到什么

python?sensor2sigfox.py

?
poYBAGNQx9aAUzAvAABketGRTMw878.png
樣本輸出
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1VCC啟動電路(可下載)
  2. 748.32 KB  |  2次下載  |  免費
  3. 2TDA7850音頻功率放大器英文手冊
  4. 0.39 MB   |  1次下載  |  免費
  5. 3HAC1108TS型LVCMOS時鐘緩沖器產(chǎn)品說明書
  6. 386.75 KB  |  1次下載  |  免費
  7. 460KW電機控制器硬件驅(qū)動電路設(shè)計(可下載)
  8. 720.01 KB  |  1次下載  |  免費
  9. 5LT7404FJ-X N溝道增強型功率MOSFET規(guī)格書
  10. 1.48 MB   |  次下載  |  免費
  11. 6LTH004FK互補增強型功率MOSFET規(guī)格書
  12. 1.39 MB   |  次下載  |  免費
  13. 7LT1756SJ N溝道增強型場效應(yīng)晶體管規(guī)格書
  14. 0.94 MB   |  次下載  |  免費
  15. 8廣州唯創(chuàng)電子WTK6900HC語音識別芯片資料
  16. 1.14 MB  |  次下載  |  免費

本月

  1. 1STM32CubeMX用于STM32配置和初始化C代碼生成
  2. 21.90 MB   |  627次下載  |  免費
  3. 2STM32開發(fā)板教程之STM32開發(fā)指南免費下載
  4. 24.88 MB   |  176次下載  |  3 積分
  5. 3EN60335-1安規(guī)標(biāo)準 中文版本
  6. 1.86 MB   |  53次下載  |  1 積分
  7. 4OAH0428最新規(guī)格書(中文)
  8. 2.52 MB   |  28次下載  |  10 積分
  9. 5Altium-常用3D封裝庫(Step)接插件篇
  10. 4.95 MB   |  26次下載  |  免費
  11. 6UHV系列雷電沖擊電壓發(fā)生器試驗裝置詳細說明使用
  12. 1.07 MB   |  17次下載  |  免費
  13. 7介紹一些常用的電子元器件
  14. 3.20 MB   |  8次下載  |  免費
  15. 8麻將機升降電路
  16. 0.12 MB   |  6次下載  |  1 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935124次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420063次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191371次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183336次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81583次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73814次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 久久一本岛在免费线观看2020 | 亚洲成AV人片一区二区不卡 | 久久久性色精品国产免费观看 | 双性人皇上被c到哭 | 天天射天天干天天插 | 99久酒店在线精品2019 | 美女被爆插 | 久久成人免费观看草草影院 | 亚洲中文字幕无码一去台湾 | 国产香蕉视频在线观看 | 99久久国语露脸精品国产 | 国产成人精品一区二区三区视频 | 俄罗斯aaaa一级毛片 | 中国国产不卡视频在线观看 | 伊人久久网站 | 99精品欧美一区二区三区美图 | chinesevideos原创麻豆 | 人善交XUANWEN200喷水 | 高清 仑乱 一级 a | 久青草国产在线观看视频 | 日韩精品久久日日躁夜夜躁影视 | 欧美日韩亚洲一区视频二区 | 亚洲中文字幕手机版 | 在线观看日本免费 | 一个人免费视频在线观看高清频道 | 手机看片成人 | 国产精品日韩欧美一区二区三区 | 欧美写真视频一区 | 俄罗斯xxxxxbbbbb| 免费精品国产人妻国语麻豆 | 夜夜骑夜夜欢 | 亚洲精品电影久久久影院 | 久久久免费观成人影院 | 久久人妻熟女中文字幕AV蜜芽 | 亚洲无线码一区在线观看 | 日本久久中文字幕 | 九九热只有精品 | 日韩一区精品视频一区二区 | 亚洲国产AV精品卡一卡二 | 色悠久久久久综合网小说 | 成人影院午夜久久影院 |