18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

3天內(nèi)不再提示

學(xué)習(xí)筆記|如何用Go程序采集溫濕度傳感器數(shù)據(jù)

ElfBoard ? 2024-03-21 11:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在共創(chuàng)社內(nèi)部的交流中,先前有一位成員展示了如何借助C語(yǔ)言來(lái)實(shí)現(xiàn)對(duì)AHT20溫濕度傳感器數(shù)據(jù)的讀取。這一實(shí)例觸發(fā)了另一位共創(chuàng)官的靈感,他決定采納Go語(yǔ)言重新構(gòu)建這一數(shù)據(jù)采集流程。接下來(lái),我們將詳細(xì)解析整個(gè)利用Go語(yǔ)言從AHT20溫濕度傳感器獲取數(shù)據(jù)的完整步驟和實(shí)現(xiàn)方法。

一、C程序獲取AHT20溫濕度

1、參考ElfBoard官方例程:03-例程源碼\03-1命令行例程源碼\09_elf1_cmd_aht20\elf1_cmd_aht20.c

#include "stdio.h" #include "unistd.h" #include "sys/types.h" #include "sys/stat.h" #include "sys/ioctl.h" #include "fcntl.h" #include "stdlib.h" #include "string.h" #include #include #include #include #include #define AHT20_DEV "/dev/aht20" int main(int argc, char *argv[]) { int fd; unsigned int databuf[2]; int c1,t1; float hum,temp; int ret = 0; fd = open(AHT20_DEV, O_RDWR); if(fd < 0) { printf("can't open file %s\r\n", AHT20_DEV); return -1; } while (1) { ret = read(fd, databuf, sizeof(databuf)); if(ret == 0) { /* ?????? */ c1 = databuf[0]*1000/1024/1024; // t1 = databuf[1] *200*10/1024/1024-500; hum = (float)c1/10.0; temp = (float)t1/10.0; printf("hum = %0.2f temp = %0.2f \r\n",hum,temp); usleep(500000); } } close(fd); return 0; }

2、使用交叉編譯環(huán)境編譯,拷貝到開(kāi)發(fā)板

wKgaomX7q6SAM4_wAABQIxmFG0I589.png

3、運(yùn)行程序查看結(jié)果

wKgaomX7q7iADFmyAAB9kdjjNC0442.png

二、Go程序獲取AHT20溫濕度

1、參考C程序使用Go程序復(fù)現(xiàn),代碼如下:

package main import ( "fmt" "syscall" "time" "unsafe" ) const Aht20Dev = "/dev/aht20" func main() { fd, err := syscall.Open(Aht20Dev, syscall.O_RDWR, 0) if err != nil { fmt.Printf("can't open file %s: %s\n", Aht20Dev, err) return } defer syscall.Close(fd) buf := make([]byte, 8) const delay = 500 * time.Millisecond var c1, t1 int var hum, temp float32 for { n, err := syscall.Read(fd, buf) if err != nil { fmt.Println("Read err", err) } if n == 0 { c1 = int(*(*uint32)(unsafe.Pointer(&buf[0]))) * 1000 / 1024 / 1024 t1 = int(*(*uint32)(unsafe.Pointer(&buf[4])))*200*10/1024/1024 - 500 hum = float32(c1) / 10.0 temp = float32(t1) / 10.0 fmt.Printf("hum = %.2f temp = %.2f\n", hum, temp) time.Sleep(delay) } } syscall.Close(fd) }

2、修改構(gòu)建配置,添加環(huán)境參數(shù):GOOS=linux;GOARCH=arm;GOARM=7。編譯輸出后拷貝到開(kāi)發(fā)板。并修改可執(zhí)行權(quán)限:chmod 777 go_temp_linux

3、運(yùn)行查看結(jié)果

wKgaomX7q-OAZ6haAADNRHFXrKY254.png

三、將該功能整合到Web服務(wù)中

1、建立Gin Web項(xiàng)目

為了方便后續(xù)功能拓展,我這里重新建立了一個(gè)較為完整的Web項(xiàng)目。目錄結(jié)構(gòu)如下:

wKgaomX7q_2AcGOwAAA_k_mgQV8785.png

并且對(duì)resp進(jìn)行了簡(jiǎn)單的封裝。

2、有關(guān)AHT20溫濕度傳感器的部分

(1)AHT20溫濕度傳感器Logic

