louislouis

  • 2024-03-15
  • 发表了主题帖: 【好书共读——《电子硬件工程师入职图解手册》分享】——第五章、第六章提炼软件算法

    本帖最后由 louislouis 于 2024-3-15 09:21 编辑 《电子硬件工程师入职图解手册》第五章——提炼软件算法 作为电子硬件专业,确实对算法的学习不多,基本只是做做逻辑控制、通信协议控制,最多就是PID算法。 看了这本书收获还是很大的,首先是这一章节以一个公司开发产品为案例,依据这个案例结合出现的问题,带着读者思路去排除解决问题。算法的作用也有体现出他的重要作用。   同时,算法的处理方式也非常接地气,没有罗列一大堆看不懂的公式,而是用excel为工具进行实际分析总结,降低了我对算法的畏难情绪。 最后根据业务需要,总结出了算法,非常有实用价值。 《电子硬件工程师入职图解手册》第六章——电子硬件工程师岗位工作场景 这部分内容有很多插图故事讲述,让我更加深刻的理解电子硬件工程师的工作场景。      最后,在如今的电子硬件开发环境,总体说这本书是非常精细、接地气的,详细的介绍了电子硬件工程师需要的方方面面知识,建议各位电子爱好者买来一起学习,这本书读书大概用了一个月时间,最后攒到一起写分享,这种方式有时候读书的小灵感就忘掉了,下次还是随看书随写分享比较好。

  • 2024-03-14
  • 发表了主题帖: 【好书共读——《电子硬件工程师入职图解手册》分享】——第三章RS485分享、第四章.

    第三章RS485总线介绍: 1.简介: RS485是一种常用的串行通信标准,通常用于在工业控制系统、自动化设备、仪器仪表等领域进行数据传输。RS485标准定义了一种差分信号传输方式,可实现在远距离(最多1200米)和高噪声环境下可靠地传输数据。 2.常用通信方式 RS485通常采用半双工或全双工通信方式,支持多点通信,即多个设备可以共享同一条通信总线。在RS485总线上,数据通过差分信号的形式传输,一对信号线分别代表逻辑“1”和逻辑“0”,这种差分传输方式有助于提高抗干扰能力。 3.RS485特点 RS485具有较高的数据传输速率,通常可达10 Mbps,但实际应用中通常会根据具体情况选择合适的通信速率。总的来说,RS485是一种稳定可靠、适用于工业环境的串行通信标准,在工业控制和自动化领域得到广泛应用。 在之前的学习试验中,常用的使用USART的串口通信,单片机的编程中很少涉及到具体的硬件电路参数,如纹波、干扰和屏蔽、电缆的参数等。 在选择RS485线缆时,需要考虑以下几个方面:传输距离:RS485支持较长的传输距离,但不同线缆类型的传输距离可能会有所不同。一般而言,采用双绞线或屏蔽双绞线可以实现较长的传输距离,最多可达1200米。线缆类型:常用的RS485线缆类型包括双绞线(twisted pair)和屏蔽双绞线(shielded twisted pair)。双绞线具有良好的抗干扰性能,适合在工业环境中使用。而屏蔽双绞线则在双绞线的基础上增加了屏蔽层,提供更好的抗干扰能力。线径:线径越大,线缆的传输能力和抗干扰能力通常越强。因此,在选择RS485线缆时,可以根据实际需求选择合适的线径,以确保良好的信号传输效果。屏蔽:在噪声较高的环境下,选择带有屏蔽层的线缆可以提供更好的抗干扰能力。屏蔽层可以有效地阻隔外部电磁干扰对传输信号的影响。运行环境:根据实际工作环境的特点,选择适合的线缆外皮材料和防护等级,以确保线缆的耐用性和适应性。 作为基础的电子信息工程专业学生,阅读这本书相比课程的数电、模电来说更加接近实践环节,有时进行试验时经常出现的诡异现象在这本书中也找到了答案,看书之前觉得两个设备间电路连上了没断就是可以的,看了之后发现电路设计电子硬件竟然有这么多需要考虑的问题。 RS485的素具链路链接方式如图所示:   平时的试验只会用到1主1从设备,本书的RS485介绍了1主多从的方式和方法,在后续的试验中可以进一步学习测试,改变了我对RS485总线的理解。 这里分享一部分自己的串口通信代码: /* * 初始化UART0 * 115200,8N1,无流控 */ void uart0_init(void) { GPHCON |= 0xa0; // GPH2,GPH3用作TXD0,RXD0 GPHUP = 0x0c; // GPH2,GPH3内部上拉 ULCON0 = 0x03; // 8N1(8个数据位,无较验,1个停止位) UCON0 = 0x05; // 查询方式,UART时钟源为PCLK UFCON0 = 0x00; // 不使用FIFO UMCON0 = 0x00; // 不使用流控 UBRDIV0 = UART_BRD; // 波特率为115200 } /* * 发送一个字符 */ void putc(unsigned char c) { /* 等待,直到发送缓冲区中的数据已经全部发送出去 */ while (!(UTRSTAT0 & TXD0READY)); /* 向UTXH0寄存器中写入数据,UART即自动将它发送出去 */ UTXH0 = c; } /* * 接收字符 */ unsigned char getc(void) { /* 等待,直到接收缓冲区中的有数据 */ while (!(UTRSTAT0 & RXD0READY)); /* 直接读取URXH0寄存器,即可获得接收到的数据 */ return URXH0; } 代码是RS232在使用USB转TTL的方式进行串口通信的代码,硬件开发板也可以通过修改跳线将数据传输模式修改为RS485. 本书的第三章篇幅占全书近一半,详细的介绍RS485的技术细节,包括电缆、信号完整性、电缆选择、故障案例等,非常具备实践指导价值。同时,RS485作为常用程度非常高的通信总线,非常建议新电子工程师详细阅读学习,加强电子技术的风险杜绝、故障排查能力。   第四章设备硬件复位知识: 硬件复位部分介绍了单片机、ARM、FPGA等的复位介绍,还有看门狗的介绍。 现在的单片机教程很多都会在单片机启动时默认关闭看门狗,有一些不太理解在实际的项目开发中,真的需要管理看门狗吗?还是也和教程中一样默认关闭? 通过学习第四章,我详细的学习了硬件复位的相关知识,但是目前确实用的不多,就不多分享了。希望各位大佬分享下项目经验,是否需要使用看门狗。  

  • 发表了主题帖: 【好书共读——《电子硬件工程师入职图解手册》分享】——第一章、第二章分享

    近期参加了好书共读活动,阅读了《电子硬件工程师入职图解手册》这本书,分享些阅读感受请各位指正。 第一章节是关于电子硬件工程师岗位的,首选我认为选择电子硬件工程师这个岗位是一个非常有前景的职业选择。随着科技的不断发展,电子硬件工程师的需求在全球范围内都在持续增长。伴随着AI技术、5G技术的快速迭代升级,电子硬件工程师需要越来越深入的技术功底、需要足够广阔的技术知识储备、需要理论和实践的互相配合,技术门槛还是比较高的。 随着物联网和智能设备的普及,对于电子硬件工程师的需求不断增加。智能家居、智能穿戴设备、智能医疗设备等领域都需要电子硬件工程师来设计和开发相应的硬件系统。5G技术已经开始商用,并且6G技术也在研发阶段。这些新一代通信技术的发展对于电子硬件工程师来说将会提供更多的就业机会和发展空间。人工智能和自动驾驶技术的发展也为电子硬件工程师带来了新的挑战和机遇。从芯片设计到传感器系统,都需要电子硬件工程师的专业知识和技能。 随着人们对健康和体态管理的重视,可穿戴设备和健康科技的需求也在增长,这将为电子硬件工程师带来更多的就业机会。 总的来说,当前电子硬件工程师的岗位前景非常广阔。随着科技的不断进步,电子硬件工程师将在各个领域中发挥重要作用,并且有望获得丰厚的回报。对于大学生来说,通过专业的学习和实践,将能够在这一领域中找到充满机遇的职业发展道路。   第二章节是关于电子硬件的通用知识。 包括了电源的基础知识、电子设备温度、电子芯片电平相关知识、电路基础工具和接口这些知识。 其中我最关注的就是安全电压部分,因为日常学习、实践非常担心被电到,通过学习这部分内容,我可以更清晰的理解基础的电子硬件电路知识和安全规范。 人体安全电压一般指的是对人体没有致命危险的电压范围。根据国际标准,人体安全电压一般被定义为50-60 Hz交流电下的额定电压为50伏特以下时不会对人体造成致命伤害。然而,即使在这个范围内,也可能引起不适或轻微伤害,因此在处理电气设备时仍需谨慎小心以确保人身安全。对于直流电而言,人体安全电压范围相对较高。一般来说,直流电的安全电压可达到几百伏特甚至更高。然而,需要注意的是,即使在较低的直流电压下,仍然可能引起不适或轻微伤害。因此,在处理直流电设备时,依然需要谨慎小心以确保人身安全。 第二部分我比较关注的点是常用仪器的使用。 这本书第二章节介绍了万用表、示波器、电烙铁这三大常用工具的使用方式。 之前一直以为电烙铁不需要保养,使用一段时间后,有事用来淌塑料部件,烙铁头就不沾锡了,通过学习这本书了解到电烙铁的各项使用前准备工作、包括海绵的使用,非常有帮助。   最后,这本书1-2章节内容相对基础接地气,非常适合电子硬件工程师系统学习,建议将来从事电子硬件工作的小伙伴一起学习哈

  • 2024-02-04
  • 回复了主题帖: 【入围名单】好书共读——《电子硬件工程师入职图解手册 硬件知识篇》

    个人地址已更新 请按新地址邮寄

  • 2024-01-24
  • 回复了主题帖: 【入围名单】好书共读——《电子硬件工程师入职图解手册 硬件知识篇》

    个人信息无误,确认可以完成。

  • 2023-11-12
  • 发表了主题帖: 晓辉的任务提交番外篇

    本帖最后由 louislouis 于 2023-11-12 21:04 编辑 再次感谢活动主办方得捷电子和eeworld官方, 本贴更新一下LIS3DH传感器的使用分享: 设备如下: 该设备使用I2C协议进行控制,使用circupython提供的adafruit_lis3dh.mpy库完成相关控制。 硬件连接如图所示,使用Adafruit ESP32-S3 TFT Feather上的电源和两个I2C引脚连接,分别联系SCL和DSA: python代码如下: import time import board import busio import adafruit_lis3dh lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c) while True: x, y, z = [ value / adafruit_lis3dh.STANDARD_GRAVITY for value in lis3dh.acceleration ] print("x = %0.3f G, y = %0.3f G, z = %0.3f G" % (x, y, z)) time.sleep(0.1) 使用以上代码即可实现LIS3DH的控制,并在屏幕上显示xyz三个方向的传感器数值。 数值刷新频率根据time.sleep(0.1)语句进行设置,建议不要刷新过快。 同时如果主板温度过高,可连接小风扇至5V电源进行散热。PS、实际程序运行时主板并不会过热,风扇散热意义不大  

  • 2023-10-20
  • 加入了学习《【得捷电子Follow me第2期】DIY天气时钟 》,观看 【得捷电子Follow me第2期】DIY天气时钟

  • 2023-10-15
  • 加入了学习《Follow me 第2期任务视频》,观看 Follow me 第2期任务视频

  • 加入了学习《得捷电子Follow me第2期》,观看 得捷电子Follow me第2期

  • 加入了学习《晓辉的汇报视频 -【得捷电子Follow me第2期】视频汇报》,观看 晓辉的汇报视频 -【得捷电子Follow me第2期】视频汇报

  • 加入了学习《【得捷电子Follow me第2期】+ ESP32-S3 TFT 为智能物联赋能》,观看 【得捷电子Follow me第2期】+ ESP32-S3 TFT 为智能物联赋能

  • 加入了学习《基于lvgl构建的多任务程序框架(新)》,观看 基于lvgl构建的多任务程序框架(修改)

  • 发表了主题帖: 【得捷电子Follow me第2期】晓辉的任务提交(完整内容)

    本帖最后由 louislouis 于 2023-10-15 09:53 编辑 首先感谢活动主办方得捷电子和eeworld,让我们有机会体验最新的电子产品,领略电子技术的魅力。 本项目包括以下内容: 任务1:控制屏幕显示中文(必做任务) 完成屏幕的控制,并且能显示中文 搭配器件:Adafruit ESP32-S3 TFT Feather 任务2:网络功能使用(必做任务) 完成网络功能的使用,能够创建热点和连接到WiFi 搭配器件:Adafruit ESP32-S3 TFT Feather 任务3:控制WS2812B(必做任务) 使用按键控制板载Neopixel LED的显示和颜色切换 搭配器件:Adafruit ESP32-S3 TFT Feather 任务4:从下方5个分任务中选择1个感兴趣的完成即可(必做任务) ■  分任务1:日历&时钟——完成一个可通过互联网更新的万年历时钟,并显示当地的天气信息 建议搭配器件:Adafruit ESP32-S3 TFT Feather 任务/项目总结报告: 软件部分: 这款开发板支持python语言编程,可以只借助浏览器提供的ide进行编程和调试,通过浏览器修改code.py文件并保存,即可完成程序编写。 相比传统的单片机和嵌入式微处理器,这款开发板的编程方式更加方便快捷。 任务1:控制屏幕显示中文(必做任务) 完成屏幕的控制,并且能显示中文 搭配器件:Adafruit ESP32-S3 TFT Feather 项目使用板载屏幕进行中文显示,中文字符的显示需要借助中文字库实现,本项目中使用自制的字库完成。 使用板载资源需要载入board库,显示功能使用display库实现。设置好显示参数后即可使用display.show函数实现显示字符。 字库可以根据实际需要显示的字符进行裁剪,降低字库文件大小,从而确保程序空间足够使用。 代码如下: import board import displayio from adafruit_display_text import label, wrap_text_to_pixels from adafruit_bitmap_font import bitmap_font str2display="任务1:控制屏幕显示中文\n出新意与法度之中\n寄妙理于豪放之外\n所谓游刃有余\n运斤成风" display = board.DISPLAY board.DISPLAY.brightness = 0.6 font = bitmap_font.load_font("opposans_m_12.pcf") color = 0xFF7500 background_color = 0x000000 text_group = displayio.Group() text_area = label.Label(font, text="\n".join(wrap_text_to_pixels(str2display,16)), color=color, background_color=background_color) text_area.x = 2 text_area.y = 10 text_area.line_spacing = 1.1 text_area.scale = 1 text_group.append(text_area) display.show(text_group) while True: pass 演示效果如图: 通过本任务的实验,使我更加清晰地理解字符显示的原理,为后续项目开发提供思路。 任务2:网络功能使用(必做任务) 完成网络功能的使用,能够创建热点和连接到WiFi 搭配器件:Adafruit ESP32-S3 TFT Feather 项目通过连接热点实现网络访问,设备连接热点后获取IP地址和相关网络配置信息,从而实现设备的网络联机。 网络功能的使用可以使板子连接上互联网,进而与互联网进行交互拓展。 程序主要需要wifi、ssl、socketpool等库实现,数据请求需要使用adafruit_requests库实现。 代码如下: secrets = { 'ssid' : 'hiabia', 'password' : '85523425d6134', 'timezone' : "Asia/Shanghai" } import wifi import ssl import socketpool import adafruit_requests import time wifi.radio.connect(secrets["ssid"], secrets["password"]) print("Connected to {}!".format(secrets["ssid"])) print("IP:", wifi.radio.ipv4_address) # 请求URLs TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html" JSON_TIME_URL = "http://quan.suning.com/getSysTime.do" print("ESP32-S2 WebClient Test") print(f"My MAC address: {[hex(i) for i in wifi.radio.mac_address]}") pool = socketpool.SocketPool(wifi.radio) requests = adafruit_requests.Session(pool, ssl.create_default_context()) print(f"Fetching text from {TEXT_URL}") response = requests.get(TEXT_URL) print("-" * 40) print(response.text) print("-" * 40) print() time.sleep(3) print(f"Fetching and parsing json from {JSON_TIME_URL}") response = requests.get(JSON_TIME_URL) print("-" * 40) print(f"Time: {response.json()['sysTime2']}") print("-" * 40) print("Done") 演示效果如图: 通过连接wifi、开启热点等功能的使用,让我们更清晰地理解该开发板的网络连接使用方法,为后续物联网相关功能的开发提供基础。 任务3:控制WS2812B(必做任务) 使用按键控制板载Neopixel LED的显示和颜色切换 项目程序须载入board、time、neopixel等库,board库实现板载资源的相关功能,time库实现时间数据的处理,neopixel库实现ws2812b的控制。 通过配置ws2812b的亮度信息、三原色信息从而可以调用fill函数实现指定颜色的亮灭,效果非常棒。 搭配器件:Adafruit ESP32-S3 TFT Feather 代码如下: import time import board import neopixel import touchio pixel = neopixel.NeoPixel(board.NEOPIXEL, 1) pixel.brightness = 0.3 touch_A1 = touchio.TouchIn(board.D5) # touch_A2 = touchio.TouchIn(board.D10) touch_A3 = touchio.TouchIn(board.D12) grape = (190, 75, 219) teal = (56, 217, 169) red = (20, 100, 219) while True: if touch_A1.value: pixel.fill(grape) time.sleep(0.05) # if touch_A2.value: # pixel.fill(teal) # time.sleep(0.05) if touch_A3.value: pixel.fill(red) time.sleep(0.05) 演示效果如图:   WS28212B控制LED颜色的功能使用,可以更深刻地理解通信协议、IO接口的相关功能,通过使用WS2812B可以更加精确可靠地控制灯光,降低代码调试的难度,提高开发效率。 任务4:从下方5个分任务中选择1个感兴趣的完成即可(必做任务) 我选择的是分任务1: ■  分任务1:日历&时钟——完成一个可通过互联网更新的万年历时钟,并显示当地的天气信息 项目基于板载屏幕进行时间、日期和天气的显示,调用第三方天气服务接口从而获取实时的天气数据。 使用time库管理时间信息,最后,使用一个while循环进行数据信息的定时刷新。 建议搭配器件:Adafruit ESP32-S3 TFT Feather 代码如下: import board import rtc import wifi import adafruit_ntp import os import ssl import time import displayio import terminalio import socketpool import adafruit_requests from adafruit_display_text import bitmap_label, label DATA_SOURCE = "http://api.seniverse.com/v3/weather/now.json?key=SG-nLPzA3pyLEy9Tw&location=tianjin&language=en&unit=c" # --| User Config |-------------------------------- TZ_OFFSET = 8 # time zone offset in hours from UTC NEO_PIN = board.NEOPIXEL # neopixel pin NEO_CNT = 1 # neopixel count # ------------------------------------------------- # Set up TFT display display = board.DISPLAY board.DISPLAY.brightness = 0.55 board.DISPLAY.rotation = 0 group = displayio.Group() time_color = 0xFF0000 weather_color = 0x00FF00 time_area = label.Label(terminalio.FONT, text="Hello", color=time_color) time_area.x = 2 time_area.y = 10 time_area.line_spacing = 0.8 time_area.scale = 1 weather_area = label.Label(terminalio.FONT, text="Weather", color=weather_color) weather_area.x = 2 weather_area.y = 30 weather_area.line_spacing = 0.8 weather_area.scale = 1 main_group = displayio.Group() main_group.append(group) main_group.append(time_area) main_group.append(weather_area) # Show the main group on the display display.show(main_group) # Connect to local network wifi.radio.connect(os.getenv("CIRCUITPY_WIFI_SSID"), os.getenv("CIRCUITPY_WIFI_PASSWORD")) print("Wifi connected.") # Get current time using NTP print("Fetching time from NTP.") pool = socketpool.SocketPool(wifi.radio) ntp = adafruit_ntp.NTP(pool, server="ntp.aliyun.com", tz_offset=TZ_OFFSET) rtc.RTC().datetime = ntp.datetime # requests = adafruit_requests.Session(pool, ssl.create_default_context()) # Define time interval between requests time_interval = 3000 # set the time interval to 30 minutes # Wait for wake up time now = time.localtime() print("Current time: {:2}:{:02}:{:02}".format(now.tm_hour, now.tm_min, now.tm_sec)) response = requests.get(DATA_SOURCE) while True: # Fetch weather data from 心知 API print("Fetching json from", DATA_SOURCE) if now.tm_sec == 10: response = requests.get(DATA_SOURCE) print(response.json()) # Extract temperature and weather condition data from API response current_temp = response.json()["results"][0]["now"]["temperature"] current_weather_condition = response.json()["results"][0]["now"]["text"] current_city = response.json()["results"][0]["location"]["name"] print("Weather condition: ", current_weather_condition) time_area.text = "Hello EEWorld\nTime is {:2}:{:02}:{:02}".format( now.tm_hour, now.tm_min, now.tm_sec ) weather_area.text="City: " + current_city+"\n"\ +"Temperature: {}".format(current_temp)+"\n"\ +"Weather: "+ current_weather_condition # just sleep until next time check time.sleep(0.5) now = time.localtime() 演示效果如图: 该任务是一个相对综合应用的任务,分别使用了网络连接、数据请求、界面显示等功能,可以很好地锻炼代码编写。 在项目的各项任务完成过程中,还学习了图片显示、触摸按键等功能,体验到了这款板子的强大功能,希望得捷电子和电子工程世界官方可以继续多举办类似活动,带领更多电子爱好者体验电子的乐趣。 可编译下载的代码: 最后,项目代码如下: 项目代码  

  • 2023-10-14
  • 上传了资料: 【得捷电子Follow me第2期】任务提交代码

  • 加入了学习《2023得捷电子第一期总结视频》,观看 2023得捷电子第一期总结视频

  • 2023-08-17
  • 加入了学习《基于Arduino玩转pico RP2040》,观看 基于Arduino玩转pico RP2040

  • 2023-08-06
  • 加入了学习《Digi-Key: Follow Me 系列(1) 直播回放及答疑记录》,观看 Raspberry Pi Pico W 使用入门

最近访客

< 1/1 >

统计信息

已有17人来访过

  • 芯积分:50
  • 好友:--
  • 主题:5
  • 回复:3

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言