package aht20Logic import ( "fmt" "syscall" "unsafe" ) const Aht20Dev = "/dev/aht20" type HumAndTemp struct { Hum float32 `json:"hum,omitempty"` Temp float32 `json:"temp,omitempty"` } func ReadHumAndTemp() (HumAndTemp, error) { fd, err := syscall.Open(Aht20Dev, syscall.O_RDWR, 0) if err != nil { fmt.Printf("can't open file %s: %s\n", Aht20Dev, err) return HumAndTemp{}, nil } defer syscall.Close(fd) buf := make([]byte, 8) n, err := syscall.Read(fd, buf) if err != nil { fmt.Println("Read err", err) } if n == 0 { c1 := int(*(*uint32)(unsafe.Pointer(&buf[0]))) * 1000 / 1024 / 1024 t1 := int(*(*uint32)(unsafe.Pointer(&buf[4])))*200*10/1024/1024 - 500 _ = syscall.Close(fd) return HumAndTemp{Hum: float32(c1) / 10.0, Temp: float32(t1) / 10.0}, nil } return HumAndTemp{}, nil }

(2)ATH20溫濕度傳感器Handler

package aht20Handler import ( "Web/logic/aht20Logic" "Web/utils/resp" "github.com/gin-gonic/gin" ) func HumAndTemp(c *gin.Context) { data, err := aht20Logic.ReadHumAndTemp() if err != nil { resp.Fail(c, 500, resp.CodeSystemErr) } resp.Success(c, data) }

(3)router(由于目前只有兩個(gè)路由組所以就先寫(xiě)到一個(gè)文件中,后續(xù)模塊增加了再繼續(xù)分隔)

package routers import ( "Web/controller/aht20Handler" "Web/controller/testHandler" "github.com/gin-gonic/gin" ) const ( baseUrl = "elf1" ) func SetRouter() *gin.Engine { r := gin.Default() test := r.Group(baseUrl + "/test") { test.GET("ping", testHandler.PingPong) } aht20 := r.Group(baseUrl + "/aht20") { aht20.GET("hum-temp", aht20Handler.HumAndTemp) } return r }

四、 編譯、測(cè)試

1、添加編譯環(huán)境參數(shù):GOOS=linux;GOARCH=arm;GOARM=7,執(zhí)行編譯,拷貝到開(kāi)發(fā)板,修改可執(zhí)行權(quán)限

2、啟動(dòng)服務(wù),進(jìn)行測(cè)試

wKgaomX7rSaAP3h6AAHTws_ephE245.pngwKgZomX7rSaAUf5rAADaF9_vBHs234.png

3、可以看到服務(wù)正常運(yùn)行,得到溫濕度信息

至此,就完成了通過(guò)Go語(yǔ)言實(shí)現(xiàn)對(duì)AHT20溫濕度數(shù)據(jù)的有效采集。這一成果的達(dá)成,充分展現(xiàn)了共創(chuàng)社成員對(duì)嵌入式研發(fā)的探索精神。期待這一實(shí)踐經(jīng)歷能夠?yàn)楦嗟那度胧綈?ài)好者提供有價(jià)值的參考借鑒。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2573

    文章

    53907

    瀏覽量

    780997
  • 嵌入式
    +關(guān)注

    關(guān)注

    5177

    文章

    19996

    瀏覽量

    325101
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11579

    瀏覽量

    217019
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    6021

    瀏覽量

    110457
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    機(jī)房溫濕度環(huán)境監(jiān)控系統(tǒng)用POE供電網(wǎng)絡(luò)型溫濕度傳感器

    產(chǎn)品關(guān)鍵詞:RJ45網(wǎng)口溫濕度傳感器,TCP/IP協(xié)議溫濕度變送器,網(wǎng)口網(wǎng)絡(luò)型溫濕度采集模塊,機(jī)房POE交換機(jī)供電型
    發(fā)表于 10-10 13:41

    采用數(shù)字溫濕度傳感器的多點(diǎn)溫濕度報(bào)警系統(tǒng)設(shè)計(jì)

    構(gòu)成  1.1 系統(tǒng)原理  實(shí)驗(yàn)室多點(diǎn)溫濕度報(bào)警系統(tǒng)原理框圖如圖1所示,由低性?xún)r(jià)比單片機(jī)對(duì)數(shù)字溫濕度傳感器控制,通過(guò)模擬溫度傳感器通訊時(shí)序,實(shí)現(xiàn)對(duì)
    發(fā)表于 11-13 10:53

    基于SHT11溫濕度傳感器和單片機(jī)技術(shù)的智能溫濕度測(cè)量系統(tǒng)

    研究了基于SHT11溫濕度傳感器和單片機(jī)技術(shù)的智能溫濕度測(cè)量系統(tǒng)。系統(tǒng)使用SHT11溫濕度傳感器實(shí)時(shí)采集
    發(fā)表于 04-27 06:34

    DHT11溫濕度傳感器介紹

    DHT11溫濕度傳感器介紹,1.實(shí)物原理圖2.模塊說(shuō)明2.1 DHT11產(chǎn)品概述DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度
    發(fā)表于 07-21 09:04

    【FPGA DEMO】Lab 12:溫濕度傳感器的應(yīng)用

    `項(xiàng)目名稱(chēng):溫濕度傳感器的應(yīng)用具體要求:采集溫濕度傳感器數(shù)據(jù)顯示到LCD屏系統(tǒng)設(shè)計(jì):IIC總線(xiàn)
    發(fā)表于 07-31 10:41

    基于STM32開(kāi)發(fā)板實(shí)現(xiàn)傳感數(shù)據(jù)采集-DHT11溫濕度采集

    STM32F407ZGT6開(kāi)發(fā)板進(jìn)行項(xiàng)目開(kāi)發(fā),選用的傳感器為常見(jiàn)通用的DHT11溫濕度傳感器。傳感器采集到的
    發(fā)表于 08-10 07:41

    AHT20溫濕度傳感器數(shù)據(jù)采集

    基于I2C硬件協(xié)議的AHT20溫濕度傳感器數(shù)據(jù)采集一、軟件I2C二、硬件I2C三、基于I2C硬件協(xié)議的AHT20溫濕度傳感器
    發(fā)表于 08-23 06:57

    何用DHT11溫濕度傳感器獲取溫濕度信息

    :https://pan.baidu.com/s/1J6AuQpoDJbjMko3kSD4aZw提取碼:81f5取走點(diǎn)個(gè)贊~一、課題1、用 DHT11 溫濕度傳感器獲取溫濕度信息,顯示到OLED屏上2、用 MQ-135 空氣質(zhì)量
    發(fā)表于 01-06 06:40

    AHT20溫濕度傳感器簡(jiǎn)介

    目錄一、AHT20溫濕度傳感器簡(jiǎn)介二、AHT20 封裝設(shè)計(jì)三、AHT20 元件設(shè)計(jì)四、原理圖設(shè)計(jì)五、總結(jié)博客內(nèi)容:學(xué)習(xí)溫濕度傳感器原理,閱讀
    發(fā)表于 02-14 07:29

    DHT11溫濕度傳感器簡(jiǎn)介

    DHT11溫濕度傳感器1、DHT11簡(jiǎn)介DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合
    發(fā)表于 02-16 06:55

    溫濕度傳感器的三大安裝事項(xiàng)

    為了更加精準(zhǔn)的監(jiān)測(cè)到生活中的溫濕度,我們的人工達(dá)不到大家對(duì)溫濕度的準(zhǔn)確性的要求,這個(gè)時(shí)候就需要用到溫濕度傳感器了,溫濕度
    的頭像 發(fā)表于 02-21 19:43 ?1w次閱讀

    溫濕度傳感器的原理

    溫濕度傳感器是指能將溫度量和濕度量轉(zhuǎn)換成容易被測(cè)量處理的電信號(hào)的設(shè)備或裝置。市場(chǎng)上的溫濕度傳感器一般是測(cè)量溫度量和相對(duì)
    發(fā)表于 05-11 14:59 ?1.9w次閱讀

    什么是溫濕度傳感器_溫濕度傳感器如何安裝

     很多的人們對(duì)于溫濕度傳感器的安裝是不了解的,不知道該怎么樣安裝,其實(shí)安裝溫濕度傳感器是比較方便的。要注意安裝的細(xì)節(jié)問(wèn)題和安裝的技巧,那么溫濕度
    發(fā)表于 05-26 09:24 ?5382次閱讀

    溫濕度變送器or溫濕度傳感器,我們應(yīng)該如何選擇

    在我們需要檢測(cè)一項(xiàng)數(shù)據(jù)時(shí),往往需要傳感器的幫助。比如需要測(cè)量溫度、濕度、壓力、光照、氣體等,便會(huì)需要傳感器的支持。在這些傳感器中,使用較為廣
    發(fā)表于 05-13 17:10 ?1374次閱讀

    溫濕度傳感器工作原理 溫濕度傳感器的接線(xiàn)方法

    溫濕度傳感器是一種用于測(cè)量環(huán)境溫度和相對(duì)濕度的裝置。它通常用于工業(yè)、農(nóng)業(yè)、氣象、室內(nèi)空調(diào)等領(lǐng)域。本文將詳細(xì)介紹溫濕度傳感器的工作原理和接線(xiàn)方
    的頭像 發(fā)表于 02-14 18:00 ?1.4w次閱讀